> This page is for Taurus PROTECT, version v3.52.
> For other versions, use one of these documentation indexes:
> - v3.58 (default): https://taurushq.ferndocs.com/protect-capital/v3.58/llms.txt
> - v3.56: https://taurushq.ferndocs.com/protect-capital/v3.56/llms.txt
> - v3.54: https://taurushq.ferndocs.com/protect-capital/v3.54/llms.txt
> - v3.52: https://taurushq.ferndocs.com/protect-capital/v3.52/llms.txt
> - v3.50: https://taurushq.ferndocs.com/protect-capital/v3.50/llms.txt
> - v3.48: https://taurushq.ferndocs.com/protect-capital/v3.48/llms.txt
> - v3.46: https://taurushq.ferndocs.com/protect-capital/v3.46/llms.txt
> - v3.44: https://taurushq.ferndocs.com/protect-capital/v3.44/llms.txt
> - v3.42: https://taurushq.ferndocs.com/protect-capital/v3.42/llms.txt
> - v3.40: https://taurushq.ferndocs.com/protect-capital/v3.40/llms.txt
> - v3.38: https://taurushq.ferndocs.com/protect-capital/v3.38/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://taurushq.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://taurushq.ferndocs.com/_mcp/server.

# Helpers and monitoring

# Health checks in Taurus-PROTECT

Any of our components are exposing Health checks through the same API endpoint: /api/rest/v1/health/all?tenantId=1

List of Taurus-PROTECT component names that produce health checks:

* validatord
* vaultd
* hsm
* blocksd
* gated

Jobs perform component health checks and produce health reports accessible at /api/rest/v1/health/\[component]/\[check]. This is accessible without authentication so we must be careful with what we expose.

`[component]` can be replaced with values that you get from the “all” health checks.

For any of these endpoints, you can get those common values:

* **"tenantId"**: is the tenant where health check was run against
* **"componentName"**: name of the component
* **"componentId"**: uinque ID for the component (can be retrieved from the logs)
* **"group"**: group to whom the healthcheck belongs to
* **"healthCheck"**: type of health check
* **"status"**: status of the executed call
* **"report"**:
  * **"name"**: group name
  * **"status"**: status of the executed call
  * **“duration":** duration of the call
* **"lastUpdateDate"**: when was the health check executed
* **"validUntilDate"**: until when this health check will be valid.

## How to setup

Make sure `baseUrl` is a variable pointing to your validator instance, example:

`export baseUrl='https://your-protect-instance.example.com'`

## Get Explorers health checks

***Description*** : Performs an health check on the connectivity between validatord and blocksd.

`curl --location "$baseUrl/api/rest/v1/health/blocksd/connectivity" \`

**`JSON`**

```json JSON
{
    "health": {
        "tenantId": "1",
        "componentName": "tg-validatord",
        "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
        "group": "blocksd",
        "healthCheck": "connectivity",
        "status": "success",
        "report": {
            "name": "connectivity",
            "status": "success",
            "duration": "142.609264ms"
        },
        "lastUpdateDate": "2024-09-19T14:26:23.683065Z",
        "validUntilDate": "2024-09-19T14:32:23.683065Z"
    }
}
```

\


## Get health checks list by tenant

***Description*** : Performs a complete health check on validatord.

`curl --location "$baseUrl/api/rest/v1/health/all?tenantId=1" \`

```json
{
    "components": {
        "1ae1e60d-031f-4e0d-bdb3-e19652186051": {
            "groups": {
                "cryptocompare": {
                    "healthChecks": [
                        {
                            "tenantId": "1",
                            "componentName": "tg-validatord",
                            "componentId": "1ae1e60d-031f-4e0d-bdb3-e19652186051",
                            "group": "cryptocompare",
                            "healthCheck": "getcoins",
                            "status": "success",
                            "report": {
                                "name": "getcoins",
                                "status": "success",
                                "duration": "2.65891188s"
                            },
                            "lastUpdateDate": "2024-09-19T13:16:40.406863Z",
                            "validUntilDate": "2024-09-19T14:46:40.406863Z"
                        }
                    ]
                },
                "scoreproviders": {
                    "healthChecks": [
                        {
                            "tenantId": "1",
                            "componentName": "tg-validatord",
                            "componentId": "1ae1e60d-031f-4e0d-bdb3-e19652186051",
                            "group": "scoreproviders",
                            "healthCheck": "connectivity",
                            "status": "success",
                            "report": {
                                "name": "connectivity",
                                "status": "success",
                                "duration": "225.54874ms",
                                "results": {
                                    "chainalysis": "success",
                                    "elliptic": "success"
                                }
                            },
                            "lastUpdateDate": "2024-09-19T13:46:19.123976Z",
                            "validUntilDate": "2024-09-19T14:31:19.123976Z"
                        }
                    ]
                }
            }
        },
        "361de24b-5f25-4d3f-ac20-5216fc330c5e": {
            "groups": {
                "blocksd": {
                    "healthChecks": [
                        {
                            "tenantId": "1",
                            "componentName": "tg-validatord",
                            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
                            "group": "blocksd",
                            "healthCheck": "connectivity",
                            "status": "success",
                            "report": {
                                "name": "connectivity",
                                "status": "success",
                                "duration": "166.213736ms"
                            },
                            "lastUpdateDate": "2024-09-19T14:21:24.912016Z",
                            "validUntilDate": "2024-09-19T14:27:24.912016Z"
                        },
                        {
                            "tenantId": "1",
                            "componentName": "tg-validatord",
                            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
                            "group": "blocksd",
                            "healthCheck": "getbalance",
                            "status": "success",
                            "report": {
                                "name": "getbalance",
                                "status": "success",
                                "duration": "13.052895501s",
                                "results": {
                                    "ADA": "success",
                                    "ALGO": "success",
                                    "ATOM": "success",
                                    "BCH": "success",
                                    "BTC": "success",
                                    "DOT": "success",
                                    "ETH": "success",
                                    "FTM": "success",
                                    "LTC": "success",
                                    "POL": "success",
                                    "SOL": "success",
                                    "XKI": "success",
                                    "XLM": "success",
                                    "XRP": "success",
                                    "XTZ": "success"
                                }
                            },
                            "lastUpdateDate": "2024-09-19T14:21:57.677545Z",
                            "validUntilDate": "2024-09-19T14:27:57.677545Z"
                        },
                        {
                            "tenantId": "1",
                            "componentName": "tg-validatord",
                            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
                            "group": "blocksd",
                            "healthCheck": "getfees",
                            "status": "success",
                            "report": {
                                "name": "getfees",
                                "status": "success",
                                "duration": "269.911029ms",
                                "results": {
                                    "ADA": "success",
                                    "AvalancheC": "success",
                                    "BCH": "success",
                                    "BTC": "success",
                                    "ETH": "success",
                                    "FTM": "success",
                                    "ICP": "success",
                                    "LTC": "success",
                                    "NEAR": "success",
                                    "Polygon": "success",
                                    "XLM": "success",
                                    "XRP": "success"
                                }
                            },
                            "lastUpdateDate": "2024-09-19T14:21:24.509285Z",
                            "validUntilDate": "2024-09-19T14:27:24.509285Z"
                        }
                    ]
                },
                "database": {
                    "healthChecks": [
                        {
                            "tenantId": "1",
                            "componentName": "tg-validatord",
                            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
                            "group": "database",
                            "healthCheck": "connectivity",
                            "status": "success",
                            "report": {
                                "name": "connectivity",
                                "status": "success",
                                "duration": "107.516581ms"
                            },
                            "lastUpdateDate": "2024-09-19T14:21:23.545536Z",
                            "validUntilDate": "2024-09-19T14:27:23.545536Z"
                        }
                    ]
                },
                "exchanges": {
                    "healthChecks": [
                        {
                            "tenantId": "1",
                            "componentName": "tg-validatord",
                            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
                            "group": "exchanges",
                            "healthCheck": "connectivity",
                            "status": "success",
                            "report": {
                                "name": "connectivity",
                                "status": "success",
                                "duration": "8.265041766s",
                                "results": {
                                    "binance": "success",
                                    "bitfinex": "success",
                                    "bitfinex-kp": "success",
                                    "bitstamp": "success",
                                    "coinbase": "success",
                                    "coinbase-prime-institutional-cockroach": "success",
                                    "coinbase-pro": "success",
                                    "huobi-af": "success",
                                    "kraken": "success",
                                    "kraken-jdr": "success",
                                    "tdx-int": "success",
                                    "woorton-uat": "success"
                                }
                            },
                            "lastUpdateDate": "2024-09-19T14:21:32.914822Z",
                            "validUntilDate": "2024-09-19T14:27:32.914822Z"
                        },
                        {
                            "tenantId": "1",
                            "componentName": "tg-validatord",
                            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
                            "group": "exchanges",
                            "healthCheck": "getbalances",
                            "status": "failure",
                            "report": {
                                "name": "getbalances",
                                "status": "failure",
                                "duration": "30.00333571s",
                                "results": {
                                    "binance": "success",
                                    "bitfinex": "success",
                                    "bitfinex-kp": "success",
                                    "bitstamp": "success",
                                    "coinbase": "success",
                                    "coinbase-prime-institutional-cockroach": "success",
                                    "coinbase-pro": "unable to get balances for exchange coinbase-pro: unable to create signature: unable to process signed request from tg-vaultd: unable to ProcessSignedRequest from Vaultd: failed to get vaultd client: no available healthy client",
                                    "huobi-af": "success",
                                    "kraken": "success",
                                    "kraken-jdr": "success",
                                    "tdx-int": "success",
                                    "woorton-uat": "success"
                                }
                            },
                            "lastUpdateDate": "2024-09-19T14:21:54.026396Z",
                            "validUntilDate": "2024-09-19T14:27:54.026396Z"
                        }
                    ]
                },
                "gated": {
                    "healthChecks": [
                        {
                            "tenantId": "1",
                            "componentName": "tg-validatord",
                            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
                            "group": "gated",
                            "healthCheck": "connectivity",
                            "status": "success",
                            "report": {
                                "name": "connectivity",
                                "status": "success",
                                "duration": "6.173706ms"
                            },
                            "lastUpdateDate": "2024-09-19T14:21:24.652932Z",
                            "validUntilDate": "2024-09-19T14:27:24.652932Z"
                        },
                        {
                            "tenantId": "1",
                            "componentName": "tg-validatord",
                            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
                            "group": "gated",
                            "healthCheck": "proxy",
                            "status": "success",
                            "report": {
                                "name": "proxy",
                                "status": "success",
                                "duration": "162.53047ms"
                            },
                            "lastUpdateDate": "2024-09-19T14:21:25.729091Z",
                            "validUntilDate": "2024-09-19T14:27:25.729091Z"
                        }
                    ]
                },
                "hsm": {
                    "healthChecks": [
                        {
                            "tenantId": "1",
                            "componentName": "tg-validatord",
                            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
                            "group": "hsm",
                            "healthCheck": "status",
                            "status": "success",
                            "report": {
                                "name": "status",
                                "status": "success",
                                "duration": "858.526µs"
                            },
                            "lastUpdateDate": "2024-09-19T14:21:24.479556Z",
                            "validUntilDate": "2024-09-19T14:27:24.479556Z"
                        }
                    ]
                },
                "jobs": {
                    "healthChecks": [
                        {
                            "tenantId": "1",
                            "componentName": "tg-validatord",
                            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
                            "group": "jobs",
                            "healthCheck": "addresscreation",
                            "status": "success",
                            "report": {
                                "name": "addresscreation",
                                "status": "success",
                                "duration": "0s"
                            },
                            "lastUpdateDate": "2024-09-19T14:21:24.623743Z",
                            "validUntilDate": "2024-09-19T14:41:24.623743Z"
                        },
                        {
                            "tenantId": "1",
                            "componentName": "tg-validatord",
                            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
                            "group": "jobs",
                            "healthCheck": "scorerefresh",
                            "status": "success",
                            "report": {
                                "name": "scorerefresh",
                                "status": "success",
                                "duration": "0s"
                            },
                            "lastUpdateDate": "2024-09-19T14:21:24.170229Z",
                            "validUntilDate": "2024-09-19T14:41:24.170229Z"
                        },
                        {
                            "tenantId": "1",
                            "componentName": "tg-validatord",
                            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
                            "group": "jobs",
                            "healthCheck": "webhooks",
                            "status": "success",
                            "report": {
                                "name": "webhooks",
                                "status": "success",
                                "duration": "0s"
                            },
                            "lastUpdateDate": "2024-09-19T14:21:24.659625Z",
                            "validUntilDate": "2024-09-19T14:41:24.659625Z"
                        }
                    ]
                }
            }
        }
    }
}
```

\


## Get health checks for a specific group

***Description***: Performs a health check on a specific group of monitored activities.

*Example with gated group:*

`curl --location "$baseUrl/api/rest/v1/health/gated?tenantId=1" \`

```json
{
    "healths": [
        {
            "tenantId": "1",
            "componentName": "tg-validatord",
            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
            "group": "gated",
            "healthCheck": "connectivity",
            "status": "success",
            "report": {
                "name": "connectivity",
                "status": "success",
                "duration": "3.19926ms"
            },
            "lastUpdateDate": "2024-09-19T14:31:24.189337Z",
            "validUntilDate": "2024-09-19T14:37:24.189337Z"
        },
        {
            "tenantId": "1",
            "componentName": "tg-validatord",
            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
            "group": "gated",
            "healthCheck": "proxy",
            "status": "success",
            "report": {
                "name": "proxy",
                "status": "success",
                "duration": "34.785155ms"
            },
            "lastUpdateDate": "2024-09-19T14:31:24.282304Z",
            "validUntilDate": "2024-09-19T14:37:24.282304Z"
        }
    ]
}
```

\


## Get Explorers Balances health checks by tenant

***Description*** : Performs a health check by getting balances from blocksd. Results will give you the list of currencies where a balance has been returned.

`curl --location "$baseUrl/api/rest/v1/health/blocksd/getbalance?tenantId=1" \`

```json
{
    "health": {
        "tenantId": "1",
        "componentName": "tg-validatord",
        "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
        "group": "blocksd",
        "healthCheck": "getbalance",
        "status": "success",
        "report": {
            "name": "getbalance",
            "status": "success",
            "duration": "11.55563498s",
            "results": {
                "ADA": "success",
                "ALGO": "success",
                "ATOM": "success",
                "BCH": "success",
                "BTC": "success",
                "DOT": "success",
                "ETH": "success",
                "FTM": "success",
                "LTC": "success",
                "POL": "success",
                "SOL": "success",
                "XKI": "success",
                "XLM": "success",
                "XRP": "success",
                "XTZ": "success"
            }
        },
        "lastUpdateDate": "2024-09-19T14:26:43.820648Z",
        "validUntilDate": "2024-09-19T14:32:43.820648Z"
    }
}
```

\


## Get Explorers Fees health checks by tenant

***Description*** : Performs a health check by getting Blockchains current fees from blocksd. Results will give you the list of currencies where a fee has been returned.

`curl --location "$baseUrl/api/rest/v1/health/blocksd/getfees?tenantId=1" \`

```json
{
    "health": {
        "tenantId": "1",
        "componentName": "tg-validatord",
        "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
        "group": "blocksd",
        "healthCheck": "getfees",
        "status": "success",
        "report": {
            "name": "getfees",
            "status": "success",
            "duration": "170.343854ms",
            "results": {
                "ADA": "success",
                "AvalancheC": "success",
                "BCH": "success",
                "BTC": "success",
                "ETH": "success",
                "FTM": "success",
                "ICP": "success",
                "LTC": "success",
                "NEAR": "success",
                "Polygon": "success",
                "XLM": "success",
                "XRP": "success"
            }
        },
        "lastUpdateDate": "2024-09-19T14:26:26.608262Z",
        "validUntilDate": "2024-09-19T14:32:26.608262Z"
    }
}
```

\


## Get Database health checks by tenant

***Description*** : Performs a health check by checking database connectivity between validatord and the database engine you are currently using.

`curl --location "$baseUrl/api/rest/v1/health/database?tenantId=1" \`

```json
{
    "healths": [
        {
            "tenantId": "1",
            "componentName": "tg-validatord",
            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
            "group": "database",
            "healthCheck": "connectivity",
            "status": "success",
            "report": {
                "name": "connectivity",
                "status": "success",
                "duration": "4.324687ms"
            },
            "lastUpdateDate": "2024-09-19T14:46:25.600599Z",
            "validUntilDate": "2024-09-19T14:52:25.600599Z"
        }
    ]
}
```

\


## Get Prices health checks by tenant

***Description*** : Performs a health check between validatord and prices providers you are currently using. Example here with Cryptocompare.

`curl --location "$baseUrl/api/rest/v1/health/database?tenantId=1" \`

```json
{
    "healths": [
        {
            "tenantId": "1",
            "componentName": "tg-validatord",
            "componentId": "2861035f-a361-47b6-b02f-14566d3106a5",
            "group": "cryptocompare",
            "healthCheck": "getcoins",
            "status": "success",
            "report": {
                "name": "getcoins",
                "status": "success",
                "duration": "3.473873505s"
            },
            "lastUpdateDate": "2024-09-30T11:24:35.705457Z",
            "validUntilDate": "2024-09-30T12:54:35.705457Z"
        }
    ]
}
```

\


## Get Score Providers health checks by tenant

***Description*** : Performs a health check between validatord and KYC/KYT scoring providers you are currently using. Example here with Chainalysis and Elliptic.

`curl --location "$baseUrl/api/rest/v1/health/scoreproviders?tenantId=1" \`

**`JSON`**

```json JSON
{
    "healths": [
        {
            "tenantId": "1",
            "componentName": "tg-validatord",
            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
            "group": "scoreproviders",
            "healthCheck": "connectivity",
            "status": "success",
            "report": {
                "name": "connectivity",
                "status": "success",
                "duration": "219.606381ms",
                "results": {
                    "chainalysis": "success",
                    "elliptic": "success"
                }
            },
            "lastUpdateDate": "2024-09-19T14:36:25.103681Z",
            "validUntilDate": "2024-09-19T15:21:25.103681Z"
        }
    ]
} 
```

\


## Get Gated health checks by tenant

***Description*** : Performs a health check on the connectivity between validatord and gated (proxy).

`curl --location "$baseUrl/api/rest/v1/health/gated?tenantId=1" \`

```json
{
    "healths": [
        {
            "tenantId": "1",
            "componentName": "tg-validatord",
            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
            "group": "gated",
            "healthCheck": "connectivity",
            "status": "success",
            "report": {
                "name": "connectivity",
                "status": "success",
                "duration": "5.667154ms"
            },
            "lastUpdateDate": "2024-09-19T14:51:27.017460Z",
            "validUntilDate": "2024-09-19T14:57:27.017460Z"
        },
        {
            "tenantId": "1",
            "componentName": "tg-validatord",
            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
            "group": "gated",
            "healthCheck": "proxy",
            "status": "success",
            "report": {
                "name": "proxy",
                "status": "success",
                "duration": "49.921336ms"
            },
            "lastUpdateDate": "2024-09-19T14:51:27.680519Z",
            "validUntilDate": "2024-09-19T14:57:27.680519Z"
        }
    ]
}
```

\


## Get HSM health checks by tenant

***Description*** : Performs a health check on the connectivity between validatord and hsm.

`curl --location "$baseUrl/api/rest/v1/health/hsm?tenantId=1" \`

```json
{
    "healths": [
        {
            "tenantId": "1",
            "componentName": "tg-validatord",
            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
            "group": "hsm",
            "healthCheck": "status",
            "status": "success",
            "report": {
                "name": "status",
                "status": "success",
                "duration": "765.692µs"
            },
            "lastUpdateDate": "2024-09-19T14:51:25.788486Z",
            "validUntilDate": "2024-09-19T14:57:25.788486Z"
        }
    ]
}
```

\


## Get vaultd health checks by tenant

`curl --location "$baseUrl/api/rest/v1/health/hsm?tenantId=1" \`

# Jobs API specific health checks

## Get Jobs health checks by tenant

`curl --location "$baseUrl/api/rest/v1/health/jobs?tenantId=1" \`

```json
{
    "healths": [
        {
            "tenantId": "1",
            "componentName": "tg-validatord",
            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
            "group": "jobs",
            "healthCheck": "addresscreation",
            "status": "success",
            "report": {
                "name": "addresscreation",
                "status": "success",
                "duration": "0s"
            },
            "lastUpdateDate": "2024-09-19T14:51:25.681248Z",
            "validUntilDate": "2024-09-19T15:11:25.681248Z"
        },
        {
            "tenantId": "1",
            "componentName": "tg-validatord",
            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
            "group": "jobs",
            "healthCheck": "scorerefresh",
            "status": "success",
            "report": {
                "name": "scorerefresh",
                "status": "success",
                "duration": "0s"
            },
            "lastUpdateDate": "2024-09-19T14:51:27.051554Z",
            "validUntilDate": "2024-09-19T15:11:27.051554Z"
        },
        {
            "tenantId": "1",
            "componentName": "tg-validatord",
            "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
            "group": "jobs",
            "healthCheck": "webhooks",
            "status": "success",
            "report": {
                "name": "webhooks",
                "status": "success",
                "duration": "0s"
            },
            "lastUpdateDate": "2024-09-19T14:51:27.223038Z",
            "validUntilDate": "2024-09-19T15:11:27.223038Z"
        }
    ]
}
```

\


Some job names examples:

* Actions:

action\_service\_running-actions-handler,

action\_service\_sleeping-actions-handler

* Audit

audit\_service\_trails-ingestor

* Balance:

balance\_service\_balances-desync-checker\
balance\_service\_balances-garbage-collector\
balance\_service\_balances-history-garbage-collector\
balance\_service\_balances-history-refresher\
balance\_service\_balances-refresher\
balance\_service\_existential-balance-updates-processor\
balance\_service\_funds-releaser\
balance\_service\_rebase-token-balances-refresher

* Change service:

change\_service\_email-event-task-handler

* Events:

event\_service\_auto-transfer-events-task-handler\
event\_service\_initialized-auto-transfer-request-handler\
event\_service\_pending-auto-transfer-request-handler\
event\_service\_triggered-auto-transfer-events-handler\
eventbus\_service\_event-dispatcher\
eventbus\_service\_event-sequencer

* Exchanges:

exchange\_service\_exchanges-balances-handler

* Prices:

price\_service\_price-history-refresher\
price\_service\_price-refresher

* Requests:

request\_service\_action-auto-prepared-2-requests-handler\
request\_service\_action-prepared-requests-handler\
request\_service\_approved-2-requests-handler\
request\_service\_approved-request-bundles-handler\
request\_service\_approved-requests-handler\
request\_service\_broadcasting-2-requests-handler\
request\_service\_broadcasting-request-bundles-handler\
request\_service\_broadcasting-requests-handler\
request\_service\_bundle-approved-requests-handler\
request\_service\_canceled-signed-requests-handler\
request\_service\_created-request-bundles-handler\
request\_service\_creating-request-bundles-handler\
request\_service\_creating-requests-handler\
request\_service\_diem-burn-broadcasted-requests-handler\
request\_service\_diem-mbs-approved-requests-handler\
request\_service\_diem-mbs-completed-requests-handler\
request\_service\_diem-mbs-pending-requests-handler\
request\_service\_dot-extrinsics-garbage-collector\
request\_service\_dot-extrinsics-refresher\
request\_service\_expired-requests-handler\
request\_service\_expired-to-cancel-signed-requests-handler\
request\_service\_failed-request-bundles-handler\
request\_service\_fast-approved-2-requests-handler\
request\_service\_fast-approved-requests-handler\
request\_service\_funds-releaser\
request\_service\_hsmfailed-2-requests-handler\
request\_service\_hsmfailed-requests-handler\
request\_service\_hsmready-2-requests-handler\
request\_service\_hsmready-request-bundles-handler\
request\_service\_hsmready-requests-handler\
request\_service\_hsmsigned-2-requests-handler\
request\_service\_hsmsigned-request-bundles-handler\
request\_service\_hsmsigned-requests-handler\
request\_service\_invalid-signed-requests-handler\
request\_service\_new-signed-requests-handler\
request\_service\_opt-ins-releaser\
request\_service\_pending-requests-handler\
request\_service\_pending-signed-requests-handler\
request\_service\_ready-requests-handler\
request\_service\_replaced-signed-requests-handler\
request\_service\_timeout-signed-requests-handler\
request\_service\_verified-request-batch-signatures-handler

* Staking:

staking\_service\_active-icp-neurons-refresher\
staking\_service\_ada-staking-addresses-refresher\
staking\_service\_ada-staking-rewards-refresher\
staking\_service\_cosmoshub-staking-rewards-refresher\
staking\_service\_cosmoskichain-staking-rewards-refresher\
staking\_service\_disbursing-icp-neurons-handler\
staking\_service\_dissolved-icp-neurons-handler\
staking\_service\_dot-staking-withdraw-unbonded-handler\
staking\_service\_ftm-staking-addresses-refresher\
staking\_service\_icp-balance-activity-handler\
staking\_service\_icp-neurons-creator\
staking\_service\_icp-staking-activity-handler\
staking\_service\_merging-icp-neurons-handler\
staking\_service\_near-staking-rewards-refresher\
staking\_service\_new-icp-neurons-handler\
staking\_service\_observing-icp-neurons-handler\
staking\_service\_sol-staking-info-refresher\
staking\_service\_spawning-icp-neurons-handler\
staking\_service\_staking-states-collection-refresher\
staking\_service\_xtz-delegate-addresses-refresher

* Transactions:

transaction\_service\_mig-hasanytransactionattribute\
transaction\_service\_network-migrater\
transaction\_service\_observed-transactions-handler\
transaction\_service\_populate-transaction-balance\
transaction\_service\_token-balances-garbage-collector\
transaction\_service\_token-balances-refresher\
transaction\_service\_token-holders-populator\
transaction\_service\_transactions-exporter

* Wallets:

wallet\_service\_ada-staking-addresses-refresher\
wallet\_service\_addresses-nft-migrater\
wallet\_service\_algo-optin-status-refresher\
wallet\_service\_balances-history-refresher\
wallet\_service\_balances-refresher\
wallet\_service\_created-addresses-handler\
wallet\_service\_currency-wallets-businessrules-creator\
wallet\_service\_network-migrater\
wallet\_service\_nonces-refresher\
wallet\_service\_observed-addresses-handler\
wallet\_service\_signed-addresses-handler\
wallet\_service\_token-wallets-syncer\
wallet\_service\_xlm-address-flags-refresher\
wallet\_service\_xlm-existentialbalance-refresher\
wallet\_service\_xlm-trustline-refresher\
wallet\_service\_xtz-delegate-addresses-refresher\
wallet\_service\_xtz-initializing-addresses-handler\
wallet\_service\_xtz-ready-for-init-addresses-handler\
wallet\_service\_xtz-revelation-status-refresher\
wallet\_service\_xtz-uninitialized-addresses-handler

* Webhooks:

webhook\_service\_webhook\_caller\
webhook\_service\_webhook\_event\_handler

* Whitelists:

whitelist\_service\_network-migrater\
whitelist\_service\_verified-wladdress-batch-signatures-handler

## Get Job health checks by Job name and by tenant

***Description*** : Returns computed statistics for a single job.

`curl --location "$baseUrl/api/rest/v1/health/jobs/scorerefresh?tenantId=1" \`

**`json`**

```json json
{
    "health": {
        "tenantId": "1",
        "componentName": "tg-validatord",
        "componentId": "361de24b-5f25-4d3f-ac20-5216fc330c5e",
        "group": "jobs",
        "healthCheck": "scorerefresh",
        "status": "success",
        "report": {
            "name": "scorerefresh",
            "status": "success",
            "duration": "0s"
        },
        "lastUpdateDate": "2024-09-19T14:51:27.051554Z",
        "validUntilDate": "2024-09-19T15:11:27.051554Z"
    }
}
```

\


## Get Jobs list

This endpoint requires authentication as the technical user.

***Description*** : Collects data from the job\_statuses table and computes simple statistics grouped by job name.

* Number of successes.
* Number of failures.
* Number of pending.
* `job_statuses `values for the last success.
* `job_statuses `values for the last failure.
* Average duration of successful runs.
* Maximum duration of successful runs.
* Minimum duration of successful runs.

`curl --location "$baseUrl/api/rest/v1/jobs" \`

```json
{
    "jobs": [
        {
            "name": "cryptocompare_getcoins",
            "statistics": {}
        },
        {
            "name": "gated_connectivity",
            "statistics": {}
        },
        {
            "name": "staking_service_new-icp-neurons-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "a2606c53-383a-4e95-b26d-4949a834c663",
                    "startedAt": "2024-09-19T15:17:29.000420Z",
                    "updatedAt": "2024-09-19T15:17:29.241269Z",
                    "timeoutAt": "2024-09-19T15:22:29.000420Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.240849s",
                "maxDuration": "0.240849s",
                "minDuration": "0.240849s"
            }
        },
        {
            "name": "fee_service_fees-refresher",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "b49437c3-31e0-44e0-a6a6-8cd420ccb489",
                    "startedAt": "2024-09-19T15:17:36.000179Z",
                    "updatedAt": "2024-09-19T15:17:38.534327Z",
                    "timeoutAt": "2024-09-19T15:19:36.000179Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "2.534148s",
                "maxDuration": "2.534148s",
                "minDuration": "2.534148s"
            }
        },
        {
            "name": "balance_service_rebase-token-balances-refresher",
            "statistics": {}
        },
        {
            "name": "request_service_broadcasting-request-bundles-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "92f1b25e-f621-432b-9760-e2636ebde024",
                    "startedAt": "2024-09-19T15:17:28.000307Z",
                    "updatedAt": "2024-09-19T15:17:28.373570Z",
                    "timeoutAt": "2024-09-19T15:22:28.000307Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.373263s",
                "maxDuration": "0.373263s",
                "minDuration": "0.373263s"
            }
        },
        {
            "name": "request_service_hsmready-requests-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "07115d3c-6f58-425a-8a70-6a85a1854061",
                    "startedAt": "2024-09-19T15:17:28.000332Z",
                    "updatedAt": "2024-09-19T15:17:28.451169Z",
                    "timeoutAt": "2024-09-19T15:22:28.000332Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.450837s",
                "maxDuration": "0.450837s",
                "minDuration": "0.450837s"
            }
        },
        {
            "name": "report_service_counterparty-exposure-mailer",
            "statistics": {}
        },
        {
            "name": "event_service_pending-auto-transfer-request-handler",
            "statistics": {}
        },
        {
            "name": "wallet_service_addresses-nft-migrater",
            "statistics": {}
        },
        {
            "name": "exchange_service_exchanges-balances-handler",
            "statistics": {}
        },
        {
            "name": "request_service_failed-request-bundles-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "569af350-62a9-4024-8aa3-b67734c99262",
                    "startedAt": "2024-09-19T15:17:28.000359Z",
                    "updatedAt": "2024-09-19T15:17:28.544975Z",
                    "timeoutAt": "2024-09-19T15:22:28.000359Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.544616s",
                "maxDuration": "0.544616s",
                "minDuration": "0.544616s"
            }
        },
        {
            "name": "request_service_hsmready-request-bundles-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "03470622-722d-4093-9eb4-0ae8c050ab7f",
                    "startedAt": "2024-09-19T15:17:28.000166Z",
                    "updatedAt": "2024-09-19T15:17:28.355887Z",
                    "timeoutAt": "2024-09-19T15:22:28.000166Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.355721s",
                "maxDuration": "0.355721s",
                "minDuration": "0.355721s"
            }
        },
        {
            "name": "transaction_service_new-transaction-scores-handler",
            "statistics": {}
        },
        {
            "name": "blocksd_getfees",
            "statistics": {}
        },
        {
            "name": "transaction_service_token-holders-populator",
            "statistics": {}
        },
        {
            "name": "workflow_service_business_workflow",
            "statistics": {
                "successes": "2",
                "lastSuccess": {
                    "id": "67043994-afd9-4ae7-b930-914913cd88aa",
                    "startedAt": "2024-09-19T15:17:35.001204Z",
                    "updatedAt": "2024-09-19T15:17:35.171894Z",
                    "timeoutAt": "2024-09-19T15:22:35.001204Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.128045500s",
                "maxDuration": "0.170690s",
                "minDuration": "0.085401s"
            }
        },
        {
            "name": "price_service_price-refresher",
            "statistics": {}
        },
        {
            "name": "request_service_invalid-signed-requests-handler",
            "statistics": {}
        },
        {
            "name": "wallet_service_xtz-revelation-status-refresher",
            "statistics": {}
        },
        {
            "name": "request_service_hsmfailed-2-requests-handler",
            "statistics": {}
        },
        {
            "name": "wallet_service_observed-addresses-handler",
            "statistics": {}
        },
        {
            "name": "balance_service_balances-desync-checker",
            "statistics": {}
        },
        {
            "name": "jobs_addresscreation",
            "statistics": {}
        },
        {
            "name": "database_connectivity",
            "statistics": {}
        },
        {
            "name": "webhook_service_webhook_event_handler",
            "statistics": {}
        },
        {
            "name": "user_service_expired-api-key-nonces-handler",
            "statistics": {}
        },
        {
            "name": "price_service_price-history-refresher",
            "statistics": {}
        },
        {
            "name": "taurus_network_service_participants-register-status-handler",
            "statistics": {}
        },
        {
            "name": "taurus_network_service_received-pledges-withdrawals-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "15479720-4c0b-4eda-b15a-00fe5735306c",
                    "startedAt": "2024-09-19T15:17:34.000909Z",
                    "updatedAt": "2024-09-19T15:17:34.217664Z",
                    "timeoutAt": "2024-09-19T15:19:34.000909Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.216755s",
                "maxDuration": "0.216755s",
                "minDuration": "0.216755s"
            }
        },
        {
            "name": "event_service_triggered-auto-transfer-events-handler",
            "statistics": {}
        },
        {
            "name": "envelope_service_bulk_list_sender",
            "statistics": {}
        },
        {
            "name": "wallet_service_xtz-initializing-addresses-handler",
            "statistics": {}
        },
        {
            "name": "request_service_fast-approved-requests-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "f4477bbb-c8ef-4388-ba9f-fd67a8d8dbb8",
                    "startedAt": "2024-09-19T15:17:34.001062Z",
                    "updatedAt": "2024-09-19T15:17:34.270825Z",
                    "timeoutAt": "2024-09-19T15:22:34.001062Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.269763s",
                "maxDuration": "0.269763s",
                "minDuration": "0.269763s"
            }
        },
        {
            "name": "scoreproviders_connectivity",
            "statistics": {}
        },
        {
            "name": "wallet_service_currency-wallets-businessrules-creator",
            "statistics": {}
        },
        {
            "name": "request_service_pending-signed-requests-handler",
            "statistics": {}
        },
        {
            "name": "request_service_created-request-bundles-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "792d3f8f-cc0a-4f6a-9202-e2b6a94f6458",
                    "startedAt": "2024-09-19T15:17:28.000320Z",
                    "updatedAt": "2024-09-19T15:17:28.493472Z",
                    "timeoutAt": "2024-09-19T15:22:28.000320Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.493152s",
                "maxDuration": "0.493152s",
                "minDuration": "0.493152s"
            }
        },
        {
            "name": "rule_service_changes-detector",
            "statistics": {
                "pending": "1"
            }
        },
        {
            "name": "taurus_network_service_participants-synchronizer",
            "statistics": {
                "successes": "2",
                "lastSuccess": {
                    "id": "92c6ca54-3f38-4bdb-8e6a-a909a6a4e002",
                    "startedAt": "2024-09-19T15:17:34.001070Z",
                    "updatedAt": "2024-09-19T15:17:34.558287Z",
                    "timeoutAt": "2024-09-19T15:19:34.001070Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.552200s",
                "maxDuration": "0.557217s",
                "minDuration": "0.547183s"
            }
        },
        {
            "name": "hsm_status",
            "statistics": {}
        },
        {
            "name": "staking_service_merging-icp-neurons-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "ac3643fd-d904-46f8-9033-52d6be2eec0f",
                    "startedAt": "2024-09-19T15:17:29.000372Z",
                    "updatedAt": "2024-09-19T15:17:29.195230Z",
                    "timeoutAt": "2024-09-19T15:22:29.000372Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.194858s",
                "maxDuration": "0.194858s",
                "minDuration": "0.194858s"
            }
        },
        {
            "name": "request_service_creating-request-bundles-handler",
            "statistics": {}
        },
        {
            "name": "action_service_running-actions-handler",
            "statistics": {}
        },
        {
            "name": "request_service_hsmsigned-request-bundles-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "6a9108a9-3403-4083-9d29-37378e959789",
                    "startedAt": "2024-09-19T15:17:28.000314Z",
                    "updatedAt": "2024-09-19T15:17:28.458312Z",
                    "timeoutAt": "2024-09-19T15:22:28.000314Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.457998s",
                "maxDuration": "0.457998s",
                "minDuration": "0.457998s"
            }
        },
        {
            "name": "event_service_on-demand-triggered-auto-transfer-events-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "43472f1d-c0f3-432a-a531-1e425f27d82f",
                    "startedAt": "2024-09-19T15:17:29.000358Z",
                    "updatedAt": "2024-09-19T15:17:29.187490Z",
                    "timeoutAt": "2024-09-19T15:27:29.000358Z",
                    "message": "{\"msg\":\"successfully finished\"}",
                    "status": "success"
                },
                "avgDuration": "0.187132s",
                "maxDuration": "0.187132s",
                "minDuration": "0.187132s"
            }
        },
        {
            "name": "staking_service_cosmoskichain-staking-rewards-refresher",
            "statistics": {}
        },
        {
            "name": "staking_service_staking-states-collection-refresher",
            "statistics": {}
        },
        {
            "name": "currency_service_currencies-refresher",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "64f26800-b46e-44e1-a2e8-75caa1475f19",
                    "startedAt": "2024-09-19T15:17:32.000433Z",
                    "updatedAt": "2024-09-19T15:17:34.853836Z",
                    "timeoutAt": "2024-09-19T15:19:32.000433Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "2.853403s",
                "maxDuration": "2.853403s",
                "minDuration": "2.853403s"
            }
        },
        {
            "name": "request_service_replaced-signed-requests-handler",
            "statistics": {}
        },
        {
            "name": "event_service_initialized-auto-transfer-request-handler",
            "statistics": {}
        },
        {
            "name": "staking_service_observing-icp-neurons-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "b50509b6-b3fa-42f1-9f0e-0606bdd6a9b7",
                    "startedAt": "2024-09-19T15:17:29.000198Z",
                    "updatedAt": "2024-09-19T15:17:29.160628Z",
                    "timeoutAt": "2024-09-19T15:22:29.000198Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.160430s",
                "maxDuration": "0.160430s",
                "minDuration": "0.160430s"
            }
        },
        {
            "name": "staking_service_active-icp-neurons-refresher",
            "statistics": {}
        },
        {
            "name": "request_service_expired-to-cancel-signed-requests-handler",
            "statistics": {}
        },
        {
            "name": "request_service_pending-requests-handler",
            "statistics": {}
        },
        {
            "name": "health_gc",
            "statistics": {}
        },
        {
            "name": "staking_service_dot-staking-withdraw-unbonded-handler",
            "statistics": {}
        },
        {
            "name": "staking_service_near-staking-rewards-refresher",
            "statistics": {}
        },
        {
            "name": "balance_service_balances-garbage-collector",
            "statistics": {}
        },
        {
            "name": "request_service_dot-extrinsics-refresher",
            "statistics": {}
        },
        {
            "name": "blocksd_connectivity",
            "statistics": {}
        },
        {
            "name": "staking_service_disbursing-icp-neurons-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "55e13b63-d887-4135-a484-a6540bf59e3c",
                    "startedAt": "2024-09-19T15:17:29.000388Z",
                    "updatedAt": "2024-09-19T15:17:29.225821Z",
                    "timeoutAt": "2024-09-19T15:22:29.000388Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.225433s",
                "maxDuration": "0.225433s",
                "minDuration": "0.225433s"
            }
        },
        {
            "name": "eventbus_service_event-sequencer",
            "statistics": {}
        },
        {
            "name": "wallet_service_token-wallets-syncer",
            "statistics": {}
        },
        {
            "name": "request_service_hsmsigned-2-requests-handler",
            "statistics": {
                "successes": "2",
                "lastSuccess": {
                    "id": "65d929b2-446e-464b-881c-337990a8dcd2",
                    "startedAt": "2024-09-19T15:17:33.007646Z",
                    "updatedAt": "2024-09-19T15:17:33.160527Z",
                    "timeoutAt": "2024-09-19T15:22:33.007646Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.137156s",
                "maxDuration": "0.152881s",
                "minDuration": "0.121431s"
            }
        },
        {
            "name": "whitelisted_address_score_service_whitelisted-addresses-scores-refresher",
            "statistics": {}
        },
        {
            "name": "transaction_service_token-balances-refresher",
            "statistics": {}
        },
        {
            "name": "balance_service_existential-balance-updates-processor",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "51f53308-970b-424c-8be7-0110b649559e",
                    "startedAt": "2024-09-19T15:17:33.007534Z",
                    "updatedAt": "2024-09-19T15:17:33.143318Z",
                    "timeoutAt": "2024-09-19T15:27:33.007534Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.135784s",
                "maxDuration": "0.135784s",
                "minDuration": "0.135784s"
            }
        },
        {
            "name": "request_service_hsmsigned-requests-handler",
            "statistics": {
                "successes": "2",
                "lastSuccess": {
                    "id": "cc79ce55-6589-4755-918f-7fe8c0a8776a",
                    "startedAt": "2024-09-19T15:17:33.007654Z",
                    "updatedAt": "2024-09-19T15:17:33.153984Z",
                    "timeoutAt": "2024-09-19T15:22:33.007654Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.180099500s",
                "maxDuration": "0.213869s",
                "minDuration": "0.146330s"
            }
        },
        {
            "name": "taurus_network_service_new-shared-addresses-handler",
            "statistics": {}
        },
        {
            "name": "transaction_service_token-balances-garbage-collector",
            "statistics": {}
        },
        {
            "name": "wallet_service_xlm-address-flags-refresher",
            "statistics": {}
        },
        {
            "name": "request_service_hsmready-2-requests-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "b2bdc8a4-860f-4ba1-8e58-b8380b4b1588",
                    "startedAt": "2024-09-19T15:17:28.000300Z",
                    "updatedAt": "2024-09-19T15:17:28.250830Z",
                    "timeoutAt": "2024-09-19T15:22:28.000300Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.250530s",
                "maxDuration": "0.250530s",
                "minDuration": "0.250530s"
            }
        },
        {
            "name": "request_service_broadcasting-2-requests-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "c364881a-8c9e-4054-aedf-ad8fa4fc0f14",
                    "startedAt": "2024-09-19T15:17:28.000354Z",
                    "updatedAt": "2024-09-19T15:17:28.527527Z",
                    "timeoutAt": "2024-09-19T15:22:28.000354Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.527173s",
                "maxDuration": "0.527173s",
                "minDuration": "0.527173s"
            }
        },
        {
            "name": "wallet_service_xtz-ready-for-init-addresses-handler",
            "statistics": {}
        },
        {
            "name": "request_service_action-prepared-requests-handler",
            "statistics": {}
        },
        {
            "name": "request_service_approved-request-bundles-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "af74a54e-afef-4b41-8eb7-edebdb6de7bf",
                    "startedAt": "2024-09-19T15:17:28.000344Z",
                    "updatedAt": "2024-09-19T15:17:28.505626Z",
                    "timeoutAt": "2024-09-19T15:22:28.000344Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.505282s",
                "maxDuration": "0.505282s",
                "minDuration": "0.505282s"
            }
        },
        {
            "name": "taurus_network_service_pledges-stats-refresher",
            "statistics": {}
        },
        {
            "name": "staking_service_sol-staking-info-refresher",
            "statistics": {}
        },
        {
            "name": "staking_service_cosmoshub-staking-rewards-refresher",
            "statistics": {}
        },
        {
            "name": "wallet_service_created-addresses-handler",
            "statistics": {}
        },
        {
            "name": "wallet_service_xlm-existentialbalance-refresher",
            "statistics": {}
        },
        {
            "name": "request_service_bundle-approved-requests-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "5dfa676b-4216-424a-9597-38360ebf5f4d",
                    "startedAt": "2024-09-19T15:17:28.000349Z",
                    "updatedAt": "2024-09-19T15:17:28.514040Z",
                    "timeoutAt": "2024-09-19T15:22:28.000349Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.513691s",
                "maxDuration": "0.513691s",
                "minDuration": "0.513691s"
            }
        },
        {
            "name": "taurus_network_service_addresses-synchronizer",
            "statistics": {
                "successes": "2",
                "lastSuccess": {
                    "id": "560706d0-4bba-4099-817f-00ad8b0dc0da",
                    "startedAt": "2024-09-19T15:17:34.001081Z",
                    "updatedAt": "2024-09-19T15:17:34.496963Z",
                    "timeoutAt": "2024-09-19T15:19:34.001081Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.486808500s",
                "maxDuration": "0.495882s",
                "minDuration": "0.477735s"
            }
        },
        {
            "name": "wallet_service_algo-optin-status-refresher",
            "statistics": {}
        },
        {
            "name": "request_service_opt-ins-releaser",
            "statistics": {}
        },
        {
            "name": "request_service_hsmfailed-requests-handler",
            "statistics": {}
        },
        {
            "name": "staking_service_spawning-icp-neurons-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "477a3c3f-3368-4ab8-8acf-743f5fd35032",
                    "startedAt": "2024-09-19T15:17:29.000403Z",
                    "updatedAt": "2024-09-19T15:17:29.207856Z",
                    "timeoutAt": "2024-09-19T15:22:29.000403Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.207453s",
                "maxDuration": "0.207453s",
                "minDuration": "0.207453s"
            }
        },
        {
            "name": "taurus_network_service_tn-event-tasks-handler",
            "statistics": {}
        },
        {
            "name": "audit_service_trails-ingestor",
            "statistics": {}
        },
        {
            "name": "wallet_service_signed-addresses-handler",
            "statistics": {}
        },
        {
            "name": "request_service_ready-requests-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "cfa5303e-d994-4f7f-8073-85ef34168d81",
                    "startedAt": "2024-09-19T15:17:35.001214Z",
                    "updatedAt": "2024-09-19T15:17:35.222510Z",
                    "timeoutAt": "2024-09-19T15:22:35.001214Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.221296s",
                "maxDuration": "0.221296s",
                "minDuration": "0.221296s"
            }
        },
        {
            "name": "taurus_network_service_request-created-pledges-withdrawal-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "1cbfd620-8cd5-4252-8ad1-344238b13111",
                    "startedAt": "2024-09-19T15:17:29.000343Z",
                    "updatedAt": "2024-09-19T15:17:29.153198Z",
                    "timeoutAt": "2024-09-19T15:19:29.000343Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.152855s",
                "maxDuration": "0.152855s",
                "minDuration": "0.152855s"
            }
        },
        {
            "name": "report_service_counterparty-exposure-monitor",
            "statistics": {}
        },
        {
            "name": "event_service_auto-transfer-events-task-handler",
            "statistics": {}
        },
        {
            "name": "balance_service_funds-releaser",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "82ce753e-f7e1-4d8f-9ed5-461b02b7283f",
                    "startedAt": "2024-09-19T15:17:41.000863Z",
                    "updatedAt": "2024-09-19T15:17:41.332924Z",
                    "timeoutAt": "2024-09-19T15:22:41.000863Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.332061s",
                "maxDuration": "0.332061s",
                "minDuration": "0.332061s"
            }
        },
        {
            "name": "request_service_new-signed-requests-handler",
            "statistics": {}
        },
        {
            "name": "request_service_fast-approved-2-requests-handler",
            "statistics": {
                "pending": "1"
            }
        },
        {
            "name": "blocksd_getbalance",
            "statistics": {}
        },
        {
            "name": "request_service_timeout-signed-requests-handler",
            "statistics": {}
        },
        {
            "name": "request_service_action-auto-prepared-2-requests-handler",
            "statistics": {}
        },
        {
            "name": "transaction_service_transactions-exporter",
            "statistics": {}
        },
        {
            "name": "staking_service_icp-balance-activity-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "62ff9a1d-679a-4c0f-a758-5fd3b05bdddb",
                    "startedAt": "2024-09-19T15:17:29.000408Z",
                    "updatedAt": "2024-09-19T15:17:29.217963Z",
                    "timeoutAt": "2024-09-19T15:22:29.000408Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.217555s",
                "maxDuration": "0.217555s",
                "minDuration": "0.217555s"
            }
        },
        {
            "name": "eventbus_service_event-dispatcher",
            "statistics": {}
        },
        {
            "name": "request_service_expired-requests-handler",
            "statistics": {}
        },
        {
            "name": "request_service_creating-requests-handler",
            "statistics": {}
        },
        {
            "name": "request_service_approved-2-requests-handler",
            "statistics": {}
        },
        {
            "name": "request_service_broadcasting-requests-handler",
            "statistics": {
                "successes": "2",
                "lastSuccess": {
                    "id": "95013799-f84b-4cf4-8d15-f11d117cb5f3",
                    "startedAt": "2024-09-19T15:17:35.001210Z",
                    "updatedAt": "2024-09-19T15:17:36.131533Z",
                    "timeoutAt": "2024-09-19T15:22:35.001210Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "1.579489500s",
                "maxDuration": "2.028656s",
                "minDuration": "1.130323s"
            }
        },
        {
            "name": "gated_proxy",
            "statistics": {}
        },
        {
            "name": "change_service_email-event-task-handler",
            "statistics": {}
        },
        {
            "name": "whitelist_service_verified-wladdress-batch-signatures-handler",
            "statistics": {
                "successes": "3",
                "lastSuccess": {
                    "id": "0719845c-bdc1-4299-92c1-66a69c0ae12a",
                    "startedAt": "2024-09-19T15:17:37.000594Z",
                    "updatedAt": "2024-09-19T15:17:37.141830Z",
                    "timeoutAt": "2024-09-19T15:22:37.000594Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.253901666s",
                "maxDuration": "0.464518s",
                "minDuration": "0.141236s"
            }
        },
        {
            "name": "wallet_service_xlm-trustline-refresher",
            "statistics": {}
        },
        {
            "name": "webhook_service_webhook_caller",
            "statistics": {}
        },
        {
            "name": "envelope_service_status_refresher",
            "statistics": {}
        },
        {
            "name": "taurus_network_service_address-commands-synchronizer",
            "statistics": {
                "successes": "2",
                "lastSuccess": {
                    "id": "41e0ff76-0578-4f28-bba5-0fff3acfaeb0",
                    "startedAt": "2024-09-19T15:17:34.001076Z",
                    "updatedAt": "2024-09-19T15:17:34.416347Z",
                    "timeoutAt": "2024-09-19T15:19:34.001076Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.467332500s",
                "maxDuration": "0.519394s",
                "minDuration": "0.415271s"
            }
        },
        {
            "name": "exchanges_connectivity",
            "statistics": {}
        },
        {
            "name": "exchanges_getbalances",
            "statistics": {}
        },
        {
            "name": "address_score_service_addresses-scores-refresher",
            "statistics": {}
        },
        {
            "name": "staking_service_dissolved-icp-neurons-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "23f6564b-3e5f-44b3-ad34-4e13165ea49e",
                    "startedAt": "2024-09-19T15:17:29.000365Z",
                    "updatedAt": "2024-09-19T15:17:29.202497Z",
                    "timeoutAt": "2024-09-19T15:22:29.000365Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.202132s",
                "maxDuration": "0.202132s",
                "minDuration": "0.202132s"
            }
        },
        {
            "name": "request_service_canceled-signed-requests-handler",
            "statistics": {}
        },
        {
            "name": "transaction_service_populate-transaction-balance",
            "statistics": {}
        },
        {
            "name": "balance_service_balances-history-refresher",
            "statistics": {}
        },
        {
            "name": "action_service_sleeping-actions-handler",
            "statistics": {}
        },
        {
            "name": "staking_service_icp-neurons-creator",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "b02a6a5a-a0b0-48f3-bf1d-a8b49db96dbc",
                    "startedAt": "2024-09-19T15:17:29.000383Z",
                    "updatedAt": "2024-09-19T15:17:29.178576Z",
                    "timeoutAt": "2024-09-19T15:22:29.000383Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.178193s",
                "maxDuration": "0.178193s",
                "minDuration": "0.178193s"
            }
        },
        {
            "name": "balance_service_balances-refresher",
            "statistics": {}
        },
        {
            "name": "balance_service_balances-history-garbage-collector",
            "statistics": {}
        },
        {
            "name": "jobs_webhooks",
            "statistics": {}
        },
        {
            "name": "staking_service_ada-staking-rewards-refresher",
            "statistics": {}
        },
        {
            "name": "statistics_service_statistics-history-refresh",
            "statistics": {}
        },
        {
            "name": "transaction_service_observed-transactions-handler",
            "statistics": {}
        },
        {
            "name": "taurus_network_service_tn-travel-rule-to-send-handler",
            "statistics": {}
        },
        {
            "name": "request_service_approved-requests-handler",
            "statistics": {
                "successes": "2",
                "lastSuccess": {
                    "id": "0a52c125-6a53-4a88-982a-a02145c9d0ae",
                    "startedAt": "2024-09-19T15:17:41.001021Z",
                    "updatedAt": "2024-09-19T15:17:41.204044Z",
                    "timeoutAt": "2024-09-19T15:22:41.001021Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.203443500s",
                "maxDuration": "0.203864s",
                "minDuration": "0.203023s"
            }
        },
        {
            "name": "staking_service_ftm-staking-addresses-refresher",
            "statistics": {}
        },
        {
            "name": "jobs_scorerefresh",
            "statistics": {}
        },
        {
            "name": "staking_service_icp-staking-activity-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "83b89f02-b9ff-4573-8b0b-5007f0f6d2e3",
                    "startedAt": "2024-09-19T15:17:29.000413Z",
                    "updatedAt": "2024-09-19T15:17:29.233457Z",
                    "timeoutAt": "2024-09-19T15:22:29.000413Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.233044s",
                "maxDuration": "0.233044s",
                "minDuration": "0.233044s"
            }
        },
        {
            "name": "transaction_service_processing-transaction-scores-handler",
            "statistics": {}
        },
        {
            "name": "taurus_network_service_confirmedbyowner-pledges-withdrawals-handler",
            "statistics": {
                "successes": "1",
                "lastSuccess": {
                    "id": "e8fd28ef-7f67-493c-b3ed-9ca0616f7952",
                    "startedAt": "2024-09-19T15:17:29.000352Z",
                    "updatedAt": "2024-09-19T15:17:29.171004Z",
                    "timeoutAt": "2024-09-19T15:19:29.000352Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.170652s",
                "maxDuration": "0.170652s",
                "minDuration": "0.170652s"
            }
        },
        {
            "name": "taurus_network_service_pledges-stats-valuation-refresher",
            "statistics": {}
        },
        {
            "name": "daemon_job_status_gc",
            "statistics": {}
        },
        {
            "name": "request_service_dot-extrinsics-garbage-collector",
            "statistics": {}
        },
        {
            "name": "request_service_verified-request-batch-signatures-handler",
            "statistics": {
                "successes": "2",
                "lastSuccess": {
                    "id": "39ab40eb-0a85-4872-a4ca-77420ffc7caf",
                    "startedAt": "2024-09-19T15:17:33.007661Z",
                    "updatedAt": "2024-09-19T15:17:33.166918Z",
                    "timeoutAt": "2024-09-19T15:22:33.007661Z",
                    "message": "null",
                    "status": "success"
                },
                "avgDuration": "0.180617s",
                "maxDuration": "0.201977s",
                "minDuration": "0.159257s"
            }
        }
    ]
}
```

\


## Get Job data from database table

This endpoint requires authentication as the technical user.

***Description*** : Returns values from a row in the `job_statuses` table. The `job_uuid` refers to a single job run. This can be found in logs.

`curl --location "$baseUrl/api/rest/v1/jobs/request_service_approved-requests-handler" \`

```json
{
    "job": {
        "name": "request_service_approved-requests-handler",
        "statistics": {
            "successes": "13",
            "lastSuccess": {
                "id": "dffe5c12-ced9-4590-8257-b715f7ede2f1",
                "startedAt": "2024-09-19T15:20:15.000523Z",
                "updatedAt": "2024-09-19T15:20:15.240831Z",
                "timeoutAt": "2024-09-19T15:25:15.000523Z",
                "message": "null",
                "status": "success"
            },
            "avgDuration": "0.566382384s",
            "maxDuration": "3.628076s",
            "minDuration": "0.128084s"
        }
    }
}
```

## Get Job data by Job UUID

This endpoint requires authentication as the technical user.

***Description*** : Returns values from a row in the` job_statuses` table. The` job_uuid` refers to a single job run. This can be found in logs.

`curl --location "$baseUrl/api/rest/v1/jobs/request_service_approved-requests-handler/status/f8e36233-115c-438e-8893-a404b7a47f95" \`

```json
{
    "status": {
        "id": "f8e36233-115c-438e-8893-a404b7a47f95",
        "startedAt": "2024-09-19T15:27:43.000734Z",
        "updatedAt": "2024-09-19T15:27:44.495347Z",
        "timeoutAt": "2024-09-19T15:32:43.000734Z",
        "message": "null",
        "status": "success"
    }
}
```

# HSM and vaultd specific health checks

## Get HSM status

***Description*** : perform a health check through vaultd and returns HSM status.

`curl --location "$baseUrl/api/rest/v1/hsm/status" \`

```json
{
    "status": "success",
    "hsmReply": {
        "code": "ValidationError",
        "message": "failed to unpack signed_request_envelope: received empty requests envelope"
    }
}
```

## Get HSM version status

***Description*** : perform an health check through vaultd and returns HSM version.

`curl --location "$baseUrl/api/rest/v1/hsm/versions" \`

```json
{
    "hsmVersion": "2.46.1",
    "engineVersion": "2.46.1"
}
```

# Usage of API and authentication

## Authenticate

```json
curl -X POST "https://int-validator-core-crdb.t-bx.io/rjpyber72n6brsdzksotivcm33mw78q4/api/rest/v1/authentication/token" -H "accept: application/json" -H "Content-Type: application/json" -d "{ \"email\": \"team1@bank.com\", \"password\": \"XXXX\"}"
#{"result":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTEsImV4dGVybmFsVXNlcklEIjoidGVhbTFAYmFuay5jb20iLCJ0ZW5hbnRJRCI6MSwiZmlyc3RuYW1lIjoiSm9obiIsImxhc3RuYW1lIjoiVDEiLCJyb2xlcyI6WyJyZXF1ZXN0Y3JlYXRvciIsInJlcXVlc3RhcHByb3ZlciJdLCJlbWFpbCI6InRlYW0xQGJhbmsuY29tIiwiZXhwIjoxNTgyMjAwMTQwLCJpYXQiOjE1ODIxMTM3NDB9.S88CqMcBVKMIEbFstNmUaWnp9QcyfYaIfTAyedinudw"}

export AUTH="Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTEsImV4dGVybmFsVXNlcklEIjoidGVhbTFAYmFuay5jb20iLCJ0ZW5hbnRJRCI6MSwiZmlyc3RuYW1lIjoiSm9obiIsImxhc3RuYW1lIjoiVDEiLCJyb2xlcyI6WyJyZXF1ZXN0Y3JlYXRvciIsInJlcXVlc3RhcHByb3ZlciJdLCJlbWFpbCI6InRlYW0xQGJhbmsuY29tIiwiZXhwIjoxNTgyMjY1MTY0LCJpYXQiOjE1ODIxNzg3NjR9.G0HL5XTy_yinun1LIW9g9cy66_FXdufomZbrG3VmAA0"

```

\


## Get BTC nostro wallet

```bash
curl -H 'Accept: application/json' -H "$AUTH" https://int-validator-core-crdb.t-bx.io/rjpyber72n6brsdzksotivcm33mw78q4/api/rest/v1/wallets/info | jq '.result[] | select(.seed == "btc" and .name == "nostro")'
```

## Get all addresses from a currencies

```Bash
curl -H 'Accept: application/json' -H "$AUTH" https://int-validator-core-crdb.t-bx.io/rjpyber72n6brsdzksotivcm33mw78q4/api/rest/v1/addresses?currency=BTC | jq '.result[] | select(.seed="BTC")'
```

## Get rules and decode the proto

```Bash
curl "https://int-validator-core-crdb.t-bx.io/rjpyber72n6brsdzksotivcm33mw78q4/api/rest/v1/rules" -H "accept: application/json" -H "Content-Type: application/json"  -H "$AUTH" | jq .result.rulesContainer
#"CtMBChljaHJpc3RvcGhlQHRhdXJ1c2dyb3VwLmNoErEBLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFTEpoRVVOTExIZ0k4TGlXSmFlSkdwYUJmZHZnbwpZeUtzalNGeVRNeEVDUi9FKzFxcHpEbE5OdWc3aERQZ0JQcFozWitVOFFXamFLQjRNcmJqMi9rSW1RPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tGgIABArOAQoUc3VwZXJhZG1pbjFAYmFuay5jb20SsgEtLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLQpNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVNMk50emFGaG03eElSM092V3E1Y2hXMy9HRXZXCkwrM3Vxb0U2bEVKMTNlV2J1bHhzUC81aDM2VkNxWURJR04vMHdEZVd3TFlkcHU1SGhTWFdoeENzQ0E9PQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0KGgEDCs4BChRzdXBlcmFkbWluMkBiYW5rLmNvbRKyAS0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tCk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk5ekd1Z3pOTElmcFp1YVVyenl3RWgvOFpkdFgKNElJdUlwREhMdkozNmdsRmpmeHhTWmRPRzZ5SEtGRmxRaDFHWDNPQ0ZaeEhlK3hlT0dCSkhCZ3JhQT09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQoaAQMKzgEKFHN1cGVyYWRtaW4zQGJhbmsuY29tErIBLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVjJ6RUR2WmpKL3FSK1FoMXIwc0tOY2kzOXc3OQpCMDBOZzVNR2c0d1JNN0FoOXByMUdia2dyS0lVZjRrYUhQanJQVmFRS0lSOHpEVTNqZ20wbFd4ZUhBPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tChoBAwrIAQoOdGVhbTFAYmFuay5jb20SsQEtLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLQpNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVMSmhFVU5MTEhnSThMaVdKYWVKR3BhQmZkdmdvCll5S3NqU0Z5VE14RUNSL0UrMXFwekRsTk51ZzdoRFBnQlBwWjNaK1U4UVdqYUtCNE1yYmoyL2tJbVE9PQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0aAgQACscBCg50ZWFtMkBiYW5rLmNvbRKxAS0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tCk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTRVQW8rR054dzR0RXFkbVREaTZ2Mk1acTJ1ZzgKYWpXOC9NbnFKL1FkNGJuaVB5RHZJVHJTRVpVeVA5VHZZcGtMQWJnL0FDeGNSL3lBNmxCRWd0RTYwUT09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLRoBAArHAQoOdGVhbTNAYmFuay5jb20SsQEtLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLQpNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVIaml3VThDd3hQUEYrU3hiVFZPbTdaMW5kOVA2Cm1UYkZDMkZZVVlpU2xBSndmRTd3b003QkFPZzZiOFcweTBKSUpBYyt0MTZWN3pPTVd6c0ZWbWVlNmc9PQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0aAQAK1wEKHXZhbGlkYXRvci1jb3JlQHRhdXJ1c2dyb3VwLmNoErEBLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFWVBYSUI0bXRxeTBBTHVFS2RZQWZRcFdtc0t1NgpEbTVhMDVkY1JVRlc1MkpHazBNNzdlc2FvSHNpSHVHODlxRnF5ZkZJLzJQZjRTL2hMbkhCR1dNbVJnPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tGgIBAhIoCgdfX2dyb3VwEh12YWxpZGF0b3ItY29yZUB0YXVydXNncm91cC5jaBInCgZyZXZpZXcSHXZhbGlkYXRvci1jb3JlQHRhdXJ1c2dyb3VwLmNoEjIKBXRlYW0xEhljaHJpc3RvcGhlQHRhdXJ1c2dyb3VwLmNoEg50ZWFtMUBiYW5rLmNv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"

# Raw decode
echo -n "CtMBChljaHJpc3RvcGhlQHRhdXJ1c2dyb3VwLmNoErEBLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFTEpoRVVOTExIZ0k4TGlXSmFlSkdwYUJmZHZnbwpZeUtzalNGeVRNeEVDUi9FKzFxcHpEbE5OdWc3aERQZ0JQcFozWitVOFFXamFLQjRNcmJqMi9rSW1RPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tGgIABArOAQoUc3VwZXJhZG1pbjFAYmFuay5jb20SsgEtLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLQpNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVNMk50emFGaG03eElSM092V3E1Y2hXMy9HRXZXCkwrM3Vxb0U2bEVKMTNlV2J1bHhzUC81aDM2VkNxWURJR04vMHdEZVd3TFlkcHU1SGhTWFdoeENzQ0E9PQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0KGgEDCs4BChRzdXBlcmFkbWluMkBiYW5rLmNvbRKyAS0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tCk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk5ekd1Z3pOTElmcFp1YVVyenl3RWgvOFpkdFgKNElJdUlwREhMdkozNmdsRmpmeHhTWmRPRzZ5SEtGRmxRaDFHWDNPQ0ZaeEhlK3hlT0dCSkhCZ3JhQT09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQoaAQMKzgEKFHN1cGVyYWRtaW4zQGJhbmsuY29tErIBLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVjJ6RUR2WmpKL3FSK1FoMXIwc0tOY2kzOXc3OQpCMDBOZzVNR2c0d1JNN0FoOXByMUdia2dyS0lVZjRrYUhQanJQVmFRS0lSOHpEVTNqZ20wbFd4ZUhBPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tChoBAwrIAQoOdGVhbTFAYmFuay5jb20SsQEtLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLQpNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVMSmhFVU5MTEhnSThMaVdKYWVKR3BhQmZkdmdvCll5S3NqU0Z5VE14RUNSL0UrMXFwekRsTk51ZzdoRFBnQlBwWjNaK1U4UVdqYUtCNE1yYmoyL2tJbVE9PQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0aAgQACscBCg50ZWFtMkBiYW5rLmNvbRKxAS0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tCk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTRVQW8rR054dzR0RXFkbVREaTZ2Mk1acTJ1ZzgKYWpXOC9NbnFKL1FkNGJuaVB5RHZJVHJTRVpVeVA5VHZZcGtMQWJnL0FDeGNSL3lBNmxCRWd0RTYwUT09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLRoBAArHAQoOdGVhbTNAYmFuay5jb20SsQEtLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLQpNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVIaml3VThDd3hQUEYrU3hiVFZPbTdaMW5kOVA2Cm1UYkZDMkZZVVlpU2xBSndmRTd3b003QkFPZzZiOFcweTBKSUpBYyt0MTZWN3pPTVd6c0ZWbWVlNmc9PQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0aAQAK1wEKHXZhbGlkYXRvci1jb3JlQHRhdXJ1c2dyb3VwLmNoErEBLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFWVBYSUI0bXRxeTBBTHVFS2RZQWZRcFdtc0t1NgpEbTVhMDVkY1JVRlc1MkpHazBNNzdlc2FvSHNpSHVHODlxRnF5ZkZJLzJQZjRTL2hMbkhCR1dNbVJnPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tGgIBAhIoCgdfX2dyb3VwEh12YWxpZGF0b3ItY29yZUB0YXVydXNncm91cC5jaBInCgZyZXZpZXcSHXZhbGlkYXRvci1jb3JlQHRhdXJ1c2dyb3VwLmNoEjIKBXRlYW0xEhljaHJpc3RvcGhlQHRhdXJ1c2dyb3VwLmNoEg50ZWFtMUBiYW5rLmNv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" | base64 -d | protoc --decode_raw

#Using proto file
echo -n "CtMBChljaHJpc3RvcGhlQHRhdXJ1c2dyb3VwLmNoErEBLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFTEpoRVVOTExIZ0k4TGlXSmFlSkdwYUJmZHZnbwpZeUtzalNGeVRNeEVDUi9FKzFxcHpEbE5OdWc3aERQZ0JQcFozWitVOFFXamFLQjRNcmJqMi9rSW1RPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tGgIABArOAQoUc3VwZXJhZG1pbjFAYmFuay5jb20SsgEtLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLQpNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVNMk50emFGaG03eElSM092V3E1Y2hXMy9HRXZXCkwrM3Vxb0U2bEVKMTNlV2J1bHhzUC81aDM2VkNxWURJR04vMHdEZVd3TFlkcHU1SGhTWFdoeENzQ0E9PQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0KGgEDCs4BChRzdXBlcmFkbWluMkBiYW5rLmNvbRKyAS0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tCk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk5ekd1Z3pOTElmcFp1YVVyenl3RWgvOFpkdFgKNElJdUlwREhMdkozNmdsRmpmeHhTWmRPRzZ5SEtGRmxRaDFHWDNPQ0ZaeEhlK3hlT0dCSkhCZ3JhQT09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLQoaAQMKzgEKFHN1cGVyYWRtaW4zQGJhbmsuY29tErIBLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVjJ6RUR2WmpKL3FSK1FoMXIwc0tOY2kzOXc3OQpCMDBOZzVNR2c0d1JNN0FoOXByMUdia2dyS0lVZjRrYUhQanJQVmFRS0lSOHpEVTNqZ20wbFd4ZUhBPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tChoBAwrIAQoOdGVhbTFAYmFuay5jb20SsQEtLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLQpNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVMSmhFVU5MTEhnSThMaVdKYWVKR3BhQmZkdmdvCll5S3NqU0Z5VE14RUNSL0UrMXFwekRsTk51ZzdoRFBnQlBwWjNaK1U4UVdqYUtCNE1yYmoyL2tJbVE9PQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0aAgQACscBCg50ZWFtMkBiYW5rLmNvbRKxAS0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tCk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTRVQW8rR054dzR0RXFkbVREaTZ2Mk1acTJ1ZzgKYWpXOC9NbnFKL1FkNGJuaVB5RHZJVHJTRVpVeVA5VHZZcGtMQWJnL0FDeGNSL3lBNmxCRWd0RTYwUT09Ci0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLRoBAArHAQoOdGVhbTNAYmFuay5jb20SsQEtLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLQpNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVIaml3VThDd3hQUEYrU3hiVFZPbTdaMW5kOVA2Cm1UYkZDMkZZVVlpU2xBSndmRTd3b003QkFPZzZiOFcweTBKSUpBYyt0MTZWN3pPTVd6c0ZWbWVlNmc9PQotLS0tLUVORCBQVUJMSUMgS0VZLS0tLS0aAQAK1wEKHXZhbGlkYXRvci1jb3JlQHRhdXJ1c2dyb3VwLmNoErEBLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0KTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFWVBYSUI0bXRxeTBBTHVFS2RZQWZRcFdtc0t1NgpEbTVhMDVkY1JVRlc1MkpHazBNNzdlc2FvSHNpSHVHODlxRnF5ZkZJLzJQZjRTL2hMbkhCR1dNbVJnPT0KLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tGgIBAhIoCgdfX2dyb3VwEh12YWxpZGF0b3ItY29yZUB0YXVydXNncm91cC5jaBInCgZyZXZpZXcSHXZhbGlkYXRvci1jb3JlQHRhdXJ1c2dyb3VwLmNoEjIKBXRlYW0xEhljaHJpc3RvcGhlQHRhdXJ1c2dyb3VwLmNoEg50ZWFtMUBiYW5rLmNv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" | base64 -d | protoc --decode tgvalidatord.Rules rule.proto
```

\


# Health checks in Taurus-EXPLORERS

Taurus-EXPLORERS is exposing Health checks through the same API endpoint:

[https://explorers.t-dx.com/api/rest/v1/health/all](https://explorers.t-dx.com/api/rest/v1/health/all)

You will get a list of different checks per blockchain:

* height, giving you node head and what is currently stored in Explorers
* indexing
* collections:
  * balance
  * collection\_erc\_token\_balance
  * staking
  * opt-in.

## Taurus-EXPLORERS Health checks description

### Height

The `height` health check ensures that the latest block processed by blocksd, and stored in blocksd internal database, is not more than `acceptableLateBlock` behind the current blockchain1 height in terms of blocks2.  can be set in `blocksd` configuration `yml` file as such:

```json
<coin>:
        enabled: true
        ...
        healthchecks:
          height:
            options:
              acceptable_late_block: <Acceptable number of blocks of delay>
```

\


**1 Note**: the blockchain node connected to the blocksd instance is used as source of truth for querying the blockchain state.

**2 Note**: only for BTC, if indexing the testnet network, the check additionally verifies that, if behind more than acceptableLateBlock blocks, blocksd is still not more than acceptableLateBlockDelaylate with respect to the timestamp of the latest block of the blockchain.

### Indexing

### Collections

## Taurus-Explorer Health checks list

Here is a non-exhaustive list of available checks for each enabled coin:

```json
{
  "b2da5a7e-49a5-4c03-9469-7428d0df7dd8": {
    "ada": [
      "collection_stake",
      "height",
      "indexing"
    ],
    "algo": [
      "collection_balance",
      "collection_optin",
      "height",
      "indexing"
    ],
    "avalanche-c": [
      "collection_balance",
      "collection_erc_token_balance",
      "height",
      "indexing"
    ],
    "avalanche-c_erc": [
      "height",
      "indexing"
    ],
    "bch": [
      "height",
      "indexing"
    ],
    "btc": [
      "height",
      "indexing"
    ],
    "cosmos": [
      "collection_balance",
      "collection_stake",
      "height",
      "indexing"
    ],
    "dot": [
      "collection_balance",
      "collection_stake",
      "height",
      "indexing"
    ],
    "erc20": [
      "height",
      "indexing"
    ],
    "eth": [
      "collection_balance",
      "collection_erc_token_balance",
      "height",
      "indexing"
    ],
    "ftm": [
      "collection_balance",
      "collection_stake",
      "height",
      "indexing"
    ],
    "icp": [
      "collection_balance",
      "height",
      "indexing"
    ],
    "kichain": [
      "collection_balance",
      "collection_stake",
      "height",
      "indexing"
    ],
    "ltc": [
      "height",
      "indexing"
    ],
    "near": [
      "collection_balance",
      "collection_stake",
      "height",
      "indexing"
    ],
    "polygon": [
      "collection_balance",
      "collection_erc_token_balance",
      "height",
      "indexing"
    ],
    "polygon_erc20": [
      "height",
      "indexing"
    ],
    "sol": [
      "collection_balance",
      "height",
      "indexing"
    ],
    "xlm": [
      "collection_address_flags",
      "collection_balance",
      "collection_minimum_balance",
      "collection_trustline",
      "height",
      "indexing"
    ],
    "xrp": [
      "collection_balance",
      "height",
      "indexing"
    ],
    "xtz": [
      "collection_balance",
      "collection_fa_token_balance",
      "collection_revelation",
      "collection_stake",
      "height",
      "indexing"
    ]
  }
}
```

Jobs perform component health checks and produce health reports. For any of these endpoints, you can get those common values:

* "componentName": name of the component
* "componentId": unique ID for the component (can be retrieved from the logs)
* "group": group to whom the healthcheck belongs to, generally a blockchain
* "healthCheck": type of health check
* "status": status of the executed call
* "report":
  * "name": group name
  * "status": status of the executed call
  * “msg”: an output message of the health check call
  * “duration": duration of the call
* "lastUpdateDate": when was the health check executed
* "validUntilDate": until when this health check will be valid.

### Get Explorers health check list

***Description*** : Performs a complete health check on Explorers.

`curl --location "https://explorers.t-dx.com/api/rest/v1/health/all"`

```json
{
  "b2da5a7e-49a5-4c03-9469-7428d0df7dd8": {
    "ada": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "ada",
        "health_check": "collection_stake",
        "status": "success",
        "report": {
          "name": "collection_stake",
          "status": "success",
          "msg": "origin: 10901922 - transition: 10901922 - state: 10901921",
          "duration": "15.656263ms"
        },
        "last_updated": "2024-09-30T12:26:58.160705Z",
        "valid_until": "2024-09-30T12:27:58.160705Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "ada",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 10901922 - stored = 10901922",
          "duration": "3.276187ms"
        },
        "last_updated": "2024-09-30T12:26:58.100408Z",
        "valid_until": "2024-09-30T12:27:58.100408Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "ada",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:26:28.302769 +0000 UTC",
          "duration": "2.924119ms"
        },
        "last_updated": "2024-09-30T12:26:58.219418Z",
        "valid_until": "2024-09-30T12:27:58.219418Z"
      }
    ],
    "algo": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "algo",
        "health_check": "collection_balance",
        "status": "success",
        "report": {
          "name": "collection_balance",
          "status": "success",
          "msg": "origin: 43015433 - transition: 43015433 - state: 43015423",
          "duration": "7.954013ms"
        },
        "last_updated": "2024-09-30T12:26:58.122214Z",
        "valid_until": "2024-09-30T12:27:58.122214Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "algo",
        "health_check": "collection_optin",
        "status": "success",
        "report": {
          "name": "collection_optin",
          "status": "success",
          "msg": "origin: 43015433 - transition: 43015433 - state: 43015423",
          "duration": "9.873035ms"
        },
        "last_updated": "2024-09-30T12:26:58.029549Z",
        "valid_until": "2024-09-30T12:27:58.029549Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "algo",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 43015444 - stored = 43015433",
          "duration": "6.895481ms"
        },
        "last_updated": "2024-09-30T12:26:58.06287Z",
        "valid_until": "2024-09-30T12:27:58.06287Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "algo",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:26:58.25241 +0000 UTC",
          "duration": "5.644487ms"
        },
        "last_updated": "2024-09-30T12:26:58.259502Z",
        "valid_until": "2024-09-30T12:27:58.259502Z"
      }
    ],
    "avalanche-c": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "avalanche-c",
        "health_check": "collection_balance",
        "status": "success",
        "report": {
          "name": "collection_balance",
          "status": "success",
          "msg": "origin: 51185876 - transition: 51185876 - state: 51185862",
          "duration": "9.889193ms"
        },
        "last_updated": "2024-09-30T12:26:59.324761Z",
        "valid_until": "2024-09-30T12:27:59.324761Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "avalanche-c",
        "health_check": "collection_erc_token_balance",
        "status": "success",
        "report": {
          "name": "collection_erc_token_balance",
          "status": "success",
          "msg": "origin: 51185876 - transition: 51185876 - state: 51185862",
          "duration": "7.891583ms"
        },
        "last_updated": "2024-09-30T12:26:59.235297Z",
        "valid_until": "2024-09-30T12:27:59.235297Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "avalanche-c",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 51185876 - stored = 51185876",
          "duration": "3.167969ms"
        },
        "last_updated": "2024-09-30T12:26:59.262947Z",
        "valid_until": "2024-09-30T12:27:59.262947Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "avalanche-c",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:26:58.849936 +0000 UTC",
          "duration": "2.616072ms"
        },
        "last_updated": "2024-09-30T12:26:59.533744Z",
        "valid_until": "2024-09-30T12:27:59.533744Z"
      }
    ],
    "avalanche-c_erc": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "avalanche-c_erc",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 51185876 - stored = 51185876",
          "duration": "2.475927ms"
        },
        "last_updated": "2024-09-30T12:26:59.578089Z",
        "valid_until": "2024-09-30T12:27:59.578089Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "avalanche-c_erc",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:26:58.849936 +0000 UTC",
          "duration": "3.016761ms"
        },
        "last_updated": "2024-09-30T12:26:59.338591Z",
        "valid_until": "2024-09-30T12:27:59.338591Z"
      }
    ],
    "bch": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "bch",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 865706 - stored = 865706",
          "duration": "3.880846ms"
        },
        "last_updated": "2024-09-30T12:26:59.258405Z",
        "valid_until": "2024-09-30T12:27:59.258405Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "bch",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 10:50:30.428415 +0000 UTC",
          "duration": "2.370063ms"
        },
        "last_updated": "2024-09-30T12:26:59.22003Z",
        "valid_until": "2024-09-30T12:27:59.22003Z"
      }
    ],
    "btc": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "btc",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 863493 - stored = 863493",
          "duration": "2.539463ms"
        },
        "last_updated": "2024-09-30T12:26:59.310171Z",
        "valid_until": "2024-09-30T12:27:59.310171Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "btc",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:25:09.704364 +0000 UTC",
          "duration": "2.541993ms"
        },
        "last_updated": "2024-09-30T12:26:59.327878Z",
        "valid_until": "2024-09-30T12:27:59.327878Z"
      }
    ],
    "cosmos": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "cosmos",
        "health_check": "collection_balance",
        "status": "success",
        "report": {
          "name": "collection_balance",
          "status": "success",
          "msg": "origin: 22412980 - transition: 22412975 - state: 22412973",
          "duration": "11.952833ms"
        },
        "last_updated": "2024-09-30T12:26:59.374556Z",
        "valid_until": "2024-09-30T12:27:59.374556Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "cosmos",
        "health_check": "collection_stake",
        "status": "success",
        "report": {
          "name": "collection_stake",
          "status": "success",
          "msg": "origin: 22412980 - transition: 22412977 - state: 22412975",
          "duration": "21.55858ms"
        },
        "last_updated": "2024-09-30T12:26:59.5915Z",
        "valid_until": "2024-09-30T12:27:59.5915Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "cosmos",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 22412991 - stored = 22412979",
          "duration": "9.94614ms"
        },
        "last_updated": "2024-09-30T12:26:59.133378Z",
        "valid_until": "2024-09-30T12:27:59.133378Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "cosmos",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:26:59.18444 +0000 UTC",
          "duration": "2.51862ms"
        },
        "last_updated": "2024-09-30T12:26:59.273108Z",
        "valid_until": "2024-09-30T12:27:59.273108Z"
      }
    ],
    "dot": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "dot",
        "health_check": "collection_balance",
        "status": "success",
        "report": {
          "name": "collection_balance",
          "status": "success",
          "msg": "origin: 22761581 - transition: 22761579 - state: 22761579",
          "duration": "7.747732ms"
        },
        "last_updated": "2024-09-30T12:26:59.562101Z",
        "valid_until": "2024-09-30T12:27:59.562101Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "dot",
        "health_check": "collection_stake",
        "status": "success",
        "report": {
          "name": "collection_stake",
          "status": "success",
          "msg": "origin: 22761579 - transition: 22761579 - state: 22761579",
          "duration": "7.680209ms"
        },
        "last_updated": "2024-09-30T12:26:59.272951Z",
        "valid_until": "2024-09-30T12:27:59.272951Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "dot",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 22761583 - stored = 22761580",
          "duration": "2.312038ms"
        },
        "last_updated": "2024-09-30T12:26:59.349798Z",
        "valid_until": "2024-09-30T12:27:59.349798Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "dot",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:26:30.090885 +0000 UTC",
          "duration": "2.558285ms"
        },
        "last_updated": "2024-09-30T12:26:59.136904Z",
        "valid_until": "2024-09-30T12:27:59.136904Z"
      }
    ],
    "erc20": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "erc20",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 20863460 - stored = 20863459",
          "duration": "4.781924ms"
        },
        "last_updated": "2024-09-30T12:26:30.24858Z",
        "valid_until": "2024-09-30T12:27:30.24858Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "erc20",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:26:30.480647 +0000 UTC",
          "duration": "2.447337ms"
        },
        "last_updated": "2024-09-30T12:26:30.582879Z",
        "valid_until": "2024-09-30T12:27:30.582879Z"
      }
    ],
    "eth": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "eth",
        "health_check": "collection_balance",
        "status": "success",
        "report": {
          "name": "collection_balance",
          "status": "success",
          "msg": "origin: 20863461 - transition: 20863461 - state: 20863460",
          "duration": "10.483733ms"
        },
        "last_updated": "2024-09-30T12:27:00.335115Z",
        "valid_until": "2024-09-30T12:28:00.335115Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "eth",
        "health_check": "collection_erc_token_balance",
        "status": "success",
        "report": {
          "name": "collection_erc_token_balance",
          "status": "success",
          "msg": "origin: 20863460 - transition: 20863459 - state: 20863457",
          "duration": "15.386944ms"
        },
        "last_updated": "2024-09-30T12:26:30.644785Z",
        "valid_until": "2024-09-30T12:27:30.644785Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "eth",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 20863460 - stored = 20863460",
          "duration": "2.376784ms"
        },
        "last_updated": "2024-09-30T12:26:30.535317Z",
        "valid_until": "2024-09-30T12:27:30.535317Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "eth",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:26:18.535741 +0000 UTC",
          "duration": "2.36082ms"
        },
        "last_updated": "2024-09-30T12:26:30.175286Z",
        "valid_until": "2024-09-30T12:27:30.175286Z"
      }
    ],
    "ftm": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "ftm",
        "health_check": "collection_balance",
        "status": "success",
        "report": {
          "name": "collection_balance",
          "status": "success",
          "msg": "origin: 93124151 - transition: 93124151 - state: 93124148",
          "duration": "23.693207ms"
        },
        "last_updated": "2024-09-30T12:26:30.331884Z",
        "valid_until": "2024-09-30T12:27:30.331884Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "ftm",
        "health_check": "collection_stake",
        "status": "success",
        "report": {
          "name": "collection_stake",
          "status": "success",
          "msg": "origin: 93124159 - transition: 93124151 - state: 93124151",
          "duration": "10.982365ms"
        },
        "last_updated": "2024-09-30T12:26:30.646231Z",
        "valid_until": "2024-09-30T12:27:30.646231Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "ftm",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 93124186 - stored = 93124151",
          "duration": "7.942245ms"
        },
        "last_updated": "2024-09-30T12:26:30.214153Z",
        "valid_until": "2024-09-30T12:27:30.214153Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "ftm",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:26:03.028899 +0000 UTC",
          "duration": "3.313742ms"
        },
        "last_updated": "2024-09-30T12:26:30.190341Z",
        "valid_until": "2024-09-30T12:27:30.190341Z"
      }
    ],
    "icp": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "icp",
        "health_check": "collection_balance",
        "status": "success",
        "report": {
          "name": "collection_balance",
          "status": "success",
          "msg": "origin: 14622892 - transition: 14622892 - state: 14622888",
          "duration": "7.543388ms"
        },
        "last_updated": "2024-09-30T12:26:31.463355Z",
        "valid_until": "2024-09-30T12:27:31.463355Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "icp",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 14622893 - stored = 14622892",
          "duration": "48.001043ms"
        },
        "last_updated": "2024-09-30T12:26:31.074633Z",
        "valid_until": "2024-09-30T12:27:31.074633Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "icp",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:26:17.6752 +0000 UTC",
          "duration": "4.839778ms"
        },
        "last_updated": "2024-09-30T12:26:31.412959Z",
        "valid_until": "2024-09-30T12:27:31.412959Z"
      }
    ],
    "kichain": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "kichain",
        "health_check": "collection_balance",
        "status": "success",
        "report": {
          "name": "collection_balance",
          "status": "success",
          "msg": "origin: 22912203 - transition: 22912200 - state: 22912199",
          "duration": "16.285997ms"
        },
        "last_updated": "2024-09-30T12:26:59.16506Z",
        "valid_until": "2024-09-30T12:27:59.16506Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "kichain",
        "health_check": "collection_stake",
        "status": "success",
        "report": {
          "name": "collection_stake",
          "status": "success",
          "msg": "origin: 22912203 - transition: 22912200 - state: 22912197",
          "duration": "11.613437ms"
        },
        "last_updated": "2024-09-30T12:26:59.308364Z",
        "valid_until": "2024-09-30T12:27:59.308364Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "kichain",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 22912216 - stored = 22912203",
          "duration": "40.424513ms"
        },
        "last_updated": "2024-09-30T12:26:59.343433Z",
        "valid_until": "2024-09-30T12:27:59.343433Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "kichain",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:26:44.737035 +0000 UTC",
          "duration": "1.414255ms"
        },
        "last_updated": "2024-09-30T12:26:59.331987Z",
        "valid_until": "2024-09-30T12:27:59.331987Z"
      }
    ],
    "ltc": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "ltc",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 2765292 - stored = 2765292",
          "duration": "2.624092ms"
        },
        "last_updated": "2024-09-30T12:27:00.334233Z",
        "valid_until": "2024-09-30T12:28:00.334233Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "ltc",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:24:35.647494 +0000 UTC",
          "duration": "1.602564ms"
        },
        "last_updated": "2024-09-30T12:26:30.546518Z",
        "valid_until": "2024-09-30T12:27:30.546518Z"
      }
    ],
    "near": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "near",
        "health_check": "collection_balance",
        "status": "success",
        "report": {
          "name": "collection_balance",
          "status": "success",
          "msg": "origin: 128749904 - transition: 128749904 - state: 128749904",
          "duration": "15.459927ms"
        },
        "last_updated": "2024-09-30T12:26:31.508135Z",
        "valid_until": "2024-09-30T12:27:31.508135Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "near",
        "health_check": "collection_stake",
        "status": "success",
        "report": {
          "name": "collection_stake",
          "status": "success",
          "msg": "origin: 128749904 - transition: 128749904 - state: 128749904",
          "duration": "12.667665ms"
        },
        "last_updated": "2024-09-30T12:26:31.457431Z",
        "valid_until": "2024-09-30T12:27:31.457431Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "near",
        "health_check": "height",
        "status": "failure",
        "report": {
          "name": "height",
          "status": "failure",
          "msg": "too many blocks of difference: head = 129237050 - stored = 128749904",
          "duration": "0s"
        },
        "last_updated": "2024-09-30T12:26:31.430092Z",
        "valid_until": "2024-09-30T12:27:31.430092Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "near",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "duration": "11.857661ms"
        },
        "last_updated": "2024-09-30T12:26:31.426406Z",
        "valid_until": "2024-09-30T12:27:31.426406Z"
      }
    ],
    "polygon": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "polygon",
        "health_check": "collection_balance",
        "status": "success",
        "report": {
          "name": "collection_balance",
          "status": "success",
          "msg": "origin: 62460466 - transition: 62460466 - state: 62460466",
          "duration": "8.811681ms"
        },
        "last_updated": "2024-09-30T12:26:31.470069Z",
        "valid_until": "2024-09-30T12:27:31.470069Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "polygon",
        "health_check": "collection_erc_token_balance",
        "status": "success",
        "report": {
          "name": "collection_erc_token_balance",
          "status": "success",
          "msg": "origin: 62460466 - transition: 62460466 - state: 62460466",
          "duration": "13.42405ms"
        },
        "last_updated": "2024-09-30T12:26:31.434027Z",
        "valid_until": "2024-09-30T12:27:31.434027Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "polygon",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 62460474 - stored = 62460466",
          "duration": "2.856134ms"
        },
        "last_updated": "2024-09-30T12:26:31.539436Z",
        "valid_until": "2024-09-30T12:27:31.539436Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "polygon",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:26:03.995027 +0000 UTC",
          "duration": "5.543636ms"
        },
        "last_updated": "2024-09-30T12:26:31.184084Z",
        "valid_until": "2024-09-30T12:27:31.184084Z"
      }
    ],
    "polygon_erc20": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "polygon_erc20",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 62460474 - stored = 62460466",
          "duration": "3.258594ms"
        },
        "last_updated": "2024-09-30T12:26:31.436623Z",
        "valid_until": "2024-09-30T12:27:31.436623Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "polygon_erc20",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:26:03.995027 +0000 UTC",
          "duration": "3.439443ms"
        },
        "last_updated": "2024-09-30T12:26:31.158233Z",
        "valid_until": "2024-09-30T12:27:31.158233Z"
      }
    ],
    "sol": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "sol",
        "health_check": "collection_balance",
        "status": "success",
        "report": {
          "name": "collection_balance",
          "status": "success",
          "msg": "origin: 292885767 - transition: 292885743 - state: 292885741",
          "duration": "17.642318ms"
        },
        "last_updated": "2024-09-30T12:26:30.479322Z",
        "valid_until": "2024-09-30T12:27:30.479322Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "sol",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 292885816 - stored = 292885767",
          "duration": "25.019604ms"
        },
        "last_updated": "2024-09-30T12:26:30.460048Z",
        "valid_until": "2024-09-30T12:27:30.460048Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "sol",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:26:47.565476 +0000 UTC",
          "duration": "3.714135ms"
        },
        "last_updated": "2024-09-30T12:27:00.012641Z",
        "valid_until": "2024-09-30T12:28:00.012641Z"
      }
    ],
    "xlm": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "xlm",
        "health_check": "collection_address_flags",
        "status": "success",
        "report": {
          "name": "collection_address_flags",
          "status": "success",
          "msg": "origin: 53731525 - transition: 53731525 - state: 53731520",
          "duration": "33.488651ms"
        },
        "last_updated": "2024-09-30T12:26:30.393913Z",
        "valid_until": "2024-09-30T12:27:30.393913Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "xlm",
        "health_check": "collection_balance",
        "status": "success",
        "report": {
          "name": "collection_balance",
          "status": "success",
          "msg": "origin: 53731531 - transition: 53731528 - state: 53731528",
          "duration": "10.430458ms"
        },
        "last_updated": "2024-09-30T12:27:00.348572Z",
        "valid_until": "2024-09-30T12:28:00.348572Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "xlm",
        "health_check": "collection_minimum_balance",
        "status": "success",
        "report": {
          "name": "collection_minimum_balance",
          "status": "success",
          "msg": "origin: 53731526 - transition: 53731525 - state: 53731523",
          "duration": "10.073337ms"
        },
        "last_updated": "2024-09-30T12:26:30.656785Z",
        "valid_until": "2024-09-30T12:27:30.656785Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "xlm",
        "health_check": "collection_trustline",
        "status": "success",
        "report": {
          "name": "collection_trustline",
          "status": "success",
          "msg": "origin: 53731525 - transition: 53731523 - state: 53731523",
          "duration": "13.985482ms"
        },
        "last_updated": "2024-09-30T12:26:30.527125Z",
        "valid_until": "2024-09-30T12:27:30.527125Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "xlm",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 53731528 - stored = 53731525",
          "duration": "3.158331ms"
        },
        "last_updated": "2024-09-30T12:26:30.489839Z",
        "valid_until": "2024-09-30T12:27:30.489839Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "xlm",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:26:15.850239 +0000 UTC",
          "duration": "1.453988ms"
        },
        "last_updated": "2024-09-30T12:26:30.270571Z",
        "valid_until": "2024-09-30T12:27:30.270571Z"
      }
    ],
    "xrp": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "xrp",
        "health_check": "collection_balance",
        "status": "success",
        "report": {
          "name": "collection_balance",
          "status": "success",
          "msg": "origin: 91101537 - transition: 91101532 - state: 91101530",
          "duration": "10.108787ms"
        },
        "last_updated": "2024-09-30T12:26:31.449387Z",
        "valid_until": "2024-09-30T12:27:31.449387Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "xrp",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 91101537 - stored = 91101537",
          "duration": "2.362041ms"
        },
        "last_updated": "2024-09-30T12:26:31.452989Z",
        "valid_until": "2024-09-30T12:27:31.452989Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "xrp",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:26:30.591544 +0000 UTC",
          "duration": "2.191931ms"
        },
        "last_updated": "2024-09-30T12:26:31.515733Z",
        "valid_until": "2024-09-30T12:27:31.515733Z"
      }
    ],
    "xtz": [
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "xtz",
        "health_check": "collection_balance",
        "status": "success",
        "report": {
          "name": "collection_balance",
          "status": "success",
          "msg": "origin: 6727915 - transition: 6727915 - state: 6727915",
          "duration": "7.677945ms"
        },
        "last_updated": "2024-09-30T12:26:31.506351Z",
        "valid_until": "2024-09-30T12:27:31.506351Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "xtz",
        "health_check": "collection_fa_token_balance",
        "status": "success",
        "report": {
          "name": "collection_fa_token_balance",
          "status": "success",
          "msg": "origin: 6727915 - transition: 6727915 - state: 6727915",
          "duration": "8.730518ms"
        },
        "last_updated": "2024-09-30T12:26:31.539769Z",
        "valid_until": "2024-09-30T12:27:31.539769Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "xtz",
        "health_check": "collection_revelation",
        "status": "success",
        "report": {
          "name": "collection_revelation",
          "status": "success",
          "msg": "origin: 6727915 - transition: 6727915 - state: 6727915",
          "duration": "13.22616ms"
        },
        "last_updated": "2024-09-30T12:26:31.555236Z",
        "valid_until": "2024-09-30T12:27:31.555236Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "xtz",
        "health_check": "collection_stake",
        "status": "success",
        "report": {
          "name": "collection_stake",
          "status": "success",
          "msg": "origin: 6727915 - transition: 6727915 - state: 6727915",
          "duration": "7.554799ms"
        },
        "last_updated": "2024-09-30T12:26:31.527513Z",
        "valid_until": "2024-09-30T12:27:31.527513Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "xtz",
        "health_check": "height",
        "status": "success",
        "report": {
          "name": "height",
          "status": "success",
          "msg": "head = 6727918 - stored = 6727915",
          "duration": "3.97178ms"
        },
        "last_updated": "2024-09-30T12:26:31.297507Z",
        "valid_until": "2024-09-30T12:27:31.297507Z"
      },
      {
        "component_name": "tg-blocksd",
        "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",
        "group": "xtz",
        "health_check": "indexing",
        "status": "success",
        "report": {
          "name": "indexing",
          "status": "success",
          "msg": "last block inserted: 2024-09-30 12:26:03.242311 +0000 UTC",
          "duration": "2.235673ms"
        },
        "last_updated": "2024-09-30T12:26:31.483913Z",
        "valid_until": "2024-09-30T12:27:31.483913Z"
      }
    ]
  }
}
```

### Get Explorers health checks for a specific group

***Description***: Performs a health check on a specific group of monitored activities.

Example with FANTOM group:

`curl --location "https://explorers.t-dx.com/api/rest/v1/health/ftm" \`

```json
[
  {
    "component_name": "tg-blocksd",
    "component_id": "fea89272-125e-4108-aa78-2153bf11e6c7",
    "group": "ftm",
    "health_check": "collection_balance",
    "status": "success",
    "report": {
      "name": "collection_balance",
      "status": "success",
      "msg": "origin: 93125974 - transition: 93125960 - state: 93125954",
      "duration": "125.03325ms"
    },
    "last_updated": "2024-09-30T12:51:29.565395Z",
    "valid_until": "2024-09-30T12:52:29.565395Z"
  },
  {
    "component_name": "tg-blocksd",
    "component_id": "fea89272-125e-4108-aa78-2153bf11e6c7",
    "group": "ftm",
    "health_check": "collection_stake",
    "status": "success",
    "report": {
      "name": "collection_stake",
      "status": "success",
      "msg": "origin: 93125974 - transition: 93125964 - state: 93125957",
      "duration": "53.552833ms"
    },
    "last_updated": "2024-09-30T12:51:29.60308Z",
    "valid_until": "2024-09-30T12:52:29.60308Z"
  },
  {
    "component_name": "tg-blocksd",
    "component_id": "fea89272-125e-4108-aa78-2153bf11e6c7",
    "group": "ftm",
    "health_check": "height",
    "status": "success",
    "report": {
      "name": "height",
      "status": "success",
      "msg": "tg-blocksd: 93125974 - node: 93125976",
      "duration": "5.141143ms"
    },
    "last_updated": "2024-09-30T12:51:29.589367Z",
    "valid_until": "2024-09-30T12:52:29.589367Z"
  },
  {
    "component_name": "tg-blocksd",
    "component_id": "fea89272-125e-4108-aa78-2153bf11e6c7",
    "group": "ftm",
    "health_check": "indexing",
    "status": "success",
    "report": {
      "name": "indexing",
      "status": "success",
      "msg": "last block inserted: 2024-09-30 12:51:29.390029 +0000 UTC",
      "duration": "162.893874ms"
    },
    "last_updated": "2024-09-30T12:51:29.572097Z",
    "valid_until": "2024-09-30T12:52:29.572097Z"
  }
]
```

Another example with Polkadot group:

***Description***: Performs a health check on a specific blockchain of monitored activities:

* block height
* collection balance
* staking collection balance
* indexing: when was the last inserted block

`curl --location "https://explorers.t-dx.com/api/rest/v1/health/dot" \`

```json
[
  {
    "component_name": "tg-blocksd",
    "component_id": "fea89272-125e-4108-aa78-2153bf11e6c7",
    "group": "dot",
    "health_check": "collection_balance",
    "status": "success",
    "report": {
      "name": "collection_balance",
      "status": "success",
      "msg": "origin: 22761846 - transition: 22761845 - state: 22761844",
      "duration": "9.259814ms"
    },
    "last_updated": "2024-09-30T12:53:30.396071Z",
    "valid_until": "2024-09-30T12:54:30.396071Z"
  },
  {
    "component_name": "tg-blocksd",
    "component_id": "fea89272-125e-4108-aa78-2153bf11e6c7",
    "group": "dot",
    "health_check": "collection_stake",
    "status": "success",
    "report": {
      "name": "collection_stake",
      "status": "success",
      "msg": "origin: 22761846 - transition: 22761846 - state: 22761844",
      "duration": "22.802164ms"
    },
    "last_updated": "2024-09-30T12:53:30.372645Z",
    "valid_until": "2024-09-30T12:54:30.372645Z"
  },
  {
    "component_name": "tg-blocksd",
    "component_id": "fea89272-125e-4108-aa78-2153bf11e6c7",
    "group": "dot",
    "health_check": "height",
    "status": "success",
    "report": {
      "name": "height",
      "status": "success",
      "msg": "tg-blocksd: 22761846 - node: 22761844",
      "duration": "5.628137ms"
    },
    "last_updated": "2024-09-30T12:53:30.440603Z",
    "valid_until": "2024-09-30T12:54:30.440603Z"
  },
  {
    "component_name": "tg-blocksd",
    "component_id": "fea89272-125e-4108-aa78-2153bf11e6c7",
    "group": "dot",
    "health_check": "indexing",
    "status": "success",
    "report": {
      "name": "indexing",
      "status": "success",
      "msg": "last block inserted: 2024-09-30 12:53:26.734433 +0000 UTC",
      "duration": "3.190728ms"
    },
    "last_updated": "2024-09-30T12:53:30.238531Z",
    "valid_until": "2024-09-30T12:54:30.238531Z"
  }
]
```

\


### Get Explorers health checks for a specific chain

***Description***: Performs a specific health check on a chosen chain.

Example with Cardano:

`curl --location "https://explorers.t-dx.com/api/rest/v1/health/ada/height" \`

```json
{  
  "component_name": "tg-blocksd",  
  "component_id": "b2da5a7e-49a5-4c03-9469-7428d0df7dd8",  
  "group": "ada",  
  "health_check": "height",  
  "status": "success",  
  "report": {  
    "name": "height",  
    "status": "success",  
    "msg": "head = 10901302 - stored = 10901302",  
    "duration": "31.398357ms"  
  },  
  "last_updated": "2024-09-30T08:49:28.099174Z",  
  "valid_until": "2024-09-30T08:50:28.099174Z"  
}
```