@urbankitstudio/atlas 0.6.7 → 0.6.8

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.
package/README.md CHANGED
@@ -134,9 +134,9 @@ Omit `?fips=` to get every tracked county in one call.
134
134
 
135
135
  ## Coverage today
136
136
 
137
- The atlas bundles **233 counties across all 50 US states** (245 verified endpoints), covering the largest counties in each. Call `listStates()` to enumerate the full set.
137
+ The atlas bundles **234 counties across all 50 US states** (246 verified endpoints), covering the largest counties in each. Call `listStates()` to enumerate the full set.
138
138
 
139
- Every state has at least one county on record, and 227 of the 233 carry a verified endpoint. The other 6 have `hasPublicRest: false` and an empty `endpoints` array, with `notes` recording the reason and who to contact. Those reasons vary: a subscription-only regional GIS partner, a statewide server that requires an auth token, a state with no county-level parcel authority, a county viewer with no public query API, a county that does not publish owner names online. They ship rather than being omitted, so `findCounty()` still resolves them. **Check `hasPublicRest`** rather than assuming every county has an endpoint; `totals.countiesWithEndpoint` gives the queryable count directly.
139
+ Every state has at least one county on record, and 228 of the 234 carry a verified endpoint. The other 6 have `hasPublicRest: false` and an empty `endpoints` array, with `notes` recording the reason and who to contact. Those reasons vary: a subscription-only regional GIS partner, a statewide server that requires an auth token, a state with no county-level parcel authority, a county viewer with no public query API, a county that does not publish owner names online. They ship rather than being omitted, so `findCounty()` still resolves them. **Check `hasPublicRest`** rather than assuming every county has an endpoint; `totals.countiesWithEndpoint` gives the queryable count directly.
140
140
 
141
141
  Counties are added as their public REST endpoints are verified. Package versions bump when data refreshes — pin to a minor range (`^0.x`) to receive new counties without breaking changes.
142
142
 
package/data/index.json CHANGED
@@ -3,9 +3,9 @@
3
3
  "lastUpdated": "2026-09-26",
4
4
  "totals": {
5
5
  "states": 50,
6
- "counties": 233,
7
- "endpoints": 245,
8
- "countiesWithEndpoint": 227,
6
+ "counties": 234,
7
+ "endpoints": 246,
8
+ "countiesWithEndpoint": 228,
9
9
  "countiesUnprobeable": 1
10
10
  },
11
11
  "states": [
@@ -285,8 +285,8 @@
285
285
  "slug": "ohio",
286
286
  "name": "Ohio",
287
287
  "abbrev": "OH",
288
- "countyCount": 7,
289
- "endpointCount": 7,
288
+ "countyCount": 8,
289
+ "endpointCount": 8,
290
290
  "populated": true
291
291
  },
292
292
  {
@@ -26,21 +26,17 @@
26
26
  { "name": "ALTPARNO", "label": "Alternate Parcel Number", "searchable": true },
27
27
  { "name": "PPIN", "label": "PPIN", "searchable": true },
28
28
  { "name": "OWNNAME", "label": "Owner Name", "searchable": true },
29
- { "name": "MAILADD1", "label": "Mailing Address 1", "searchable": false },
30
- { "name": "MCITY1", "label": "Mailing City 1", "searchable": false },
31
- { "name": "MSTATE1", "label": "Mailing State 1", "searchable": false },
32
- { "name": "MZIP1", "label": "Mailing ZIP 1", "searchable": false },
33
29
  { "name": "SITEADD", "label": "Site Address", "searchable": true },
34
30
  { "name": "SCITY", "label": "Site City", "searchable": false },
35
31
  { "name": "SSTATE", "label": "Site State", "searchable": false },
36
32
  { "name": "SZIP", "label": "Site ZIP", "searchable": false },
37
33
  { "name": "SUBNAME", "label": "Subdivision Name", "searchable": false }
38
34
  ],
39
- "sampleQuery": "https://opcgis.deq.state.ms.us/opcgis/rest/services/Government/HINDS_PARCELS/MapServer/0/query?where=UPPER(OWNNAME)+LIKE+UPPER('%25SMITH%25')&outFields=PARNO,OWNNAME,MAILADD1,SITEADD,SCITY&returnGeometry=false&f=json&resultRecordCount=10",
35
+ "sampleQuery": "https://opcgis.deq.state.ms.us/opcgis/rest/services/Government/HINDS_PARCELS/MapServer/0/query?where=UPPER(OWNNAME)+LIKE+UPPER('%25SMITH%25')&outFields=*&returnGeometry=false&f=json&resultRecordCount=10",
40
36
  "license": "public",
41
37
  "licenseUrl": "https://www.gis.ms.gov/",
42
38
  "status": "live",
43
- "lastVerified": "2026-05-15",
39
+ "lastVerified": "2026-09-26",
44
40
  "verifiedBy": "manual"
45
41
  }
46
42
  ],
@@ -49,7 +45,7 @@
49
45
  "url": "https://www.gis.ms.gov/",
50
46
  "email": null
51
47
  },
52
- "notes": "Hinds County (Jackson, pop. 231,000; state capital) parcel layer hosted on MDEQ OPCGIS server. Mississippi DEQ hosts parcel layers for many MS counties under the 'Government' folder on opcgis.deq.state.ms.us. 20 fields confirmed: OBJECTID, CAMA, PARNO, ALTPARNO, PPIN, OWNNAME, MAILADD1/2, MCITY1/2, MSTATE1/2, MZIP1/2, SITEADD, SCITY, SSTATE, SZIP, SUBNAME. OWNNAME field returns owner name in mixed format. Verified 2026-05-15: SMITH returns Jackson MS addresses. The same server also has DeSoto County parcels and other MS county datasets."
48
+ "notes": "Hinds County (Jackson, pop. 231,000; state capital) parcel layer hosted on MDEQ OPCGIS server. Mississippi DEQ hosts parcel layers for many MS counties under the 'Government' folder on opcgis.deq.state.ms.us. The layer publishes 54 fields: OBJECTID, CAMA, PARNO, ALTPARNO, PPIN, OWNNAME, MAILADD1/2, MCITY1/2, MSTATE1/2, MZIP1/2, SITEADD, SCITY, SSTATE, SZIP, SUBNAME, deed and plat references, assessed values, acreage, ZONING, LEGLDESC and geometry measures. OWNNAME field returns owner name in mixed format. Verified 2026-05-15: SMITH returns Jackson MS site addresses. The same server also has DeSoto County parcels and other MS county datasets. 2026-09-26: the layer now refuses any query that names its outFields (HTTP 200 carrying error 400 \"Failed to execute query.\", measured twice each on the enrichment, radius and liveness query shapes) and answers outFields=* with 54 fields, so every UrbanKit query to this service sends outFields=* and the sample query above does the same. Measured the same day with returnCountOnly: MAILADD1, MAILADD2, MCITY1, MSTATE1 and MZIP1 are blank on every one of the layer's 114,814 parcels (0 rows each where the column IS NOT NULL AND <> '', against 114,547 for OWNNAME and 114,514 for SITEADD), so the record lists no mailing field and this county serves owner names and site addresses, not mailing addresses."
53
49
  },
54
50
  {
55
51
  "id": "ms-desoto",
package/data/ohio.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "stateSlug": "ohio",
3
3
  "stateName": "Ohio",
4
4
  "stateAbbrev": "OH",
5
- "lastUpdated": "2026-05-15",
5
+ "lastUpdated": "2026-09-26",
6
6
  "counties": [
7
7
  {
8
8
  "id": "oh-montgomery",
@@ -304,6 +304,53 @@
304
304
  "email": null
305
305
  },
306
306
  "notes": "Lucas County, Ohio (Toledo metro, county seat Toledo, pop. ~430K) serves parcels from the Lucas County Auditor's AREIS (Assessment Real Estate Information System) via a hosted FeatureServer. Owner name is owner; the site address is property_address (full street/city/state/zip in one field); mailing is mailing_address; identifiers are assessor_num (8-digit) and parid (7-digit). The county's canonical Cadastre_Dataset FeatureServer (layer 8) carries only lot/block geometry with no owner field -- use OSE_ParcelsAddresses_AREIS for owner-name queries. Owner search uses UPPER(owner) LIKE. Verified live 2026-05-30 (owner = MARTRE TAMERA L & BILL)."
307
+ },
308
+ {
309
+ "id": "oh-mahoning",
310
+ "state": "OH",
311
+ "stateName": "Ohio",
312
+ "stateSlug": "ohio",
313
+ "county": "Mahoning",
314
+ "countySlug": "mahoning-county",
315
+ "countyFips": "39099",
316
+ "hasPublicRest": true,
317
+ "endpoints": [
318
+ {
319
+ "url": "https://gisapp.mahoningcountyoh.gov/arcgis/rest/services/PUBLIC_WEBSITE_CADASTRAL/MapServer/2",
320
+ "serviceType": "MapServer",
321
+ "layerIndex": 2,
322
+ "layerName": "PROPERTY BOUNDARIES",
323
+ "supportsQuery": true,
324
+ "corsEnabled": true,
325
+ "searchFields": [
326
+ { "name": "PARCEL_ID", "label": "Parcel ID", "searchable": true },
327
+ { "name": "OWNNAME1", "label": "Owner Name 1", "searchable": true },
328
+ { "name": "OWNNAME2", "label": "Owner Name 2", "searchable": true },
329
+ { "name": "MVP_ADDRESS", "label": "Site Address", "searchable": true },
330
+ { "name": "LOCSTREET", "label": "Site Street Name", "searchable": true },
331
+ { "name": "LOCCITY", "label": "Site City", "searchable": true },
332
+ { "name": "LOCZIP", "label": "Site ZIP", "searchable": true },
333
+ { "name": "MAIL_ADDRESS", "label": "Owner Mailing Address", "searchable": true },
334
+ { "name": "MAILCITY", "label": "Owner Mailing City", "searchable": true },
335
+ { "name": "MAILSTATE", "label": "Owner Mailing State", "searchable": false },
336
+ { "name": "MAILZIP", "label": "Owner Mailing ZIP", "searchable": false },
337
+ { "name": "LANDUSE", "label": "Land Use Code", "searchable": false },
338
+ { "name": "ACRES", "label": "Acres", "searchable": false }
339
+ ],
340
+ "sampleQuery": "https://gisapp.mahoningcountyoh.gov/arcgis/rest/services/PUBLIC_WEBSITE_CADASTRAL/MapServer/2/query?where=UPPER(OWNNAME1)%20LIKE%20UPPER('%25SMITH%25')&outFields=*&returnGeometry=false&f=json&resultRecordCount=10",
341
+ "license": "unknown",
342
+ "licenseUrl": "https://www.mahoningcountyoh.gov/161/GIS",
343
+ "status": "live",
344
+ "lastVerified": "2026-09-26",
345
+ "verifiedBy": "manual"
346
+ }
347
+ ],
348
+ "contact": {
349
+ "department": "Mahoning County GIS",
350
+ "url": "https://www.mahoningcountyoh.gov/161/GIS",
351
+ "email": null
352
+ },
353
+ "notes": "Mahoning County (county seat Youngstown) publishes its parcels as layer 2 'PROPERTY BOUNDARIES' of the PUBLIC_WEBSITE_CADASTRAL MapServer on its own ArcGIS Server. The layer carries PARCEL_ID, owner names OWNNAME1 to OWNNAME3, the site address (MVP_ADDRESS combined, LOC* components), the owner mailing address (MAIL_ADDRESS combined, MAIL* components), a separate tax-bill mailing block (TAX*), land use, market values and the last sale. SERVER QUIRK: any query that names specific outFields fails with HTTP 400 'Failed to execute query.', and only outFields=* succeeds, so a client must request every field and pick columns out of the response. Measured across seven request variants on 2026-09-25 and confirmed again on 2026-09-26. CORS reflects the request's Origin. Re-verified 2026-09-26: the layer holds 160,722 parcels and an owner-name query returned live rows. The county's GIS page describes its maps as informational only and not suitable for legal, engineering or surveying use; no open-data license is stated."
307
354
  }
308
355
  ]
309
356
  }
package/dist/index.cjs CHANGED
@@ -18,9 +18,9 @@ var data_default = {
18
18
  lastUpdated: "2026-09-26",
19
19
  totals: {
20
20
  states: 50,
21
- counties: 233,
22
- endpoints: 245,
23
- countiesWithEndpoint: 227,
21
+ counties: 234,
22
+ endpoints: 246,
23
+ countiesWithEndpoint: 228,
24
24
  countiesUnprobeable: 1
25
25
  },
26
26
  states: [
@@ -300,8 +300,8 @@ var data_default = {
300
300
  slug: "ohio",
301
301
  name: "Ohio",
302
302
  abbrev: "OH",
303
- countyCount: 7,
304
- endpointCount: 7,
303
+ countyCount: 8,
304
+ endpointCount: 8,
305
305
  populated: true
306
306
  },
307
307
  {
@@ -15492,21 +15492,17 @@ var mississippi_default = {
15492
15492
  { name: "ALTPARNO", label: "Alternate Parcel Number", searchable: true },
15493
15493
  { name: "PPIN", label: "PPIN", searchable: true },
15494
15494
  { name: "OWNNAME", label: "Owner Name", searchable: true },
15495
- { name: "MAILADD1", label: "Mailing Address 1", searchable: false },
15496
- { name: "MCITY1", label: "Mailing City 1", searchable: false },
15497
- { name: "MSTATE1", label: "Mailing State 1", searchable: false },
15498
- { name: "MZIP1", label: "Mailing ZIP 1", searchable: false },
15499
15495
  { name: "SITEADD", label: "Site Address", searchable: true },
15500
15496
  { name: "SCITY", label: "Site City", searchable: false },
15501
15497
  { name: "SSTATE", label: "Site State", searchable: false },
15502
15498
  { name: "SZIP", label: "Site ZIP", searchable: false },
15503
15499
  { name: "SUBNAME", label: "Subdivision Name", searchable: false }
15504
15500
  ],
15505
- sampleQuery: "https://opcgis.deq.state.ms.us/opcgis/rest/services/Government/HINDS_PARCELS/MapServer/0/query?where=UPPER(OWNNAME)+LIKE+UPPER('%25SMITH%25')&outFields=PARNO,OWNNAME,MAILADD1,SITEADD,SCITY&returnGeometry=false&f=json&resultRecordCount=10",
15501
+ sampleQuery: "https://opcgis.deq.state.ms.us/opcgis/rest/services/Government/HINDS_PARCELS/MapServer/0/query?where=UPPER(OWNNAME)+LIKE+UPPER('%25SMITH%25')&outFields=*&returnGeometry=false&f=json&resultRecordCount=10",
15506
15502
  license: "public",
15507
15503
  licenseUrl: "https://www.gis.ms.gov/",
15508
15504
  status: "live",
15509
- lastVerified: "2026-05-15",
15505
+ lastVerified: "2026-09-26",
15510
15506
  verifiedBy: "manual"
15511
15507
  }
15512
15508
  ],
@@ -15515,7 +15511,7 @@ var mississippi_default = {
15515
15511
  url: "https://www.gis.ms.gov/",
15516
15512
  email: null
15517
15513
  },
15518
- notes: "Hinds County (Jackson, pop. 231,000; state capital) parcel layer hosted on MDEQ OPCGIS server. Mississippi DEQ hosts parcel layers for many MS counties under the 'Government' folder on opcgis.deq.state.ms.us. 20 fields confirmed: OBJECTID, CAMA, PARNO, ALTPARNO, PPIN, OWNNAME, MAILADD1/2, MCITY1/2, MSTATE1/2, MZIP1/2, SITEADD, SCITY, SSTATE, SZIP, SUBNAME. OWNNAME field returns owner name in mixed format. Verified 2026-05-15: SMITH returns Jackson MS addresses. The same server also has DeSoto County parcels and other MS county datasets."
15514
+ notes: `Hinds County (Jackson, pop. 231,000; state capital) parcel layer hosted on MDEQ OPCGIS server. Mississippi DEQ hosts parcel layers for many MS counties under the 'Government' folder on opcgis.deq.state.ms.us. The layer publishes 54 fields: OBJECTID, CAMA, PARNO, ALTPARNO, PPIN, OWNNAME, MAILADD1/2, MCITY1/2, MSTATE1/2, MZIP1/2, SITEADD, SCITY, SSTATE, SZIP, SUBNAME, deed and plat references, assessed values, acreage, ZONING, LEGLDESC and geometry measures. OWNNAME field returns owner name in mixed format. Verified 2026-05-15: SMITH returns Jackson MS site addresses. The same server also has DeSoto County parcels and other MS county datasets. 2026-09-26: the layer now refuses any query that names its outFields (HTTP 200 carrying error 400 "Failed to execute query.", measured twice each on the enrichment, radius and liveness query shapes) and answers outFields=* with 54 fields, so every UrbanKit query to this service sends outFields=* and the sample query above does the same. Measured the same day with returnCountOnly: MAILADD1, MAILADD2, MCITY1, MSTATE1 and MZIP1 are blank on every one of the layer's 114,814 parcels (0 rows each where the column IS NOT NULL AND <> '', against 114,547 for OWNNAME and 114,514 for SITEADD), so the record lists no mailing field and this county serves owner names and site addresses, not mailing addresses.`
15519
15515
  },
15520
15516
  {
15521
15517
  id: "ms-desoto",
@@ -18902,7 +18898,7 @@ var ohio_default = {
18902
18898
  stateSlug: "ohio",
18903
18899
  stateName: "Ohio",
18904
18900
  stateAbbrev: "OH",
18905
- lastUpdated: "2026-05-15",
18901
+ lastUpdated: "2026-09-26",
18906
18902
  counties: [
18907
18903
  {
18908
18904
  id: "oh-montgomery",
@@ -19204,6 +19200,53 @@ var ohio_default = {
19204
19200
  email: null
19205
19201
  },
19206
19202
  notes: "Lucas County, Ohio (Toledo metro, county seat Toledo, pop. ~430K) serves parcels from the Lucas County Auditor's AREIS (Assessment Real Estate Information System) via a hosted FeatureServer. Owner name is owner; the site address is property_address (full street/city/state/zip in one field); mailing is mailing_address; identifiers are assessor_num (8-digit) and parid (7-digit). The county's canonical Cadastre_Dataset FeatureServer (layer 8) carries only lot/block geometry with no owner field -- use OSE_ParcelsAddresses_AREIS for owner-name queries. Owner search uses UPPER(owner) LIKE. Verified live 2026-05-30 (owner = MARTRE TAMERA L & BILL)."
19203
+ },
19204
+ {
19205
+ id: "oh-mahoning",
19206
+ state: "OH",
19207
+ stateName: "Ohio",
19208
+ stateSlug: "ohio",
19209
+ county: "Mahoning",
19210
+ countySlug: "mahoning-county",
19211
+ countyFips: "39099",
19212
+ hasPublicRest: true,
19213
+ endpoints: [
19214
+ {
19215
+ url: "https://gisapp.mahoningcountyoh.gov/arcgis/rest/services/PUBLIC_WEBSITE_CADASTRAL/MapServer/2",
19216
+ serviceType: "MapServer",
19217
+ layerIndex: 2,
19218
+ layerName: "PROPERTY BOUNDARIES",
19219
+ supportsQuery: true,
19220
+ corsEnabled: true,
19221
+ searchFields: [
19222
+ { name: "PARCEL_ID", label: "Parcel ID", searchable: true },
19223
+ { name: "OWNNAME1", label: "Owner Name 1", searchable: true },
19224
+ { name: "OWNNAME2", label: "Owner Name 2", searchable: true },
19225
+ { name: "MVP_ADDRESS", label: "Site Address", searchable: true },
19226
+ { name: "LOCSTREET", label: "Site Street Name", searchable: true },
19227
+ { name: "LOCCITY", label: "Site City", searchable: true },
19228
+ { name: "LOCZIP", label: "Site ZIP", searchable: true },
19229
+ { name: "MAIL_ADDRESS", label: "Owner Mailing Address", searchable: true },
19230
+ { name: "MAILCITY", label: "Owner Mailing City", searchable: true },
19231
+ { name: "MAILSTATE", label: "Owner Mailing State", searchable: false },
19232
+ { name: "MAILZIP", label: "Owner Mailing ZIP", searchable: false },
19233
+ { name: "LANDUSE", label: "Land Use Code", searchable: false },
19234
+ { name: "ACRES", label: "Acres", searchable: false }
19235
+ ],
19236
+ sampleQuery: "https://gisapp.mahoningcountyoh.gov/arcgis/rest/services/PUBLIC_WEBSITE_CADASTRAL/MapServer/2/query?where=UPPER(OWNNAME1)%20LIKE%20UPPER('%25SMITH%25')&outFields=*&returnGeometry=false&f=json&resultRecordCount=10",
19237
+ license: "unknown",
19238
+ licenseUrl: "https://www.mahoningcountyoh.gov/161/GIS",
19239
+ status: "live",
19240
+ lastVerified: "2026-09-26",
19241
+ verifiedBy: "manual"
19242
+ }
19243
+ ],
19244
+ contact: {
19245
+ department: "Mahoning County GIS",
19246
+ url: "https://www.mahoningcountyoh.gov/161/GIS",
19247
+ email: null
19248
+ },
19249
+ notes: "Mahoning County (county seat Youngstown) publishes its parcels as layer 2 'PROPERTY BOUNDARIES' of the PUBLIC_WEBSITE_CADASTRAL MapServer on its own ArcGIS Server. The layer carries PARCEL_ID, owner names OWNNAME1 to OWNNAME3, the site address (MVP_ADDRESS combined, LOC* components), the owner mailing address (MAIL_ADDRESS combined, MAIL* components), a separate tax-bill mailing block (TAX*), land use, market values and the last sale. SERVER QUIRK: any query that names specific outFields fails with HTTP 400 'Failed to execute query.', and only outFields=* succeeds, so a client must request every field and pick columns out of the response. Measured across seven request variants on 2026-09-25 and confirmed again on 2026-09-26. CORS reflects the request's Origin. Re-verified 2026-09-26: the layer holds 160,722 parcels and an owner-name query returned live rows. The county's GIS page describes its maps as informational only and not suitable for legal, engineering or surveying use; no open-data license is stated."
19207
19250
  }
19208
19251
  ]
19209
19252
  };
package/dist/index.js CHANGED
@@ -16,9 +16,9 @@ var data_default = {
16
16
  lastUpdated: "2026-09-26",
17
17
  totals: {
18
18
  states: 50,
19
- counties: 233,
20
- endpoints: 245,
21
- countiesWithEndpoint: 227,
19
+ counties: 234,
20
+ endpoints: 246,
21
+ countiesWithEndpoint: 228,
22
22
  countiesUnprobeable: 1
23
23
  },
24
24
  states: [
@@ -298,8 +298,8 @@ var data_default = {
298
298
  slug: "ohio",
299
299
  name: "Ohio",
300
300
  abbrev: "OH",
301
- countyCount: 7,
302
- endpointCount: 7,
301
+ countyCount: 8,
302
+ endpointCount: 8,
303
303
  populated: true
304
304
  },
305
305
  {
@@ -15490,21 +15490,17 @@ var mississippi_default = {
15490
15490
  { name: "ALTPARNO", label: "Alternate Parcel Number", searchable: true },
15491
15491
  { name: "PPIN", label: "PPIN", searchable: true },
15492
15492
  { name: "OWNNAME", label: "Owner Name", searchable: true },
15493
- { name: "MAILADD1", label: "Mailing Address 1", searchable: false },
15494
- { name: "MCITY1", label: "Mailing City 1", searchable: false },
15495
- { name: "MSTATE1", label: "Mailing State 1", searchable: false },
15496
- { name: "MZIP1", label: "Mailing ZIP 1", searchable: false },
15497
15493
  { name: "SITEADD", label: "Site Address", searchable: true },
15498
15494
  { name: "SCITY", label: "Site City", searchable: false },
15499
15495
  { name: "SSTATE", label: "Site State", searchable: false },
15500
15496
  { name: "SZIP", label: "Site ZIP", searchable: false },
15501
15497
  { name: "SUBNAME", label: "Subdivision Name", searchable: false }
15502
15498
  ],
15503
- sampleQuery: "https://opcgis.deq.state.ms.us/opcgis/rest/services/Government/HINDS_PARCELS/MapServer/0/query?where=UPPER(OWNNAME)+LIKE+UPPER('%25SMITH%25')&outFields=PARNO,OWNNAME,MAILADD1,SITEADD,SCITY&returnGeometry=false&f=json&resultRecordCount=10",
15499
+ sampleQuery: "https://opcgis.deq.state.ms.us/opcgis/rest/services/Government/HINDS_PARCELS/MapServer/0/query?where=UPPER(OWNNAME)+LIKE+UPPER('%25SMITH%25')&outFields=*&returnGeometry=false&f=json&resultRecordCount=10",
15504
15500
  license: "public",
15505
15501
  licenseUrl: "https://www.gis.ms.gov/",
15506
15502
  status: "live",
15507
- lastVerified: "2026-05-15",
15503
+ lastVerified: "2026-09-26",
15508
15504
  verifiedBy: "manual"
15509
15505
  }
15510
15506
  ],
@@ -15513,7 +15509,7 @@ var mississippi_default = {
15513
15509
  url: "https://www.gis.ms.gov/",
15514
15510
  email: null
15515
15511
  },
15516
- notes: "Hinds County (Jackson, pop. 231,000; state capital) parcel layer hosted on MDEQ OPCGIS server. Mississippi DEQ hosts parcel layers for many MS counties under the 'Government' folder on opcgis.deq.state.ms.us. 20 fields confirmed: OBJECTID, CAMA, PARNO, ALTPARNO, PPIN, OWNNAME, MAILADD1/2, MCITY1/2, MSTATE1/2, MZIP1/2, SITEADD, SCITY, SSTATE, SZIP, SUBNAME. OWNNAME field returns owner name in mixed format. Verified 2026-05-15: SMITH returns Jackson MS addresses. The same server also has DeSoto County parcels and other MS county datasets."
15512
+ notes: `Hinds County (Jackson, pop. 231,000; state capital) parcel layer hosted on MDEQ OPCGIS server. Mississippi DEQ hosts parcel layers for many MS counties under the 'Government' folder on opcgis.deq.state.ms.us. The layer publishes 54 fields: OBJECTID, CAMA, PARNO, ALTPARNO, PPIN, OWNNAME, MAILADD1/2, MCITY1/2, MSTATE1/2, MZIP1/2, SITEADD, SCITY, SSTATE, SZIP, SUBNAME, deed and plat references, assessed values, acreage, ZONING, LEGLDESC and geometry measures. OWNNAME field returns owner name in mixed format. Verified 2026-05-15: SMITH returns Jackson MS site addresses. The same server also has DeSoto County parcels and other MS county datasets. 2026-09-26: the layer now refuses any query that names its outFields (HTTP 200 carrying error 400 "Failed to execute query.", measured twice each on the enrichment, radius and liveness query shapes) and answers outFields=* with 54 fields, so every UrbanKit query to this service sends outFields=* and the sample query above does the same. Measured the same day with returnCountOnly: MAILADD1, MAILADD2, MCITY1, MSTATE1 and MZIP1 are blank on every one of the layer's 114,814 parcels (0 rows each where the column IS NOT NULL AND <> '', against 114,547 for OWNNAME and 114,514 for SITEADD), so the record lists no mailing field and this county serves owner names and site addresses, not mailing addresses.`
15517
15513
  },
15518
15514
  {
15519
15515
  id: "ms-desoto",
@@ -18900,7 +18896,7 @@ var ohio_default = {
18900
18896
  stateSlug: "ohio",
18901
18897
  stateName: "Ohio",
18902
18898
  stateAbbrev: "OH",
18903
- lastUpdated: "2026-05-15",
18899
+ lastUpdated: "2026-09-26",
18904
18900
  counties: [
18905
18901
  {
18906
18902
  id: "oh-montgomery",
@@ -19202,6 +19198,53 @@ var ohio_default = {
19202
19198
  email: null
19203
19199
  },
19204
19200
  notes: "Lucas County, Ohio (Toledo metro, county seat Toledo, pop. ~430K) serves parcels from the Lucas County Auditor's AREIS (Assessment Real Estate Information System) via a hosted FeatureServer. Owner name is owner; the site address is property_address (full street/city/state/zip in one field); mailing is mailing_address; identifiers are assessor_num (8-digit) and parid (7-digit). The county's canonical Cadastre_Dataset FeatureServer (layer 8) carries only lot/block geometry with no owner field -- use OSE_ParcelsAddresses_AREIS for owner-name queries. Owner search uses UPPER(owner) LIKE. Verified live 2026-05-30 (owner = MARTRE TAMERA L & BILL)."
19201
+ },
19202
+ {
19203
+ id: "oh-mahoning",
19204
+ state: "OH",
19205
+ stateName: "Ohio",
19206
+ stateSlug: "ohio",
19207
+ county: "Mahoning",
19208
+ countySlug: "mahoning-county",
19209
+ countyFips: "39099",
19210
+ hasPublicRest: true,
19211
+ endpoints: [
19212
+ {
19213
+ url: "https://gisapp.mahoningcountyoh.gov/arcgis/rest/services/PUBLIC_WEBSITE_CADASTRAL/MapServer/2",
19214
+ serviceType: "MapServer",
19215
+ layerIndex: 2,
19216
+ layerName: "PROPERTY BOUNDARIES",
19217
+ supportsQuery: true,
19218
+ corsEnabled: true,
19219
+ searchFields: [
19220
+ { name: "PARCEL_ID", label: "Parcel ID", searchable: true },
19221
+ { name: "OWNNAME1", label: "Owner Name 1", searchable: true },
19222
+ { name: "OWNNAME2", label: "Owner Name 2", searchable: true },
19223
+ { name: "MVP_ADDRESS", label: "Site Address", searchable: true },
19224
+ { name: "LOCSTREET", label: "Site Street Name", searchable: true },
19225
+ { name: "LOCCITY", label: "Site City", searchable: true },
19226
+ { name: "LOCZIP", label: "Site ZIP", searchable: true },
19227
+ { name: "MAIL_ADDRESS", label: "Owner Mailing Address", searchable: true },
19228
+ { name: "MAILCITY", label: "Owner Mailing City", searchable: true },
19229
+ { name: "MAILSTATE", label: "Owner Mailing State", searchable: false },
19230
+ { name: "MAILZIP", label: "Owner Mailing ZIP", searchable: false },
19231
+ { name: "LANDUSE", label: "Land Use Code", searchable: false },
19232
+ { name: "ACRES", label: "Acres", searchable: false }
19233
+ ],
19234
+ sampleQuery: "https://gisapp.mahoningcountyoh.gov/arcgis/rest/services/PUBLIC_WEBSITE_CADASTRAL/MapServer/2/query?where=UPPER(OWNNAME1)%20LIKE%20UPPER('%25SMITH%25')&outFields=*&returnGeometry=false&f=json&resultRecordCount=10",
19235
+ license: "unknown",
19236
+ licenseUrl: "https://www.mahoningcountyoh.gov/161/GIS",
19237
+ status: "live",
19238
+ lastVerified: "2026-09-26",
19239
+ verifiedBy: "manual"
19240
+ }
19241
+ ],
19242
+ contact: {
19243
+ department: "Mahoning County GIS",
19244
+ url: "https://www.mahoningcountyoh.gov/161/GIS",
19245
+ email: null
19246
+ },
19247
+ notes: "Mahoning County (county seat Youngstown) publishes its parcels as layer 2 'PROPERTY BOUNDARIES' of the PUBLIC_WEBSITE_CADASTRAL MapServer on its own ArcGIS Server. The layer carries PARCEL_ID, owner names OWNNAME1 to OWNNAME3, the site address (MVP_ADDRESS combined, LOC* components), the owner mailing address (MAIL_ADDRESS combined, MAIL* components), a separate tax-bill mailing block (TAX*), land use, market values and the last sale. SERVER QUIRK: any query that names specific outFields fails with HTTP 400 'Failed to execute query.', and only outFields=* succeeds, so a client must request every field and pick columns out of the response. Measured across seven request variants on 2026-09-25 and confirmed again on 2026-09-26. CORS reflects the request's Origin. Re-verified 2026-09-26: the layer holds 160,722 parcels and an owner-name query returned live rows. The county's GIS page describes its maps as informational only and not suitable for legal, engineering or surveying use; no open-data license is stated."
19205
19248
  }
19206
19249
  ]
19207
19250
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@urbankitstudio/atlas",
3
- "version": "0.6.7",
4
- "description": "JS SDK for the UrbanKit County Parcel REST API Atlas: 233 counties across all 50 US states, 245 verified public ArcGIS REST endpoints for county parcel data, with searchable field metadata, sample queries and license info.",
3
+ "version": "0.6.8",
4
+ "description": "JS SDK for the UrbanKit County Parcel REST API Atlas: 234 counties across all 50 US states, 246 verified public ArcGIS REST endpoints for county parcel data, with searchable field metadata, sample queries and license info.",
5
5
  "keywords": [
6
6
  "parcel",
7
7
  "arcgis",