wormhole-explorer/api/docs/swagger.json

3839 lines
130 KiB
JSON
Raw Normal View History

{
"swagger": "2.0",
"info": {
"description": "Wormhole Guardian API\nThis is the API for the Wormhole Guardian and Explorer.\nThe API has two namespaces: wormholescan and guardian.\nwormholescan is the namespace for the explorer and the new endpoints. The prefix is /api/v1.\nguardian is the legacy namespace backguard compatible with guardian node API. The prefix is /v1.\nThis API is public and does not require authentication although some endpoints are rate limited.\nCheck each endpoint documentation for more information.",
"title": "Wormholescan 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"
},
"basePath": "/",
"paths": {
"/api/v1/address/:address": {
"get": {
"description": "Lookup an address",
"tags": [
"wormholescan"
],
"operationId": "find-address-by-id",
"parameters": [
{
"type": "string",
"description": "address",
"name": "address",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "Page number. Starts at 0.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/response.Response-address_AddressOverview"
}
},
"400": {
"description": "Bad Request"
},
"404": {
"description": "Not Found"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/global-tx/:chain_id/:emitter/:seq": {
"get": {
"description": "Find a global transaction by VAA ID\nGlobal transactions is a logical association of two transactions that are related to each other by a unique VAA ID.\nThe first transaction is created on the origin chain when the VAA is emitted.\nThe second transaction is created on the destination chain when the VAA is redeemed.\nIf the response only contains an origin tx the VAA was not redeemed.",
"tags": [
"wormholescan"
],
"operationId": "find-global-transaction-by-id",
"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": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/transactions.Tx"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/governor/config": {
"get": {
"description": "Returns governor configuration for all guardians.",
"tags": [
"wormholescan"
],
"operationId": "governor-config",
"parameters": [
{
"type": "integer",
"description": "Page number.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/response.Response-governor_GovConfig"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/governor/config/:guardian_address": {
"get": {
"description": "Returns governor configuration for a given guardian.",
"tags": [
"wormholescan"
],
"operationId": "governor-config-by-guardian-address",
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/response.Response-governor_GovConfig"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/governor/enqueued_vaas/": {
"get": {
"description": "Returns enqueued VAAs for each blockchain.",
"tags": [
"wormholescan"
],
"operationId": "governor-enqueued-vaas",
"parameters": [
{
"type": "integer",
"description": "Page number.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
},
{
"enum": [
"ASC",
"DESC"
],
"type": "string",
"description": "Sort results in ascending or descending order.",
"name": "sortOrder",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/response.Response-array_governor_EnqueuedVaas"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/governor/enqueued_vaas/:chain": {
"get": {
"description": "Returns all enqueued VAAs for a given blockchain.",
"tags": [
"wormholescan"
],
"operationId": "guardians-enqueued-vaas-by-chain",
"parameters": [
{
"type": "integer",
"description": "Page number.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
},
{
"enum": [
"ASC",
"DESC"
],
"type": "string",
"description": "Sort results in ascending or descending order.",
"name": "sortOrder",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/response.Response-array_governor_EnqueuedVaaDetail"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/governor/limit": {
"get": {
"description": "Returns the governor limit for all blockchains.",
"tags": [
"wormholescan"
],
"operationId": "governor-notional-limit",
"parameters": [
{
"type": "integer",
"description": "Page number.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/response.Response-array_governor_GovernorLimit"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/governor/notional/available": {
"get": {
"description": "Returns the amount of notional value available for each blockchain.",
"tags": [
"wormholescan"
],
"operationId": "governor-notional-available",
"parameters": [
{
"type": "integer",
"description": "Page number.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
},
{
"enum": [
"ASC",
"DESC"
],
"type": "string",
"description": "Sort results in ascending or descending order.",
"name": "sortOrder",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/response.Response-array_governor_NotionalAvailable"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/governor/notional/available/:chain": {
"get": {
"description": "Returns the amount of notional value available for a given blockchain.",
"tags": [
"wormholescan"
],
"operationId": "governor-notional-available-by-chain",
"parameters": [
{
"type": "integer",
"description": "Page number.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/response.Response-array_governor_NotionalAvailableDetail"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/governor/notional/limit": {
"get": {
"description": "Returns the detailed notional limit for all blockchains.",
"tags": [
"wormholescan"
],
"operationId": "governor-notional-limit-detail",
"parameters": [
{
"type": "integer",
"description": "Page number.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/response.Response-array_governor_NotionalLimitDetail"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/governor/notional/limit/:chain": {
"get": {
"description": "Returns the detailed notional limit available for a given blockchain.",
"tags": [
"wormholescan"
],
"operationId": "governor-notional-limit-detail-by-chain",
"parameters": [
{
"type": "integer",
"description": "Page number.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/response.Response-array_governor_NotionalLimitDetail"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/governor/notional/max_available/:chain": {
"get": {
"description": "Returns the maximum amount of notional value available for a given blockchain.",
"tags": [
"wormholescan"
],
"operationId": "governor-max-notional-available-by-chain",
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/response.Response-governor_MaxNotionalAvailableRecord"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/governor/status": {
"get": {
"description": "Returns the governor status for all guardians.",
"tags": [
"wormholescan"
],
"operationId": "governor-status",
"parameters": [
{
"type": "integer",
"description": "Page number.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/response.Response-array_governor_GovStatus"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/governor/status/:guardian_address": {
"get": {
"description": "Returns the governor status for a given guardian.",
"tags": [
"wormholescan"
],
"operationId": "governor-status-by-guardian-address",
"parameters": [
{
"type": "integer",
"description": "Page number.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/response.Response-governor_GovStatus"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/health": {
"get": {
"description": "Health check",
"tags": [
"wormholescan"
],
"operationId": "health-check",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"properties": {
"status": {
"type": "string"
}
}
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/last-txs": {
"get": {
"description": "Returns the number of transactions by a defined time span and sample rate.",
"tags": [
"wormholescan"
],
"operationId": "get-last-transactions",
"parameters": [
{
"type": "string",
"description": "Time Span, default: 1d, supported values: [1d, 1w, 1mo]. 1mo is 30 days.",
"name": "timeSpan",
"in": "query"
},
{
"type": "string",
"description": "Sample Rate, default: 1h, supported values: [1h, 1d]. Valid configurations with timeSpan: 1d/1h, 1w/1d, 1mo/1d",
"name": "sampleRate",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/transactions.TransactionCountResult"
}
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/observations": {
"get": {
"description": "Returns all observations, sorted in descending timestamp order.",
"tags": [
"wormholescan"
],
"operationId": "find-observations",
"parameters": [
{
"type": "integer",
"description": "Page number.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
},
{
"enum": [
"ASC",
"DESC"
],
"type": "string",
"description": "Sort results in ascending or descending order.",
"name": "sortOrder",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/observations.ObservationDoc"
}
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/observations/:chain": {
"get": {
"description": "Returns all observations for a given blockchain, sorted in descending timestamp order.",
"tags": [
"wormholescan"
],
"operationId": "find-observations-by-chain",
"parameters": [
{
"type": "integer",
"description": "Page number.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
},
{
"enum": [
"ASC",
"DESC"
],
"type": "string",
"description": "Sort results in ascending or descending order.",
"name": "sortOrder",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/observations.ObservationDoc"
}
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/observations/:chain/:emitter": {
"get": {
"description": "Returns all observations for a specific emitter address, sorted in descending timestamp order.",
"tags": [
"wormholescan"
],
"operationId": "find-observations-by-emitter",
"parameters": [
{
"type": "integer",
"description": "Page number.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
},
{
"enum": [
"ASC",
"DESC"
],
"type": "string",
"description": "Sort results in ascending or descending order.",
"name": "sortOrder",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/observations.ObservationDoc"
}
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/observations/:chain/:emitter/:sequence": {
"get": {
"description": "Find observations identified by emitter chain, emitter address and sequence.",
"tags": [
"wormholescan"
],
"operationId": "find-observations-by-sequence",
"parameters": [
{
"type": "integer",
"description": "Page number.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
},
{
"enum": [
"ASC",
"DESC"
],
"type": "string",
"description": "Sort results in ascending or descending order.",
"name": "sortOrder",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/observations.ObservationDoc"
}
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/observations/:chain/:emitter/:sequence/:signer/:hash": {
"get": {
"description": "Find a specific observation.",
"tags": [
"wormholescan"
],
"operationId": "find-observations-by-id",
"parameters": [
{
"type": "integer",
"description": "Page number.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
},
{
"enum": [
"ASC",
"DESC"
],
"type": "string",
"description": "Sort results in ascending or descending order.",
"name": "sortOrder",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/observations.ObservationDoc"
}
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/operations": {
"get": {
"description": "Find all operations.",
"tags": [
"wormholescan"
],
"operationId": "get-operations",
"parameters": [
{
"type": "string",
"description": "address of the emitter",
"name": "address",
"in": "query"
},
{
"type": "string",
"description": "hash of the transaction",
"name": "txHash",
"in": "query"
},
{
"type": "integer",
"description": "page number",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "pageSize",
"name": "pageSize",
"in": "query"
[ISSUE-1220] Add filters to /operations endpoint (#1262) * start add search by chain change chainId query param handling change condition only from chain change query add filter by appId add payload type for operations query add logs add log for error in mongodb call add more logs and recover to find possible panic change type to float64 add more logs for troubleshooting add more logs for troubleshooting payloadType query param add another defer * change query * add exclusiveAppId,sourceChain and targetChain * unify search criteria * change queryies * combine query params filters * change implementation of sourceChain and targetChain * insert filtering by chain and by appid as stages in aggregation pipeline * fix appIds matching condition * move query to a separate pipeline which starts from parsedVAA * adjust query by appId * add matching also for standardizedProperties * change * try using instead of * simplify query * add queryLoggging and remove other parts of the query to troubleshooting * working * add index creation * update swagger docs * tweak index performance and fix timestamp on parsedVaa collection * start add search by chain change chainId query param handling change condition only from chain change query add filter by appId add payload type for operations query add logs add log for error in mongodb call add more logs and recover to find possible panic change type to float64 add more logs for troubleshooting add more logs for troubleshooting payloadType query param add another defer * change query * add exclusiveAppId,sourceChain and targetChain * unify search criteria * change queryies * combine query params filters * change implementation of sourceChain and targetChain * insert filtering by chain and by appid as stages in aggregation pipeline * fix appIds matching condition * move query to a separate pipeline which starts from parsedVAA * adjust query by appId * add matching also for standardizedProperties * change * try using instead of * simplify query * add queryLoggging and remove other parts of the query to troubleshooting * working * add index creation * update swagger docs * tweak index performance and fix timestamp on parsedVaa collection * add lookup for globaltransactions
2024-04-09 05:57:08 -07:00
},
{
"type": "string",
"description": "source chain of the operation",
"name": "sourceChain",
"in": "query"
},
{
"type": "string",
"description": "target chain of the operation",
"name": "targetChain",
"in": "query"
},
{
"type": "string",
"description": "appID of the operation",
"name": "appId",
"in": "query"
},
{
"type": "boolean",
"description": "single appId of the operation",
"name": "exclusiveAppId",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/operations.OperationResponse"
}
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/operations/{chain_id}/{emitter}/{seq}": {
"get": {
"description": "Find operations by ID (chainID/emitter/sequence).",
"tags": [
"wormholescan"
],
"operationId": "get-operation-by-id",
"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/operations.OperationResponse"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
[Issue:1052] Create job for fetching contributor stats and storing in db (#1144) * [Issue:1052] Create job for fetching contributor stats and storing in db revert unnecessary changes on api/handlers/stats revert changes in go.mod and go.sum revert change in go.work add schedule for contributors stats job change response parsing order changes due to draft-pr review move on with contributors activity implementation change to every hour fix typo change contributor stats implementation to do a single write transaction normalize to UTC contributors activity timestamp add cronjob schedule for contributors [Issue:1052][Part 2] Create endpoint to expose contributors stats and activities (#1123) * add endpoint for retrieving stats and activity * remove model.go file and move types to service file * add unit tests to contributors service * integrate new contributors controller * fix more stuff fix unit-tests changes due to pr review fix query fix unit-tests fix total_value_secure move constantes to common pkg remove extra changes rename contributor to protocols finish renames Changes for deployment adjust different response types from different protocols contributors fix controller test big refactor in activty job and stats job since protocols are returning different formats api responding fine remove uneccessary generics target dbconsts fix Delete deploy/common/env/staging-mainnet.env undo unwanted changes readd staging-mainnet.env fix unit-tests add missing protocols_stats/activity_version remove property protocols_json fix JOB_ID env var in protocols-activity.yaml fix typos in env vars configs change tu numbers changes due to own review add new line * add swagger docs
2024-02-22 09:58:45 -08:00
"/api/v1/protocols/stats": {
"get": {
"description": "Returns the representative stats for the top protocols",
"tags": [
"wormholescan"
],
"operationId": "get-top-protocols-stats",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/protocols.ProtocolTotalValuesDTO"
}
}
},
"500": {
"description": "Internal Server Error",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/protocols.ProtocolTotalValuesDTO"
}
}
}
}
}
},
"/api/v1/ready": {
"get": {
"description": "Ready check",
"tags": [
"wormholescan"
],
"operationId": "ready-check",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object",
"properties": {
"ready": {
"type": "string"
}
}
2023-09-26 11:02:57 -07:00
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/relays/:chain/:emitter/:sequence": {
"get": {
"description": "Get a specific relay information by chainID, emitter address and sequence.",
"tags": [
"wormholescan"
],
"operationId": "find-relay-by-vaa-id",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/relays.RelayResponse"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/scorecards": {
"get": {
"description": "Returns a list of KPIs for Wormhole.\nTVL is total value locked by token bridge contracts in USD.\nVolume is the all-time total volume transferred through the token bridge in USD.\n24h volume is the volume transferred through the token bridge in the last 24 hours, in USD.\nTotal Tx count is the number of transaction bridging assets since the creation of the network (does not include Pyth or other messages).\n24h tx count is the number of transaction bridging assets in the last 24 hours (does not include Pyth or other messages).\nTotal messages is the number of VAAs emitted since the creation of the network (includes Pyth messages).",
"tags": [
"wormholescan"
],
"operationId": "get-scorecards",
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/transactions.ScorecardsResponse"
}
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/token/:chain_id/:token_address": {
"get": {
"description": "Returns a token symbol, coingecko id and address by chain and token address.",
"tags": [
"wormholescan"
],
"operationId": "get-token-by-chain-and-address",
"parameters": [
{
"type": "integer",
"description": "id of the blockchain",
"name": "chain_id",
"in": "path",
"required": true
},
{
"type": "string",
"description": "token address",
"name": "token_address",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/transactions.Token"
}
},
"400": {
"description": "Bad Request"
},
"404": {
"description": "Not Found"
}
}
}
},
"/api/v1/top-100-corridors": {
"get": {
"description": "Returns a list of the top 100 tokens, sorted in descending order by the number of transactions.",
"tags": [
"wormholescan"
],
"operationId": "/api/v1/top-100-corridors",
"parameters": [
{
"type": "string",
"description": "Time span, supported values: 2d and 7d (default is 2d).",
"name": "timeSpan",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/stats.TopCorridorsResult"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/top-assets-by-volume": {
"get": {
"description": "Returns a list of emitter_chain and asset pairs with ordered by volume.\nThe volume is calculated using the notional price of the symbol at the day the VAA was emitted.",
"tags": [
"wormholescan"
],
"operationId": "get-top-assets-by-volume",
"parameters": [
{
"type": "string",
"description": "Time span, supported values: 7d, 15d, 30d.",
"name": "timeSpan",
"in": "query",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/transactions.TopAssetsResponse"
}
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/top-chain-pairs-by-num-transfers": {
"get": {
"description": "Returns a list of the emitter_chain and destination_chain pair ordered by transfer count.",
"tags": [
"wormholescan"
],
"operationId": "get-top-chain-pairs-by-num-transfers",
"parameters": [
{
"type": "string",
"description": "Time span, supported values: 7d, 15d, 30d.",
"name": "timeSpan",
"in": "query",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/transactions.TopChainPairsResponse"
}
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/top-symbols-by-volume": {
"get": {
"description": "Returns a list of symbols by origin chain and tokens.\nThe volume is calculated using the notional price of the symbol at the day the VAA was emitted.",
"tags": [
"wormholescan"
],
"operationId": "top-symbols-by-volume",
"parameters": [
{
"type": "string",
"description": "Time span, supported values: 7d, 15d and 30d (default is 7d).",
"name": "timeSpan",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/stats.TopSymbolByVolumeResult"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
Add endpoint `GET /api/v1/transactions` (#388) ### Summary Tracking issue: https://github.com/wormhole-foundation/wormhole-explorer/issues/385 This pull request implements a new endpoint, `GET /api/v1/transactions`, which will be consumed by the wormhole explorer UI. The endpoint returns a paginated list of transactions, in which each element contains a brief overview of the transaction (ID, txHash, status, etc.). It exposes offset-based pagination via the parameters `page` and `pageSize`. Also, results can be obtained for a specific address by using the `address` query parameter. The response model looks like this: ```json { "transactions": [ { "id": "1/5ec18c34b47c63d17ab43b07b9b2319ea5ee2d163bce2e467000174e238c8e7f/12965", "timestamp": "2023-06-08T19:30:19Z", "txHash": "a302c4ab2d6b9a6003951d2e91f8fdbb83cfa20f6ffb588b95ef0290aab37066", "originChain": 1, "status": "ongoing" }, { "id": "22/0000000000000000000000000000000000000000000000000000000000000001/18308", "timestamp": "2023-06-08T19:17:14Z", "txHash": "00000000000000000000000000000000000000000000000000000000000047e7", "originChain": 22, "destinationAddress": "0x00000000000000000000000067e8a40816a983fbe3294aaebd0cc2391815b86b", "destinationChain": 5, "tokenAmount": "0.12", "usdAmount": "0.12012", "symbol": "USDC", "status": "completed" }, ... ] } ``` ### Limitations of the current implementation 1. Doesn't return the total number of results (this may result in a performance issue when we filter by address) 2. Can only filter by receiver address (we don't have sender information in the database yet)
2023-06-12 07:43:48 -07:00
"/api/v1/transactions/": {
"get": {
"description": "Returns transactions. Output is paginated.",
"tags": [
"wormholescan"
Add endpoint `GET /api/v1/transactions` (#388) ### Summary Tracking issue: https://github.com/wormhole-foundation/wormhole-explorer/issues/385 This pull request implements a new endpoint, `GET /api/v1/transactions`, which will be consumed by the wormhole explorer UI. The endpoint returns a paginated list of transactions, in which each element contains a brief overview of the transaction (ID, txHash, status, etc.). It exposes offset-based pagination via the parameters `page` and `pageSize`. Also, results can be obtained for a specific address by using the `address` query parameter. The response model looks like this: ```json { "transactions": [ { "id": "1/5ec18c34b47c63d17ab43b07b9b2319ea5ee2d163bce2e467000174e238c8e7f/12965", "timestamp": "2023-06-08T19:30:19Z", "txHash": "a302c4ab2d6b9a6003951d2e91f8fdbb83cfa20f6ffb588b95ef0290aab37066", "originChain": 1, "status": "ongoing" }, { "id": "22/0000000000000000000000000000000000000000000000000000000000000001/18308", "timestamp": "2023-06-08T19:17:14Z", "txHash": "00000000000000000000000000000000000000000000000000000000000047e7", "originChain": 22, "destinationAddress": "0x00000000000000000000000067e8a40816a983fbe3294aaebd0cc2391815b86b", "destinationChain": 5, "tokenAmount": "0.12", "usdAmount": "0.12012", "symbol": "USDC", "status": "completed" }, ... ] } ``` ### Limitations of the current implementation 1. Doesn't return the total number of results (this may result in a performance issue when we filter by address) 2. Can only filter by receiver address (we don't have sender information in the database yet)
2023-06-12 07:43:48 -07:00
],
"operationId": "list-transactions",
"parameters": [
{
"type": "integer",
"description": "Page number. Starts at 0.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
2023-09-26 11:02:57 -07:00
},
{
"enum": [
"ASC",
"DESC"
],
"type": "string",
"description": "Sort results in ascending or descending order.",
"name": "sortOrder",
"in": "query"
},
{
"type": "string",
"description": "Filter transactions by Address.",
"name": "address",
"in": "query"
Add endpoint `GET /api/v1/transactions` (#388) ### Summary Tracking issue: https://github.com/wormhole-foundation/wormhole-explorer/issues/385 This pull request implements a new endpoint, `GET /api/v1/transactions`, which will be consumed by the wormhole explorer UI. The endpoint returns a paginated list of transactions, in which each element contains a brief overview of the transaction (ID, txHash, status, etc.). It exposes offset-based pagination via the parameters `page` and `pageSize`. Also, results can be obtained for a specific address by using the `address` query parameter. The response model looks like this: ```json { "transactions": [ { "id": "1/5ec18c34b47c63d17ab43b07b9b2319ea5ee2d163bce2e467000174e238c8e7f/12965", "timestamp": "2023-06-08T19:30:19Z", "txHash": "a302c4ab2d6b9a6003951d2e91f8fdbb83cfa20f6ffb588b95ef0290aab37066", "originChain": 1, "status": "ongoing" }, { "id": "22/0000000000000000000000000000000000000000000000000000000000000001/18308", "timestamp": "2023-06-08T19:17:14Z", "txHash": "00000000000000000000000000000000000000000000000000000000000047e7", "originChain": 22, "destinationAddress": "0x00000000000000000000000067e8a40816a983fbe3294aaebd0cc2391815b86b", "destinationChain": 5, "tokenAmount": "0.12", "usdAmount": "0.12012", "symbol": "USDC", "status": "completed" }, ... ] } ``` ### Limitations of the current implementation 1. Doesn't return the total number of results (this may result in a performance issue when we filter by address) 2. Can only filter by receiver address (we don't have sender information in the database yet)
2023-06-12 07:43:48 -07:00
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/transactions.ListTransactionsResponse"
Add endpoint `GET /api/v1/transactions` (#388) ### Summary Tracking issue: https://github.com/wormhole-foundation/wormhole-explorer/issues/385 This pull request implements a new endpoint, `GET /api/v1/transactions`, which will be consumed by the wormhole explorer UI. The endpoint returns a paginated list of transactions, in which each element contains a brief overview of the transaction (ID, txHash, status, etc.). It exposes offset-based pagination via the parameters `page` and `pageSize`. Also, results can be obtained for a specific address by using the `address` query parameter. The response model looks like this: ```json { "transactions": [ { "id": "1/5ec18c34b47c63d17ab43b07b9b2319ea5ee2d163bce2e467000174e238c8e7f/12965", "timestamp": "2023-06-08T19:30:19Z", "txHash": "a302c4ab2d6b9a6003951d2e91f8fdbb83cfa20f6ffb588b95ef0290aab37066", "originChain": 1, "status": "ongoing" }, { "id": "22/0000000000000000000000000000000000000000000000000000000000000001/18308", "timestamp": "2023-06-08T19:17:14Z", "txHash": "00000000000000000000000000000000000000000000000000000000000047e7", "originChain": 22, "destinationAddress": "0x00000000000000000000000067e8a40816a983fbe3294aaebd0cc2391815b86b", "destinationChain": 5, "tokenAmount": "0.12", "usdAmount": "0.12012", "symbol": "USDC", "status": "completed" }, ... ] } ``` ### Limitations of the current implementation 1. Doesn't return the total number of results (this may result in a performance issue when we filter by address) 2. Can only filter by receiver address (we don't have sender information in the database yet)
2023-06-12 07:43:48 -07:00
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/transactions/:chain_id/:emitter/:seq": {
"get": {
"description": "Find VAA metadata by ID.",
"tags": [
"wormholescan"
],
"operationId": "get-transaction-by-id",
"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": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/transactions.TransactionDetail"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/vaas/": {
"get": {
"description": "Returns all VAAs. Output is paginated and can also be be sorted.",
"tags": [
"wormholescan"
],
"operationId": "find-all-vaas",
"parameters": [
{
"type": "integer",
"description": "Page number.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
},
{
"enum": [
"ASC",
"DESC"
],
"type": "string",
"description": "Sort results in ascending or descending order.",
"name": "sortOrder",
"in": "query"
},
{
"type": "string",
"description": "Transaction hash of the VAA",
"name": "txHash",
"in": "query"
},
{
"type": "boolean",
"description": "include the parsed contents of the VAA, if available",
"name": "parsedPayload",
"in": "query"
},
{
"type": "string",
"description": "filter by application ID",
"name": "appId",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/response.Response-array_vaa_VaaDoc"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/vaas/:chain_id": {
"get": {
"description": "Returns all the VAAs generated in specific blockchain.",
"tags": [
"wormholescan"
],
"operationId": "find-vaas-by-chain",
"parameters": [
{
"type": "integer",
"description": "id of the blockchain",
"name": "chain_id",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "Page number.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
},
{
"enum": [
"ASC",
"DESC"
],
"type": "string",
"description": "Sort results in ascending or descending order.",
"name": "sortOrder",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/response.Response-array_vaa_VaaDoc"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/vaas/:chain_id/:emitter": {
"get": {
"description": "Returns all all the VAAs generated by a specific emitter address.",
"tags": [
"wormholescan"
],
"operationId": "find-vaas-by-emitter",
"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": "destination chain",
"name": "toChain",
"in": "query"
},
{
"type": "integer",
"description": "Page number.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"description": "Number of elements per page.",
"name": "pageSize",
"in": "query"
},
{
"enum": [
"ASC",
"DESC"
],
"type": "string",
"description": "Sort results in ascending or descending order.",
"name": "sortOrder",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/response.Response-array_vaa_VaaDoc"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/vaas/:chain_id/:emitter/:seq": {
"get": {
"description": "Find a VAA by ID.",
"tags": [
"wormholescan"
],
"operationId": "find-vaa-by-id",
"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
},
{
"type": "boolean",
"description": "include the parsed contents of the VAA, if available",
"name": "parsedPayload",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/response.Response-array_vaa_VaaDoc"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/vaas/:chain_id/:emitter/:seq/duplicated": {
"get": {
"description": "Find duplicated VAA by ID.",
"tags": [
"wormholescan"
],
"operationId": "find-duplicated-vaa-by-id",
"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/response.Response-array_vaa_VaaDoc"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/vaas/parse": {
"post": {
"description": "Parse a VAA.",
"tags": [
"wormholescan"
],
"operationId": "parse-vaa",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/parser.ParseVaaWithStandarizedPropertiesdResponse"
}
},
"400": {
"description": "Bad Request"
},
"404": {
"description": "Not Found"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/vaas/vaa-counts": {
"get": {
"description": "Returns the total number of VAAs emitted for each blockchain.",
"tags": [
"wormholescan"
],
"operationId": "get-vaa-counts",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/response.Response-array_vaa_VaaStats"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/version": {
"get": {
"description": "Get version/release information.",
"tags": [
"wormholescan"
],
"operationId": "get-version",
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/infrastructure.VersionResponse"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/x-chain-activity": {
"get": {
"description": "Returns a list of chain pairs by origin chain and destination chain.\nThe list could be rendered by notional or transaction count.\nThe volume is calculated using the notional price of the symbol at the day the VAA was emitted.",
"tags": [
"wormholescan"
],
"operationId": "x-chain-activity",
"parameters": [
{
"type": "string",
"description": "Time span, supported values: 7d, 30d, 90d, 1y and all-time (default is 7d).",
"name": "timeSpan",
"in": "query"
},
{
"type": "string",
"description": "Renders the results using notional or tx count (default is notional).",
"name": "by",
"in": "query"
},
{
"type": "string",
"description": "List of apps separated by comma (default is all apps).",
"name": "apps",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/transactions.ChainActivity"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/api/v1/x-chain-activity/tops": {
"get": {
"description": "Search, for a specific period of time, the number of transactions and the volume.",
"tags": [
"wormholescan"
],
"operationId": "x-chain-activity-tops",
"parameters": [
{
"type": "string",
"description": "Time span, supported values: 1d, 1mo and 1y",
"name": "timespan",
"in": "query",
"required": true
},
{
"type": "string",
"description": "From date, supported format 2006-01-02T15:04:05Z07:00",
"name": "from",
"in": "query",
"required": true
},
{
"type": "string",
"description": "To date, supported format 2006-01-02T15:04:05Z07:00",
"name": "to",
"in": "query",
"required": true
},
{
"type": "string",
"description": "Search by appId",
"name": "appId",
"in": "query"
},
{
"type": "string",
"description": "Search by sourceChain",
"name": "sourceChain",
"in": "query"
},
{
"type": "string",
"description": "Search by targetChain",
"name": "targetChain",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/transactions.ChainActivityTopResult"
}
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/swagger.json": {
"get": {
"description": "Returns the swagger specification for this API.",
"tags": [
"wormholescan"
],
"operationId": "swagger",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "object"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/v1/governor/available_notional_by_chain": {
"get": {
"description": "Get available notional by chainID\nSince from the wormhole-explorer point of view it is not a node, but has the information of all nodes,\nin order to build the endpoints it was assumed:\nThere are N number of remainingAvailableNotional values in the GovernorConfig collection. N = number of guardians\nfor 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": {
2023-09-26 11:02:57 -07:00
"$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": {
2023-09-26 11:02:57 -07:00
"$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": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/governor.EnqueuedVaaResponse"
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
}
}
},
"/v1/governor/token_list": {
"get": {
"description": "Get token list\nSince from the wormhole-explorer point of view it is not a node, but has the information of all nodes,\nin order to build the endpoints it was assumed:\nFor tokens with the same originChainId and originAddress and different price values for each node,\nthe 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": {
2023-09-26 11:02:57 -07:00
"$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": {
2023-09-26 11:02:57 -07:00
"$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": {
2023-09-26 11:02:57 -07:00
"$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": {
2023-09-26 11:02:57 -07:00
"address.AddressOverview": {
"type": "object",
"properties": {
"vaas": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/vaa.VaaDoc"
}
}
}
},
"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"
}
}
},
"governor.AvailableNotionalResponse": {
"type": "object",
"properties": {
"entries": {
"type": "array",
"items": {
"$ref": "#/definitions/governor.AvailableNotionalItemResponse"
}
}
}
},
2023-09-26 11:02:57 -07:00
"governor.Emitter": {
"type": "object",
"properties": {
"emitterAddress": {
"type": "string"
},
"enqueuedVaas": {
2023-09-26 11:02:57 -07:00
"type": "array",
"items": {
"$ref": "#/definitions/governor.EnqueuedVAA"
}
},
"totalEnqueuedVaas": {
"type": "integer"
}
}
},
2023-09-26 11:02:57 -07:00
"governor.EnqueuedVAA": {
"type": "object",
"properties": {
"notionalValue": {
"type": "integer"
},
"releaseTime": {
"type": "string"
},
"sequence": {
"type": "string"
},
"txHash": {
"type": "string"
}
}
},
"governor.EnqueuedVaa": {
"type": "object",
"properties": {
"chainId": {
"$ref": "#/definitions/vaa.ChainID"
},
"emitterAddress": {
"type": "string"
},
"notionalValue": {
"type": "integer"
},
"sequence": {
"type": "string"
},
"txHash": {
"type": "string"
}
}
},
2023-09-26 11:02:57 -07:00
"governor.EnqueuedVaaDetail": {
"type": "object",
"properties": {
"chainId": {
"$ref": "#/definitions/vaa.ChainID"
},
"emitterAddress": {
"type": "string"
},
"notionalValue": {
"type": "integer"
},
"releaseTime": {
"type": "integer"
},
"sequence": {
"type": "string"
},
"txHash": {
"type": "string"
}
}
},
2023-09-26 11:02:57 -07:00
"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"
}
}
},
"governor.EnqueuedVaaResponse": {
"type": "object",
"properties": {
"entries": {
"type": "array",
"items": {
"$ref": "#/definitions/governor.EnqueuedVaaItemResponse"
}
}
}
},
"governor.EnqueuedVaas": {
"type": "object",
"properties": {
"chainId": {
"$ref": "#/definitions/vaa.ChainID"
},
"enqueuedVaas": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/governor.EnqueuedVaa"
}
}
}
},
2023-09-26 11:02:57 -07:00
"governor.GovConfig": {
"type": "object",
"properties": {
"chains": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/governor.GovConfigChains"
}
},
"counter": {
"type": "integer"
},
"createdAt": {
"type": "string"
},
"id": {
"type": "string"
},
"nodeName": {
"type": "string"
},
"tokens": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/governor.GovConfigfTokens"
}
},
"updatedAt": {
"type": "string"
}
}
},
2023-09-26 11:02:57 -07:00
"governor.GovConfigChains": {
"type": "object",
"properties": {
"bigTransactionSize": {
"type": "integer"
},
"chainId": {
"$ref": "#/definitions/vaa.ChainID"
},
"notionalLimit": {
"type": "integer"
}
}
},
2023-09-26 11:02:57 -07:00
"governor.GovConfigfTokens": {
"type": "object",
"properties": {
"originAddress": {
"type": "string"
},
"originChainId": {
"type": "integer"
},
"price": {
"type": "number"
}
}
},
2023-09-26 11:02:57 -07:00
"governor.GovStatus": {
"type": "object",
"properties": {
"chains": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/governor.GovStatusChains"
}
},
"createdAt": {
"type": "string"
},
"id": {
"type": "string"
},
"nodeName": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
}
},
2023-09-26 11:02:57 -07:00
"governor.GovStatusChainEmitter": {
"type": "object",
"properties": {
"emitterAddress": {
"type": "string"
},
"enqueuedVaas": {},
"totalEnqueuedVaas": {
"type": "integer"
}
}
},
2023-09-26 11:02:57 -07:00
"governor.GovStatusChains": {
"type": "object",
"properties": {
"chainId": {
"$ref": "#/definitions/vaa.ChainID"
},
"emitters": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/governor.GovStatusChainEmitter"
}
},
"remainingAvailableNotional": {
"type": "integer"
}
}
},
2023-09-26 11:02:57 -07:00
"governor.GovernorLimit": {
"type": "object",
"properties": {
"availableNotional": {
"type": "integer"
},
"chainId": {
"$ref": "#/definitions/vaa.ChainID"
},
"maxTransactionSize": {
"type": "integer"
},
"notionalLimit": {
"type": "integer"
}
}
},
2023-09-26 11:02:57 -07:00
"governor.MaxNotionalAvailableRecord": {
"type": "object",
"properties": {
"availableNotional": {
"type": "integer"
},
"chainId": {
"$ref": "#/definitions/vaa.ChainID"
},
"createdAt": {
"type": "string"
},
"emitters": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/governor.Emitter"
}
},
"id": {
"type": "string"
},
"nodeName": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
}
},
2023-09-26 11:02:57 -07:00
"governor.NotionalAvailable": {
"type": "object",
"properties": {
"availableNotional": {
"type": "integer"
},
"chainId": {
"$ref": "#/definitions/vaa.ChainID"
}
}
},
2023-09-26 11:02:57 -07:00
"governor.NotionalAvailableDetail": {
"type": "object",
"properties": {
"availableNotional": {
"type": "integer"
},
"chainId": {
"$ref": "#/definitions/vaa.ChainID"
},
"createdAt": {
"type": "string"
},
"id": {
"type": "string"
},
"nodeName": {
"type": "string"
},
"updatedAt": {
"type": "string"
}
}
},
2023-09-26 11:02:57 -07:00
"governor.NotionalLimitDetail": {
"type": "object",
"properties": {
"chainId": {
"$ref": "#/definitions/vaa.ChainID"
},
"createdAt": {
"type": "string"
},
"id": {
"type": "string"
},
"maxTransactionSize": {
"type": "integer"
},
"nodeName": {
"type": "string"
},
"notionalLimit": {
"type": "integer"
},
"updatedAt": {
"type": "string"
}
}
},
2023-09-26 11:02:57 -07:00
"governor.TokenList": {
"type": "object",
"properties": {
"originAddress": {
"type": "string"
},
"originChainId": {
"$ref": "#/definitions/vaa.ChainID"
},
"price": {
"type": "number"
}
}
},
2023-09-26 11:02:57 -07:00
"guardian.GuardianSetResponse": {
"type": "object",
"properties": {
2023-09-26 11:02:57 -07:00
"guardianSet": {
"$ref": "#/definitions/github_com_wormhole-foundation_wormhole-explorer_api_routes_guardian_guardian.GuardianSet"
}
}
},
"heartbeats.HeartbeatNetworkResponse": {
"type": "object",
"properties": {
"contractAddress": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"errorCount": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"height": {
"type": "string"
},
"id": {
2023-09-26 11:02:57 -07:00
"type": "integer"
}
}
},
"heartbeats.HeartbeatResponse": {
"type": "object",
"properties": {
"p2pNodeAddr": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"rawHeartbeat": {
"$ref": "#/definitions/heartbeats.RawHeartbeat"
},
2023-09-26 11:02:57 -07:00
"verifiedGuardianAddr": {
"type": "string"
2023-09-26 11:02:57 -07:00
}
}
},
"heartbeats.HeartbeatsResponse": {
"type": "object",
"properties": {
"entries": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/heartbeats.HeartbeatResponse"
}
}
}
},
2023-09-26 11:02:57 -07:00
"heartbeats.RawHeartbeat": {
"type": "object",
"properties": {
2023-09-26 11:02:57 -07:00
"bootTimestamp": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"counter": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"features": {
"type": "array",
"items": {
"type": "string"
}
},
2023-09-26 11:02:57 -07:00
"guardianAddr": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"networks": {
"type": "array",
"items": {
"$ref": "#/definitions/heartbeats.HeartbeatNetworkResponse"
}
},
2023-09-26 11:02:57 -07:00
"nodeName": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"timestamp": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"version": {
"type": "string"
}
}
},
2023-09-26 11:02:57 -07:00
"infrastructure.VersionResponse": {
"type": "object",
"properties": {
2023-09-26 11:02:57 -07:00
"branch": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"build": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"build_date": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"machine": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"user": {
"type": "string"
}
}
},
2023-09-26 11:02:57 -07:00
"observations.ObservationDoc": {
"type": "object",
"properties": {
"emitterAddr": {
"type": "string"
},
"emitterChain": {
"$ref": "#/definitions/vaa.ChainID"
},
2023-09-26 11:02:57 -07:00
"guardianAddr": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"hash": {
"type": "array",
"items": {
"type": "integer"
}
},
2023-09-26 11:02:57 -07:00
"id": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"indexedAt": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"sequence": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"signature": {
"type": "array",
"items": {
"type": "integer"
}
},
2023-09-26 11:02:57 -07:00
"txHash": {
"type": "array",
"items": {
"type": "integer"
}
},
2023-09-26 11:02:57 -07:00
"updatedAt": {
"type": "string"
}
}
},
"operations.Content": {
"type": "object",
"properties": {
"payload": {
"type": "object",
"additionalProperties": {}
},
"standarizedProperties": {
"$ref": "#/definitions/operations.StandardizedProperties"
}
}
},
"operations.Data": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"value": {
"type": "object",
"additionalProperties": {}
}
}
},
"operations.EmitterAddress": {
"type": "object",
"properties": {
"hex": {
"type": "string"
},
"native": {
"type": "string"
}
}
},
"operations.OperationResponse": {
"type": "object",
"properties": {
"content": {
"$ref": "#/definitions/operations.Content"
},
"data": {
"type": "object",
"additionalProperties": {}
},
"emitterAddress": {
"$ref": "#/definitions/operations.EmitterAddress"
},
"emitterChain": {
"$ref": "#/definitions/vaa.ChainID"
},
"id": {
"type": "string"
},
"sequence": {
"type": "string"
},
"sourceChain": {
"$ref": "#/definitions/operations.SourceChain"
},
"targetChain": {
"$ref": "#/definitions/operations.TargetChain"
},
"vaa": {
"$ref": "#/definitions/operations.Vaa"
}
}
},
"operations.SourceChain": {
"type": "object",
"properties": {
"attribute": {
"$ref": "#/definitions/operations.Data"
},
"chainId": {
"$ref": "#/definitions/vaa.ChainID"
},
"from": {
"type": "string"
},
"status": {
"type": "string"
},
"timestamp": {
"type": "string"
},
"transaction": {
"$ref": "#/definitions/operations.Transaction"
}
}
},
"operations.StandardizedProperties": {
"type": "object",
"properties": {
"amount": {
"type": "string"
},
"appIds": {
"type": "array",
"items": {
"type": "string"
}
},
"fee": {
"type": "string"
},
"feeAddress": {
"type": "string"
},
"feeChain": {
"$ref": "#/definitions/vaa.ChainID"
},
"fromAddress": {
"type": "string"
},
"fromChain": {
"$ref": "#/definitions/vaa.ChainID"
},
"toAddress": {
"type": "string"
},
"toChain": {
"$ref": "#/definitions/vaa.ChainID"
},
"tokenAddress": {
"type": "string"
},
"tokenChain": {
"$ref": "#/definitions/vaa.ChainID"
}
}
},
"operations.TargetChain": {
"type": "object",
"properties": {
"chainId": {
"$ref": "#/definitions/vaa.ChainID"
},
"from": {
"type": "string"
},
"status": {
"type": "string"
},
"timestamp": {
"type": "string"
},
"to": {
"type": "string"
},
"transaction": {
"$ref": "#/definitions/operations.Transaction"
}
}
},
"operations.Transaction": {
"type": "object",
"properties": {
"secondTxHash": {
"type": "string"
},
"txHash": {
"type": "string"
}
}
},
"operations.Vaa": {
"type": "object",
"properties": {
"guardianSetIndex": {
"type": "integer"
},
"isDuplicated": {
"type": "boolean"
},
"raw": {
"type": "array",
"items": {
"type": "integer"
}
}
}
},
2023-09-26 11:02:57 -07:00
"parser.ParseVaaWithStandarizedPropertiesdResponse": {
"type": "object",
"properties": {
[ISSUE-1220] Add filters to /operations endpoint (#1262) * start add search by chain change chainId query param handling change condition only from chain change query add filter by appId add payload type for operations query add logs add log for error in mongodb call add more logs and recover to find possible panic change type to float64 add more logs for troubleshooting add more logs for troubleshooting payloadType query param add another defer * change query * add exclusiveAppId,sourceChain and targetChain * unify search criteria * change queryies * combine query params filters * change implementation of sourceChain and targetChain * insert filtering by chain and by appid as stages in aggregation pipeline * fix appIds matching condition * move query to a separate pipeline which starts from parsedVAA * adjust query by appId * add matching also for standardizedProperties * change * try using instead of * simplify query * add queryLoggging and remove other parts of the query to troubleshooting * working * add index creation * update swagger docs * tweak index performance and fix timestamp on parsedVaa collection * start add search by chain change chainId query param handling change condition only from chain change query add filter by appId add payload type for operations query add logs add log for error in mongodb call add more logs and recover to find possible panic change type to float64 add more logs for troubleshooting add more logs for troubleshooting payloadType query param add another defer * change query * add exclusiveAppId,sourceChain and targetChain * unify search criteria * change queryies * combine query params filters * change implementation of sourceChain and targetChain * insert filtering by chain and by appid as stages in aggregation pipeline * fix appIds matching condition * move query to a separate pipeline which starts from parsedVAA * adjust query by appId * add matching also for standardizedProperties * change * try using instead of * simplify query * add queryLoggging and remove other parts of the query to troubleshooting * working * add index creation * update swagger docs * tweak index performance and fix timestamp on parsedVaa collection * add lookup for globaltransactions
2024-04-09 05:57:08 -07:00
"parsedPayload": {},
2023-09-26 11:02:57 -07:00
"standardizedProperties": {
"$ref": "#/definitions/parser.StandardizedProperties"
}
}
},
2023-09-26 11:02:57 -07:00
"parser.StandardizedProperties": {
"type": "object",
"properties": {
2023-09-26 11:02:57 -07:00
"amount": {
"type": "string"
},
"appIds": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"type": "string"
}
},
2023-09-26 11:02:57 -07:00
"fee": {
"type": "string"
},
"feeAddress": {
"type": "string"
},
"feeChain": {
"$ref": "#/definitions/vaa.ChainID"
},
"fromAddress": {
"type": "string"
},
"fromChain": {
"$ref": "#/definitions/vaa.ChainID"
},
"toAddress": {
"type": "string"
},
"toChain": {
"$ref": "#/definitions/vaa.ChainID"
},
"tokenAddress": {
"type": "string"
},
"tokenChain": {
"$ref": "#/definitions/vaa.ChainID"
}
}
},
[Issue:1052] Create job for fetching contributor stats and storing in db (#1144) * [Issue:1052] Create job for fetching contributor stats and storing in db revert unnecessary changes on api/handlers/stats revert changes in go.mod and go.sum revert change in go.work add schedule for contributors stats job change response parsing order changes due to draft-pr review move on with contributors activity implementation change to every hour fix typo change contributor stats implementation to do a single write transaction normalize to UTC contributors activity timestamp add cronjob schedule for contributors [Issue:1052][Part 2] Create endpoint to expose contributors stats and activities (#1123) * add endpoint for retrieving stats and activity * remove model.go file and move types to service file * add unit tests to contributors service * integrate new contributors controller * fix more stuff fix unit-tests changes due to pr review fix query fix unit-tests fix total_value_secure move constantes to common pkg remove extra changes rename contributor to protocols finish renames Changes for deployment adjust different response types from different protocols contributors fix controller test big refactor in activty job and stats job since protocols are returning different formats api responding fine remove uneccessary generics target dbconsts fix Delete deploy/common/env/staging-mainnet.env undo unwanted changes readd staging-mainnet.env fix unit-tests add missing protocols_stats/activity_version remove property protocols_json fix JOB_ID env var in protocols-activity.yaml fix typos in env vars configs change tu numbers changes due to own review add new line * add swagger docs
2024-02-22 09:58:45 -08:00
"protocols.ProtocolTotalValuesDTO": {
"type": "object",
"properties": {
"error": {
"type": "string"
},
"last_day_diff_percentage": {
"type": "string"
},
"last_day_messages": {
"type": "integer"
},
"protocol": {
"type": "string"
},
"total_messages": {
"type": "integer"
},
"total_value_locked": {
"type": "number"
},
"total_value_secured": {
"type": "number"
},
"total_value_transferred": {
"type": "number"
}
}
},
"relays.DeliveryReponse": {
"type": "object",
"properties": {
"budget": {
"type": "string"
},
"execution": {
"$ref": "#/definitions/relays.ResultExecutionResponse"
},
"maxRefund": {
"type": "string"
},
"relayGasUsed": {
"type": "integer"
},
"targetChainDecimals": {
"type": "integer"
}
}
},
"relays.InstructionsResponse": {
"type": "object",
"properties": {
"encodedExecutionInfo": {
"type": "string"
},
"extraReceiverValue": {
"type": "object",
"properties": {
"_hex": {
"type": "string"
},
"_isBigNumber": {
"type": "boolean"
}
}
},
"refundAddress": {
"type": "string"
},
"refundChainId": {
"type": "integer"
},
"refundDeliveryProvider": {
"type": "string"
},
"requestedReceiverValue": {
"type": "object",
"properties": {
"_hex": {
"type": "string"
},
"_isBigNumber": {
"type": "boolean"
}
}
},
"senderAddress": {
"type": "string"
},
"sourceDeliveryProvider": {
"type": "string"
},
"targetAddress": {
"type": "string"
},
"targetChainId": {
"type": "integer"
},
"vaaKeys": {
"type": "array",
"items": {}
}
}
},
"relays.RelayDataResponse": {
"type": "object",
"properties": {
"delivery": {
"$ref": "#/definitions/relays.DeliveryReponse"
},
"fromTxHash": {
"type": "string"
},
"instructions": {
"$ref": "#/definitions/relays.InstructionsResponse"
},
"maxAttempts": {
"type": "integer"
},
"toTxHash": {
"type": "string"
}
}
},
2023-09-26 11:02:57 -07:00
"relays.RelayResponse": {
"type": "object",
"properties": {
"completedAt": {
"type": "string"
},
"data": {
"$ref": "#/definitions/relays.RelayDataResponse"
},
"failedAt": {
"type": "string"
},
"id": {
"type": "string"
},
"receivedAt": {
"type": "string"
},
"relayer": {
"type": "string"
},
"status": {
"type": "string"
}
}
},
"relays.ResultExecutionResponse": {
"type": "object",
"properties": {
"detail": {
"type": "string"
},
"gasUsed": {
"type": "string"
},
"refundStatus": {
"type": "string"
},
"revertString": {
"type": "string"
},
"status": {
"type": "string"
},
"transactionHash": {
"type": "string"
}
}
2023-09-26 11:02:57 -07:00
},
"response.Response-address_AddressOverview": {
"type": "object",
"properties": {
"data": {
"$ref": "#/definitions/address.AddressOverview"
},
"pagination": {
"$ref": "#/definitions/response.ResponsePagination"
}
}
},
2023-09-26 11:02:57 -07:00
"response.Response-array_governor_EnqueuedVaaDetail": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/governor.EnqueuedVaaDetail"
}
},
"pagination": {
"$ref": "#/definitions/response.ResponsePagination"
}
}
},
2023-09-26 11:02:57 -07:00
"response.Response-array_governor_EnqueuedVaas": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/governor.EnqueuedVaas"
}
},
"pagination": {
"$ref": "#/definitions/response.ResponsePagination"
}
}
},
2023-09-26 11:02:57 -07:00
"response.Response-array_governor_GovStatus": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/governor.GovStatus"
}
},
"pagination": {
"$ref": "#/definitions/response.ResponsePagination"
}
}
},
2023-09-26 11:02:57 -07:00
"response.Response-array_governor_GovernorLimit": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/governor.GovernorLimit"
}
},
"pagination": {
"$ref": "#/definitions/response.ResponsePagination"
}
}
},
2023-09-26 11:02:57 -07:00
"response.Response-array_governor_NotionalAvailable": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/governor.NotionalAvailable"
}
},
"pagination": {
"$ref": "#/definitions/response.ResponsePagination"
}
}
},
2023-09-26 11:02:57 -07:00
"response.Response-array_governor_NotionalAvailableDetail": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/governor.NotionalAvailableDetail"
}
},
"pagination": {
"$ref": "#/definitions/response.ResponsePagination"
}
}
},
2023-09-26 11:02:57 -07:00
"response.Response-array_governor_NotionalLimitDetail": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/governor.NotionalLimitDetail"
}
},
"pagination": {
"$ref": "#/definitions/response.ResponsePagination"
}
}
},
2023-09-26 11:02:57 -07:00
"response.Response-array_vaa_VaaDoc": {
"type": "object",
"properties": {
"data": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/vaa.VaaDoc"
}
},
"pagination": {
"$ref": "#/definitions/response.ResponsePagination"
}
}
},
2023-09-26 11:02:57 -07:00
"response.Response-array_vaa_VaaStats": {
"type": "object",
"properties": {
"data": {
2023-09-26 11:02:57 -07:00
"type": "array",
"items": {
"$ref": "#/definitions/vaa.VaaStats"
}
},
"pagination": {
"$ref": "#/definitions/response.ResponsePagination"
}
}
},
2023-09-26 11:02:57 -07:00
"response.Response-governor_GovConfig": {
"type": "object",
"properties": {
"data": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/governor.GovConfig"
},
"pagination": {
"$ref": "#/definitions/response.ResponsePagination"
}
}
},
2023-09-26 11:02:57 -07:00
"response.Response-governor_GovStatus": {
"type": "object",
"properties": {
"data": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/governor.GovStatus"
},
"pagination": {
"$ref": "#/definitions/response.ResponsePagination"
}
}
},
2023-09-26 11:02:57 -07:00
"response.Response-governor_MaxNotionalAvailableRecord": {
"type": "object",
"properties": {
"data": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/governor.MaxNotionalAvailableRecord"
},
"pagination": {
"$ref": "#/definitions/response.ResponsePagination"
}
}
},
2023-09-26 11:02:57 -07:00
"response.ResponsePagination": {
"type": "object",
"properties": {
2023-09-26 11:02:57 -07:00
"next": {
"type": "string"
}
}
},
"stats.TokenResult": {
"type": "object",
"properties": {
"emitter_chain": {
"$ref": "#/definitions/vaa.ChainID"
},
"token_address": {
"type": "string"
},
"token_chain": {
"$ref": "#/definitions/vaa.ChainID"
},
"txs": {
"type": "number"
},
"volume": {
"type": "number"
}
}
},
"stats.TopCorridor": {
"type": "object",
"properties": {
"emitter_chain": {
"$ref": "#/definitions/vaa.ChainID"
},
"target_chain": {
"$ref": "#/definitions/vaa.ChainID"
},
"token_address": {
"type": "string"
},
"token_chain": {
"$ref": "#/definitions/vaa.ChainID"
},
"txs": {
"type": "integer"
}
}
},
"stats.TopCorridorsResult": {
"type": "object",
"properties": {
"corridors": {
"type": "array",
"items": {
"$ref": "#/definitions/stats.TopCorridor"
}
}
}
},
"stats.TopSymbolByVolumeResult": {
"type": "object",
"properties": {
"symbols": {
"type": "array",
"items": {
"$ref": "#/definitions/stats.TopSymbolResult"
}
}
}
},
"stats.TopSymbolResult": {
"type": "object",
"properties": {
"symbol": {
"type": "string"
},
"tokens": {
"type": "array",
"items": {
"$ref": "#/definitions/stats.TokenResult"
}
},
"txs": {
"type": "number"
},
"volume": {
"type": "number"
}
}
},
2023-09-26 11:02:57 -07:00
"transactions.AssetWithVolume": {
"type": "object",
"properties": {
2023-09-26 11:02:57 -07:00
"emitterChain": {
"$ref": "#/definitions/vaa.ChainID"
},
2023-09-26 11:02:57 -07:00
"symbol": {
"type": "string"
},
"tokenAddress": {
"type": "string"
},
"tokenChain": {
"$ref": "#/definitions/vaa.ChainID"
2023-09-26 11:02:57 -07:00
},
"volume": {
"type": "string"
}
}
},
2023-09-26 11:02:57 -07:00
"transactions.AttributeDoc": {
"type": "object",
"properties": {
2023-09-26 11:02:57 -07:00
"type": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"value": {
"type": "object",
"additionalProperties": {}
}
}
},
2023-09-26 11:02:57 -07:00
"transactions.ChainActivity": {
"type": "object",
"properties": {
2023-09-26 11:02:57 -07:00
"txs": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/transactions.Tx"
}
}
}
},
"transactions.ChainActivityTopResult": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"destination_chain": {
"type": "string"
},
"emitter_chain": {
"type": "string"
},
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"volume": {
"type": "integer"
}
}
},
2023-09-26 11:02:57 -07:00
"transactions.ChainPair": {
"type": "object",
"properties": {
2023-09-26 11:02:57 -07:00
"destinationChain": {
"$ref": "#/definitions/vaa.ChainID"
},
"emitterChain": {
"$ref": "#/definitions/vaa.ChainID"
},
2023-09-26 11:02:57 -07:00
"numberOfTransfers": {
"type": "string"
}
}
},
2023-09-26 11:02:57 -07:00
"transactions.Destination": {
"type": "object",
"properties": {
2023-09-26 11:02:57 -07:00
"chain": {
"type": "integer"
},
2023-09-26 11:02:57 -07:00
"percentage": {
"type": "number"
},
2023-09-26 11:02:57 -07:00
"volume": {
"type": "number"
}
}
},
2023-09-26 11:02:57 -07:00
"transactions.DestinationTx": {
"type": "object",
"properties": {
2023-09-26 11:02:57 -07:00
"blockNumber": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"chainId": {
"$ref": "#/definitions/vaa.ChainID"
},
2023-09-26 11:02:57 -07:00
"from": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"method": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"status": {
"type": "string"
},
"timestamp": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"to": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"txHash": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"updatedAt": {
"type": "string"
}
}
},
2023-09-26 11:02:57 -07:00
"transactions.GlobalTransactionDoc": {
"type": "object",
"properties": {
2023-09-26 11:02:57 -07:00
"destinationTx": {
"$ref": "#/definitions/transactions.DestinationTx"
},
2023-09-26 11:02:57 -07:00
"id": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"originTx": {
"$ref": "#/definitions/transactions.OriginTx"
}
}
},
2023-09-26 11:02:57 -07:00
"transactions.ListTransactionsResponse": {
Add endpoint `GET /api/v1/transactions` (#388) ### Summary Tracking issue: https://github.com/wormhole-foundation/wormhole-explorer/issues/385 This pull request implements a new endpoint, `GET /api/v1/transactions`, which will be consumed by the wormhole explorer UI. The endpoint returns a paginated list of transactions, in which each element contains a brief overview of the transaction (ID, txHash, status, etc.). It exposes offset-based pagination via the parameters `page` and `pageSize`. Also, results can be obtained for a specific address by using the `address` query parameter. The response model looks like this: ```json { "transactions": [ { "id": "1/5ec18c34b47c63d17ab43b07b9b2319ea5ee2d163bce2e467000174e238c8e7f/12965", "timestamp": "2023-06-08T19:30:19Z", "txHash": "a302c4ab2d6b9a6003951d2e91f8fdbb83cfa20f6ffb588b95ef0290aab37066", "originChain": 1, "status": "ongoing" }, { "id": "22/0000000000000000000000000000000000000000000000000000000000000001/18308", "timestamp": "2023-06-08T19:17:14Z", "txHash": "00000000000000000000000000000000000000000000000000000000000047e7", "originChain": 22, "destinationAddress": "0x00000000000000000000000067e8a40816a983fbe3294aaebd0cc2391815b86b", "destinationChain": 5, "tokenAmount": "0.12", "usdAmount": "0.12012", "symbol": "USDC", "status": "completed" }, ... ] } ``` ### Limitations of the current implementation 1. Doesn't return the total number of results (this may result in a performance issue when we filter by address) 2. Can only filter by receiver address (we don't have sender information in the database yet)
2023-06-12 07:43:48 -07:00
"type": "object",
"properties": {
2023-09-26 11:02:57 -07:00
"transactions": {
Add endpoint `GET /api/v1/transactions` (#388) ### Summary Tracking issue: https://github.com/wormhole-foundation/wormhole-explorer/issues/385 This pull request implements a new endpoint, `GET /api/v1/transactions`, which will be consumed by the wormhole explorer UI. The endpoint returns a paginated list of transactions, in which each element contains a brief overview of the transaction (ID, txHash, status, etc.). It exposes offset-based pagination via the parameters `page` and `pageSize`. Also, results can be obtained for a specific address by using the `address` query parameter. The response model looks like this: ```json { "transactions": [ { "id": "1/5ec18c34b47c63d17ab43b07b9b2319ea5ee2d163bce2e467000174e238c8e7f/12965", "timestamp": "2023-06-08T19:30:19Z", "txHash": "a302c4ab2d6b9a6003951d2e91f8fdbb83cfa20f6ffb588b95ef0290aab37066", "originChain": 1, "status": "ongoing" }, { "id": "22/0000000000000000000000000000000000000000000000000000000000000001/18308", "timestamp": "2023-06-08T19:17:14Z", "txHash": "00000000000000000000000000000000000000000000000000000000000047e7", "originChain": 22, "destinationAddress": "0x00000000000000000000000067e8a40816a983fbe3294aaebd0cc2391815b86b", "destinationChain": 5, "tokenAmount": "0.12", "usdAmount": "0.12012", "symbol": "USDC", "status": "completed" }, ... ] } ``` ### Limitations of the current implementation 1. Doesn't return the total number of results (this may result in a performance issue when we filter by address) 2. Can only filter by receiver address (we don't have sender information in the database yet)
2023-06-12 07:43:48 -07:00
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/transactions.TransactionDetail"
Add endpoint `GET /api/v1/transactions` (#388) ### Summary Tracking issue: https://github.com/wormhole-foundation/wormhole-explorer/issues/385 This pull request implements a new endpoint, `GET /api/v1/transactions`, which will be consumed by the wormhole explorer UI. The endpoint returns a paginated list of transactions, in which each element contains a brief overview of the transaction (ID, txHash, status, etc.). It exposes offset-based pagination via the parameters `page` and `pageSize`. Also, results can be obtained for a specific address by using the `address` query parameter. The response model looks like this: ```json { "transactions": [ { "id": "1/5ec18c34b47c63d17ab43b07b9b2319ea5ee2d163bce2e467000174e238c8e7f/12965", "timestamp": "2023-06-08T19:30:19Z", "txHash": "a302c4ab2d6b9a6003951d2e91f8fdbb83cfa20f6ffb588b95ef0290aab37066", "originChain": 1, "status": "ongoing" }, { "id": "22/0000000000000000000000000000000000000000000000000000000000000001/18308", "timestamp": "2023-06-08T19:17:14Z", "txHash": "00000000000000000000000000000000000000000000000000000000000047e7", "originChain": 22, "destinationAddress": "0x00000000000000000000000067e8a40816a983fbe3294aaebd0cc2391815b86b", "destinationChain": 5, "tokenAmount": "0.12", "usdAmount": "0.12012", "symbol": "USDC", "status": "completed" }, ... ] } ``` ### Limitations of the current implementation 1. Doesn't return the total number of results (this may result in a performance issue when we filter by address) 2. Can only filter by receiver address (we don't have sender information in the database yet)
2023-06-12 07:43:48 -07:00
}
}
}
},
2023-09-26 11:02:57 -07:00
"transactions.OriginTx": {
"type": "object",
"properties": {
2023-09-26 11:02:57 -07:00
"attribute": {
"$ref": "#/definitions/transactions.AttributeDoc"
},
2023-09-26 11:02:57 -07:00
"from": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"status": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"txHash": {
"type": "string"
}
}
},
2023-09-26 11:02:57 -07:00
"transactions.ScorecardsResponse": {
"type": "object",
"properties": {
"24h_messages": {
"description": "Number of VAAs emitted in the last 24 hours (includes Pyth messages).",
"type": "string"
},
"24h_tx_count": {
"description": "Number of VAAs emitted in the last 24 hours (does not include Pyth messages).",
"type": "string"
},
"24h_volume": {
"description": "Volume transferred through the token bridge in the last 24 hours, in USD.",
"type": "string"
},
"total_messages": {
"description": "Number of VAAs emitted since the creation of the network (includes Pyth messages).",
"type": "string"
},
"total_tx_count": {
"description": "Number of VAAs emitted since the creation of the network (does not include Pyth messages)",
"type": "string"
},
"total_volume": {
"type": "string"
},
"tvl": {
"description": "Total value locked in USD.",
"type": "string"
}
}
},
2023-09-26 11:02:57 -07:00
"transactions.Token": {
"type": "object",
"properties": {
"coingeckoId": {
"type": "string"
},
"decimals": {
"type": "integer"
},
"symbol": {
"type": "string"
}
}
},
"transactions.TopAssetsResponse": {
"type": "object",
"properties": {
"assets": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/transactions.AssetWithVolume"
}
}
}
},
2023-09-26 11:02:57 -07:00
"transactions.TopChainPairsResponse": {
"type": "object",
"properties": {
"chainPairs": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/transactions.ChainPair"
}
}
}
},
2023-09-26 11:02:57 -07:00
"transactions.TransactionCountResult": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"time": {
"type": "string"
}
}
},
"transactions.TransactionDetail": {
"type": "object",
"properties": {
"emitterAddress": {
"description": "EmitterAddress contains the VAA's emitter address, encoded in hex.",
"type": "string"
},
"emitterChain": {
"$ref": "#/definitions/vaa.ChainID"
},
"emitterNativeAddress": {
"description": "EmitterNativeAddress contains the VAA's emitter address, encoded in the emitter chain's native format.",
"type": "string"
},
"globalTx": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/transactions.GlobalTransactionDoc"
},
"id": {
"type": "string"
},
"payload": {
"type": "object",
"additionalProperties": true
},
"standardizedProperties": {
"type": "object",
"additionalProperties": true
},
"symbol": {
"type": "string"
},
"timestamp": {
"type": "string"
},
"tokenAmount": {
"type": "string"
},
"txHash": {
"type": "string"
},
"usdAmount": {
"type": "string"
}
}
},
2023-09-26 11:02:57 -07:00
"transactions.Tx": {
"type": "object",
"properties": {
"chain": {
"type": "integer"
},
"destinations": {
"type": "array",
"items": {
2023-09-26 11:02:57 -07:00
"$ref": "#/definitions/transactions.Destination"
}
},
"percentage": {
"type": "number"
},
"volume": {
"type": "number"
}
}
},
"vaa.ChainID": {
"type": "integer",
"enum": [
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
18,
19,
20,
21,
22,
23,
24,
25,
26,
28,
29,
30,
32,
33,
34,
35,
36,
37,
38,
39,
3104,
4000,
4001,
4002,
4003,
4004,
4005,
4006,
4007,
4008,
10002,
10003,
10004,
10005,
10006,
10007
],
"x-enum-varnames": [
"ChainIDUnset",
"ChainIDSolana",
"ChainIDEthereum",
"ChainIDTerra",
"ChainIDBSC",
"ChainIDPolygon",
"ChainIDAvalanche",
"ChainIDOasis",
"ChainIDAlgorand",
"ChainIDAurora",
"ChainIDFantom",
"ChainIDKarura",
"ChainIDAcala",
"ChainIDKlaytn",
"ChainIDCelo",
"ChainIDNear",
"ChainIDMoonbeam",
"ChainIDTerra2",
"ChainIDInjective",
"ChainIDOsmosis",
"ChainIDSui",
"ChainIDAptos",
"ChainIDArbitrum",
"ChainIDOptimism",
"ChainIDGnosis",
"ChainIDPythNet",
"ChainIDXpla",
"ChainIDBtc",
"ChainIDBase",
"ChainIDSei",
"ChainIDRootstock",
"ChainIDScroll",
"ChainIDMantle",
"ChainIDBlast",
"ChainIDXLayer",
"ChainIDLinea",
"ChainIDBerachain",
"ChainIDWormchain",
"ChainIDCosmoshub",
"ChainIDEvmos",
"ChainIDKujira",
"ChainIDNeutron",
"ChainIDCelestia",
"ChainIDStargaze",
"ChainIDSeda",
"ChainIDDymension",
"ChainIDProvenance",
"ChainIDSepolia",
"ChainIDArbitrumSepolia",
"ChainIDBaseSepolia",
"ChainIDOptimismSepolia",
"ChainIDHolesky",
"ChainIDPolygonSepolia"
]
2023-09-26 11:02:57 -07:00
},
"vaa.VaaDoc": {
"type": "object",
"properties": {
"appId": {
"description": "AppId is an extension field - it is not present in the guardian API.",
"type": "string"
},
"digest": {
"type": "string"
},
2023-09-26 11:02:57 -07:00
"emitterAddr": {
"type": "string"
},
"emitterChain": {
"$ref": "#/definitions/vaa.ChainID"
},
"emitterNativeAddr": {
"type": "string"
},
"guardianSetIndex": {
"type": "integer"
},
"id": {
"type": "string"
},
"indexedAt": {
"type": "string"
},
"isDuplicated": {
"type": "boolean"
},
2023-09-26 11:02:57 -07:00
"payload": {
"description": "Payload is an extension field - it is not present in the guardian API.",
"type": "object",
"additionalProperties": true
},
"timestamp": {
"type": "string"
},
"txHash": {
"description": "TxHash is an extension field - it is not present in the guardian API.",
"type": "string"
},
"updatedAt": {
"type": "string"
},
"vaa": {
"type": "array",
"items": {
"type": "integer"
}
},
"version": {
"type": "integer"
}
}
},
"vaa.VaaStats": {
"type": "object",
"properties": {
"chainId": {
"$ref": "#/definitions/vaa.ChainID"
},
"count": {
"type": "integer"
}
}
}
}
}