@urbankitstudio/atlas 0.5.1 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +110 -110
  3. package/data/alabama.json +103 -103
  4. package/data/alaska.json +51 -51
  5. package/data/arizona.json +149 -148
  6. package/data/arkansas.json +143 -143
  7. package/data/california.json +435 -435
  8. package/data/colorado.json +150 -150
  9. package/data/connecticut.json +164 -164
  10. package/data/delaware.json +46 -46
  11. package/data/florida.json +455 -455
  12. package/data/georgia.json +176 -175
  13. package/data/hawaii.json +82 -82
  14. package/data/idaho.json +54 -54
  15. package/data/illinois.json +337 -337
  16. package/data/index.json +411 -411
  17. package/data/indiana.json +132 -132
  18. package/data/iowa.json +51 -51
  19. package/data/kansas.json +49 -49
  20. package/data/kentucky.json +52 -52
  21. package/data/louisiana.json +102 -102
  22. package/data/maine.json +138 -138
  23. package/data/maryland.json +94 -94
  24. package/data/massachusetts.json +78 -78
  25. package/data/michigan.json +92 -92
  26. package/data/minnesota.json +94 -94
  27. package/data/mississippi.json +98 -98
  28. package/data/missouri.json +99 -99
  29. package/data/montana.json +196 -196
  30. package/data/nebraska.json +137 -137
  31. package/data/nevada.json +98 -98
  32. package/data/new-hampshire.json +42 -42
  33. package/data/new-jersey.json +493 -493
  34. package/data/new-mexico.json +49 -49
  35. package/data/new-york.json +318 -318
  36. package/data/north-carolina.json +303 -303
  37. package/data/north-dakota.json +57 -57
  38. package/data/ohio.json +304 -304
  39. package/data/oklahoma.json +49 -49
  40. package/data/oregon.json +144 -144
  41. package/data/pennsylvania.json +86 -86
  42. package/data/rhode-island.json +25 -25
  43. package/data/south-carolina.json +101 -101
  44. package/data/south-dakota.json +58 -58
  45. package/data/tennessee.json +154 -154
  46. package/data/texas.json +430 -430
  47. package/data/utah.json +193 -193
  48. package/data/vermont.json +59 -59
  49. package/data/virginia.json +88 -88
  50. package/data/washington.json +183 -183
  51. package/data/west-virginia.json +172 -176
  52. package/data/wisconsin.json +374 -374
  53. package/data/wyoming.json +58 -58
  54. package/dist/index.cjs +40 -42
  55. package/dist/index.js +40 -42
  56. package/package.json +68 -68
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // data/index.json
2
2
  var data_default = {
3
- version: "0.5.1",
4
- lastUpdated: "2026-06-20",
3
+ version: "0.3.0",
4
+ lastUpdated: "2026-08-04",
5
5
  totals: {
6
6
  states: 50,
7
7
  counties: 155,
@@ -583,6 +583,7 @@ var arizona_default = {
583
583
  stateSlug: "arizona",
584
584
  county: "Maricopa",
585
585
  countySlug: "maricopa-county",
586
+ relatedPropertyCitySlug: "phoenix",
586
587
  countyFips: "04013",
587
588
  hasPublicRest: true,
588
589
  endpoints: [
@@ -2137,6 +2138,7 @@ var georgia_default = {
2137
2138
  stateSlug: "georgia",
2138
2139
  county: "Fulton",
2139
2140
  countySlug: "fulton-county",
2141
+ relatedPropertyCitySlug: "atlanta",
2140
2142
  countyFips: "13121",
2141
2143
  hasPublicRest: true,
2142
2144
  endpoints: [
@@ -3076,7 +3078,7 @@ var louisiana_default = {
3076
3078
  stateSlug: "louisiana",
3077
3079
  stateName: "Louisiana",
3078
3080
  stateAbbrev: "LA",
3079
- lastUpdated: "2026-05-15",
3081
+ lastUpdated: "2026-08-04",
3080
3082
  counties: [
3081
3083
  {
3082
3084
  id: "la-east-baton-rouge-parish",
@@ -3170,7 +3172,7 @@ var louisiana_default = {
3170
3172
  url: "https://gis.nola.gov/",
3171
3173
  email: null
3172
3174
  },
3173
- notes: "Orleans Parish (New Orleans, pop. 383,000) Property Information layer at index 15 of the apps/property3 composite MapServer. Note: the 'LandBase/Parcels' MapServer at gis.nola.gov only exposes GEOPIN (parcel geometry key, no attributes). For owner + address data, use apps/property3/MapServer/15 which is an assessor join. 20 fields confirmed: OBJECTID, BUILDING, UNIT, SITEADDRESS, OWNERNME1/2, PSTLADDRESS/CITY/STATE/ZIP5/ZIP4, USECD, PRPRTYDSCRP, PARCELID, TAXBILLID, LOT, SQUARE, BLOCK, PARID. New Orleans uses a Square/Lot system (not typical street address) for legal parcel identification. NOTE 2026-06-27: the liveness check 'fetch failed' was transient (metadata at /MapServer/15?f=json now returns 200). However, this ArcGIS Server 10.4 instance has two persistent query limitations: (1) LIKE/UPPER() queries return HTTP 400; (2) count-all queries (where=1=1&returnCountOnly=true) timeout >35s. PARCELID equality queries (where=PARCELID='...') return valid JSON structure. OWNERNME1 and SITEADDRESS marked searchable:false accordingly; sampleQuery changed to IS NOT NULL filter. For PARCELID-based lookups use the PARCELID or PARID fields. The countySlug 'orleans-parish' matches countySlugFromName('Orleans Parish') per atlas slugify rules."
3175
+ notes: "Orleans Parish's public parcel layer still serves metadata, but its attribute-query operation is currently failing on the county's ArcGIS server. Owner and address searches are unavailable while the county repairs the service; automatic probes continue to check for recovery. New Orleans uses Square/Lot identifiers for legal parcels. The city also publishes a weekly situs-and-geometry dataset on data.nola.gov, but it does not include owner names. An older 2018 parcel snapshot was not substituted because its ownership data is dated and the service was unstable during verification. LIVENESS 2026-08-04: the layer's metadata still loads, but EVERY query against it times out, including a bare returnCountOnly count. 161 consecutive failed checks and last_ok_at has never been set. This is a county-side outage, not a schema drift; there is nothing to fix on our side and the endpoint stays honestly degraded until New Orleans repairs it."
3174
3176
  }
3175
3177
  ]
3176
3178
  };
@@ -3887,7 +3889,7 @@ var montana_default = {
3887
3889
  stateSlug: "montana",
3888
3890
  stateName: "Montana",
3889
3891
  stateAbbrev: "MT",
3890
- lastUpdated: "2026-06-20",
3892
+ lastUpdated: "2026-08-04",
3891
3893
  counties: [
3892
3894
  {
3893
3895
  id: "mt-yellowstone",
@@ -3900,10 +3902,10 @@ var montana_default = {
3900
3902
  hasPublicRest: true,
3901
3903
  endpoints: [
3902
3904
  {
3903
- url: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0",
3905
+ url: "https://gisservice.mt.gov/arcgis/rest/services/msdi_cadastral_map_v1/MapServer/1",
3904
3906
  serviceType: "MapServer",
3905
- layerIndex: 0,
3906
- layerName: "Parcels",
3907
+ layerIndex: 1,
3908
+ layerName: "Montana Parcels",
3907
3909
  supportsQuery: true,
3908
3910
  corsEnabled: null,
3909
3911
  searchFields: [
@@ -3921,9 +3923,9 @@ var montana_default = {
3921
3923
  { name: "TotalValue", label: "Total Assessed Value", searchable: false },
3922
3924
  { name: "TaxYear", label: "Tax Year", searchable: false }
3923
3925
  ],
3924
- sampleQuery: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0/query?where=CountyName%3D'Yellowstone'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
3926
+ sampleQuery: "https://gisservice.mt.gov/arcgis/rest/services/msdi_cadastral_map_v1/MapServer/1/query?where=CountyName%3D'Yellowstone'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
3925
3927
  license: "public",
3926
- licenseUrl: "https://gisservicemt.gov/",
3928
+ licenseUrl: "https://gisservice.mt.gov/",
3927
3929
  status: "live",
3928
3930
  lastVerified: "2026-06-20",
3929
3931
  verifiedBy: "automated"
@@ -3947,10 +3949,10 @@ var montana_default = {
3947
3949
  hasPublicRest: true,
3948
3950
  endpoints: [
3949
3951
  {
3950
- url: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0",
3952
+ url: "https://gisservice.mt.gov/arcgis/rest/services/msdi_cadastral_map_v1/MapServer/1",
3951
3953
  serviceType: "MapServer",
3952
- layerIndex: 0,
3953
- layerName: "Parcels",
3954
+ layerIndex: 1,
3955
+ layerName: "Montana Parcels",
3954
3956
  supportsQuery: true,
3955
3957
  corsEnabled: null,
3956
3958
  searchFields: [
@@ -3968,9 +3970,9 @@ var montana_default = {
3968
3970
  { name: "TotalValue", label: "Total Assessed Value", searchable: false },
3969
3971
  { name: "TaxYear", label: "Tax Year", searchable: false }
3970
3972
  ],
3971
- sampleQuery: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0/query?where=CountyName%3D'Missoula'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
3973
+ sampleQuery: "https://gisservice.mt.gov/arcgis/rest/services/msdi_cadastral_map_v1/MapServer/1/query?where=CountyName%3D'Missoula'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
3972
3974
  license: "public",
3973
- licenseUrl: "https://gisservicemt.gov/",
3975
+ licenseUrl: "https://gisservice.mt.gov/",
3974
3976
  status: "live",
3975
3977
  lastVerified: "2026-06-20",
3976
3978
  verifiedBy: "automated"
@@ -3994,10 +3996,10 @@ var montana_default = {
3994
3996
  hasPublicRest: true,
3995
3997
  endpoints: [
3996
3998
  {
3997
- url: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0",
3999
+ url: "https://gisservice.mt.gov/arcgis/rest/services/msdi_cadastral_map_v1/MapServer/1",
3998
4000
  serviceType: "MapServer",
3999
- layerIndex: 0,
4000
- layerName: "Parcels",
4001
+ layerIndex: 1,
4002
+ layerName: "Montana Parcels",
4001
4003
  supportsQuery: true,
4002
4004
  corsEnabled: null,
4003
4005
  searchFields: [
@@ -4015,9 +4017,9 @@ var montana_default = {
4015
4017
  { name: "TotalValue", label: "Total Assessed Value", searchable: false },
4016
4018
  { name: "TaxYear", label: "Tax Year", searchable: false }
4017
4019
  ],
4018
- sampleQuery: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0/query?where=CountyName%3D'Cascade'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
4020
+ sampleQuery: "https://gisservice.mt.gov/arcgis/rest/services/msdi_cadastral_map_v1/MapServer/1/query?where=CountyName%3D'Cascade'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
4019
4021
  license: "public",
4020
- licenseUrl: "https://gisservicemt.gov/",
4022
+ licenseUrl: "https://gisservice.mt.gov/",
4021
4023
  status: "live",
4022
4024
  lastVerified: "2026-06-20",
4023
4025
  verifiedBy: "automated"
@@ -4041,10 +4043,10 @@ var montana_default = {
4041
4043
  hasPublicRest: true,
4042
4044
  endpoints: [
4043
4045
  {
4044
- url: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0",
4046
+ url: "https://gisservice.mt.gov/arcgis/rest/services/msdi_cadastral_map_v1/MapServer/1",
4045
4047
  serviceType: "MapServer",
4046
- layerIndex: 0,
4047
- layerName: "Parcels",
4048
+ layerIndex: 1,
4049
+ layerName: "Montana Parcels",
4048
4050
  supportsQuery: true,
4049
4051
  corsEnabled: null,
4050
4052
  searchFields: [
@@ -4062,9 +4064,9 @@ var montana_default = {
4062
4064
  { name: "TotalValue", label: "Total Assessed Value", searchable: false },
4063
4065
  { name: "TaxYear", label: "Tax Year", searchable: false }
4064
4066
  ],
4065
- sampleQuery: "https://gisservicemt.gov/arcgis/rest/services/MSDI_Framework/Parcels/MapServer/0/query?where=CountyName%3D'Flathead'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
4067
+ sampleQuery: "https://gisservice.mt.gov/arcgis/rest/services/msdi_cadastral_map_v1/MapServer/1/query?where=CountyName%3D'Flathead'+AND+UPPER(OwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=PARCELID,OwnerName,AddressLine1,CityStateZip,CountyName&returnGeometry=false&f=json&resultRecordCount=10",
4066
4068
  license: "public",
4067
- licenseUrl: "https://gisservicemt.gov/",
4069
+ licenseUrl: "https://gisservice.mt.gov/",
4068
4070
  status: "live",
4069
4071
  lastVerified: "2026-06-20",
4070
4072
  verifiedBy: "automated"
@@ -6318,7 +6320,7 @@ var south_dakota_default = {
6318
6320
  stateSlug: "south-dakota",
6319
6321
  stateName: "South Dakota",
6320
6322
  stateAbbrev: "SD",
6321
- lastUpdated: "2026-06-20",
6323
+ lastUpdated: "2026-08-04",
6322
6324
  counties: [
6323
6325
  {
6324
6326
  id: "sd-minnehaha",
@@ -6331,7 +6333,7 @@ var south_dakota_default = {
6331
6333
  hasPublicRest: true,
6332
6334
  endpoints: [
6333
6335
  {
6334
- url: "https://gis.minnehahacounty.org/minnemap/rest/services/Parcels/MapServer/0",
6336
+ url: "https://gis.minnehahacounty.gov/minnemap/rest/services/Parcels/MapServer/0",
6335
6337
  serviceType: "MapServer",
6336
6338
  layerIndex: 0,
6337
6339
  layerName: "Parcels",
@@ -6355,9 +6357,9 @@ var south_dakota_default = {
6355
6357
  { name: "TRACT", label: "Tract", searchable: false },
6356
6358
  { name: "SUBDIVISION", label: "Subdivision", searchable: false }
6357
6359
  ],
6358
- sampleQuery: "https://gis.minnehahacounty.org/minnemap/rest/services/Parcels/MapServer/0/query?where=UPPER(MRTNM1)+LIKE+UPPER('%25SMITH%25')&outFields=TAG,MRTNM1,MRTNM2,MRTCTY,FULL_ADDRESS&returnGeometry=false&f=json&resultRecordCount=10",
6360
+ sampleQuery: "https://gis.minnehahacounty.gov/minnemap/rest/services/Parcels/MapServer/0/query?where=UPPER(MRTNM1)+LIKE+UPPER('%25SMITH%25')&outFields=TAG,MRTNM1,MRTNM2,MRTCTY,FULL_ADDRESS&returnGeometry=false&f=json&resultRecordCount=10",
6359
6361
  license: "public",
6360
- licenseUrl: "https://gis.minnehahacounty.org/",
6362
+ licenseUrl: "https://gis.minnehahacounty.gov/",
6361
6363
  status: "live",
6362
6364
  lastVerified: "2026-06-20",
6363
6365
  verifiedBy: "automated"
@@ -6368,7 +6370,7 @@ var south_dakota_default = {
6368
6370
  url: "https://www.minnehahacounty.org/dept/eq/eq.php",
6369
6371
  email: null
6370
6372
  },
6371
- notes: "Minnehaha County SD (Sioux Falls metro; county seat Sioux Falls; FIPS 46099; most populous county in SD, pop. 210,000) provides parcel data via gis.minnehahacounty.org. The Parcels/MapServer/0 layer exposes 20 fields: OBJECTID, FULL_ADDRESS, TAG (parcel ID), MAP_ID, MRRDID, MRTNM1 (owner name 1), MRTNM2 (owner name 2), MRTCTY (owner city), MRTSTATE, MRTZPC (ZIP), MRTZPC2, NWLOCN, NWPRED, NWLOCS (street name), NWSTYP, NWPOSD, LOT, BLOCK, TRACT, SUBDIVISION. Owner search via UPPER(MRTNM1) LIKE on MRTNM1. To get both owners, also query MRTNM2. Verified 2026-06-20: SMITH query returns Sioux Falls addresses. Minnehaha County SD (FIPS 46099) must not be confused with Minnehaha County in any other state."
6373
+ notes: "Minnehaha County SD (Sioux Falls metro; county seat Sioux Falls; FIPS 46099; most populous county in SD, pop. 210,000) provides parcel data via gis.minnehahacounty.gov. The Parcels/MapServer/0 layer exposes 20 fields: OBJECTID, FULL_ADDRESS, TAG (parcel ID), MAP_ID, MRRDID, MRTNM1 (owner name 1), MRTNM2 (owner name 2), MRTCTY (owner city), MRTSTATE, MRTZPC (ZIP), MRTZPC2, NWLOCN, NWPRED, NWLOCS (street name), NWSTYP, NWPOSD, LOT, BLOCK, TRACT, SUBDIVISION. Owner search via UPPER(MRTNM1) LIKE on MRTNM1. To get both owners, also query MRTNM2. Verified 2026-06-20: SMITH query returns Sioux Falls addresses. Minnehaha County SD (FIPS 46099) must not be confused with Minnehaha County in any other state."
6372
6374
  }
6373
6375
  ]
6374
6376
  };
@@ -6481,7 +6483,7 @@ var tennessee_default = {
6481
6483
  url: "https://www.shelbycountytn.gov/467/REGIS-Regional-GIS",
6482
6484
  email: null
6483
6485
  },
6484
- notes: "Shelby County (Memphis and suburbs, pop. 934,000) hosts parcel data through ReGIS (Regional Geographic Information Systems), a multi-jurisdictional GIS consortium established by the Shelby County Commission in 2004. The CurrentParcels MapServer at scgis.shelbycountytn.gov exposes 47 confirmed fields. Parcel identifiers: PARCELID (primary display key) and PARID (the CAMA account ID used by the Shelby County Assessor of Property). Owner field is OWNER; OWNER_EXT holds overflow text. Mailing address is split across OWN_ADRNO, ADRPREDIR, ADRSTR, ADRSUF, ADRPOSTDIR for the street component, plus OWN_CITY, OWN_STATE, OWN_ZIP/ZIP4; also available concatenated as OWN_ADDR1/2/3. The MUNI field identifies the municipality -- Memphis, Bartlett, Collierville, Germantown, Lakeland, Millington, or blank for unincorporated Shelby County. That distinction carries real workflow consequences: Memphis's Division of Planning handles incorporated parcels, while the Shelby County Land Use Control Board handles unincorporated ones. Verified 2026-05-15: SMITH returns results from Germantown, Arlington, and unincorporated areas. Last countywide reappraisal was 2025; next scheduled 2029. LEGACY TLS (first documented 2026-06-06, confirmed 2026-06-27): scgis.shelbycountytn.gov requires legacy TLS renegotiation (UNSAFE_LEGACY_RENEGOTIATION). Modern runtimes (Node.js 18+, undici fetch, Python 3.10+ ssl, standard curl) reject the handshake; curl --legacy-server-connect or OpenSSL OP_LEGACY_SERVER_CONNECT succeeds. The endpoint itself is live (353,448 parcels). The atlas liveness check will always flag this endpoint FAIL because Node's native fetch rejects the TLS handshake. This is expected behavior, NOT a server outage. FIX NEEDED (flagged for lead): add a narrow per-host legacy-TLS fetch path in atlas-liveness-check.mjs and in the server-side parcel fetch for this specific host. Weakening TLS globally is not an option."
6486
+ notes: "Shelby County (Memphis and suburbs, pop. 934,000) hosts parcel data through ReGIS (Regional Geographic Information Systems), a multi-jurisdictional GIS consortium established by the Shelby County Commission in 2004. The CurrentParcels MapServer at scgis.shelbycountytn.gov exposes 47 confirmed fields. Parcel identifiers: PARCELID (primary display key) and PARID (the CAMA account ID used by the Shelby County Assessor of Property). Owner field is OWNER; OWNER_EXT holds overflow text. Mailing address is split across OWN_ADRNO, ADRPREDIR, ADRSTR, ADRSUF, ADRPOSTDIR for the street component, plus OWN_CITY, OWN_STATE, OWN_ZIP/ZIP4; also available concatenated as OWN_ADDR1/2/3. The MUNI field identifies the municipality -- Memphis, Bartlett, Collierville, Germantown, Lakeland, Millington, or blank for unincorporated Shelby County. That distinction carries real workflow consequences: Memphis's Division of Planning handles incorporated parcels, while the Shelby County Land Use Control Board handles unincorporated ones. Verified 2026-05-15: SMITH returns results from Germantown, Arlington, and unincorporated areas. Last countywide reappraisal was 2025; next scheduled 2029. LEGACY TLS (first documented 2026-06-06, confirmed 2026-06-27): scgis.shelbycountytn.gov requires legacy TLS renegotiation (UNSAFE_LEGACY_RENEGOTIATION). Modern runtimes (Node.js 18+, undici fetch, Python 3.10+ ssl, standard curl) reject the handshake; curl --legacy-server-connect or OpenSSL OP_LEGACY_SERVER_CONNECT succeeds. The endpoint itself is live (353,448 parcels). RESOLVED (2026-07-21): the canonical liveness prober (api/cron/liveness.ts) and the server-side parcel fetch (api/_lib/atlas-resilient-fetch.ts) both use a narrow legacy-TLS path scoped to this hostname alone, so the endpoint probes and fetches correctly; global TLS behavior is unchanged."
6485
6487
  },
6486
6488
  {
6487
6489
  id: "tn-hamilton",
@@ -7220,7 +7222,7 @@ var virginia_default = {
7220
7222
  stateSlug: "virginia",
7221
7223
  stateName: "Virginia",
7222
7224
  stateAbbrev: "VA",
7223
- lastUpdated: "2026-06-20",
7225
+ lastUpdated: "2026-08-04",
7224
7226
  counties: [
7225
7227
  {
7226
7228
  id: "va-fairfax",
@@ -7300,7 +7302,7 @@ var virginia_default = {
7300
7302
  url: "https://www.pwcva.gov/department/geographic-information-systems-gis",
7301
7303
  email: null
7302
7304
  },
7303
- notes: "Prince William County (Northern Virginia, pop. ~490,000; county seat unincorporated, courts in Manassas) publishes an Open Data parcel MapServer at gisweb.pwcva.gov (note the host is gisweb.pwcva.gov, NOT pwcgov.org). Layer 0 exposes 49 fields and -- unlike neighboring Fairfax County -- includes owner name directly: CAMA_OWNER_CUR (current owner from the CAMA system) and CAMA_DEEDOWNER (deed owner). Parcel identifier is GPIN, a hyphenated geographic id (e.g. '7201-09-8851'). Site address is split across ST_NO / ST_NAME / ST_TYPE / CITY / ZIP. Verified 2026-06-20: 159,174 parcels; UPPER(CAMA_OWNER_CUR) LIKE '%SMITH%' returns real owners with Haymarket/Manassas-area addresses and ZIPs. IMPORTANT: this entry covers Prince William COUNTY only. The independent cities of Manassas (FIPS 51683) and Manassas Park (FIPS 51685) sit within the county's geographic bounds but are separate Census FIPS jurisdictions, governed and assessed independently. For authoritative assessment records use the PWC Real Estate Assessments office."
7305
+ notes: "Prince William County (Northern Virginia, pop. ~490,000; county seat unincorporated, courts in Manassas) publishes an Open Data parcel MapServer at gisweb.pwcva.gov (note the host is gisweb.pwcva.gov, NOT pwcgov.org). Layer 0 exposes 49 fields and -- unlike neighboring Fairfax County -- includes owner name directly: CAMA_OWNER_CUR (current owner from the CAMA system) and CAMA_DEEDOWNER (deed owner). Parcel identifier is GPIN, a hyphenated geographic id (e.g. '7201-09-8851'). Site address is split across ST_NO / ST_NAME / ST_TYPE / CITY / ZIP. Verified 2026-06-20: 159,174 parcels; UPPER(CAMA_OWNER_CUR) LIKE '%SMITH%' returns real owners with Haymarket/Manassas-area addresses and ZIPs. IMPORTANT: this entry covers Prince William COUNTY only. The independent cities of Manassas (FIPS 51683) and Manassas Park (FIPS 51685) sit within the county's geographic bounds but are separate Census FIPS jurisdictions, governed and assessed independently. For authoritative assessment records use the PWC Real Estate Assessments office. LIVENESS 2026-08-04: answers a home-network probe in ~2.6s with 10 correct parcel rows, but exceeds even the raised 15s host budget from the Vercel probe region on 112 consecutive checks. That pattern reads as datacenter-IP throttling rather than a slow server, so raising the budget further would risk the 60s shard ceiling for no gain. Stays honestly degraded."
7304
7306
  }
7305
7307
  ]
7306
7308
  };
@@ -7495,7 +7497,7 @@ var west_virginia_default = {
7495
7497
  stateSlug: "west-virginia",
7496
7498
  stateName: "West Virginia",
7497
7499
  stateAbbrev: "WV",
7498
- lastUpdated: "2026-06-20",
7500
+ lastUpdated: "2026-08-04",
7499
7501
  counties: [
7500
7502
  {
7501
7503
  id: "wv-kanawha",
@@ -7521,8 +7523,7 @@ var west_virginia_default = {
7521
7523
  { name: "FullOwnerAddress", label: "Owner Mailing Address", searchable: false },
7522
7524
  { name: "FullLegalDescription", label: "Legal Description", searchable: false },
7523
7525
  { name: "CountyID", label: "County ID string ('20' = Kanawha)", searchable: false },
7524
- { name: "GISPID", label: "GIS Parcel ID", searchable: false },
7525
- { name: "Acres_C", label: "Calculated Acres", searchable: false }
7526
+ { name: "GISPID", label: "GIS Parcel ID", searchable: false }
7526
7527
  ],
7527
7528
  sampleQuery: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0/query?where=CountyID%3D'20'+AND+UPPER(FullOwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=CleanParcelID,FullOwnerName,FullPhysicalAddress,FullOwnerAddress,CountyID&returnGeometry=false&f=json&resultRecordCount=10",
7528
7529
  license: "public",
@@ -7563,8 +7564,7 @@ var west_virginia_default = {
7563
7564
  { name: "FullOwnerAddress", label: "Owner Mailing Address", searchable: false },
7564
7565
  { name: "FullLegalDescription", label: "Legal Description", searchable: false },
7565
7566
  { name: "CountyID", label: "County ID string ('31' = Monongalia)", searchable: false },
7566
- { name: "GISPID", label: "GIS Parcel ID", searchable: false },
7567
- { name: "Acres_C", label: "Calculated Acres", searchable: false }
7567
+ { name: "GISPID", label: "GIS Parcel ID", searchable: false }
7568
7568
  ],
7569
7569
  sampleQuery: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0/query?where=CountyID%3D'31'+AND+UPPER(FullOwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=CleanParcelID,FullOwnerName,FullPhysicalAddress,FullOwnerAddress,CountyID&returnGeometry=false&f=json&resultRecordCount=10",
7570
7570
  license: "public",
@@ -7605,8 +7605,7 @@ var west_virginia_default = {
7605
7605
  { name: "FullOwnerAddress", label: "Owner Mailing Address", searchable: false },
7606
7606
  { name: "FullLegalDescription", label: "Legal Description", searchable: false },
7607
7607
  { name: "CountyID", label: "County ID string ('40' = Raleigh)", searchable: false },
7608
- { name: "GISPID", label: "GIS Parcel ID", searchable: false },
7609
- { name: "Acres_C", label: "Calculated Acres", searchable: false }
7608
+ { name: "GISPID", label: "GIS Parcel ID", searchable: false }
7610
7609
  ],
7611
7610
  sampleQuery: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0/query?where=CountyID%3D'40'+AND+UPPER(FullOwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=CleanParcelID,FullOwnerName,FullPhysicalAddress,FullOwnerAddress,CountyID&returnGeometry=false&f=json&resultRecordCount=10",
7612
7611
  license: "public",
@@ -7647,8 +7646,7 @@ var west_virginia_default = {
7647
7646
  { name: "FullOwnerAddress", label: "Owner Mailing Address", searchable: false },
7648
7647
  { name: "FullLegalDescription", label: "Legal Description", searchable: false },
7649
7648
  { name: "CountyID", label: "County ID string ('06' = Cabell)", searchable: false },
7650
- { name: "GISPID", label: "GIS Parcel ID", searchable: false },
7651
- { name: "Acres_C", label: "Calculated Acres", searchable: false }
7649
+ { name: "GISPID", label: "GIS Parcel ID", searchable: false }
7652
7650
  ],
7653
7651
  sampleQuery: "https://services.wvgis.wvu.edu/arcgis/rest/services/Planning_Cadastre/WV_Parcels/MapServer/0/query?where=CountyID%3D'06'+AND+UPPER(FullOwnerName)+LIKE+UPPER('%25SMITH%25')&outFields=CleanParcelID,FullOwnerName,FullPhysicalAddress,FullOwnerAddress,CountyID&returnGeometry=false&f=json&resultRecordCount=10",
7654
7652
  license: "public",
package/package.json CHANGED
@@ -1,68 +1,68 @@
1
- {
2
- "name": "@urbankitstudio/atlas",
3
- "version": "0.5.1",
4
- "description": "JS SDK for the UrbanKit County Parcel REST API Atlas — public ArcGIS REST endpoints for US county parcel data, with searchable field metadata, sample queries, and license info.",
5
- "keywords": [
6
- "parcel",
7
- "arcgis",
8
- "gis",
9
- "county",
10
- "assessor",
11
- "rest",
12
- "api",
13
- "geojson",
14
- "featureserver",
15
- "mapserver"
16
- ],
17
- "homepage": "https://urbankitstudio.com/parcel-atlas",
18
- "repository": {
19
- "type": "git",
20
- "url": "git+https://github.com/LEOyrh/urbankitstudio.git",
21
- "directory": "packages/atlas"
22
- },
23
- "bugs": {
24
- "url": "https://github.com/LEOyrh/urbankitstudio/issues"
25
- },
26
- "author": "Leo Yong <leoyrhbiz@gmail.com>",
27
- "license": "MIT",
28
- "type": "module",
29
- "main": "./dist/index.cjs",
30
- "module": "./dist/index.js",
31
- "types": "./dist/index.d.ts",
32
- "exports": {
33
- ".": {
34
- "import": {
35
- "types": "./dist/index.d.ts",
36
- "default": "./dist/index.js"
37
- },
38
- "require": {
39
- "types": "./dist/index.d.cts",
40
- "default": "./dist/index.cjs"
41
- }
42
- }
43
- },
44
- "files": [
45
- "dist",
46
- "data",
47
- "README.md",
48
- "LICENSE"
49
- ],
50
- "sideEffects": false,
51
- "scripts": {
52
- "build": "tsup",
53
- "typecheck": "tsc --noEmit",
54
- "test": "vitest run",
55
- "prepublishOnly": "npm run typecheck && npm run test && npm run build"
56
- },
57
- "devDependencies": {
58
- "tsup": "^8.3.5",
59
- "typescript": "^5.8.3",
60
- "vitest": "^2.1.8"
61
- },
62
- "publishConfig": {
63
- "access": "public"
64
- },
65
- "engines": {
66
- "node": ">=18"
67
- }
68
- }
1
+ {
2
+ "name": "@urbankitstudio/atlas",
3
+ "version": "0.5.2",
4
+ "description": "JS SDK for the UrbanKit County Parcel REST API Atlas — public ArcGIS REST endpoints for US county parcel data, with searchable field metadata, sample queries, and license info.",
5
+ "keywords": [
6
+ "parcel",
7
+ "arcgis",
8
+ "gis",
9
+ "county",
10
+ "assessor",
11
+ "rest",
12
+ "api",
13
+ "geojson",
14
+ "featureserver",
15
+ "mapserver"
16
+ ],
17
+ "homepage": "https://urbankitstudio.com/parcel-atlas",
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "git+https://github.com/LEOyrh/urbankitstudio.git",
21
+ "directory": "packages/atlas"
22
+ },
23
+ "bugs": {
24
+ "url": "https://github.com/LEOyrh/urbankitstudio/issues"
25
+ },
26
+ "author": "Leo Yong <leoyrhbiz@gmail.com>",
27
+ "license": "MIT",
28
+ "type": "module",
29
+ "main": "./dist/index.cjs",
30
+ "module": "./dist/index.js",
31
+ "types": "./dist/index.d.ts",
32
+ "exports": {
33
+ ".": {
34
+ "import": {
35
+ "types": "./dist/index.d.ts",
36
+ "default": "./dist/index.js"
37
+ },
38
+ "require": {
39
+ "types": "./dist/index.d.cts",
40
+ "default": "./dist/index.cjs"
41
+ }
42
+ }
43
+ },
44
+ "files": [
45
+ "dist",
46
+ "data",
47
+ "README.md",
48
+ "LICENSE"
49
+ ],
50
+ "sideEffects": false,
51
+ "scripts": {
52
+ "build": "tsup",
53
+ "typecheck": "tsc --noEmit",
54
+ "test": "vitest run",
55
+ "prepublishOnly": "npm run typecheck && npm run test && npm run build"
56
+ },
57
+ "devDependencies": {
58
+ "tsup": "^8.3.5",
59
+ "typescript": "^5.8.3",
60
+ "vitest": "^2.1.8"
61
+ },
62
+ "publishConfig": {
63
+ "access": "public"
64
+ },
65
+ "engines": {
66
+ "node": ">=18"
67
+ }
68
+ }