What to cache
Do not use one cache entry for requests with different endpoint paths,
scope, scopeLabel, currency, periodType, periodLimit, or source and metadata options.
Use catalog versions as content identities
Every standardized response returnscatalog_version. Cache the catalog under that exact value:
Refresh from events
When you receivefinancials.published, fetch the financial endpoint again. The event tells you that Rangler found new results; the endpoint returns the current standardized values.
GET /v1/events?type=financials.published regularly and pass its cursor between requests. Even webhook consumers should run a less frequent event-feed check so a delivery outage does not create a permanent gap.
Avoid first-user payload costs
Request only the view you need:Rate limits and retries
Rangler returns organization-level daily limit information on API responses:429 Too Many Requests:
- Stop sending work for the affected organization.
- Honor
Retry-Afterwhen present. - Otherwise wait until
X-RateLimit-Reset. - Add jitter so multiple workers do not resume simultaneously.
- Cap retry attempts and surface a durable failure instead of looping forever.
Do not cache failures as data
Cache a404 for a short bounded period only when it represents a legitimate missing resource. In particular, a geometry 404 means Rangler could not safely locate the exact value rectangle; the source-image endpoint can still succeed. Do not convert that result into a permanent claim that the filing has no source evidence.