Skip to main content

Sui Full Node gRPC

⚙️Beta Feature

This content describes a beta feature or service. Beta features and services are in active development, so details are likely to change.

This feature or service is currently available in

  • Devnet
  • Testnet
  • Mainnet

Sui Full node gRPC API will replace the JSON-RPC on Full nodes, such that JSON-RPC will be deprecated when gRPC API is generally available.

sui.node.v2.proto

The sui.node.v2 package contains API definitions for services that are expected to run on Full nodes.

BalanceChange

The delta, or change, in balance for an address for a particular Coin type.

Fields

One of
address
optional
The account address that is affected by this balance change event.
amount
optional
The amount or change in balance.
coin_type
optional
The Coin type of this balance change event.

BalanceChanges

Set of BalanceChanges that occurred as the result of a transaction.

This set of events are calculated by analyzing all input and output Coin type objects.

Fields

balance_changes

EffectsFinality

Indicates the finality of the executed transaction.

Fields

One of
certified
A quorum certificate certifying that a transaction is final but might not be included in a checkpoint yet.
checkpointed
Sequence number of the checkpoint that includes the transaction.
quorum_executed
Indicates that a quorum of validators has executed the transaction but that it might not be included in a checkpoint yet.

ExecuteTransactionOptions

Fields

One of
balance_changes
optional
Include the BalanceChanges in the response. Defaults to false if not included.
effects
optional
Include the sui.types.TransactionEffects message in the response. Defaults to false if not included.
effects_bcs
optional
Include the TransactionEffects formatted as BCS in the response. Defaults to false if not included.
events
optional
Include the sui.types.TransactionEvents message in the response. Defaults to false if not included.
events_bcs
optional
Include the TransactionEvents formatted as BCS in the response. Defaults to false if not included.

ExecuteTransactionRequest

Request message for NodeService.ExecuteTransaction.

Note: You must provide only one of transaction or transaction_bcs.

Fields

One of
options
Optional. Options for specifying which parts of the ExecuteTransactionResponse should be returned.
signatures
Optional. Set of UserSigantures authorizing the execution of the provided transaction.
signatures_bytes
Optional. Set of UserSigantures authorizing the execution of the provided transaction, encoded as bytes.
transaction
optional
Optional. The transaction to execute.
transaction_bcs
optional
Optional. The transaction to execute, encoded as BCS bytes.

ExecuteTransactionResponse

Response message for NodeService.ExecuteTransaction.

Fields

One of
balance_changes
Optional. Set of balance change events as a result of this transaction.
effects
Optional. The TransactionEffects for this transaction.
effects_bcs
optional
Optional. The TransactionEffects for this transaction encoded as BCS bytes.
events
Optional. The TransactionEvents for this transaction. This field might be empty, even if it was explicitly requested, if the transaction didn't produce any events. sui.types.TransactionEffects.events_digest is populated if the transaction produced any events.
events_bcs
optional
Optional. The TransactionEvents for this transaction encoded as BCS bytes.
finality
Indicates the finality of the executed transaction.

FullCheckpointObject

An object used by or produced from a transaction.

Fields

One of
digest
optional
The digest of this object.
object
optional
Optional. The object itself.
object_bcs
optional
Optional. The object encoded as BCS bytes.
object_id
optional
The ObjectId of this object.
version
optional
The version of this object.

FullCheckpointObjects

Set of objects used by or produced from a transaction.

Fields

objects

FullCheckpointTransaction

A transaction, with all of its inputs and outputs.

Fields

One of
digest
optional
The digest of this transaction.
effects
Optional. The TransactionEffects for this transaction.
effects_bcs
optional
Optional. The TransactionEffects for this transaction encoded as BCS bytes.
events
Optional. The TransactionEvents for this transaction. This field might be empty, even if it was explicitly requested, if the transaction didn't produce any events. sui.types.TransactionEffects.events_digest is populated if the transaction produced any events.
events_bcs
optional
Optional. The TransactionEvents for this transaction encoded as BCS bytes.
input_objects
Optional. Set of input objects used during the execution of this transaction.
output_objects
Optional. Set of output objects produced from the execution of this transaction.
transaction
optional
Optional. The transaction itself.
transaction_bcs
optional
Optional. The Transaction encoded as BCS bytes.

GetCheckpointOptions

Options for which parts of the GetCheckpointResponse should be returned.

Fields

One of
contents
optional
Include the sui.types.CheckpointContents message in the response. Defaults to false if not included.
contents_bcs
optional
Include the CheckpointContents formatted as BCS in the response. Defaults to false if not included.
signature
optional
Include the sui.types.ValidatorAggregatedSignature in the response. Defaults to false if not included.
summary
optional
Include the sui.types.CheckpointSummary in the response. Defaults to false if not included.
summary_bcs
optional
Include the CheckpointSummary formatted as BCS in the response. Defaults to false if not included.

GetCheckpointRequest

Request message for NodeService.GetCheckpoint.

At most, provide one of sequence_number or digest. An error is returned if you attempt to provide both. If you provide neither, the service returns the latest executed checkpoint.

Fields

One of
digest
optional
Optional. The digest of the requested checkpoint.
options
Optional. Options for specifying which parts of the GetCheckpointResponse should be returned.
sequence_number
optional
Optional. The sequence number of the requested checkpoint.

GetCheckpointResponse

Response message for NodeService.GetCheckpoint.

Fields

One of
contents
Optional. The CheckpointContents for this checkpoint.
contents_bcs
optional
Optional. The CheckpointContents for this checkpoint encoded as BCS bytes.
digest
optional
The digest of this checkpoint's CheckpointSummary.
sequence_number
optional
The sequence number of this checkpoint.
signature
Optional. An aggregated quorum signature from the validator committee that certifies this checkpoint.
summary
Optional. The CheckpointSummary for this checkpoint.
summary_bcs
optional
Optional. The CheckpointSummary for this checkpoint encoded as BCS bytes.

GetCommitteeRequest

Request message for NodeService.GetCommittee.

Fields

One of
epoch
optional
Optional. Request the sui.types.ValidatorCommittee corresponding to the provided epoch. If no epoch is provided the committee for the current epoch will be returned.

GetCommitteeResponse

Response message for NodeService.GetCommittee.

Fields

One of
committee
The committee of either the requested epoch or the current epoch.

GetFullCheckpointOptions

Options for which parts of the GetFullCheckpointResponse should be returned.

Fields

One of
contents
optional
Include the sui.types.CheckpointContents message in the response. Defaults to false if not included.
contents_bcs
optional
Include the CheckpointContents formatted as BCS in the response. Defaults to false if not included.
effects
optional
Include the sui.types.TransactionEffects message in the response. Defaults to false if not included.
effects_bcs
optional
Include the TransactionEffects formatted as BCS in the response. Defaults to false if not included.
events
optional
Include the sui.types.TransactionEvents message in the response. Defaults to false if not included.
events_bcs
optional
Include the TransactionEvents formatted as BCS in the response. Defaults to false if not included.
input_objects
optional
Include the input objects for transactions in the response. Defaults to false if not included.
object
optional
Include the sui.types.Object message in the response. Defaults to false if not included.
object_bcs
optional
Include the object formatted as BCS in the response. Defaults to false if not included.
output_objects
optional
Include the output objects for transactions in the response. Defaults to false if not included.
signature
optional
Include the sui.types.ValidatorAggregatedSignature in the response. Defaults to false if not included.
summary
optional
Include the sui.types.CheckpointSummary in the response. Defaults to false if not included.
summary_bcs
optional
Include the CheckpointSummary formatted as BCS in the response. Defaults to false if not included.
transaction
optional
Include the sui.types.Transaction message in the response. Defaults to false if not included.
transaction_bcs
optional
Include the transaction formatted as BCS in the response. Defaults to false if not included.

GetFullCheckpointRequest

Request message for NodeService.GetFullCheckpoint.

At most, provide one of sequence_number or digest. An error is returned if you provide both. If you provide neither, the service returns the latest executed checkpoint.

Fields

One of
digest
optional
Optional. The digest of the requested checkpoint.
options
Optional. Options for specifying which parts of the GetFullCheckpointResponse should be returned.
sequence_number
optional
Optional. The sequence number of the requested checkpoint.

GetFullCheckpointResponse

Response message for NodeService.GetFullCheckpoint.

Fields

transactions
List of transactions included in this checkpoint.
One of
contents
Optional. The CheckpointContents for this checkpoint.
contents_bcs
optional
Optional. The CheckpointContents for this checkpoint encoded as BCS bytes.
digest
optional
The digest of this checkpoint's CheckpointSummary.
sequence_number
optional
The sequence number of this checkpoint.
signature
Optional. An aggregated quorum signature from the validator committee that certifies this checkpoint.
summary
Optional. The CheckpointSummary for this checkpoint.
summary_bcs
optional
Optional. The CheckpointSummary for this checkpoint encoded as BCS bytes.

GetNodeInfoRequest

Request message for NodeService.GetNodeInfo.

GetNodeInfoResponse

Response message for NodeService.GetNodeInfo.

Fields

One of
chain
optional
Human-readable name of the chain that this node is on. This is intended to be a human-readable name like mainnet, testnet, and so on.
chain_id
optional
The chain identifier of the chain that this node is on. The chain identifier is the digest of the genesis checkpoint, the checkpoint with sequence number 0.
checkpoint_height
optional
Checkpoint height of the most recently executed checkpoint.
epoch
optional
Current epoch of the node based on its highest executed checkpoint.
lowest_available_checkpoint
optional
The lowest checkpoint for which checkpoints and transaction data are available.
lowest_available_checkpoint_objects
optional
The lowest checkpoint for which object data is available.
software_version
optional
Software version of the sui-node binary.
timestamp
optional
Unix timestamp of the most recently executed checkpoint.

GetObjectOptions

Fields

One of
object
optional
Include the sui.types.Object message in the response. Defaults to false if not included.
object_bcs
optional
Include the object formatted as BCS in the response. Defaults to false if not included.

GetObjectRequest

Request message for NodeService.GetObject.

Fields

One of
object_id
optional
Required. The ObjectId of the requested object.
options
Optional. Options for specifying which parts of the GetObjectResponse should be returned.
version
optional
Optional. Request that a specific version of the requested object is returned. If no version is provided, then then the latest version for the object is returned.

GetObjectResponse

Response message for NodeService.GetObject.

Fields

One of
digest
optional
The digest of this object.
object
optional
Optional. The object itself.
object_bcs
optional
Optional. The Object encoded as BCS bytes.
object_id
optional
The ObjectId of this object.
version
optional
The version of this object.

GetTransactionOptions

Options for which parts of the GetTransactionResponse should be returned.

Fields

One of
effects
optional
Include the sui.types.TransactionEffects message in the response. Defaults to false if not included.
effects_bcs
optional
Include the TransactionEffects formatted as BCS in the response. Defaults to false if not included.
events
optional
Include the sui.types.TransactionEvents message in the response. Defaults to false if not included.
events_bcs
optional
Include the TransactionEvents formatted as BCS in the response. Defaults to false if not included.
signatures
optional
Include the set of sui.types.UserSignatures in the response. Defaults to false if not included.
signatures_bytes
optional
Include the set of UserSignatures encoded as bytes in the response. Defaults to false if not included.
transaction
optional
Include the sui.types.Transaction message in the response. Defaults to false if not included.
transaction_bcs
optional
Include the transaction formatted as BCS in the response. Defaults to false if not included.

GetTransactionRequest

Request message for NodeService.GetTransaction.

Fields

One of
digest
optional
Required. The digest of the requested transaction.
options
Optional. Options for specifying which parts of the GetTransactionResponse should be returned.

GetTransactionResponse

Response message for NodeService.GetTransaction.

Fields

One of
checkpoint
optional
The sequence number for the checkpoint that includes this transaction.
digest
optional
The digest of this Transaction.
effects
Optional. The TransactionEffects for this transaction.
effects_bcs
optional
Optional. The TransactionEffects for this transaction encoded as BCS bytes.
events
Optional. The TransactionEvents for this transaction. This field might be empty, even if it was explicitly requested, if the transaction didn't produce any events. sui.types.TransactionEffects.events_digest is populated if the transaction produced any events.
events_bcs
optional
Optional. The TransactionEvents for this transaction encoded as BCS bytes.
signatures
Optional. List of user signatures that are used to authorize the execution of this transaction.
signatures_bytes
Optional. List of UserSignatures encoded as bytes.
timestamp
optional
The Unix timestamp of the checkpoint that includes this transaction.
transaction
optional
Optional. The transaction itself.
transaction_bcs
optional
Optional. The Transaction encoded as BCS bytes.

UserSignatures

List of UserSignatures used to authorize a transaction.

Fields

signatures

UserSignaturesBytes

List of UserSignatures used to authorize a transaction encoded as bytes.

Fields

signatures
repeated

sui.types.proto

Protobuf definitions of public Sui core types.

This file contains a complete set of protobuf definitions for all of the public sui core types. All sui types are intended to have a 1:1 mapping to a protobuf message defined in this file and be able to roundtrip to/from their rust and protobuf definitions assuming a sufficiently up-to-date version of both these definitions.

For more information on the types these proto messages correspond with, see the documentation for their rust versions defined in the sui-sdk-types library.

Use of optional

These message definitions use protobuf version 3 (proto3). In proto3, fields that are primitives (that is, they are not a message) and are not present on the wire are zero-initialized. To gain the ability to detect field presence, these definitions follow the convention of having all fields marked optional, and wrapping repeated fields in a message as needed.

Even if a field is marked as optional, it might not actually be optional from the perspective of the Sui protocol. Such fields are explicitly labled as Required or Optional in their documentation.

ActiveJwk

A new JWK.

Fields

One of
epoch
optional
Most recent epoch in which the JWK was validated.
id
optional
Identifier used to uniquely identify a JWK.
jwk
optional
The JWK.

Address

Unique identifier for an account on the Sui blockchain.

An Address is a 32-byte pseudonymous identifier used to uniquely identify an account and asset-ownership on the Sui blockchain. Often, human-readable addresses are encoded in hexadecimal with a 0x prefix. For example, this is a valid Sui address: 0x02a212de6a9dfa3a69e22387acfbafbb1a9e591bd9d636e7895dcfc8de05f331.

Fields

One of
address
optional
Required. 32-byte address.

AddressDeniedForCoinError

Address is denied for this coin type.

Fields

One of
address
optional
Required. Denied address.
coin_type
optional
Required. Coin type.

Argument

An argument to a programmable transaction command.

Fields

One of
gas
The gas coin. The gas coin can only be used by-ref, except for with TransferObjects, which can use it by-value.
input
One of the input objects or primitive values (from ProgrammableTransaction inputs).
nested_result
Like a Result but it accesses a nested result. Currently, the only usage of this is to access a value from a Move call with multiple return values.
result
The result of another command (from ProgrammableTransaction commands).

AuthenticatorStateExpire

Expire old JWKs.

Fields

One of
authenticator_object_initial_shared_version
optional
The initial version of the authenticator object that it was shared at.
min_epoch
optional
Expire JWKs that have a lower epoch than this.

AuthenticatorStateUpdate

Update the set of valid JWKs.

Fields

new_active_jwks
repeated
Newly active JWKs.
One of
authenticator_object_initial_shared_version
optional
The initial version of the authenticator object that it was shared at.
epoch
optional
Epoch of the authenticator state update transaction.
round
optional
Consensus round of the authenticator state update.

Bcs

Message that represents a type that is serialized and encoded using the BCS format.

Fields

One of
bcs
optional
Required. Bytes of a BCS encoded value.

Bn254FieldElement

A point on the BN254 elliptic curve.

Fields

One of
element
optional
Required. 32-byte big-endian field element.

CancelledTransaction

A transaction that was cancelled.

Fields

version_assignments
List of object version assignments.
One of
digest
optional
Digest of the cancelled transaction.

CancelledTransactions

Set of cancelled transactions.

Fields

cancelled_transactions

ChangeEpoch

System transaction used to change the epoch.

Fields

system_packages
System packages (specifically framework and Move stdlib) that are written before the new epoch starts. This tracks framework upgrades on chain. When executing the ChangeEpoch txn, the validator must write out the following modules. Modules are provided with the version they will be upgraded to, their modules in serialized form (which include their package ID), and a list of their transitive dependencies.
One of
computation_charge
optional
The total amount of gas charged for computation during the epoch.
epoch
optional
The next (to become) epoch ID.
epoch_start_timestamp_ms
optional
Unix timestamp when epoch started.
non_refundable_storage_fee
optional
The non-refundable storage fee.
protocol_version
optional
The protocol version in effect in the new epoch.
storage_charge
optional
The total amount of gas charged for storage during the epoch.
storage_rebate
optional
The amount of storage rebate refunded to the txn senders.

ChangedObject

Input/output state of an object that was changed during execution.

Fields

One of
created
deleted
exist
Object existed prior to this transaction.
none
not_exist
Object did not exist prior to this transaction.
object_id
optional
Required. ID of the object.
object_write
Object was written, including all of mutated, created, unwrapped.
package_write
Package was written.
removed
Object was removed from the store due to this transaction.

CheckpointCommitment

A commitment made by a checkpoint.

Fields

One of
ecmh_live_object_set
An elliptic curve multiset hash attesting to the set of objects that comprise the live state of the Sui blockchain.

CheckpointContents

The committed to contents of a checkpoint.

Fields

One of
v1

V1

Version 1 of CheckpointContents.

Fields

transactions

CheckpointSummary

A header for a checkpoint on the Sui blockchain.

On the Sui network, checkpoints define the history of the blockchain. They are quite similar to the concept of blocks used by other blockchains like Bitcoin or Ethereum. The Sui blockchain, however, forms checkpoints after transaction execution has already happened to provide a certified history of the chain, instead of being formed before execution.

Checkpoints commit to a variety of state, including but not limited to:

  • The hash of the previous checkpoint.
  • The set of transaction digests, their corresponding effects digests, as well as the set of user signatures that authorized its execution.
  • The objects produced by a transaction.
  • The set of live objects that make up the current state of the chain.
  • On epoch transitions, the next validator committee.

CheckpointSummarys themselves don't directly include all of the previous information but they are the top-level type by which all the information is committed to transitively via cryptographic hashes included in the summary. CheckpointSummarys are signed and certified by a quorum of the validator committee in a given epoch to allow verification of the chain's state.

Fields

commitments
Commitments to checkpoint-specific state.
One of
content_digest
optional
The hash of the CheckpointContents for this checkpoint.
end_of_epoch_data
Extra data only present in the final checkpoint of an epoch.
epoch
optional
Epoch that this checkpoint belongs to.
epoch_rolling_gas_cost_summary
The running total gas costs of all transactions included in the current epoch so far until this checkpoint.
previous_digest
optional
The hash of the previous CheckpointSummary. This will be None only for the first, or genesis, checkpoint.
sequence_number
optional
The height of this checkpoint.
timestamp_ms
optional
Timestamp of the checkpoint - number of milliseconds from the Unix epoch Checkpoint timestamps are monotonic, but not strongly monotonic - subsequent checkpoints can have the same timestamp if they originate from the same underlining consensus commit.
total_network_transactions
optional
Total number of transactions committed since genesis, including those in this checkpoint.
version_specific_data
optional
CheckpointSummary is not an evolvable structure - it must be readable by any version of the code. Therefore, to allow extensions to be added to CheckpointSummary, opaque data can be added to checkpoints, which can be deserialized based on the current protocol version.

CheckpointedTransactionInfo

Transaction information committed to in a checkpoint.

Fields

signatures
Set of user signatures that authorized the transaction.
One of
effects
optional
Digest of the effects.
transaction
optional
Digest of the transaction.

CircomG1

A G1 point.

Fields

One of
e0
Required.
e1
Required.
e2
Required.

CircomG2

A G2 point.

Fields

One of
e00
Required.
e01
Required.
e10
Required.
e11
Required.
e20
Required.
e21
Required.

Command

A single command in a programmable transaction.

Fields

One of
make_move_vector
forall T: Vec<T> -> vector<T> Given n-values of the same type, it constructs a vector. For non-objects or an empty vector, the type tag must be specified.
merge_coins
(&mut Coin<T>, Vec<Coin<T>>) It merges n-coins into the first coin.
move_call
A call to either an entry or a public Move function.
publish
Publishes a Move package. It takes the package bytes and a list of the package's transitive dependencies to link against on chain.
split_coins
(&mut Coin<T>, Vec<u64>) -> Vec<Coin<T>> It splits off some amounts into new coins with those amounts.
transfer_objects
(Vec<forall T:key+store. T>, address) It sends n-objects to the specified address. These objects must have store (public transfer) and either the previous owner must be an address or the object must be newly created.
upgrade
Upgrades a Move package. Takes (in order): 1. A vector of serialized modules for the package. 2. A vector of object ids for the transitive dependencies of the new package. 3. The object ID of the package being upgraded. 4. An argument holding the UpgradeTicket that must have been produced from an earlier command in the same programmable transaction.

CommandArgumentError

An error with an argument to a command.

Fields

One of
argument
optional
Required. Position of the problematic argument.
index_out_of_bounds
Out of bounds access to input or results.
invalid_argument_to_private_entry_function
Invalid argument to private entry function. Private entry functions cannot take arguments from other Move functions.
invalid_bcs_bytes
The argument cannot be deserialized into a value of the specified type.
invalid_gas_coin_usage
Invalid usage of gas coin. The gas coin can only be used by-value with a TransferObject command.
invalid_object_by_mut_ref
Immutable objects cannot be passed by mutable reference, &mut.
invalid_object_by_value
Immutable objects cannot be passed by-value.
invalid_result_arity
Invalid usage of result. Expected a single result but found either no return value or multiple.
invalid_usage_of_pure_argument
The argument cannot be instantiated from raw bytes.
invalid_value_usage
Invalid usage of Move value. - Mutably borrowed values require unique usage. - Immutably borrowed values cannot be taken or borrowed mutably. - Taken values cannot be used again.
secondary_index_out_of_bounds
Out of bounds access to subresult.
shared_object_operation_not_allowed
Shared object operations such as wrapping, freezing, or converting to owned are not allowed.
type_mismatch
The type of the value does not match the expected type.

CongestedObjectsError

Set of objects that were congested, leading to the transaction's cancellation.

Fields

congested_objects
repeated
Set of congested objects.

ConsensusCommitPrologue

Consensus commit prologue system transaction.

This message can represent V1, V2, and V3 prologue types.

Fields

One of
commit_timestamp_ms
optional
Unix timestamp from consensus. Present in V1, V2, and V3.
consensus_commit_digest
optional
Digest of consensus output. Present in V2 and V3.
consensus_determined_version_assignments
Stores consensus handler determined shared object version assignments. Present in V3.
epoch
optional
Epoch of the commit prologue transaction. Present in V1, V2, and V3.
round
optional
Consensus round of the commit. Present in V1, V2, and V3.
sub_dag_index
optional
The sub DAG index of the consensus commit. This field is populated if there are multiple consensus commits per round. Present in V3.

ConsensusDeterminedVersionAssignments

Version assignments performed by consensus.

Fields

One of
cancelled_transactions
Cancelled transaction version assignment.

Digest

32-byte output of hashing a Sui structure using the Blake2b256 hash function.

Fields

One of
digest
optional
Required. 32-byte hash.

EndOfEpochData

Data, which when included in a CheckpointSummary, signals the end of an Epoch.

Fields

epoch_commitments
Commitments to epoch specific state (live object set)
next_epoch_committee
The set of validators that will be in the ValidatorCommittee for the next epoch.
One of
next_epoch_protocol_version
optional
The protocol version that is in effect during the next epoch.

EndOfEpochTransaction

Set of operations run at the end of the epoch to close out the current epoch and start the next one.

Fields

transactions

EndOfEpochTransactionKind

Operation run at the end of an epoch.

Fields

One of
authenticator_state_create
Create and initialize the authenticator object used for zklogin.
authenticator_state_expire
Expire JWKs used for zklogin.
bridge_committee_init
Initialize the bridge committee.
bridge_state_create
Create and initialize the bridge object.
change_epoch
End the epoch and start the next one.
deny_list_state_create
Create and initialize the deny list object.
randomness_state_create
Create and initialize the randomness object.

Event

An event.

Fields

One of
contents
optional
BCS serialized bytes of the event.
event_type
optional
The type of the event emitted.
module
optional
Module name of the top-level function invoked by a MoveCall command that triggered this event to be emitted.
package_id
optional
Package ID of the top-level function invoked by a MoveCall command that triggered this event to be emitted.
sender
optional
Address of the account that sent the transaction where this event was emitted.

ExecutionStatus

The status of an executed transaction.

Fields

One of
status
Optional. The error if success is false.
success
optional
Required. Indicates if the transaction was successful or not.

FailureStatus

An error that can occur during the execution of a transaction.

Fields

One of
address_denied_for_coin
Address is denied for this coin type.
arity_mismatch
Parity mismatch for Move function. The number of arguments does not match the number of parameters.
certificate_denied
Certificate is on the deny list.
circular_object_ownership
Circular object ownership.
coin_balance_overflow
Coin balance overflowed an u64.
coin_type_global_pause
Coin type is globally paused for use.
command
optional
The command, if any, during which the error occurred.
command_argument_error
Invalid command argument.
effects_too_large
Post-execution errors. Effects from the transaction are too large.
execution_cancelled_due_to_randomness_unavailable
Certificate is cancelled because randomness could not be generated this epoch.
execution_cancelled_due_to_shared_object_congestion
Certificate is cancelled due to congestion on shared objects.
feature_not_yet_supported
Attempted to use feature that is not supported yet.
function_not_found
Programmable transaction errors. Function not found.
input_object_deleted
Requested shared object has been deleted.
insufficient_coin_balance
Coin errors. Insufficient coin balance for requested operation.
insufficient_gas
Insufficient gas.
invalid_gas_object
Invalid Gas object.
invalid_public_function_return_type
Invalid public Move function signature. Unsupported return type for return value.
invalid_transfer_object
Invalid transfer object, object does not have public transfer.
invariant_violation
Invariant violation.
move_abort
Move runtime abort.
move_primitive_runtime_error
MoveVm errors. Error from a non-abort instruction. Possible causes: Arithmetic error, stack overflow, max value depth, or similar.
non_entry_function_invoked
Non-entry function invoked. Move Call must start with an entry function.
object_too_big
Move object is larger than the maximum allowed size.
package_too_big
Package is larger than the maximum allowed size.
package_upgrade_error
Invalid package upgrade.
publish_error_non_zero_address
Publish/Upgrade errors. Publish error, non-zero address. The modules in the package must have their self-addresses set to zero.
publish_upgrade_dependency_downgrade
Publish or upgrade dependency downgrade. Indirect (transitive) dependency of published or upgraded package has been assigned an on-chain version that is less than the version required by one of the package's transitive dependencies.
publish_upgrade_missing_dependency
Publish or Upgrade is missing dependency.
shared_object_operation_not_allowed
The requested shared object operation is not allowed.
sui_move_verification_error
Sui Move bytecode verification error.
sui_move_verification_timedout
Sui Move bytecode verification timed out.
type_argument_error
Type argument error.
type_arity_mismatch
Type parity mismatch for Move function. Mismatch between the number of actual versus expected type arguments.
unused_value_without_drop
Unused result without the drop ability.
vm_invariant_violation
MoveVm invariant violation.
vm_verification_or_deserialization_error
Bytecode verification error.
written_objects_too_large
Indicates the transaction tried to write objects too large to storage.

GasCostSummary

Summary of gas charges.

Storage is charged independently of computation. There are three parts to the storage charges:

  • storage_cost: the charge of storage at the time the transaction is executed. The cost of storage is the number of bytes of the objects being mutated multiplied by a variable storage cost per byte.
  • storage_rebate: the amount a user gets back when manipulating an object. The storage_rebate is the storage_cost for an object minus fees.
  • non_refundable_storage_fee: not all the value of the object storage cost is given back to user and there is a small fraction that is kept by the system. This value tracks that charge.

When looking at a gas cost summary the amount charged to the user is computation_cost + storage_cost - storage_rebate and that is the amount that is deducted from the gas coins. non_refundable_storage_fee is collected from the objects being mutated/deleted and it is tracked by the system in storage funds.

Objects deleted, including the older versions of objects mutated, have the storage field on the objects added up to a pool of "potential rebate". This rebate then is reduced by the "nonrefundable rate" such that: potential_rebate(storage cost of deleted/mutated objects) = storage_rebate + non_refundable_storage_fee

Fields

One of
computation_cost
optional
Cost of computation/execution.
non_refundable_storage_fee
optional
The fee for the rebate. The portion of the storage rebate kept by the system.
storage_cost
optional
Storage cost, it's the sum of all storage cost for all objects created or mutated.
storage_rebate
optional
The amount of storage cost refunded to the user for all objects deleted or mutated in the transaction.

GasPayment

Payment information for executing a transaction.

Fields

objects
Set of gas objects to use for payment.
One of
budget
optional
Total budget willing to spend for the execution of a transaction.
owner
optional
Owner of the gas objects, either the transaction sender or a sponsor.
price
optional
Gas unit price to use when charging for computation. Must be greater than or equal to the network's current RGP (reference gas price).

GenesisObject

An object part of the initial chain state.

Fields

One of
object
optional
object_id
optional
owner
optional
version
optional

GenesisTransaction

The genesis transaction.

Fields

objects
Set of genesis objects.

I128

A signed 128-bit integer encoded in little-endian using 16-bytes.

Fields

One of
bytes
optional
Required. 16-byte little-endian bytes.

Identifier

A Move identifier.

Identifiers are only valid if they conform to the following ABNF:

identifier = (ALPHA *127(ALPHA / DIGIT / UNDERSCORE)) /
(UNDERSCORE 1*127(ALPHA / DIGIT / UNDERSCORE))
UNDERSCORE = %x95

Fields

One of
identifier
optional

Input

An input to a user transaction.

Fields

One of
immutable_or_owned
A Move object that is either immutable or address owned.
pure
A move value serialized as BCS. For normal operations this is required to be a move primitive type and not contain structs or objects.
receiving
A Move object that is attempted to be received in this transaction.
shared
A Move object whose owner is "Shared".

Jwk

A JSON web key.

Struct that contains info for a JWK. A list of them for different kinds can be retrieved from the JWK endpoint (for example, &#lt;https://www.googleapis.com/oauth2/v3/certs>). The JWK is used to verify the JWT token.

Fields

JwkId

Key to uniquely identify a JWK.

Fields

One of
iss
optional
The issuer or identity of the OIDC provider.
kid
optional
A key ID used to uniquely identify a key from an OIDC provider.

MakeMoveVector

Command to build a Move vector out of a set of individual elements.

Fields

elements
repeated
The set individual elements to build the vector with.
One of
element_type
optional
Type of the individual elements. This is required to be set when the type can't be inferred, for example when the set of provided arguments are all pure input values.

MergeCoins

Command to merge multiple coins of the same type into a single coin.

Fields

coins_to_merge
repeated
Set of coins to merge into coin. All listed coins must be of the same type and be the same type as coin
One of
coin
optional
Coin to merge coins into.

ModifiedAtVersion

Indicates that an object was modified at a specific version.

Fields

One of
object_id
optional
Required. ObjectId of the object.
version
optional
Required. Version of the object prior to this transaction.

MoveCall

Command to call a Move function.

Functions that can be called by a MoveCall command are those that have a function signature that is either entry or public (which don't have a reference return type).

Fields

arguments
repeated
The arguments to the function.
type_arguments
repeated
The type arguments to the function.
One of
function
optional
The function to be called.
module
optional
The specific module in the package containing the function.
package
optional
The package containing the module and function.

MoveError

Error that occurred in Move.

Fields

One of
abort_code
optional
Abort code from Move.
location
optional
Location in Move where the error occurred.

MoveField

Fields

One of
name
optional
value
optional

MoveLocation

Location in Move bytecode where an error occurred.s

Fields

One of
function
optional
Required. The function index.
function_name
optional
Optional. The name of the function, if available.
instruction
optional
Required. Offset of the instruction where the error occurred.
module
optional
Required. The module name.
package
optional
Required. The package ID.

MoveModule

Module defined by a package.

Fields

One of
contents
optional
Serialized bytecode of the module.
name
optional
Name of the module.

MovePackage

A Move package.

Fields

linkage_table
repeated
For each dependency, maps original package ID to the info about the (upgraded) dependency version that this package is using.
modules
repeated
Set of modules defined by this package.
type_origin_table
repeated
Maps struct/module to a package version where it was first defined, stored as a vector for simple serialization and deserialization.
One of
id
optional
Address or ID of this package.
version
optional
Version of the package.

MoveStruct

A Move struct.

Fields

One of
contents
optional
BCS bytes of a Move struct value.
has_public_transfer
optional
DEPRECATED this field is no longer used to determine whether a tx can transfer this object. Instead, it is always calculated from the objects type when loaded in execution.
object_id
optional
ObjectId for this object.
object_type
optional
The type of this object.
version
optional
Version of the object.

MoveStructValue

Fields

fields
repeated
One of
struct_type
optional

MoveValue

Fields

One of
address
bool
signer
u128
u256

MoveVariant

Fields

fields
repeated
One of
enum_type
optional
tag
optional
variant_name
optional

MoveVector

Fields

values
repeated

MultisigAggregatedSignature

Aggregated signature from members of a multisig committee.

Fields

signatures
The plain signatures encoded with signature scheme. The signatures must be in the same order as they are listed in the committee.
One of
bitmap
optional
Required. Bitmap indicating which committee members contributed to the signature.
committee
Required. The committee to use to validate this signature.
legacy_bitmap
Optional. If present, means this signature's on-chain format uses the old legacy multisig format.

MultisigCommittee

A multisig committee.

Fields

members
A list of committee members and their corresponding weight.
One of
threshold
optional
Required. The threshold of signatures needed to validate a signature from this committee.

MultisigMember

A member in a multisig committee.

Fields

One of
public_key
Required. The public key of the committee member.
weight
optional
Required. The weight of this member's signature.

MultisigMemberPublicKey

Set of valid public keys for multisig committee members.

Fields

One of
ed25519
An ed25519 public key
secp256k1
A secp256k1 public key
secp256r1
A secp256r1 public key
zklogin
A zklogin public identifier

MultisigMemberSignature

A signature from a member of a multisig committee.

Fields

One of
ed25519
An ed25519 signature.
secp256k1
A secp256k1 signature.
secp256r1
A secp256r1 signature.
zklogin
A zklogin signature.

NestedResult

An argument type for a nested result.

Fields

One of
result
optional
The command index.
subresult
optional
The index into the command's output.

Object

An object on the Sui blockchain.

Fields

One of
object
optional
object_id
optional
ObjectId for this object.
owner
optional
Owner of the object.
previous_transaction
optional
The digest of the transaction that created or last mutated this object
storage_rebate
optional
The amount of SUI to rebate if this object gets deleted. This number is re-calculated each time the object is mutated based on the present storage gas price.
version
optional
Version of the object.

ObjectData

Object data, either a package or struct.

Fields

One of

ObjectExist

Information about the old version of the object.

Fields

One of
digest
optional
Required. Digest of the object.
owner
optional
Required. Owner of the object.
version
optional
Required. Version of the object.

ObjectId

Unique identifier for an object on the Sui blockchain.

An ObjectId is a 32-byte identifier used to uniquely identify an object on the Sui blockchain.

Fields

One of
object_id
optional
Required. 32-byte object-id.

ObjectReference

Reference to an object.

Fields

One of
digest
optional
The digest of this object.
object_id
optional
The object ID of this object.
version
optional
The version of this object.

ObjectReferenceWithOwner

An object reference with owner information.

Fields

One of
owner
optional
Required. Owner.
reference
Required. ObjectReference.

ObjectWrite

Object write, including all of mutated, created, unwrapped.

Fields

One of
digest
optional
Required. Digest of the new version of the object.
owner
optional
Required. Owner of the new version of the object.

Owner

Enum of different types of ownership for an object.

Fields

One of
address
Object is exclusively owned by a single address, and is mutable.
immutable
Object is immutable, and hence ownership doesn't matter.
object
Object is exclusively owned by a single object, and is mutable.
shared
Object is shared, can be used by any address, and is mutable.

PackageIdDoesNotMatch

Package ID does not match PackageId in upgrade ticket.

Fields

One of
package_id
optional
Required. The package ID.
ticket_id
optional
Required. The ticket ID.

PackageUpgradeError

An error with a upgrading a package.

Fields

One of
digets_does_not_match
Digest in upgrade ticket and computed digest differ.
incompatible_upgrade
Package upgrade is incompatible with previous version.
not_a_package
Object is not a package.
package_id_does_not_match
Package ID does not match PackageId in upgrade ticket.
unable_to_fetch_package
Unable to fetch package.
unknown_upgrade_policy
Upgrade policy is not valid.

PackageWrite

Package write.

Fields

One of
digest
optional
Required. Digest of the new package.
version
optional
Version of the new package.

PasskeyAuthenticator

A passkey authenticator.

See struct.PasskeyAuthenticator for more information on the requirements on the shape of the client_data_json field.

Fields

One of
authenticator_data
optional
Required. Opaque authenticator data for this passkey signature. See Authenticator Data for more information on this field.
client_data_json
optional
Required. Structured, unparsed, JSON for this passkey signature. See CollectedClientData for more information on this field.
signature
Required. A secp256r1 signature.

ProgrammableTransaction

A user transaction.

Contains a series of native commands and Move calls where the results of one command can be used in future commands.

Fields

commands
repeated
The commands to be executed sequentially. A failure in any command results in the failure of the entire transaction.
inputs
repeated
Input objects or primitive values.

Publish

Command to publish a new Move package.

Fields

dependencies
repeated
Set of packages that the to-be published package depends on.
modules
repeated
The serialized Move modules.

RandomnessStateUpdate

Randomness update.

Fields

One of
epoch
optional
Epoch of the randomness state update transaction.
random_bytes
optional
Updated random bytes.
randomness_object_initial_shared_version
optional
The initial version of the randomness object that it was shared at.
randomness_round
optional
Randomness round of the update.

ReadOnlyRoot

Read-only shared object from the input.

Fields

One of
digest
optional
Required. Digest of the shared object.
version
optional
Required. Version of the shared object.

RoaringBitmap

A RoaringBitmap. See RoaringFormatSpec for the specification for the serialized format of RoaringBitmaps.

Fields

One of
bitmap
optional
Required. Serialized RoaringBitmap.

SharedObjectInput

A shared object input.

Fields

One of
initial_shared_version
optional
Initial version of the object when it was shared.
mutable
optional
Controls whether the caller asks for a mutable reference to the shared object.
object_id
optional
ObjectId of the shared object.

SimpleSignature

A basic signature.

Can either be an ed25519, secp256k1, or secp256r1 signature with corresponding public key.

Fields

One of
public_key
optional
Required. Public key bytes.
scheme
Required. Signature scheme of the signature and public key.
signature
optional
Required. Signature bytes.

SizeError

A size error.

Fields

One of
max_size
optional
Required. The maximum allowable size.
size
optional
Required. The offending size.

SplitCoins

Command to split a single coin object into multiple coins.

Fields

amounts
repeated
The amounts to split off.
One of
coin
optional
The coin to split.

StructTag

Type information for a Move struct.

Fields

type_parameters
repeated
List of type parameters, if any.
One of
address
optional
Address of the package where this type was defined.
module
optional
Name of the module where this type was defined.
name
optional
Name of the type itself.

SystemPackage

System package.

Fields

dependencies
repeated
Package dependencies.
modules
repeated
Move modules.
One of
version
optional
Version of the package.

Transaction

A transaction.

Fields

TransactionV1

Version 1 of Transaction.

Fields

One of
expiration
gas_payment
optional
kind
sender
optional

TransactionEffects

The output or effects of executing a transaction.

Fields

TransactionEffectsV1

Version 1 of TransactionEffects.

Fields

created
ObjectReference and owner of new objects created.
deleted
Object refs of objects now deleted (the new refs).
dependencies
repeated
The set of transaction digests this transaction depends on.
modified_at_versions
The version that every modified (mutated or deleted) object had before it was modified by this transaction.
mutated
ObjectReference and owner of mutated objects, including gas object.
shared_objects
The object references of the shared objects used in this transaction. Empty if no shared objects were used.
unwrapped
ObjectReference and owner of objects that are unwrapped in this transaction. Unwrapped objects are objects that were wrapped into other objects in the past, and just got extracted out.
unwrapped_then_deleted
Object refs of objects previously wrapped in other objects but now deleted.
wrapped
Object refs of objects now wrapped in other objects.
One of
epoch
optional
The epoch when this transaction was executed.
events_digest
optional
The digest of the events emitted during execution, can be None if the transaction does not emit any event.
gas_object
The updated gas object reference. Have a dedicated field for convenient access. It's also included in mutated.
gas_used
The gas used by this transaction.
status
The status of the execution.
transaction_digest
optional
The transaction digest.

TransactionEffectsV2

Version 2 of TransactionEffects.

Fields

changed_objects
Objects whose state are changed in the object store.
dependencies
repeated
The set of transaction digests this transaction depends on.
unchanged_shared_objects
Shared objects that are not mutated in this transaction. Unlike owned objects, read-only shared objects' version are not committed in the transaction, and in order for a node to catch up and execute it without consensus sequencing, the version needs to be committed in the effects.
One of
auxiliary_data_digest
optional
Auxiliary data that are not protocol-critical, generated as part of the effects but are stored separately. Storing it separately allows us to avoid bloating the effects with data that are not critical. It also provides more flexibility on the format and type of the data.
epoch
optional
The epoch when this transaction was executed.
events_digest
optional
The digest of the events emitted during execution, can be None if the transaction does not emit any event.
gas_object_index
optional
The updated gas object reference, as an index into the changed_objects vector. Having a dedicated field for convenient access. System transaction that don't require gas will leave this as None.
gas_used
The gas used by this transaction.
lamport_version
optional
The version number of all the written Move objects by this transaction.
status
The status of the execution.
transaction_digest
optional
The transaction digest.

TransactionEvents

Events emitted during the successful execution of a transaction.

Fields

events
repeated

TransactionExpiration

A TTL for a transaction.

Fields

One of
epoch
Validators won't sign and execute transaction unless the expiration epoch is greater than or equal to the current epoch.
none
The transaction has no expiration.

TransactionKind

Transaction type.

Fields

One of
authenticator_state_update
Update set of valid JWKs used for zklogin.
change_epoch
System transaction used to end an epoch. The ChangeEpoch variant is now deprecated (but the ChangeEpoch struct is still used by EndOfEpochTransaction).
consensus_commit_prologue_v1
V1 consensus commit update.
consensus_commit_prologue_v2
V2 consensus commit update.
consensus_commit_prologue_v3
V3 consensus commit update.
end_of_epoch
Set of operations to run at the end of the epoch to close out the current epoch and start the next one.
genesis
Transaction used to initialize the chain state. Only valid if in the genesis checkpoint (0) and if this is the very first transaction ever executed on the chain.
programmable_transaction
A user transaction comprised of a list of native commands and Move calls.
randomness_state_update
Randomness update.

TransferObjects

Command to transfer ownership of a set of objects to an address.

Fields

objects
repeated
Set of objects to transfer.
One of
address
optional
The address to transfer ownership to.

TypeArgumentError

Type argument error.

Fields

One of
constraint_not_satisfied
A type provided did not match the specified constraint.
type_argument
optional
Required. Index of the problematic type argument.
type_not_found
A type was not found in the module specified.

TypeOrigin

Identifies a struct and the module it was defined in.

Fields

One of
module_name
optional
package_id
optional
struct_name
optional

TypeTag

Type of a Move value.

Fields

One of
address
bool
signer
struct
u128
u256
vector

U128

An unsigned 128-bit integer encoded in little-endian using 16-bytes.

Fields

One of
bytes
optional
Required. 16-byte little-endian bytes.

U256

An unsigned 256-bit integer encoded in little-endian using 32-bytes.

Fields

One of
bytes
optional
Required. 16-byte little-endian bytes.

UnchangedSharedObject

A shared object that wasn't changed during execution.

Fields

One of
cancelled
Shared objects that was congested and resulted in this transaction being cancelled.
mutate_deleted
Deleted shared objects that appear mutably/owned in the input.
object_id
optional
Required. ObjectId of the shared object.
per_epoch_config
Read of a per-epoch config object that should remain the same during an epoch.
read_deleted
Deleted shared objects that appear as read-only in the input.
read_only_root
Read-only shared object from the input.

Upgrade

Command to upgrade an already published package.

Fields

dependencies
repeated
Set of packages that the to-be published package depends on.
modules
repeated
The serialized Move modules.
One of
package
optional
Package ID of the package to upgrade.
ticket
optional
Ticket authorizing the upgrade.

UpgradeInfo

Upgraded package info for the linkage table.

Fields

One of
original_id
optional
ID of the original package.
upgraded_id
optional
ID of the upgraded package.
upgraded_version
optional
Version of the upgraded package.

UserSignature

A signature from a user.

Fields

ValidatorAggregatedSignature

An aggregated signature from multiple validators.

Fields

One of
bitmap
Required. Bitmap indicating which members of the committee contributed to this signature.
epoch
optional
Required. The epoch when this signature was produced. This can be used to lookup the ValidatorCommittee from this epoch to verify this signature.
signature
optional
Required. The 48-byte Bls12381 aggregated signature.

ValidatorCommittee

The validator set for a particular epoch.

Fields

members
The committee members.
One of
epoch
optional
Required. The epoch where this committee governs.

ValidatorCommitteeMember

A member of a validator committee.

Fields

One of
public_key
optional
Required. The 96-byte Bls12381 public key for this validator.
stake
optional
Required. Stake weight this validator possesses.

VersionAssignment

Object version assignment from consensus.

Fields

One of
object_id
optional
ObjectId of the object.
version
optional
Assigned version.

ZkLoginAuthenticator

A zklogin authenticator.

Fields

One of
inputs
Required. Zklogin proof and inputs required to perform proof verification.
max_epoch
optional
Required. Maximum epoch for which the proof is valid.
signature
Required. User signature with the public key attested to by the provided proof.

ZkLoginClaim

A claim of the iss in a zklogin proof.

Fields

One of
index_mod_4
optional
Required.
value
optional
Required.

ZkLoginInputs

A zklogin groth16 proof and the required inputs to perform proof verification.

Fields

One of
address_seed
Required.
header_base64
optional
Required.
iss_base64_details
optional
Required.
proof_points
optional
Required.

ZkLoginProof

A zklogin groth16 proof.

Fields

One of
a
optional
Required.
b
optional
Required.
c
optional
Required.

ZkLoginPublicIdentifier

Public key equivalent for zklogin authenticators.

Fields

One of
address_seed
Required.
iss
optional
Required.

google/protobuf/empty.proto

Empty

A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:

service Foo {
rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);
}

google/protobuf/timestamp.proto

Timestamp

A Timestamp represents a point in time independent of any time zone or calendar, represented as seconds and fractions of seconds at nanosecond resolution in UTC Epoch time. It is encoded using the Proleptic Gregorian Calendar which extends the Gregorian calendar backwards to year one. It is encoded assuming all minutes are 60 seconds long, i.e. leap seconds are "smeared" so that no leap second table is needed for interpretation. Range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. Restricting to that range ensures that conversion to and from RFC 3339 date strings is possible. See https://www.ietf.org/rfc/rfc3339.txt.

Examples

Example 1: Compute Timestamp from POSIX time().

Timestamp timestamp;
timestamp.set_seconds(time(NULL));
timestamp.set_nanos(0);

Example 2: Compute Timestamp from POSIX gettimeofday().

struct timeval tv;
gettimeofday(&tv, NULL);

Timestamp timestamp;
timestamp.set_seconds(tv.tv_sec);
timestamp.set_nanos(tv.tv_usec * 1000);

Example 3: Compute Timestamp from Win32 GetSystemTimeAsFileTime().

FILETIME ft;
GetSystemTimeAsFileTime(&ft);
UINT64 ticks = (((UINT64)ft.dwHighDateTime) &#lt;&#lt; 32) | ft.dwLowDateTime;

// A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
// is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
Timestamp timestamp;
timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
timestamp.set_nanos((INT32) ((ticks % 10000000) * 100)); //

Example 4: Compute Timestamp from Java System.currentTimeMillis().

long millis = System.currentTimeMillis();

Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
.setNanos((int) ((millis % 1000) * 1000000)).build();

Example 5: Compute Timestamp from current time in Python.

timestamp = Timestamp()
timestamp.GetCurrentTime()

JSON Mapping

In JSON format, the Timestamp type is encoded as a string in the RFC 3339 format. That is, the format is {year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z where {year} is always expressed using four digits while {month}, {day}, {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional seconds, which can go up to 9 digits (so up to 1 nanosecond resolution), are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone is required, though only UTC (as indicated by "Z") is presently supported.

For example, 2017-01-15T01:30:15.01Z encodes 15.01 seconds past 01:30 UTC on January 15, 2017.

In JavaScript, you can convert a Date object to this format using the standard toISOString() method. In Python, you can convert a standard datetime.datetime object to this format using strftime with the time format spec %Y-%m-%dT%H:%M:%S.%fZ. Likewise, in Java, you can use the Joda Time's ISODateTimeFormat.dateTime() to obtain a formatter capable of generating timestamps in this format.

Fields

nanos
Non-negative fractions of a second at nanosecond resolution. Negative second values with fractions must still have non-negative nano values that count forward in time. Must be from 0 to 999,999,999 inclusive.
seconds
Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z inclusive.

Scalar Value Types

double

C++
double
C#
double
Go
float64
Java
double
PHP
float
Python
float
Ruby
Float

float

C++
float
C#
float
Go
float32
Java
float
PHP
float
Python
float
Ruby
Float

int32

Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.

C++
int32
C#
int
Go
int32
Java
int
PHP
integer
Python
int
Ruby
Bignum or Fixnum (as required)

int64

Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.

C++
int64
C#
long
Go
int64
Java
long
PHP
integer/string
Python
int/long
Ruby
Bignum

uint32

Uses variable-length encoding.

C++
uint32
C#
uint
Go
uint32
Java
int
PHP
integer
Python
int/long
Ruby
Bignum or Fixnum (as required)

uint64

Uses variable-length encoding.

C++
uint64
C#
ulong
Go
uint64
Java
long
PHP
integer/string
Python
int/long
Ruby
Bignum or Fixnum (as required)

sint32

Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.

C++
int32
C#
int
Go
int32
Java
int
PHP
integer
Python
int
Ruby
Bignum or Fixnum (as required)

sint64

Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.

C++
int64
C#
long
Go
int64
Java
long
PHP
integer/string
Python
int/long
Ruby
Bignum

fixed32

Always four bytes. More efficient than uint32 if values are often greater than 2^28.

C++
uint32
C#
uint
Go
uint32
Java
int
PHP
integer
Python
int
Ruby
Bignum or Fixnum (as required)

fixed64

Always eight bytes. More efficient than uint64 if values are often greater than 2^56.

C++
uint64
C#
ulong
Go
uint64
Java
long
PHP
integer/string
Python
int/long
Ruby
Bignum

sfixed32

Always four bytes.

C++
int32
C#
int
Go
int32
Java
int
PHP
integer
Python
int
Ruby
Bignum or Fixnum (as required)

sfixed64

Always eight bytes.

C++
int64
C#
long
Go
int64
Java
long
PHP
integer/string
Python
int/long
Ruby
Bignum

bool

C++
bool
C#
bool
Go
bool
Java
boolean
PHP
boolean
Python
boolean
Ruby
TrueClass/FalseClass

string

A string must always contain UTF-8 encoded or 7-bit ASCII text.

C++
string
C#
string
Go
string
Java
String
PHP
string
Python
str/unicode
Ruby
String (UTF-8)

bytes

May contain any arbitrary sequence of bytes.

C++
string
C#
ByteString
Go
[]byte
Java
ByteString
PHP
string
Python
str
Ruby
String (ASCII-8BIT)