@urbankitstudio/atlas 0.5.2 → 0.5.3

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
@@ -92,6 +92,42 @@ atlas.totals; // { states, counties, endpoints }
92
92
  atlas.byStateSlug; // Map<stateSlug, StateFile>
93
93
  ```
94
94
 
95
+ ## `status` is a publish-time claim, not a live signal
96
+
97
+ This package ships static JSON and makes no network calls, so `status` and
98
+ `lastVerified` on every endpoint describe what was true **when the version you
99
+ installed was published**. `status: "live"` means a check passed before publish —
100
+ not that the endpoint is up right now. A county can go down the day after a
101
+ release and every installed copy keeps saying `"live"` until the next one.
102
+
103
+ The distinction is not hypothetical: on 2026-08-04 a county was being served as
104
+ `"live"` from its registry entry while the liveness probe had it down that same
105
+ afternoon.
106
+
107
+ For the current answer, ask the health endpoint — no API key, refreshed every
108
+ two hours:
109
+
110
+ ```ts
111
+ import { LIVE_STATUS_URL } from "@urbankitstudio/atlas";
112
+
113
+ const res = await fetch(`${LIVE_STATUS_URL}?fips=17089`);
114
+ const health = await res.json();
115
+ // { ok: true, found: true, county_fips: "17089",
116
+ // status: "ok" | "degraded" | "down" | "unknown",
117
+ // consecutive_failures, last_ok_at, checked_at }
118
+ ```
119
+
120
+ Two cases to handle rather than ignore:
121
+
122
+ - **`found: false`** means no observation exists — the county may be untracked or
123
+ never probed. It is *not* a statement that the endpoint is healthy.
124
+ - **A `503`** means the health store itself was unreachable. Also not a health
125
+ claim.
126
+
127
+ Treat both as *unknown*. Neither should render as "up".
128
+
129
+ Omit `?fips=` to get every tracked county in one call.
130
+
95
131
  ## Coverage today
96
132
 
97
133
  The atlas currently bundles **155 counties across all 50 US states**, covering the largest counties in each. Call `listStates()` to enumerate the full set; every state is now populated with at least one verified county endpoint.
package/dist/index.cjs CHANGED
@@ -1,5 +1,8 @@
1
1
  'use strict';
2
2
 
3
+ // src/types.ts
4
+ var LIVE_STATUS_URL = "https://urbankitstudio.com/api/atlas/status";
5
+
3
6
  // data/index.json
4
7
  var data_default = {
5
8
  version: "0.3.0",
@@ -8225,6 +8228,7 @@ function countyPath(stateSlug, countySlug) {
8225
8228
  return `/parcel-atlas/${stateSlug}/${countySlug}`;
8226
8229
  }
8227
8230
 
8231
+ exports.LIVE_STATUS_URL = LIVE_STATUS_URL;
8228
8232
  exports.atlas = atlas;
8229
8233
  exports.atlasIndex = atlasIndex;
8230
8234
  exports.buildParcelLookupDeepLink = buildParcelLookupDeepLink;
package/dist/index.d.cts CHANGED
@@ -1,7 +1,29 @@
1
1
  type ServiceType = "FeatureServer" | "MapServer";
2
2
  type LicenseType = "public" | "open-data" | "restricted" | "unknown";
3
+ /**
4
+ * The registry's curation stamp for an endpoint, AS OF THE MOMENT THIS PACKAGE
5
+ * WAS PUBLISHED. It is not a live signal and cannot be — this package ships
6
+ * static JSON and makes no network calls.
7
+ *
8
+ * So `"live"` here means "a check passed before publish", not "this endpoint is
9
+ * up right now". A county can go down the day after a release and every
10
+ * installed copy will keep reporting `"live"` until the next one.
11
+ *
12
+ * For the current answer, query the public health endpoint, which reports what
13
+ * the liveness probe last observed (every two hours) and requires no API key:
14
+ *
15
+ * GET https://urbankitstudio.com/api/atlas/status?fips=17089
16
+ *
17
+ * A `found: false` there means no observation exists — which is not the same as
18
+ * healthy. See LIVE_STATUS_URL below.
19
+ */
3
20
  type EndpointStatus = "live" | "stale" | "unreachable" | "unverified";
4
21
  type VerifiedBy = "manual" | "arcgis-hub-seed" | "automated";
22
+ /**
23
+ * Where to ask whether an endpoint is actually up right now. Keyless.
24
+ * Omit the query string for every tracked county.
25
+ */
26
+ declare const LIVE_STATUS_URL = "https://urbankitstudio.com/api/atlas/status";
5
27
  interface SearchField {
6
28
  name: string;
7
29
  label: string;
@@ -18,7 +40,10 @@ interface EndpointRecord {
18
40
  sampleQuery: string | null;
19
41
  license: LicenseType;
20
42
  licenseUrl: string | null;
43
+ /** Publish-time claim, NOT live. See {@link EndpointStatus}. */
21
44
  status: EndpointStatus;
45
+ /** ISO date this entry was last verified before publish — a human curation
46
+ * date, not a probe result, and always at least as old as this release. */
22
47
  lastVerified: string;
23
48
  verifiedBy: VerifiedBy;
24
49
  }
@@ -121,4 +146,4 @@ interface Atlas {
121
146
  }
122
147
  declare const atlas: Atlas;
123
148
 
124
- export { type Atlas, type AtlasIndex, type ContactInfo, type CountyRecord, type EndpointRecord, type EndpointStatus, type LicenseType, type SearchField, type ServiceType, type StateFile, type StateIndexEntry, type VerifiedBy, atlas, atlasIndex, buildParcelLookupDeepLink, countyPath, countySlugFromName, findCounty, findCountyByFips, findState, listCountiesByState, listStates, slugify, statePath };
149
+ export { type Atlas, type AtlasIndex, type ContactInfo, type CountyRecord, type EndpointRecord, type EndpointStatus, LIVE_STATUS_URL, type LicenseType, type SearchField, type ServiceType, type StateFile, type StateIndexEntry, type VerifiedBy, atlas, atlasIndex, buildParcelLookupDeepLink, countyPath, countySlugFromName, findCounty, findCountyByFips, findState, listCountiesByState, listStates, slugify, statePath };
package/dist/index.d.ts CHANGED
@@ -1,7 +1,29 @@
1
1
  type ServiceType = "FeatureServer" | "MapServer";
2
2
  type LicenseType = "public" | "open-data" | "restricted" | "unknown";
3
+ /**
4
+ * The registry's curation stamp for an endpoint, AS OF THE MOMENT THIS PACKAGE
5
+ * WAS PUBLISHED. It is not a live signal and cannot be — this package ships
6
+ * static JSON and makes no network calls.
7
+ *
8
+ * So `"live"` here means "a check passed before publish", not "this endpoint is
9
+ * up right now". A county can go down the day after a release and every
10
+ * installed copy will keep reporting `"live"` until the next one.
11
+ *
12
+ * For the current answer, query the public health endpoint, which reports what
13
+ * the liveness probe last observed (every two hours) and requires no API key:
14
+ *
15
+ * GET https://urbankitstudio.com/api/atlas/status?fips=17089
16
+ *
17
+ * A `found: false` there means no observation exists — which is not the same as
18
+ * healthy. See LIVE_STATUS_URL below.
19
+ */
3
20
  type EndpointStatus = "live" | "stale" | "unreachable" | "unverified";
4
21
  type VerifiedBy = "manual" | "arcgis-hub-seed" | "automated";
22
+ /**
23
+ * Where to ask whether an endpoint is actually up right now. Keyless.
24
+ * Omit the query string for every tracked county.
25
+ */
26
+ declare const LIVE_STATUS_URL = "https://urbankitstudio.com/api/atlas/status";
5
27
  interface SearchField {
6
28
  name: string;
7
29
  label: string;
@@ -18,7 +40,10 @@ interface EndpointRecord {
18
40
  sampleQuery: string | null;
19
41
  license: LicenseType;
20
42
  licenseUrl: string | null;
43
+ /** Publish-time claim, NOT live. See {@link EndpointStatus}. */
21
44
  status: EndpointStatus;
45
+ /** ISO date this entry was last verified before publish — a human curation
46
+ * date, not a probe result, and always at least as old as this release. */
22
47
  lastVerified: string;
23
48
  verifiedBy: VerifiedBy;
24
49
  }
@@ -121,4 +146,4 @@ interface Atlas {
121
146
  }
122
147
  declare const atlas: Atlas;
123
148
 
124
- export { type Atlas, type AtlasIndex, type ContactInfo, type CountyRecord, type EndpointRecord, type EndpointStatus, type LicenseType, type SearchField, type ServiceType, type StateFile, type StateIndexEntry, type VerifiedBy, atlas, atlasIndex, buildParcelLookupDeepLink, countyPath, countySlugFromName, findCounty, findCountyByFips, findState, listCountiesByState, listStates, slugify, statePath };
149
+ export { type Atlas, type AtlasIndex, type ContactInfo, type CountyRecord, type EndpointRecord, type EndpointStatus, LIVE_STATUS_URL, type LicenseType, type SearchField, type ServiceType, type StateFile, type StateIndexEntry, type VerifiedBy, atlas, atlasIndex, buildParcelLookupDeepLink, countyPath, countySlugFromName, findCounty, findCountyByFips, findState, listCountiesByState, listStates, slugify, statePath };
package/dist/index.js CHANGED
@@ -1,3 +1,6 @@
1
+ // src/types.ts
2
+ var LIVE_STATUS_URL = "https://urbankitstudio.com/api/atlas/status";
3
+
1
4
  // data/index.json
2
5
  var data_default = {
3
6
  version: "0.3.0",
@@ -8223,4 +8226,4 @@ function countyPath(stateSlug, countySlug) {
8223
8226
  return `/parcel-atlas/${stateSlug}/${countySlug}`;
8224
8227
  }
8225
8228
 
8226
- export { atlas, atlasIndex, buildParcelLookupDeepLink, countyPath, countySlugFromName, findCounty, findCountyByFips, findState, listCountiesByState, listStates, slugify, statePath };
8229
+ export { LIVE_STATUS_URL, atlas, atlasIndex, buildParcelLookupDeepLink, countyPath, countySlugFromName, findCounty, findCountyByFips, findState, listCountiesByState, listStates, slugify, statePath };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@urbankitstudio/atlas",
3
- "version": "0.5.2",
3
+ "version": "0.5.3",
4
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
5
  "keywords": [
6
6
  "parcel",