@mysten/graphql-transport
This package provides a SuiTransport
that enables SuiClient
to make requests using the RPC 2.0
(GraphQL) API instead of the JSON RPC API.
npm install --save @mysten/graphql-transport
import { SuiClientGraphQLTransport } from '@mysten/graphql-transport';
import { getFullnodeUrl, SuiClient } from '@mysten/sui/client';
const client = new SuiClient({
transport: new SuiClientGraphQLTransport({
url: 'https://sui-testnet.mystenlabs.com/graphql',
// When specified, the transport will fallback to JSON RPC for unsupported method and parameters
fallbackFullNodeUrl: getFullnodeUrl('testnet'),
}),
});
The following methods are currently unsupported in SuiClientGraphQLTransport, and will either error,
or fallback to the JSON RPC API if a fallbackFullNodeUrl
is provided:
subscribeTransaction
subscribeEvents
call
getNetworkMetrics
getMoveCallMetrics
getAddressMetrics
getEpochs
dryRunTransactionBlock
devInspectTransactionBlock
executeTransactionBlock
Some supported methods in SuiClientGraphQLTransport
do not support the full set of parameters
available in the JSON RPC API.
If an unsupported parameter is used, the request will error, or fallback to JSON RPC API if a
fallbackFullNodeUrl
is provided.
getOwnedObjects
:
MatchAll
, MatchAny
, MatchNone
, and Version
filtersqueryEvents
:
MoveEventField
, Module
, TimeRange
, All
, Any
, And
, and Or
filtersqueryTransactionBlocks
, getTransactionBlock
, and multiGetTransactionBlocks
messageVersion
, eventsDigest
, sharedObjects
, unwrapped
, wrapped
, and
unwrappedThenDeleted
in effectsid
for events
getStakes
and getStakesByIds
validatorAddress
getLatestSuiSystemState
stakingPoolMappingsId
, inactivePoolsId
, pendingActiveValidatorsId
,
validatorCandidatesId
reportRecords
on validatorsgetCurrentEpoch
reportRecords
on validatorsqueryEvents
id
for events
getCheckpoint
and getCheckpoints
checkpointCommitments
getCurrentEpoch
epochTotalTransactions
getDynamicFields
objectId
, digest
and version
available for DynamicObject
but not DynamicField
Some may require multiple requests to properly resolve:
getDynamicFieldObject
requires 2 requestsqueryTransactionBlocks
, getTransactionBlock
, and multiGetTransactionBlocks
objectChanges
, balanceChanges
, dependencies
and events
getNormalizedMoveModule
and getNormalizedMoveModulesByPage
friends
, functions
, and structs
getCheckpoint
and getCheckpoints
,
transactionBlocks
and validators
getLatestSuiSystemState
, getCurrentEpoch
, getValidatorsApy
and getCommitteeInfo
:
validators
Page sizes and limits for paginated methods are based on the defaults and limits of the GraphQL API, so page sizes and limits may be different than those returned by the JSON RPC API