Schema

A schema defines a type system of GraphQL API. It describes the complete set of possible data (objects, fields, relationships, everything) that a client can access.

  • Root types

  • Non-root types

  • Query types

  • Subscription types

  • Mutation types

  • Syntax

Root types

TON Labs GraphQL schema has three root types:

  • query

  • mutation

  • subscription

The query type defines GraphQL operations that retrieve data from the server.

The mutation type defines GraphQL operations that change data on the server. It is analogous to performing HTTP verbs such as POST, PATCH, and DELETE. Mutations are used to send messages to the blockchain. We recommend to do it only via SDK, not directly.

The subscription root type – a long‐lived request that fetches data in response to source events.

Check out EVER-SDK net module - the official EverX wrapper over GraphQL API for root queries and subscriptions.

Non-root types

See non-root type descriptions in Field descriptions section.

Query types

Root resolvers

Aggregation queries (available only on dedicated nodes):

Subscription types (Soon)

  • blocks

  • accounts

  • messages

  • transaction

  • blocks_signatures

Mutation types

  • postRequests - used to send messages to blockchain.

Syntax

Read about GraphQL syntax in its official documentation. In this example we query account info:

query {
  blockchain{
   account(address:"0:653b9a6452c7a982c6dc92b2da9eba832ade1c467699ebb3b43dca6d77b780dd"){
    info{
      address
      acc_type
      balance
      last_paid
      last_trans_lt
      boc
      data
      code
      library
      data_hash
      code_hash
      library_hash
    }
    transactions(last:1){
      edges{
        node{
          hash
          now
          balance_delta
        }
      }
    }
  }
  }
}

Here you can see a request for account's information and the last transaction with a subset of fields. All available fields with their descriptions can be found in data schema in playground.

A selection set must contain only scalar fields, otherwise you will get an error. A scalar field describes one discrete piece of information available to a request within a selection set. If field is an object, you need to specify the fields of this object.

Read more in the next sections.