Skip to content

data(apis): add optional requestLimits column, document Alchemy HTTP batch limit (DBIP #3724) - #3737

Open
foxxx009 wants to merge 1 commit into
Chain-Love:mainfrom
foxxx009:dbip-3724-apis-requestlimits-data
Open

data(apis): add optional requestLimits column, document Alchemy HTTP batch limit (DBIP #3724)#3737
foxxx009 wants to merge 1 commit into
Chain-Love:mainfrom
foxxx009:dbip-3724-apis-requestlimits-data

Conversation

@foxxx009

@foxxx009 foxxx009 commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Closes #3724

Problem (file:line)

references/offers/apis.csv exposes only free-text limitations; a developer selecting a provider cannot see structured per-request ceilings (batch size, eth_getLogs block span).

Changes (by file)

  • references/offers/apis.csv + 102 listing apis.csv files: append the optional requestLimits column (header + one trailing empty field per row; no other column, row or file touched).
  • 6 canonical Alchemy offer rows filled with the documented provider-wide HTTP batch ceiling:
    [{"method":"*","transport":"http","metric":"batchRequests","maximum":1000,"sourceUrl":"https://www.alchemy.com/docs/reference/batch-requests"}]

Deliberately left blank (per the DBIP's own rules)

  • Alchemy WebSocket batch limits: official pages conflict (20 vs 1,000) -> unpopulated pending clarification.
  • QuickNode eth_getLogs block span: 5 (Free Trial) vs 10,000 (paid) is plan-dependent and cannot be represented accurately at offer granularity.

Acceptance

  • Blank means unverified; no 0 sentinel or guessed "unlimited"
  • blockSpan counts inclusive blocks (toBlock - fromBlock + 1) - documented in the column metadata
  • * used only because the source documents an all-method transport constraint
  • Offer-level entry is provider-wide (shared by every inheriting listing); no partial merges
  • RPS/month quotas stay in limitations; nothing removed
  • Schema/validation/enums/uniqueness implemented in the companion json-tools PR
  • Structured values exposed in generated JSON (verified: resolved alchemy-mainnet-free in ethereum.json inherits the array)

Tools PR

json-tools companion: schema (optional array, exact item shape, enums, positive integer), columns.json metadata, and validate_request_limits() (exact key set, http(s) sourceUrl, (method, transport, metric) uniqueness, canonical offers + per-network resolved rows).

Local validation

With the matching tools-side scripts: validate_csv.py All checks passed; csv_to_json.py exit 0; validate.py green. Negative cases (duplicate tuple, maximum: 0, bad transport/metric/URL) all rejected with per-row messages.

Rewards address: 0x2409b47a530be3831158f10b08ac93f7d08c1ff2

…batch limit (DBIP Chain-Love#3724)

- Append empty requestLimits column to the canonical apis.csv and all
  102 listing apis.csv files (header + one trailing empty field per
  row; no other column, row, or file touched).
- Fill 6 canonical Alchemy offer rows with the documented provider-wide
  HTTP batch ceiling:
  [{"method":"*","transport":"http","metric":"batchRequests","maximum":1000,
    "sourceUrl":"https://www.alchemy.com/docs/reference/batch-requests"}]
- Deliberately left blank: Alchemy WebSocket batch limits (official
  pages conflict: 20 vs 1,000) and QuickNode eth_getLogs block span
  (5 free vs 10,000 paid is plan-dependent and cannot be represented at
  offer granularity). Blank means unverified - no 0 sentinel, no guess.

Local validation with the matching tools-side scripts: validate_csv.py
All checks passed; csv_to_json.py exit 0; validate.py green. Resolved
listing rows inherit the value (e.g. alchemy-mainnet-free in
ethereum.json).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[DBIP] Add structured per-request RPC batch and block-span limits

1 participant