Spacemesh TransactionService API

The TransactionService API from Spacemesh — 8 operation(s) for transactionservice.

OpenAPI Specification

spacemesh-transactionservice-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  title: Spacemesh AccountService TransactionService API
  contact:
    name: Spacemesh
    url: https://spacemesh.io/
  license:
    name: MIT License
    url: https://github.com/spacemeshos/go-spacemesh/blob/develop/LICENSE
  version: v2alpha1
  x-logo:
    altText: Spacemesh Logo
    url: https://docs.spacemesh.io/img/logo.png
host: testnet-api.spacemesh.network
schemes:
- https
consumes:
- application/json
produces:
- application/json
tags:
- name: TransactionService
paths:
  /spacemesh.v2alpha1.TransactionService/EstimateGas:
    post:
      description: 'EstimateGas is a method that takes a "EstimateGasRequest" body and returns an "EstimateGasResponse".

        This method is used to estimate the recommended maximum gas for a signed binary transaction.'
      tags:
      - TransactionService
      summary: Estimate gas for transaction
      operationId: TransactionService_EstimateGas
      parameters:
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/spacemeshv2alpha1EstimateGasRequest'
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/spacemeshv2alpha1EstimateGasResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
  /spacemesh.v2alpha1.TransactionService/List:
    post:
      description: 'List is a method that takes a "TransactionRequest" body and returns an "TransactionList".

        This method is used to retrieve a list of transactions based on the provided request parameters.'
      tags:
      - TransactionService
      summary: List of transactions
      operationId: TransactionService_List
      parameters:
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/spacemeshv2alpha1TransactionRequest'
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/spacemeshv2alpha1TransactionList'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
  /spacemesh.v2alpha1.TransactionService/ParseTransaction:
    post:
      description: 'ParseTransaction is a method that takes a "ParseTransactionRequest" body and returns an "ParseTransactionResponse".

        This method is used to parse a signed binary transaction and optionally verify its signature.'
      tags:
      - TransactionService
      summary: Parse transaction
      operationId: TransactionService_ParseTransaction
      parameters:
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/spacemeshv2alpha1ParseTransactionRequest'
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/spacemeshv2alpha1ParseTransactionResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
  /spacemesh.v2alpha1.TransactionService/SubmitTransaction:
    post:
      description: 'SubmitTransaction is a method that takes a "SubmitTransactionRequest" body and returns an "SubmitTransactionResponse".

        This method is used to submit a signed binary transaction to the network.'
      tags:
      - TransactionService
      summary: Submit transaction
      operationId: TransactionService_SubmitTransaction
      parameters:
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/spacemeshv2alpha1SubmitTransactionRequest'
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/spacemeshv2alpha1SubmitTransactionResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
  /spacemesh.v2beta1.TransactionService/EstimateGas:
    post:
      description: 'EstimateGas is a method that takes a "EstimateGasRequest" body and returns an "EstimateGasResponse".

        This method is used to estimate the recommended maximum gas for a signed binary transaction.'
      tags:
      - TransactionService
      summary: Estimate gas for transaction
      operationId: TransactionService_EstimateGas
      parameters:
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/spacemeshv2beta1EstimateGasRequest'
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/spacemeshv2beta1EstimateGasResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
  /spacemesh.v2beta1.TransactionService/List:
    get:
      description: 'List is a method that takes a "TransactionRequest" body and returns an "TransactionList".

        This method is used to retrieve a list of transactions based on the provided request parameters.'
      tags:
      - TransactionService
      summary: List of transactions
      operationId: TransactionService_List
      parameters:
      - type: integer
        format: int64
        description: Starting layer for transactions.
        name: startLayer
        in: query
      - type: integer
        format: int64
        description: Ending layer for transactions.
        name: endLayer
        in: query
      - type: array
        items:
          type: string
          format: byte
        collectionFormat: multi
        description: 'Filter: specific transaction IDs to filter.'
        name: txid
        in: query
      - type: string
        description: Filter by address (principal or recipient)
        name: address
        in: query
      - type: string
        format: uint64
        description: Adjusts the starting point for data retrieval.
        name: offset
        in: query
      - type: string
        format: uint64
        description: Specifies maximum number of items to fetch.
        name: limit
        in: query
      - type: boolean
        description: Whether to include transaction state in response.
        name: includeState
        in: query
      - type: boolean
        description: Whether to include result of transactions in response.
        name: includeResult
        in: query
      - enum:
        - ASC
        - DESC
        type: string
        default: ASC
        description: specifies the sort order by layer (default is ASC)
        name: sortOrder
        in: query
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/spacemeshv2beta1TransactionList'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
  /spacemesh.v2beta1.TransactionService/ParseTransaction:
    post:
      description: 'ParseTransaction is a method that takes a "ParseTransactionRequest" body and returns an "ParseTransactionResponse".

        This method is used to parse a signed binary transaction and optionally verify its signature.'
      tags:
      - TransactionService
      summary: Parse transaction
      operationId: TransactionService_ParseTransaction
      parameters:
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/spacemeshv2beta1ParseTransactionRequest'
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/spacemeshv2beta1ParseTransactionResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
  /spacemesh.v2beta1.TransactionService/SubmitTransaction:
    post:
      description: 'SubmitTransaction is a method that takes a "SubmitTransactionRequest" body and returns an "SubmitTransactionResponse".

        This method is used to submit a signed binary transaction to the network.'
      tags:
      - TransactionService
      summary: Submit transaction
      operationId: TransactionService_SubmitTransaction
      parameters:
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/spacemeshv2beta1SubmitTransactionRequest'
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/spacemeshv2beta1SubmitTransactionResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/googlerpcStatus'
definitions:
  spacemeshv2alpha1TransactionState:
    description: "TransactionState is the \"journey\" of a tx from mempool to block inclusion to\nmesh to STF processing. To know whether or not the tx actually succeeded,\nand its side effects, check tx_state.\n\n - TRANSACTION_STATE_UNSPECIFIED: default state\n - TRANSACTION_STATE_REJECTED: rejected from mempool due to, e.g., invalid syntax\n - TRANSACTION_STATE_INSUFFICIENT_FUNDS: rejected from mempool by funds check\n - TRANSACTION_STATE_CONFLICTING: rejected from mempool due to conflicting counter\n - TRANSACTION_STATE_MEMPOOL: in mempool but not on the mesh yet\n - TRANSACTION_STATE_MESH: submitted to the mesh\n - TRANSACTION_STATE_PROCESSED: processed by STF; check Receipt for success or failure\n - TRANSACTION_STATE_INEFFECTUAL: removed from mempool and will be forgotten and never executed"
    type: string
    default: TRANSACTION_STATE_UNSPECIFIED
    enum:
    - TRANSACTION_STATE_UNSPECIFIED
    - TRANSACTION_STATE_REJECTED
    - TRANSACTION_STATE_INSUFFICIENT_FUNDS
    - TRANSACTION_STATE_CONFLICTING
    - TRANSACTION_STATE_MEMPOOL
    - TRANSACTION_STATE_MESH
    - TRANSACTION_STATE_PROCESSED
    - TRANSACTION_STATE_INEFFECTUAL
  spacemeshv2beta1ContentsVaultSpawn:
    type: object
    properties:
      initialUnlockAmount:
        type: string
        format: uint64
      owner:
        type: string
        title: owner account
      totalAmount:
        type: string
        format: uint64
      vestingEnd:
        type: integer
        format: int64
        title: as layer number
      vestingStart:
        type: integer
        format: int64
        title: as layer number
  spacemeshv2beta1TransactionContents:
    type: object
    properties:
      drainVault:
        $ref: '#/definitions/spacemeshv2beta1ContentsDrainVault'
      multiSigSpawn:
        $ref: '#/definitions/spacemeshv2beta1ContentsMultiSigSpawn'
      send:
        $ref: '#/definitions/spacemeshv2beta1ContentsSend'
      singleSigSpawn:
        $ref: '#/definitions/spacemeshv2beta1ContentsSingleSigSpawn'
      vaultSpawn:
        $ref: '#/definitions/spacemeshv2beta1ContentsVaultSpawn'
      vestingSpawn:
        $ref: '#/definitions/spacemeshv2beta1ContentsMultiSigSpawn'
  googlerpcStatus:
    description: 'The `Status` type defines a logical error model that is suitable for

      different programming environments, including REST APIs and RPC APIs. It is

      used by [gRPC](https://github.com/grpc). Each `Status` message contains

      three pieces of data: error code, error message, and error details.


      You can find out more about this error model and how to work with it in the

      [API Design Guide](https://cloud.google.com/apis/design/errors).'
    type: object
    properties:
      code:
        description: 'The status code, which should be an enum value of

          [google.rpc.Code][google.rpc.Code].'
        type: integer
        format: int32
      details:
        description: 'A list of messages that carry the error details.  There is a common set of

          message types for APIs to use.'
        type: array
        items:
          type: object
          $ref: '#/definitions/protobufAny'
      message:
        description: 'A developer-facing error message, which should be in English. Any

          user-facing error message should be localized and sent in the

          [google.rpc.Status.details][google.rpc.Status.details] field, or localized

          by the client.'
        type: string
  spacemeshv2alpha1SortOrder:
    type: string
    default: ASC
    enum:
    - ASC
    - DESC
  spacemeshv2beta1Nonce:
    type: object
    properties:
      counter:
        type: string
        format: uint64
  spacemeshv2beta1ContentsDrainVault:
    type: object
    properties:
      amount:
        type: string
        format: uint64
      destination:
        type: string
      vault:
        type: string
  spacemeshv2beta1EstimateGasResponse:
    type: object
    properties:
      recommendedMaxGas:
        type: string
        format: uint64
        title: recommended max gas
      status:
        $ref: '#/definitions/googlerpcStatus'
  spacemeshv2beta1SubmitTransactionResponse:
    type: object
    properties:
      status:
        $ref: '#/definitions/googlerpcStatus'
      txId:
        type: string
        format: byte
        title: transaction ID
  spacemeshv2beta1TransactionResponse:
    type: object
    properties:
      tx:
        title: transaction
        $ref: '#/definitions/spacemeshv2beta1Transaction'
      txResult:
        title: optional transaction result
        $ref: '#/definitions/spacemeshv2beta1TransactionResult'
      txState:
        title: optional transaction state
        $ref: '#/definitions/spacemeshv2beta1TransactionState'
  spacemeshv2alpha1ParseTransactionRequest:
    type: object
    properties:
      transaction:
        type: string
        format: byte
        title: signed binary transaction
      verify:
        type: boolean
        title: if true signature verification will be executed
  spacemeshv2beta1SubmitTransactionRequest:
    type: object
    properties:
      transaction:
        type: string
        format: byte
        title: signed binary transaction
  spacemeshv2beta1Transaction:
    description: 'An immutable Spacemesh transaction.

      do not include mutable data such as tx state or result.'
    type: object
    properties:
      contents:
        title: parsed transaction contents
        $ref: '#/definitions/spacemeshv2beta1TransactionContents'
      gasPrice:
        type: string
        format: uint64
        title: fee per unit gas, in smidge
      id:
        type: string
        format: byte
      maxGas:
        type: string
        format: uint64
        title: max gas units consumed by tx
      maxSpend:
        type: string
        format: uint64
      method:
        description: this is actually limited by uint8, but no type for that.
        type: integer
        format: int64
      nonce:
        $ref: '#/definitions/spacemeshv2beta1Nonce'
      principal:
        type: string
        title: principal account address
      raw:
        type: string
        format: byte
      template:
        type: string
        title: template account address
      type:
        $ref: '#/definitions/spacemeshv2beta1TransactionTransactionType'
  spacemeshv2alpha1TransactionContents:
    type: object
    properties:
      drainVault:
        $ref: '#/definitions/spacemeshv2alpha1ContentsDrainVault'
      multiSigSpawn:
        $ref: '#/definitions/spacemeshv2alpha1ContentsMultiSigSpawn'
      send:
        $ref: '#/definitions/spacemeshv2alpha1ContentsSend'
      singleSigSpawn:
        $ref: '#/definitions/spacemeshv2alpha1ContentsSingleSigSpawn'
      vaultSpawn:
        $ref: '#/definitions/spacemeshv2alpha1ContentsVaultSpawn'
      vestingSpawn:
        $ref: '#/definitions/spacemeshv2alpha1ContentsMultiSigSpawn'
  spacemeshv2beta1TransactionTransactionType:
    type: string
    default: TRANSACTION_TYPE_UNSPECIFIED
    enum:
    - TRANSACTION_TYPE_UNSPECIFIED
    - TRANSACTION_TYPE_SINGLE_SIG_SEND
    - TRANSACTION_TYPE_SINGLE_SIG_SPAWN
    - TRANSACTION_TYPE_SINGLE_SIG_SELFSPAWN
    - TRANSACTION_TYPE_MULTI_SIG_SEND
    - TRANSACTION_TYPE_MULTI_SIG_SPAWN
    - TRANSACTION_TYPE_MULTI_SIG_SELFSPAWN
    - TRANSACTION_TYPE_VESTING_SPAWN
    - TRANSACTION_TYPE_VAULT_SPAWN
    - TRANSACTION_TYPE_DRAIN_VAULT
  spacemeshv2alpha1TransactionRequest:
    type: object
    properties:
      address:
        type: string
        title: Filter by address (principal or recipient)
      endLayer:
        description: Ending layer for transactions.
        type: integer
        format: int64
      includeResult:
        description: Whether to include result of transactions in response.
        type: boolean
      includeState:
        description: Whether to include transaction state in response.
        type: boolean
      limit:
        description: Specifies maximum number of items to fetch.
        type: string
        format: uint64
      offset:
        description: Adjusts the starting point for data retrieval.
        type: string
        format: uint64
      sortOrder:
        title: specifies the sort order by layer (default is ASC)
        $ref: '#/definitions/spacemeshv2alpha1SortOrder'
      startLayer:
        description: Starting layer for transactions.
        type: integer
        format: int64
      txid:
        description: 'Filter: specific transaction IDs to filter.'
        type: array
        items:
          type: string
          format: byte
  spacemeshv2alpha1SubmitTransactionResponse:
    type: object
    properties:
      status:
        $ref: '#/definitions/googlerpcStatus'
      txId:
        type: string
        format: byte
        title: transaction ID
  spacemeshv2alpha1TransactionResultStatus:
    type: string
    default: TRANSACTION_STATUS_UNSPECIFIED
    enum:
    - TRANSACTION_STATUS_UNSPECIFIED
    - TRANSACTION_STATUS_SUCCESS
    - TRANSACTION_STATUS_FAILURE
    - TRANSACTION_STATUS_INVALID
  spacemeshv2alpha1TransactionResult:
    type: object
    properties:
      block:
        type: string
        format: byte
        title: block hash
      fee:
        type: string
        format: uint64
        title: in smidge
      gasConsumed:
        type: string
        format: uint64
        title: in units of gas
      layer:
        type: integer
        format: int64
        title: layer number
      message:
        type: string
      status:
        title: status of the transaction
        $ref: '#/definitions/spacemeshv2alpha1TransactionResultStatus'
      touchedAddresses:
        type: array
        title: addresses touched by the tx
        items:
          type: string
  spacemeshv2alpha1ContentsVaultSpawn:
    type: object
    properties:
      initialUnlockAmount:
        type: string
        format: uint64
      owner:
        type: string
        title: owner account
      totalAmount:
        type: string
        format: uint64
      vestingEnd:
        type: integer
        format: int64
        title: as layer number
      vestingStart:
        type: integer
        format: int64
        title: as layer number
  spacemeshv2alpha1Nonce:
    type: object
    properties:
      counter:
        type: string
        format: uint64
  spacemeshv2alpha1ParseTransactionResponse:
    type: object
    properties:
      status:
        $ref: '#/definitions/googlerpcStatus'
      tx:
        title: parsed transaction
        $ref: '#/definitions/spacemeshv2alpha1Transaction'
  spacemeshv2beta1ContentsSingleSigSpawn:
    type: object
    properties:
      pubkey:
        type: string
  spacemeshv2beta1ContentsMultiSigSpawn:
    type: object
    properties:
      pubkey:
        type: array
        items:
          type: string
      required:
        type: integer
        format: int64
        title: number of required signatures
  spacemeshv2alpha1ContentsSingleSigSpawn:
    type: object
    properties:
      pubkey:
        type: string
  spacemeshv2alpha1TransactionList:
    type: object
    properties:
      transactions:
        type: array
        title: list of transactions
        items:
          type: object
          $ref: '#/definitions/spacemeshv2alpha1TransactionResponse'
  protobufAny:
    description: "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(&foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n    // or ...\n    if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n      foo = any.unpack(Foo.getDefaultInstance());\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := &pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := &pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": <string>,\n      \"lastName\": <string>\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }"
    type: object
    properties:
      '@type':
        description: "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics."
        type: string
    additionalProperties: {}
  spacemeshv2beta1TransactionState:
    description: "TransactionState is the \"journey\" of a tx from mempool to block inclusion to\nmesh to STF processing. To know whether or not the tx actually succeeded,\nand its side effects, check tx_state.\n\n - TRANSACTION_STATE_UNSPECIFIED: default state\n - TRANSACTION_STATE_REJECTED: rejected from mempool due to, e.g., invalid syntax\n - TRANSACTION_STATE_INSUFFICIENT_FUNDS: rejected from mempool by funds check\n - TRANSACTION_STATE_CONFLICTING: rejected from mempool due to conflicting counter\n - TRANSACTION_STATE_MEMPOOL: in mempool but not on the mesh yet\n - TRANSACTION_STATE_MESH: submitted to the mesh\n - TRANSACTION_STATE_PROCESSED: processed by STF; check Receipt for success or failure\n - TRANSACTION_STATE_INEFFECTUAL: removed from mempool and will be forgotten and never executed"
    type: string
    default: TRANSACTION_STATE_UNSPECIFIED
    enum:
    - TRANSACTION_STATE_UNSPECIFIED
    - TRANSACTION_STATE_REJECTED
    - TRANSACTION_STATE_INSUFFICIENT_FUNDS
    - TRANSACTION_STATE_CONFLICTING
    - TRANSACTION_STATE_MEMPOOL
    - TRANSACTION_STATE_MESH
    - TRANSACTION_STATE_PROCESSED
    - TRANSACTION_STATE_INEFFECTUAL
  spacemeshv2alpha1Transaction:
    description: 'An immutable Spacemesh transaction.

      do not include mutable data such as tx state or result.'
    type: object
    properties:
      contents:
        title: parsed transaction contents
        $ref: '#/definitions/spacemeshv2alpha1TransactionContents'
      gasPrice:
        type: string
        format: uint64
        title: fee per unit gas, in smidge
      id:
        type: string
        format: byte
      maxGas:
        type: string
        format: uint64
        title: max gas units consumed by tx
      maxSpend:
        type: string
        format: uint64
      method:
        description: this is actually limited by uint8, but no type for that.
        type: integer
        format: int64
      nonce:
        $ref: '#/definitions/spacemeshv2alpha1Nonce'
      principal:
        type: string
        title: principal account address
      raw:
        type: string
        format: byte
      template:
        type: string
        title: template account address
      type:
        $ref: '#/definitions/spacemeshv2alpha1TransactionTransactionType'
  spacemeshv2alpha1TransactionTransactionType:
    type: string
    default: TRANSACTION_TYPE_UNSPECIFIED
    enum:
    - TRANSACTION_TYPE_UNSPECIFIED
    - TRANSACTION_TYPE_SINGLE_SIG_SEND
    - TRANSACTION_TYPE_SINGLE_SIG_SPAWN
    - TRANSACTION_TYPE_SINGLE_SIG_SELFSPAWN
    - TRANSACTION_TYPE_MULTI_SIG_SEND
    - TRANSACTION_TYPE_MULTI_SIG_SPAWN
    - TRANSACTION_TYPE_MULTI_SIG_SELFSPAWN
    - TRANSACTION_TYPE_VESTING_SPAWN
    - TRANSACTION_TYPE_VAULT_SPAWN
    - TRANSACTION_TYPE_DRAIN_VAULT
  spacemeshv2alpha1EstimateGasResponse:
    type: object
    properties:
      recommendedMaxGas:
        type: string
        format: uint64
        title: recommended max gas
      status:
        $ref: '#/definitions/googlerpcStatus'
  spacemeshv2alpha1TransactionResponse:
    type: object
    properties:
      tx:
        title: transaction
        $ref: '#/definitions/spacemeshv2alpha1Transaction'
      txResult:
        title: optional transaction result
        $ref: '#/definitions/spacemeshv2alpha1TransactionResult'
      txState:
        title: optional transaction state
        $ref: '#/definitions/spacemeshv2alpha1TransactionState'
  spacemeshv2beta1TransactionResult:
    type: object
    properties:
      block:
        type: string
        format: byte
        title: block hash
      fee:
        type: string
        format: uint64
        title: in smidge
      gasConsumed:
        type: string
        format: uint64
        title: in units of gas
      layer:
        type: integer
        format: int64
        title: layer number
      message:
        type: string
      status:
        title: status of the transaction
        $ref: '#/definitions/spacemeshv2beta1TransactionResultStatus'
      touchedAddresses:
        type: array
        title: addresses touched by the tx
        items:
          type: string
  spacemeshv2beta1TransactionResultStatus:
    type: string
    default: TRANSACTION_STATUS_UNSPECIFIED
    enum:
    - TRANSACTION_STATUS_UNSPECIFIED
    - TRANSACTION_STATUS_SUCCESS
    - TRANSACTION_STATUS_FAILURE
    - TRANSACTION_STATUS_INVALID
  spacemeshv2beta1ParseTransactionResponse:
    type: object
    properties:
      status:
        $ref: '#/definitions/googlerpcStatus'
      tx:
        title: parsed transaction
        $ref: '#/definitions/spacemeshv2beta1Transaction'
  spacemeshv2alpha1ContentsSend:
    type: object
    properties:
      amount:
        type: string
        format: uint64
        title: amount in smidge
      destination:
        type: string
        title: recipient account
  spacemeshv2alpha1ContentsMultiSigSpawn:
    type: object
    properties:
      pubkey:
        type: array
        items:
          type: string
      required:
        type: integer
        format: int64
        title: number of required signatures
  spacemeshv2beta1ContentsSend:
    type: object
    properties:
      amount:
        type: string
        format: uint64
        title: amount in smidge
      destination:
        type: string
        title: recipient account
  spacemeshv2alpha1EstimateGasRequest:
    type: object
    properties:
      transaction:
        type: string
        format: byte
        title: signed binary transaction
  spacemeshv2beta1ParseTransactionRequest:
    type: object
    properties:
      transaction:
        type: string
        format: byte
        title: signed binary transaction
      verify:
        type: boolean
        title: if true signature verification will be executed
  spacemeshv2beta1TransactionList:
    type: object
    properties:
      transactions:
        type: array
        title: list of transactions
        items:
          type: object
          $ref: '#/definitions/spacemeshv2beta1TransactionResponse'
  spacemeshv2alpha1ContentsDrainVault:
    type: object
    properties:
      amount:
        type: string
        format: uint64
      destination:
        type: string
      vault:
        type: string
  spacemeshv2beta1EstimateGasRequest:
    type: object
    properties:
      transaction:
        type: string
        format: byte
        title: signed binary transaction
  spacemeshv2alpha1SubmitTransactionRequest:
    type: object
    properties:
      transaction:
        type: string
        format: byte
        title: signed binary transaction