> ## Documentation Index
> Fetch the complete documentation index at: https://docs.scale3labs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Blockchain Intelligence APIs: GET Node Updates

> This endpoint allows you to query our node update intelligence for a specific chain,  network (mainnet/testnet) and get the latest updates for that specific chain. Find the list of supported chains in the chain parameter below. You will need your API key to send requests. If you have any questions or feedback, please reach out to us at support@scale3labs.com.

### Using Query Parameters with GET Node Updates

To enhance your experience with our 'GET Node Updates' endpoint, you can use various query parameters provided by the [api-query-params](https://www.npmjs.com/package/api-query-params) library. These parameters allow for advanced filtering, sorting, and pagination, helping you tailor the response to your specific needs. Below are examples demonstrating how to effectively utilize these features.

#### Examples of Query Parameters

1. **Filtering by Chain and Category with Sorting:**
   Fetch updates for Ethereum mainnet in the, sorted by the release date and priority.
   ```http theme={null}
   GET /node-updates?chain=eth&network=mainnet&breaking_changes=true&sort=priority,-release_date

   ```
2. **Pagination and Selective Fields::**
   Retrieve the second page of updates, showing 10 records per page, displaying only name, version, and release date.
   ```http theme={null}
   GET /node-updates?page=2&page_size=10&fields=name,version,release_date
   ```

Check out the [api-query-params](https://www.npmjs.com/package/api-query-params) documentation for more information on how to use these query parameters.

For any questions or feedback regarding the use of query parameters with our API, feel free to reach out to our support team at [support@scale3labs.com](mailto:support@scale3labs.com).

The complete list of query parameters supported by the 'GET Node Updates' endpoint is provided below.

<ParamField query="category" type="string" optional>
  Node update category
</ParamField>

<ParamField query="chain" type="string" required>
  Network feed chain. Currently supported chains values are ("aptos",
  "algo", "aptos", "arb", "avax", "base", "bnb", "link", "btc", "bch", "ada", "tia", "celo", "atom", "cro", "dash", "doge", "eos", "eth", "etc", "ftm", "fil", "flr", "flow", "harmony", "hbar", "hnt", "icp", "inj", "kava", "ksm", "ltc", "mina", "near", "op", "dot", "polygon", "xrp", "sei", "sol", "stx", "xlm", "sui", "xtz", "trx", "ton", "vet", "zec")
</ParamField>

<ParamField query="repo_name" type="string" optional>
  Name of repository that contains the update code
</ParamField>

<ParamField query="tag" type="string" optional>
  Node update tag. The Tag contains the update version
</ParamField>

<ParamField query="network" type="string" optional>
  Node update network (mainnet, testnet, devnet)
</ParamField>

<ParamField query="client" type="string" optional>
  Node update client depending on the chain. For chains with no client the default value is the chain itself. Supported clients include: (
  "cardanonode",
  "goalgorand",
  "aptos",
  "nitro",
  "avalanchego",
  "base",
  "besu",
  "bsc",
  "bitcoincore",
  "bchd",
  "bitcoincashnode",
  "bor",
  "celestia",
  "celo",
  "chainlink",
  "gaia",
  "cronos",
  "dashd",
  "dogecoincore",
  "eos",
  "erigon",
  "coregeth",
  "goopera",
  "fireeth",
  "flow",
  "forest",
  "geth",
  "goflare",
  "gosongbird",
  "harmony",
  "hedera",
  "heimdall",
  "horizon",
  "icp",
  "injectived",
  "jito",
  "kava",
  "kusama",
  "lighthouse",
  "lighthouse\_vc",
  "lighthouse\_bc",
  "litecoincore",
  "lodestar",
  "lotus",
  "mina",
  "nethermind",
  "nearcore",
  "nimbus",
  "op",
  "optimism",
  "polkadot",
  "prysm",
  "reth",
  "rippled",
  "rocketpool",
  "sei",
  "solana",
  "stacks",
  "stellarcore",
  "teku",
  "tezos",
  "javatron",
  "ton",
  "testclient",
  "thor",
  "zcashd")
</ParamField>

<ParamField query="version" type="string" optional>
  Version of the node update
</ParamField>

<ParamField query="priority" type="string" optional>
  Priority/Severity level of the node update
</ParamField>

<ParamField query="breaking_changes" type="boolean" optional>
  Boolean indicating if the update has breaking changes
</ParamField>

<ParamField query="required_for_upcoming_upgrade" type="boolean" optional>
  Boolean indicating if the update is required for an upcoming network upgrade
</ParamField>

<ParamField query="page_size" type="integer" optional>
  Size of a single page i.e how many records to send back in the response
</ParamField>

<ParamField query="page" type="integer" optional>
  Page number
</ParamField>

<Accordion title="200 (OK) Response Object Schema">
  <ResponseField name="result" type="NodeUpdate[]">
    <Expandable title="Node Update Object Properties" defaultOpen="true">
      <ResponseField name="name" type="string" required>
        Name of the node update
      </ResponseField>

      <ResponseField name="category" type="string" required>
        Node update category
      </ResponseField>

      <ResponseField name="chain" type="string" required>
        Node update chain
      </ResponseField>

      <ResponseField name="description" type="string" required>
        Node update description
      </ResponseField>

      <ResponseField name="repo_name" type="string" required>
        Name of repository that contains the update code
      </ResponseField>

      <ResponseField name="tag" type="string" required>
        Node update tag. The Tag contains the update version
      </ResponseField>

      <ResponseField name="network" type="string" required>
        Node update network (mainnet, testnet, devnet)
      </ResponseField>

      <ResponseField name="client" type="string" required>
        Node update client depending on the chain. For chains with no client the default value is the chain itself
      </ResponseField>

      <ResponseField name="release_date" type="integer" required>
        Release date of the update (unix epoch timestamp)
      </ResponseField>

      <ResponseField name="release_notes_url" type="string" required>
        Link to github repository release notes
      </ResponseField>

      <ResponseField name="build_artifacts" type="BuildArtifact[]" required>
        <Expandable title="Build Artifact Object Properties" defaultOpen="true">
          <ResponseField name="type" type="string" required>
            Build artifact type (docker, genisis or node)
          </ResponseField>

          <ResponseField name="url" type="string" required>
            Node update binary download url
          </ResponseField>

          <ResponseField name="os" type="string" optional>
            Node update binary compatible os
          </ResponseField>

          <ResponseField name="md5" type="string" optional>
            Node update binary md5
          </ResponseField>
        </Expandable>
      </ResponseField>
    </Expandable>
  </ResponseField>

  <ResponseField name="version" type="string" optional>
    Version of the node update
  </ResponseField>

  <ResponseField name="commit_hash" type="string" optional>
    Commit hash of the node update
  </ResponseField>

  <ResponseField name="priority" type="string" optional>
    Priority level of the node update
  </ResponseField>

  <ResponseField name="prerequisites" type="array" optional>
    Array of prerequisites for the node update
  </ResponseField>

  <ResponseField name="breaking_changes" type="boolean" optional>
    Boolean indicating if the update has breaking changes
  </ResponseField>

  <ResponseField name="breaking_change_summary" type="string" optional>
    Summary of the breaking changes
  </ResponseField>

  <ResponseField name="upcoming_network_upgrade" type="string" optional>
    Information about any upcoming network upgrades
  </ResponseField>

  <ResponseField name="required_for_upcoming_upgrade" type="boolean" optional>
    Boolean indicating if the update is required for an upcoming network upgrade
  </ResponseField>

  <ResponseField name="metadata" type="Metadata" required>
    <Expandable title="Metadata Object Properties" defaultOpen="true">
      <ResponseField name="page_size" type="integer" required>
        Size of a single page i.e how many records to send back in the response
      </ResponseField>

      <ResponseField name="page" type="integer" required>
        Page number
      </ResponseField>

      <ResponseField name="total_pages" type="integer" required>
        Total pages with the given page\_size
      </ResponseField>
    </Expandable>
  </ResponseField>
</Accordion>

<Accordion title="APIError Response Object Schema">
  <ResponseField name="error" type="ApiError">
    <Expandable title="ApiError Object Properties" defaultOpen="true">
      <ResponseField name="message" type="string" required>
        Error message
      </ResponseField>

      <ResponseField name="status" type="integer" required>
        Http status code
      </ResponseField>

      <ResponseField name="inner_errors" type="ApiError[]" optional>
        Array of errors which led to the error
      </ResponseField>
    </Expandable>
  </ResponseField>
</Accordion>

<RequestExample>
  ```bash Request theme={null}
    curl --request GET \
    --url https://web-backend.scale3production.com/node_updates \
    --header 'x-api-key: <api-key>' \
    --header 'x-user-agent: s3l-web-client'
  ```
</RequestExample>

<ResponseExample>
  ```json Sample 200 (OK) Response theme={null}
  {
    "result": [
      {
        "_id": "64caad9ff235e4337cabb497",
        "name": "mainnet-v1.6.3",
        "chain": "sui",
        "category": "optional",
        "description": "The upgrade includes new linter warnings for custom transfer/share/freeze functions, support for selective suppression of linter warnings, changes in unit tests handling, a new TransactionKindIn filter for querying transaction blocks, and linter warnings for object transfers.",
        "repo_name": "sui",
        "tag": "mainnet-v1.6.3",
        "network": "mainnet",
        "client": "sui",
        "release_date": 1690959709,
        "release_notes_url": "https://github.com/MystenLabs/sui/releases/tag/mainnet-v1.6.3",
        "build_artifacts": [],
        "createdAt": 1691004319,
        "updatedAt": 1691004319,
        "version": "1.6.3",
        "commit_hash": "abc123",
        "priority": "High",
        "prerequisites": ["Previous version installed"],
        "breaking_changes": false,
        "breaking_change_summary": "No breaking changes",
        "upcoming_network_upgrade": "None",
        "required_for_upcoming_upgrade": false
      }
    ],
    "metadata": {
      "page": 1,
      "page_size": 10000,
      "total_pages": 1
    }
  }
  ```

  ```json Sample ApiError Response theme={null}
  {
    "error": {
      "message": "Invalid api key unauthorized",
      "status": 401
    }
  }
  ```
</ResponseExample>
