Files
explorer-monorepo/docs/EXPLORER_API_REFERENCE.md
2026-03-02 12:14:13 -08:00

94 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SolaceScanScout Explorer — API Reference
The SolaceScanScout frontend uses the **Blockscout v2 API** for chain data. When the explorer is served from the same origin (e.g. `https://explorer.d-bis.org` or VM IP), requests go to `/api` and are proxied to Blockscout (port 4000). This document lists the endpoints used by the frontend.
## Base URL
- **Same-origin:** `window.location.origin + '/api'` (e.g. `https://explorer.d-bis.org/api`)
- **Fallback:** `https://explorer.d-bis.org/api`
All paths below are relative to this base (e.g. `/v2/stats``{base}/v2/stats`).
---
## Stats & Network
| Endpoint | Method | Purpose |
|----------|--------|---------|
| `/v2/stats` | GET | Total blocks, transactions, addresses; optional `average_block_time`, `transactions_per_second` |
| `/v2/blocks?page=1&page_size=N` | GET | Paginated blocks (N = 550). Used for stats, gas widget, block list |
| `/v2/blocks/{blockNumber}` | GET | Single block by number. Used for block detail and export |
---
## Transactions
| Endpoint | Method | Purpose |
|----------|--------|---------|
| `/v2/transactions?page=1&page_size=N` | GET | Paginated transactions (list, CSV export) |
| `/v2/transactions?address={address}&page=1&page_size=N` | GET | Transactions for an address (address detail tab, CSV export) |
| `/v2/transactions?filter=to&page=1&page_size=10` | GET | Latest transactions (home feed) |
| `/v2/transactions/{txHash}` | GET | Single transaction (detail, CSV/JSON export) |
| `/v2/transactions/{txHash}/internal-transactions` | GET | Internal transactions for a tx (alternate: `internal_transactions`) |
| `/v2/transactions/{txHash}/logs` | GET | Event logs for a tx (alternate: `log_entries`) |
---
## Addresses
| Endpoint | Method | Purpose |
|----------|--------|---------|
| `/v2/addresses/{address}` | GET | Address balance, tx count, token count, is_contract, is_verified |
| `/v2/addresses/{address}/token-balances` | GET | Token balances (ERC-20/721/1155). Alternate: `token_balances` |
| `/v2/addresses/{address}/nft-inventory` | GET | NFT inventory (alternates: `nft_tokens`, or filter token-balances by type) |
| `/v2/addresses/{address}/internal-transactions` | GET | Internal transactions (alternate: `internal_transactions`) |
---
## Contracts & Tokens
| Endpoint | Method | Purpose |
|----------|--------|---------|
| `/v2/smart-contracts/{address}` | GET | Contract ABI, bytecode, verification (alternate: `/v2/contracts/{address}`) |
| `/v2/tokens/{tokenAddress}` | GET | Token info (name, symbol, decimals, total supply, holders). Alternate: `/v2/token/{tokenAddress}` |
| `/v2/tokens/{tokenAddress}/transfers?page=1&page_size=N` | GET | Token transfers (token profile page) |
| `/v2/tokens/{contractAddress}/nft/{tokenId}` | GET | NFT instance (metadata, image, owner). Alternate: `/v2/nft/{contractAddress}/{tokenId}` |
---
## Search
| Endpoint | Method | Purpose |
|----------|--------|---------|
| `/v2/search?q={query}` | GET | Search by token/contract name, symbol, address, tx hash, block number |
---
## Response Shapes (summary)
- **Lists:** Usually `{ items: [...] }` or array. Frontend normalizes with `normalizeBlock`, `normalizeTransaction`, `normalizeAddress`.
- **Single block:** `height`/`number`, `hash`, `timestamp`, `miner`, `transaction_count`, `gas_used`, `gas_limit`, `base_fee_per_gas`, `burnt_fees`, `parent_hash`, `nonce`, etc. Optional: `consensus`, `finality`, `validated` for finality.
- **Single transaction:** `hash`, `from`, `to`, `value`, `block_number`, `gas_used`, `gas_limit`, `input`, `decoded_input`, `revert_reason`, `status`, etc.
- **Address:** `hash`/`address`, `balance`/`coin_balance`, `transactions_count`, `token_count`, `is_contract`, `is_verified`.
---
## Rate Limits & API Keys
The frontend does not send API keys. Rate limits are determined by the Blockscout/nginx deployment. For premium or authenticated access, a separate backend (e.g. Go API) would be required (Tier 3).
---
## OpenAPI / Swagger
If your Blockscout instance exposes an OpenAPI (Swagger) spec, it is often at `{base}/api-docs` or `{base}/swagger`. Document that URL for your deployment (e.g. `https://explorer.d-bis.org/api-docs` if enabled).
## Recent changes
- Search results list; Tokens page; Token approvals link; Contract creation / first-last tx on address; Pagination (blocks/txs); Event log decoding; Failed tx rate in Gas widget; More i18n + FR; Copy buttons; Known-address labels. See [EXPLORER_ADDITIONAL_RECOMMENDATIONS.md](EXPLORER_ADDITIONAL_RECOMMENDATIONS.md).
## See Also
- [EXPLORER_API_ACCESS.md](EXPLORER_API_ACCESS.md) — Troubleshooting API connectivity and 502s
- [Blockscout API docs](https://docs.blockscout.com/) — Official Blockscout API documentation