@helium/http

An HTTP client for interfacing with the Helium blockchain. For more documentation on the underlying REST API, see the section on the Helium Developer Site.
Installation
$ yarn add @helium/http
# or
$ npm install @helium/http
Usage
Initializing the Client
By default, the client will be initialized with the production network: https://api.helium.io
import { Client } from '@helium/http'
const client = new Client()
client.network.endpoint
To specify a specific network, such as staging, the client can be initialized with a Network instance
import { Client, Network } from '@helium/http'
const client = new Client(Network.staging)
client.network.endpoint
Available Networks
Paginating Results
Resource lists implement an asynchronous iterator, which allows for paginating over the whole collection while abstracting the underlying pages and cursors. This is great for an infinite scrolling UI, for example.
The asynchronous iterator can be used directly via the for-await-of syntax:
for await (const account of client.accounts.list()) {
account
if (someConditionMet)
break
}
There is also a helper, take, which returns the items in chunks:
const list = await client.accounts.list()
await list.take(20)
await list.take(20)
If you're on an older version of Node.js or simply want to use the built-in pagination directly, the following methods are provided:
const firstPage = await client.accounts.list()
firstPage.data
firstPage.hasMore
const nextPage = await firstPage.nextPage()
firstPage.data
firstPage.hasMore
Resources
Accounts
Get an Account
await client.accounts.get('an-account-address')
List Accounts
await client.accounts.list()
Get an Accounts Stats
await client.accounts.getStats('an-account-address')
Blocks
Get a Block
await client.blocks.get(12345)
await client.blocks.get('a-block-hash')
List Blocks
await client.blocks.list()
Current Block Height
await client.blocks.getHeight()
Stats
Get Network Stats
await client.stats.get()
Transactions
Get Transaction Activity for an Account
await client.account('an-account-address').activity.list()
await client.account('an-account-address').activity.list({
filterTypes: ['payment_v1' ]
})
Get Transactions from a Block
const block = await client.blocks.get(12345)
const block = await client.blocks.get('fake-hash')
await block.transactions.list()
Submit a New Transaction
const serializedTxn = 'a-base64-serialized-txn'
const pendingTxn = await client.transactions.submit(serializedTxn)
pendingTxn
See @helium/transactions for instructions on constructing a serialized transaction.
Pending Transactions
Check Status of Pending Transaction
This returns a ResourceList of pending transactions. In the case that a transaction fails and is submitted again it will return multiple pending transactions.
const pendingTxnsList = await client.pendingTransactions.get('fake-pending-txn-hash')
pendingTxns = await pendingTxnsList.take(100)
List Pending Transactions for an Account
const list = await client.account('fake-address').pendingTransactions.list()
const pendingTxns = await list.take(10)
pendingTxns
Election Groups
Get an Election Group
await client.elections.get('hash')
List Election Groups
const list = await client.elections.list()
const elections = await list.take(10)
Price Oracle
Get the Current Oracle Price
await client.oracle.getCurrentPrice()
Cities
List all cities with hotspots
const list = await client.cities.list()
const cities = await list.take(10)
Search for a city
const list = await client.cities.list({ query: 'san francisco' })
const cities = await list.take(10)
Get specific city data
const city = await client.cities.get('city-id')
List hotspots in a city
const list = await client.city('city-id').hotspots.list()
const hotspots = await list.take(10)