Wormhole Guardian API

The Guardian API from Wormhole — 8 operation(s) for guardian.

OpenAPI Specification

wormhole-guardian-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  description: 'Wormhole Guardian API

    This is the API for the Wormhole Guardian and Explorer.

    The API has two namespaces: wormholescan and guardian.

    wormholescan is the namespace for the explorer and the new endpoints. The prefix is /api/v1.

    guardian is the legacy namespace backguard compatible with guardian node API. The prefix is /v1.

    This API is public and does not require authentication although some endpoints are rate limited.

    Check each endpoint documentation for more information.'
  title: Wormholescan Guardian API
  termsOfService: https://wormhole.com/
  contact:
    name: API Support
    url: https://discord.com/invite/wormholecrypto
    email: info@wormhole.com
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  version: '1.0'
host: api.wormholescan.io
basePath: /
schemes:
- https
tags:
- name: Guardian
paths:
  /v1/governor/available_notional_by_chain:
    get:
      description: 'Get available notional by chainID

        Since from the wormhole-explorer point of view it is not a node, but has the information of all nodes,

        in order to build the endpoints it was assumed:

        There are N number of remainingAvailableNotional values in the GovernorConfig collection. N = number of guardians

        for a chainID. The smallest remainingAvailableNotional value for a chainID is used for the endpoint response.'
      tags:
      - Guardian
      operationId: governor-available-notional-by-chain
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/governor.AvailableNotionalResponse'
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
  /v1/governor/enqueued_vaas:
    get:
      description: Get enqueued VAAs
      tags:
      - Guardian
      operationId: guardians-enqueued-vaas
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/governor.EnqueuedVaaResponse'
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
  /v1/governor/is_vaa_enqueued/:chain_id/:emitter/:seq:
    get:
      description: Check if vaa is enqueued
      tags:
      - Guardian
      operationId: guardians-is-vaa-enqueued
      parameters:
      - type: integer
        description: id of the blockchain
        name: chain_id
        in: path
        required: true
      - type: string
        description: address of the emitter
        name: emitter
        in: path
        required: true
      - type: integer
        description: sequence of the vaa
        name: seq
        in: path
        required: true
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/governor.EnqueuedVaaResponse'
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
  /v1/governor/token_list:
    get:
      description: 'Get token list

        Since from the wormhole-explorer point of view it is not a node, but has the information of all nodes,

        in order to build the endpoints it was assumed:

        For tokens with the same originChainId and originAddress and different price values for each node,

        the price that has most occurrences in all the nodes for an originChainId and originAddress is returned.'
      tags:
      - Guardian
      operationId: guardians-token-list
      responses:
        '200':
          description: OK
          schema:
            type: array
            items:
              $ref: '#/definitions/governor.TokenList'
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
  /v1/guardianset/current:
    get:
      description: Get current guardian set.
      tags:
      - Guardian
      operationId: guardian-set
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/guardian.GuardianSetResponse'
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
  /v1/heartbeats:
    get:
      description: Get heartbeats for guardians
      tags:
      - Guardian
      operationId: guardians-hearbeats
      responses:
        '200':
          description: OK
          schema:
            $ref: '#/definitions/heartbeats.HeartbeatsResponse'
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
  /v1/signed_batch_vaa/:chain_id/:emitter/sequence/:seq:
    get:
      description: get a batch of VAA []byte from a chainID, emitter address and sequence.
      tags:
      - Guardian
      operationId: guardians-find-signed-batch-vaa
      parameters:
      - type: integer
        description: id of the blockchain
        name: chain_id
        in: path
        required: true
      - type: string
        description: address of the emitter
        name: emitter
        in: path
        required: true
      - type: integer
        description: sequence of the VAA
        name: seq
        in: path
        required: true
      responses:
        '200':
          description: OK
          schema:
            type: object
            properties:
              vaaBytes:
                type: array
                items:
                  type: integer
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
  /v1/signed_vaa/:chain_id/:emitter/:seq:
    get:
      description: get a VAA []byte from a chainID, emitter address and sequence.
      tags:
      - Guardian
      operationId: guardians-find-signed-vaa
      parameters:
      - type: integer
        description: id of the blockchain
        name: chain_id
        in: path
        required: true
      - type: string
        description: address of the emitter
        name: emitter
        in: path
        required: true
      - type: integer
        description: sequence of the VAA
        name: seq
        in: path
        required: true
      responses:
        '200':
          description: OK
          schema:
            type: object
            properties:
              vaaBytes:
                type: array
                items:
                  type: integer
        '400':
          description: Bad Request
        '500':
          description: Internal Server Error
definitions:
  governor.AvailableNotionalResponse:
    type: object
    properties:
      entries:
        type: array
        items:
          $ref: '#/definitions/governor.AvailableNotionalItemResponse'
  github_com_wormhole-foundation_wormhole-explorer_api_routes_guardian_guardian.GuardianSet:
    type: object
    properties:
      addresses:
        type: array
        items:
          type: string
      index:
        type: integer
  governor.AvailableNotionalItemResponse:
    type: object
    properties:
      bigTransactionSize:
        type: string
      chainId:
        $ref: '#/definitions/vaa.ChainID'
      notionalLimit:
        type: string
      remainingAvailableNotional:
        type: string
  heartbeats.HeartbeatsResponse:
    type: object
    properties:
      entries:
        type: array
        items:
          $ref: '#/definitions/heartbeats.HeartbeatResponse'
  governor.EnqueuedVaaItemResponse:
    type: object
    properties:
      emitterAddress:
        type: string
      emitterChain:
        $ref: '#/definitions/vaa.ChainID'
      notionalValue:
        type: string
      releaseTime:
        type: integer
      sequence:
        type: integer
      txHash:
        type: string
  heartbeats.HeartbeatNetworkResponse:
    type: object
    properties:
      contractAddress:
        type: string
      errorCount:
        type: string
      height:
        type: string
      id:
        type: integer
  governor.TokenList:
    type: object
    properties:
      originAddress:
        type: string
      originChainId:
        $ref: '#/definitions/vaa.ChainID'
      price:
        type: number
  governor.EnqueuedVaaResponse:
    type: object
    properties:
      entries:
        type: array
        items:
          $ref: '#/definitions/governor.EnqueuedVaaItemResponse'
  heartbeats.HeartbeatResponse:
    type: object
    properties:
      p2pNodeAddr:
        type: string
      rawHeartbeat:
        $ref: '#/definitions/heartbeats.RawHeartbeat'
      verifiedGuardianAddr:
        type: string
  guardian.GuardianSetResponse:
    type: object
    properties:
      guardianSet:
        $ref: '#/definitions/github_com_wormhole-foundation_wormhole-explorer_api_routes_guardian_guardian.GuardianSet'
  vaa.ChainID:
    type: integer
    enum:
    - 0
    - 1
    - 2
    - 3
    - 4
    - 5
    - 6
    - 8
    - 10
    - 13
    - 14
    - 15
    - 16
    - 18
    - 19
    - 20
    - 21
    - 22
    - 23
    - 24
    - 25
    - 26
    - 29
    - 30
    - 31
    - 32
    - 33
    - 34
    - 35
    - 37
    - 38
    - 39
    - 40
    - 41
    - 42
    - 44
    - 45
    - 46
    - 47
    - 48
    - 49
    - 50
    - 51
    - 52
    - 53
    - 54
    - 55
    - 56
    - 57
    - 58
    - 59
    - 60
    - 61
    - 62
    - 63
    - 64
    - 65
    - 66
    - 67
    - 68
    - 69
    - 3104
    - 4000
    - 4001
    - 4002
    - 4003
    - 4004
    - 4005
    - 4006
    - 4007
    - 4008
    - 4009
    - 10002
    - 10003
    - 10004
    - 10005
    - 10006
    - 10007
    - 10009
    - 65000
    x-enum-varnames:
    - ChainIDUnset
    - ChainIDSolana
    - ChainIDEthereum
    - ChainIDTerra
    - ChainIDBSC
    - ChainIDPolygon
    - ChainIDAvalanche
    - ChainIDAlgorand
    - ChainIDFantom
    - ChainIDKlaytn
    - ChainIDCelo
    - ChainIDNear
    - ChainIDMoonbeam
    - ChainIDTerra2
    - ChainIDInjective
    - ChainIDOsmosis
    - ChainIDSui
    - ChainIDAptos
    - ChainIDArbitrum
    - ChainIDOptimism
    - ChainIDGnosis
    - ChainIDPythNet
    - ChainIDBtc
    - ChainIDBase
    - ChainIDFileCoin
    - ChainIDSei
    - ChainIDRootstock
    - ChainIDScroll
    - ChainIDMantle
    - ChainIDXLayer
    - ChainIDLinea
    - ChainIDBerachain
    - ChainIDSeiEVM
    - ChainIDEclipse
    - ChainIDBOB
    - ChainIDUnichain
    - ChainIDWorldchain
    - ChainIDInk
    - ChainIDHyperEVM
    - ChainIDMonad
    - ChainIDMovement
    - ChainIDMezo
    - ChainIDFogo
    - ChainIDSonic
    - ChainIDConverge
    - ChainIDCodex
    - ChainIDPlume
    - ChainIDAztec
    - ChainIDXRPLEVM
    - ChainIDPlasma
    - ChainIDCreditCoin
    - ChainIDStacks
    - ChainIDStellar
    - ChainIDTON
    - ChainIDMoca
    - ChainIDMegaETH
    - ChainIDDogecoin
    - ChainIDXRPL
    - ChainIDZeroGravity
    - ChainIDTempo
    - ChainIDNexus
    - ChainIDWormchain
    - ChainIDCosmoshub
    - ChainIDEvmos
    - ChainIDKujira
    - ChainIDNeutron
    - ChainIDCelestia
    - ChainIDStargaze
    - ChainIDSeda
    - ChainIDDymension
    - ChainIDProvenance
    - ChainIDNoble
    - ChainIDSepolia
    - ChainIDArbitrumSepolia
    - ChainIDBaseSepolia
    - ChainIDOptimismSepolia
    - ChainIDHolesky
    - ChainIDPolygonSepolia
    - ChainIDMonadTestnet
    - ChainIDHyperCore
  heartbeats.RawHeartbeat:
    type: object
    properties:
      bootTimestamp:
        type: string
      counter:
        type: string
      features:
        type: array
        items:
          type: string
      guardianAddr:
        type: string
      networks:
        type: array
        items:
          $ref: '#/definitions/heartbeats.HeartbeatNetworkResponse'
      nodeName:
        type: string
      timestamp:
        type: string
      version:
        type: string