GetObject gRPC Method
Parameters
object_id
string
REQUIRED
Loading...
read_mask
object
Loading...
paths
array
Loading...
Returns
object
object
Loading...
bcs
object
Loading...
name
string
Loading...
value
string
Loading...
objectId
string
Loading...
version
string
Loading...
digest
string
Loading...
owner
object
Loading...
kind
string
Loading...
version
string
Loading...
objectType
string
Loading...
hasPublicTransfer
boolean
Loading...
contents
object
Loading...
name
string
Loading...
value
string
Loading...
previousTransaction
string
Loading...
storageRebate
string
Loading...
Request
1grpcurl \2-import-path . \3-proto sui/rpc/v2beta2/ledger_service.proto \4-H "x-token: YOUR_TOKEN_VALUE" \5-d '{6"object_id": "0x27c4fdb3b846aa3ae4a65ef5127a309aa3c1f466671471a806d8912a18b253e8",7"read_mask": {8"paths": [9"bcs",10"object_id",11"version",12"digest",13"owner",14"object_type",15"has_public_transfer",16"contents",17"previous_transaction",18"storage_rebate"19]20}21}' \22docs-demo.sui-mainnet.quiknode.pro:9000 \23sui.rpc.v2beta2.LedgerService/GetObject
1grpcurl \2-import-path . \3-proto sui/rpc/v2beta2/ledger_service.proto \4-H "x-token: YOUR_TOKEN_VALUE" \5-d '{6"object_id": "0x27c4fdb3b846aa3ae4a65ef5127a309aa3c1f466671471a806d8912a18b253e8",7"read_mask": {8"paths": [9"bcs",10"object_id",11"version",12"digest",13"owner",14"object_type",15"has_public_transfer",16"contents",17"previous_transaction",18"storage_rebate"19]20}21}' \22docs-demo.sui-mainnet.quiknode.pro:9000 \23sui.rpc.v2beta2.LedgerService/GetObject
1package main23import (4"context"5"crypto/tls"6"encoding/json"7"fmt"8"log"9"time"1011"google.golang.org/grpc"12"google.golang.org/grpc/credentials"13"google.golang.org/protobuf/encoding/protojson"14"google.golang.org/protobuf/types/known/fieldmaskpb"1516pb "sui-grpc/sui/rpc/v2beta2" // Your Generated .pb.go files path17)1819// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token20// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678921// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}22// token will be : abcde1234567892324var (25token = "YOUR_TOKEN_NUMBER"26endpoint = "YOUR_QN_ENDPOINT:9000"27)2829// Auth structure for x-token30type auth struct {31token string32}3334func (a *auth) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) {35return map[string]string{36"x-token": a.token,37}, nil38}3940func (a *auth) RequireTransportSecurity() bool {41return true42}4344func main() {45creds := credentials.NewTLS(&tls.Config{})4647opts := []grpc.DialOption{48grpc.WithTransportCredentials(creds),49grpc.WithPerRPCCredentials(&auth{token}),50}5152conn, err := grpc.Dial(endpoint, opts...)53if err != nil {54log.Fatalf("Failed to connect: %v", err)55}56defer conn.Close()5758client := pb.NewLedgerServiceClient(conn)5960objectID := "0x27c4fdb3b846aa3ae4a65ef5127a309aa3c1f466671471a806d8912a18b253e8"61fieldMask := &fieldmaskpb.FieldMask{62Paths: []string{63"bcs",64"object_id",65"version",66"digest",67"owner",68"object_type",69"has_public_transfer",70"contents",71"previous_transaction",72"storage_rebate",73},74}7576req := &pb.GetObjectRequest{77ObjectId: &objectID,78ReadMask: fieldMask,79}8081ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)82defer cancel()8384resp, err := client.GetObject(ctx, req)85if err != nil {86log.Fatalf("GetObject failed: %v", err)87}8889marshaler := protojson.MarshalOptions{90UseProtoNames: true,91EmitUnpopulated: true,92Indent: " ",93}9495jsonBytes, err := marshaler.Marshal(resp)96if err != nil {97log.Fatalf("Failed to marshal response to JSON: %v", err)98}99100var prettyJSON map[string]interface{}101if err := json.Unmarshal(jsonBytes, &prettyJSON); err != nil {102log.Fatalf("Failed to unmarshal JSON: %v", err)103}104105formatted, err := json.MarshalIndent(prettyJSON, "", " ")106if err != nil {107log.Fatalf("Failed to format JSON: %v", err)108}109110fmt.Println(string(formatted))111}112
1package main23import (4"context"5"crypto/tls"6"encoding/json"7"fmt"8"log"9"time"1011"google.golang.org/grpc"12"google.golang.org/grpc/credentials"13"google.golang.org/protobuf/encoding/protojson"14"google.golang.org/protobuf/types/known/fieldmaskpb"1516pb "sui-grpc/sui/rpc/v2beta2" // Your Generated .pb.go files path17)1819// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token20// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678921// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}22// token will be : abcde1234567892324var (25token = "YOUR_TOKEN_NUMBER"26endpoint = "YOUR_QN_ENDPOINT:9000"27)2829// Auth structure for x-token30type auth struct {31token string32}3334func (a *auth) GetRequestMetadata(ctx context.Context, uri ...string) (map[string]string, error) {35return map[string]string{36"x-token": a.token,37}, nil38}3940func (a *auth) RequireTransportSecurity() bool {41return true42}4344func main() {45creds := credentials.NewTLS(&tls.Config{})4647opts := []grpc.DialOption{48grpc.WithTransportCredentials(creds),49grpc.WithPerRPCCredentials(&auth{token}),50}5152conn, err := grpc.Dial(endpoint, opts...)53if err != nil {54log.Fatalf("Failed to connect: %v", err)55}56defer conn.Close()5758client := pb.NewLedgerServiceClient(conn)5960objectID := "0x27c4fdb3b846aa3ae4a65ef5127a309aa3c1f466671471a806d8912a18b253e8"61fieldMask := &fieldmaskpb.FieldMask{62Paths: []string{63"bcs",64"object_id",65"version",66"digest",67"owner",68"object_type",69"has_public_transfer",70"contents",71"previous_transaction",72"storage_rebate",73},74}7576req := &pb.GetObjectRequest{77ObjectId: &objectID,78ReadMask: fieldMask,79}8081ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)82defer cancel()8384resp, err := client.GetObject(ctx, req)85if err != nil {86log.Fatalf("GetObject failed: %v", err)87}8889marshaler := protojson.MarshalOptions{90UseProtoNames: true,91EmitUnpopulated: true,92Indent: " ",93}9495jsonBytes, err := marshaler.Marshal(resp)96if err != nil {97log.Fatalf("Failed to marshal response to JSON: %v", err)98}99100var prettyJSON map[string]interface{}101if err := json.Unmarshal(jsonBytes, &prettyJSON); err != nil {102log.Fatalf("Failed to unmarshal JSON: %v", err)103}104105formatted, err := json.MarshalIndent(prettyJSON, "", " ")106if err != nil {107log.Fatalf("Failed to format JSON: %v", err)108}109110fmt.Println(string(formatted))111}112
1import * as grpc from '@grpc/grpc-js';2import * as protoLoader from '@grpc/proto-loader';3import * as path from 'path';45const PROTO_PATH = path.join(__dirname, 'protos/proto/sui/rpc/v2beta2/ledger_service.proto');67// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token8// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde1234567899// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}10// token will be : abcde1234567891112const endpoint = 'docs-demo.sui-mainnet.quiknode.pro:9000';13const token = 'abcde123456789';1415// Load protobuf definitions16const packageDefinition = protoLoader.loadSync(PROTO_PATH, {17keepCase: true,18longs: String,19enums: String,20defaults: true,21oneofs: true,22includeDirs: [path.join(__dirname, 'protos/proto')],23});24const proto = grpc.loadPackageDefinition(packageDefinition) as any;25const LedgerService = proto.sui.rpc.v2beta2.LedgerService;2627// Create secure client28const client = new LedgerService(endpoint, grpc.credentials.createSsl());2930// Metadata for authentication31const metadata = new grpc.Metadata();32metadata.add('x-token', token);3334// Request setup35const request = {36object_id: '0x27c4fdb3b846aa3ae4a65ef5127a309aa3c1f466671471a806d8912a18b253e8',37read_mask: {38paths: [39'bcs',40'object_id',41'version',42'digest',43'owner',44'object_type',45'has_public_transfer',46'contents',47'previous_transaction',48'storage_rebate',49],50},51};5253// Recursively convert byte arrays to hex54function convertBytesToHex(obj: any): any {55if (Array.isArray(obj)) {56return obj.map(convertBytesToHex);57} else if (obj && typeof obj === 'object') {58const result: any = {};59for (const key of Object.keys(obj)) {60const val = obj[key];61if (Buffer.isBuffer(val) || (Array.isArray(val) && typeof val[0] === 'number')) {62result[key] = Buffer.from(val).toString('hex');63} else {64result[key] = convertBytesToHex(val);65}66}67return result;68}69return obj;70}7172// Invoke GetObject73client.GetObject(request, metadata, (err: grpc.ServiceError | null, response: any) => {74if (err) {75console.error('gRPC Error:', {76code: err.code,77message: err.message,78details: err.details,79});80} else {81const decoded = convertBytesToHex(response);82console.log('GetObject Response:');83console.log(JSON.stringify(decoded, null, 2));84}85});86
1import * as grpc from '@grpc/grpc-js';2import * as protoLoader from '@grpc/proto-loader';3import * as path from 'path';45const PROTO_PATH = path.join(__dirname, 'protos/proto/sui/rpc/v2beta2/ledger_service.proto');67// Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token8// For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde1234567899// endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}10// token will be : abcde1234567891112const endpoint = 'docs-demo.sui-mainnet.quiknode.pro:9000';13const token = 'abcde123456789';1415// Load protobuf definitions16const packageDefinition = protoLoader.loadSync(PROTO_PATH, {17keepCase: true,18longs: String,19enums: String,20defaults: true,21oneofs: true,22includeDirs: [path.join(__dirname, 'protos/proto')],23});24const proto = grpc.loadPackageDefinition(packageDefinition) as any;25const LedgerService = proto.sui.rpc.v2beta2.LedgerService;2627// Create secure client28const client = new LedgerService(endpoint, grpc.credentials.createSsl());2930// Metadata for authentication31const metadata = new grpc.Metadata();32metadata.add('x-token', token);3334// Request setup35const request = {36object_id: '0x27c4fdb3b846aa3ae4a65ef5127a309aa3c1f466671471a806d8912a18b253e8',37read_mask: {38paths: [39'bcs',40'object_id',41'version',42'digest',43'owner',44'object_type',45'has_public_transfer',46'contents',47'previous_transaction',48'storage_rebate',49],50},51};5253// Recursively convert byte arrays to hex54function convertBytesToHex(obj: any): any {55if (Array.isArray(obj)) {56return obj.map(convertBytesToHex);57} else if (obj && typeof obj === 'object') {58const result: any = {};59for (const key of Object.keys(obj)) {60const val = obj[key];61if (Buffer.isBuffer(val) || (Array.isArray(val) && typeof val[0] === 'number')) {62result[key] = Buffer.from(val).toString('hex');63} else {64result[key] = convertBytesToHex(val);65}66}67return result;68}69return obj;70}7172// Invoke GetObject73client.GetObject(request, metadata, (err: grpc.ServiceError | null, response: any) => {74if (err) {75console.error('gRPC Error:', {76code: err.code,77message: err.message,78details: err.details,79});80} else {81const decoded = convertBytesToHex(response);82console.log('GetObject Response:');83console.log(JSON.stringify(decoded, null, 2));84}85});86
1import grpc2import json3from google.protobuf.field_mask_pb2 import FieldMask4from google.protobuf.json_format import MessageToDict5from sui.rpc.v2beta2 import ledger_service_pb2, ledger_service_pb2_grpc678def get_object():9# Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token10# For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678911# endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}12# token will be: abcde1234567891314endpoint = 'docs-demo.sui-mainnet.quiknode.pro:9000';15token = 'abcde123456789';1617channel = grpc.secure_channel(endpoint, grpc.ssl_channel_credentials())18stub = ledger_service_pb2_grpc.LedgerServiceStub(channel)1920# Specify the object ID you want to retrieve21# Replace with an actual Sui object ID22object_id = "0x27c4fdb3b846aa3ae4a65ef5127a309aa3c1f466671471a806d8912a18b253e8"2324# Create a field mask to specify which fields to include in the response25read_mask = FieldMask(paths=[26"bcs",27"object_id",28"version",29"digest",30"owner",31"object_type",32"has_public_transfer",33"contents",34"previous_transaction",35"storage_rebate"36])3738# Prepare the GetObjectRequest39request = ledger_service_pb2.GetObjectRequest(40object_id=object_id,41read_mask=read_mask42)4344metadata = [("x-token", token)]4546return stub.GetObject(request, metadata=metadata)474849def parse_response_to_json(response):50return json.dumps(51MessageToDict(response, preserving_proto_field_name=True),52indent=253)545556def main():57try:58response = get_object()59print(parse_response_to_json(response))60except grpc.RpcError as e:61print(f"{e.code().name}: {e.details()}")626364if __name__ == "__main__":65main()66
1import grpc2import json3from google.protobuf.field_mask_pb2 import FieldMask4from google.protobuf.json_format import MessageToDict5from sui.rpc.v2beta2 import ledger_service_pb2, ledger_service_pb2_grpc678def get_object():9# Quicknode endpoints consist of two crucial components: the endpoint name and the corresponding token10# For eg: QN Endpoint: https://docs-demo.sui-mainnet.quiknode.pro/abcde12345678911# endpoint will be: docs-demo.sui-mainnet.quiknode.pro:9000 {9000 is the port number for Sui gRPC}12# token will be: abcde1234567891314endpoint = 'docs-demo.sui-mainnet.quiknode.pro:9000';15token = 'abcde123456789';1617channel = grpc.secure_channel(endpoint, grpc.ssl_channel_credentials())18stub = ledger_service_pb2_grpc.LedgerServiceStub(channel)1920# Specify the object ID you want to retrieve21# Replace with an actual Sui object ID22object_id = "0x27c4fdb3b846aa3ae4a65ef5127a309aa3c1f466671471a806d8912a18b253e8"2324# Create a field mask to specify which fields to include in the response25read_mask = FieldMask(paths=[26"bcs",27"object_id",28"version",29"digest",30"owner",31"object_type",32"has_public_transfer",33"contents",34"previous_transaction",35"storage_rebate"36])3738# Prepare the GetObjectRequest39request = ledger_service_pb2.GetObjectRequest(40object_id=object_id,41read_mask=read_mask42)4344metadata = [("x-token", token)]4546return stub.GetObject(request, metadata=metadata)474849def parse_response_to_json(response):50return json.dumps(51MessageToDict(response, preserving_proto_field_name=True),52indent=253)545556def main():57try:58response = get_object()59print(parse_response_to_json(response))60except grpc.RpcError as e:61print(f"{e.code().name}: {e.details()}")626364if __name__ == "__main__":65main()66
Don't have an account yet?
Create your Quicknode endpoint in seconds and start building
Get started for free