From a83bdc184f440c43376b0ba0a7104ff7e236ac2b Mon Sep 17 00:00:00 2001 From: tarikgul Date: Fri, 9 Jan 2026 09:46:20 -0500 Subject: [PATCH 01/10] add IRcBlockInfo and IRcBlockObjectResponse types --- src/types/responses/RcBlockFormat.ts | 41 ++++++++++++++++++++++++++++ src/types/responses/index.ts | 1 + 2 files changed, 42 insertions(+) create mode 100644 src/types/responses/RcBlockFormat.ts diff --git a/src/types/responses/RcBlockFormat.ts b/src/types/responses/RcBlockFormat.ts new file mode 100644 index 000000000..744c45fb5 --- /dev/null +++ b/src/types/responses/RcBlockFormat.ts @@ -0,0 +1,41 @@ +// Copyright 2017-2025 Parity Technologies (UK) Ltd. +// This file is part of Substrate API Sidecar. +// +// Substrate API Sidecar is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +/** + * Minimal relay chain block header information. + * Used when `useRcBlockFormat=object` to provide RC block context. + */ +export interface IRcBlockInfo { + /** The relay chain block hash */ + hash: string; + /** The parent block hash */ + parentHash: string; + /** The relay chain block number */ + number: string; +} + +/** + * Object format response wrapper for `useRcBlockFormat=object`. + * Provides relay chain block info alongside parachain data. + * + * @typeParam T - The type of data in the parachainDataPerBlock array + */ +export interface IRcBlockObjectResponse { + /** Minimal relay chain block header info */ + rcBlock: IRcBlockInfo; + /** Array of parachain block data (empty if no AH blocks for this RC block) */ + parachainDataPerBlock: T[]; +} diff --git a/src/types/responses/index.ts b/src/types/responses/index.ts index 3b2db4901..a9e5777d1 100644 --- a/src/types/responses/index.ts +++ b/src/types/responses/index.ts @@ -57,6 +57,7 @@ export * from './ParachainInclusion'; export * from './Paras'; export * from './Payout'; export * from './PoolAssets'; +export * from './RcBlockFormat'; export * from './RuntimeSpec'; export * from './SanitizedArgs'; export * from './SanitizedCall'; From 239607891df73fc8ddcfc8502000ab253fe5f202 Mon Sep 17 00:00:00 2001 From: tarikgul Date: Fri, 9 Jan 2026 09:46:41 -0500 Subject: [PATCH 02/10] add useRcBlockFormat to IBlockQueryParams --- src/types/requests.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/types/requests.ts b/src/types/requests.ts index 63d67a071..bb1187454 100644 --- a/src/types/requests.ts +++ b/src/types/requests.ts @@ -122,6 +122,7 @@ export interface IBlockQueryParams extends Query { decodedXcmMsgs?: string; paraId?: string; useRcBlock?: string; + useRcBlockFormat?: string; } export interface IRequestHandlerWithMetrics From 94865a687523041524cc9176598cef69b863897b Mon Sep 17 00:00:00 2001 From: tarikgul Date: Fri, 9 Jan 2026 09:47:05 -0500 Subject: [PATCH 03/10] validate useRcBlockFormat in middleware --- .../validate/validateUseRcBlockMiddleware.ts | 29 +++++++++++++++---- 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/src/middleware/validate/validateUseRcBlockMiddleware.ts b/src/middleware/validate/validateUseRcBlockMiddleware.ts index df83ce447..a1a626c74 100644 --- a/src/middleware/validate/validateUseRcBlockMiddleware.ts +++ b/src/middleware/validate/validateUseRcBlockMiddleware.ts @@ -20,17 +20,34 @@ import { BadRequest } from 'http-errors'; import { ApiPromiseRegistry } from '../../apiRegistry'; /** - * Express Middleware to validate the `useRcBlock` query parameter. + * Express Middleware to validate the `useRcBlock` and `useRcBlockFormat` query parameters. * * This middleware performs the following validations: - * 1. Asset Hub requirement - validates that the current API is connected to Asset Hub - * 2. Relay chain availability - ensures relay chain API is available - * 3. Boolean validation - ensures useRcBlock is a valid boolean string + * 1. Boolean validation - ensures useRcBlock is a valid boolean string + * 2. Asset Hub requirement - validates that the current API is connected to Asset Hub + * 3. Relay chain availability - ensures relay chain API is available + * 4. useRcBlockFormat validation - ensures it's only used with useRcBlock=true and has valid values */ export const validateUseRcBlockMiddleware: RequestHandler = (req, _res, next) => { - const { useRcBlock } = req.query; + const { useRcBlock, useRcBlockFormat } = req.query; - // If useRcBlock is not provided, continue without validation + // Validate useRcBlockFormat requires useRcBlock=true + if (useRcBlockFormat && useRcBlock !== 'true') { + return next(new BadRequest('useRcBlockFormat parameter requires useRcBlock=true')); + } + + // Validate useRcBlockFormat values + if (useRcBlockFormat) { + if (typeof useRcBlockFormat !== 'string') { + return next(new BadRequest('useRcBlockFormat must be a string')); + } + + if (useRcBlockFormat !== 'array' && useRcBlockFormat !== 'object') { + return next(new BadRequest('useRcBlockFormat must be either "array" or "object"')); + } + } + + // If useRcBlock is not provided, continue without further validation if (!useRcBlock) { return next(); } From a498f2c44aad94331a68fd0d9cba8c8d36894bfc Mon Sep 17 00:00:00 2001 From: tarikgul Date: Fri, 9 Jan 2026 09:47:41 -0500 Subject: [PATCH 04/10] add RC block format helpers to AbstractController --- src/controllers/AbstractController.ts | 37 +++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/controllers/AbstractController.ts b/src/controllers/AbstractController.ts index e0c6bea1a..eb81995e2 100644 --- a/src/controllers/AbstractController.ts +++ b/src/controllers/AbstractController.ts @@ -32,6 +32,7 @@ import { IParaIdParam, IRangeQueryParam, } from 'src/types/requests'; +import { IRcBlockInfo, IRcBlockObjectResponse } from 'src/types/responses'; import { ApiPromiseRegistry } from '../../src/apiRegistry'; import type { AssetHubInfo } from '../apiRegistry'; @@ -351,6 +352,42 @@ export default abstract class AbstractController { return ahHashes.map((ahHash) => ({ ahHash, rcBlockHash: rcHash, rcBlockNumber })); } + /** + * Get minimal relay chain block info for the object format response. + * + * @param rcAt - Block identifier (hash or number) for the relay chain + * @returns IRcBlockInfo containing hash, parentHash, and number + */ + protected async getRcBlockInfo(rcAt: unknown): Promise { + const rcApi = ApiPromiseRegistry.getApiByType('relay')[0]?.api; + if (!rcApi) { + throw new InternalServerError('Relay chain api must be available'); + } + + const rcHash = await this.getHashFromAt(rcAt, { api: rcApi }); + const rcHeader = await rcApi.rpc.chain.getHeader(rcHash); + + return { + hash: rcHash.toHex(), + parentHash: rcHeader.parentHash.toHex(), + number: rcHeader.number.toString(), + }; + } + + /** + * Format a response in the RC block object format. + * + * @param rcBlockInfo - The relay chain block info + * @param parachainData - Array of parachain data (endpoint-specific responses) + * @returns IRcBlockObjectResponse with rcBlock and parachainDataPerBlock + */ + protected formatRcBlockObjectResponse(rcBlockInfo: IRcBlockInfo, parachainData: T[]): IRcBlockObjectResponse { + return { + rcBlock: rcBlockInfo, + parachainDataPerBlock: parachainData, + }; + } + /** * Sanitize the numbers within the response body and then send the response * body using the original Express Response object. From 2c61ab20dadfe3a2507d49eea3eca69422691a8f Mon Sep 17 00:00:00 2001 From: tarikgul Date: Fri, 9 Jan 2026 11:09:43 -0500 Subject: [PATCH 05/10] add useRcBlockFormat support to BlocksController --- src/controllers/blocks/BlocksController.ts | 120 +++++++++++++++++---- 1 file changed, 102 insertions(+), 18 deletions(-) diff --git a/src/controllers/blocks/BlocksController.ts b/src/controllers/blocks/BlocksController.ts index 0006a0b67..03a2f789f 100644 --- a/src/controllers/blocks/BlocksController.ts +++ b/src/controllers/blocks/BlocksController.ts @@ -181,7 +181,17 @@ export default class BlocksController extends AbstractController */ private getLatestBlock: IRequestHandlerWithMetrics = async ( { - query: { eventDocs, extrinsicDocs, finalized, noFees, decodedXcmMsgs, paraId, useRcBlock, useEvmFormat }, + query: { + eventDocs, + extrinsicDocs, + finalized, + noFees, + decodedXcmMsgs, + paraId, + useRcBlock, + useRcBlockFormat, + useEvmFormat, + }, method, route, }, @@ -190,6 +200,7 @@ export default class BlocksController extends AbstractController const eventDocsArg = eventDocs === 'true'; const extrinsicDocsArg = extrinsicDocs === 'true'; const useRcBlockArg = useRcBlock === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; if (useRcBlockArg) { const rcApi = ApiPromiseRegistry.getApiByType('relay')[0]?.api; @@ -207,9 +218,14 @@ export default class BlocksController extends AbstractController const rcAtResults = await this.getHashFromRcAt(rcHash); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - BlocksController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(rcHash); + BlocksController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + BlocksController.sanitizedSend(res, []); + } return; } @@ -261,7 +277,13 @@ export default class BlocksController extends AbstractController results.push(enhancedResult); } - BlocksController.sanitizedSend(res, results); + // Send response based on format + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(rcHash); + BlocksController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, results)); + } else { + BlocksController.sanitizedSend(res, results); + } // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access const path = route.path as string; @@ -347,22 +369,38 @@ export default class BlocksController extends AbstractController private getBlockById: IRequestHandlerWithMetrics = async ( { params: { number }, - query: { eventDocs, extrinsicDocs, noFees, finalizedKey, decodedXcmMsgs, paraId, useRcBlock, useEvmFormat }, + query: { + eventDocs, + extrinsicDocs, + noFees, + finalizedKey, + decodedXcmMsgs, + paraId, + useRcBlock, + useRcBlockFormat, + useEvmFormat, + }, method, route, }, res, ): Promise => { const useRcBlockArg = useRcBlock === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; const checkFinalized = isHex(number); if (useRcBlockArg) { // Treat the 'number' parameter as a relay chain block identifier const rcAtResults = await this.getHashFromRcAt(number); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - BlocksController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(number); + BlocksController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + BlocksController.sanitizedSend(res, []); + } return; } @@ -424,7 +462,13 @@ export default class BlocksController extends AbstractController results.push(enhancedResult); } - BlocksController.sanitizedSend(res, results); + // Send response based on format + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(number); + BlocksController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, results)); + } else { + BlocksController.sanitizedSend(res, results); + } // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access const path = route.path as string; @@ -501,18 +545,24 @@ export default class BlocksController extends AbstractController * @param res Express Response */ private getBlockHeaderById: RequestHandler = async ( - { params: { number }, query: { useRcBlock } }, + { params: { number }, query: { useRcBlock, useRcBlockFormat } }, res, ): Promise => { const useRcBlockArg = useRcBlock === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; if (useRcBlockArg) { // Treat the 'number' parameter as a relay chain block identifier const rcAtResults = await this.getHashFromRcAt(number); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - BlocksController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(number); + BlocksController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + BlocksController.sanitizedSend(res, []); + } return; } @@ -537,7 +587,13 @@ export default class BlocksController extends AbstractController results.push(enhancedResult); } - BlocksController.sanitizedSend(res, results); + // Send response based on format + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(number); + BlocksController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, results)); + } else { + BlocksController.sanitizedSend(res, results); + } } else { const hash = await this.getHashForBlock(number); const headerResult = await this.service.fetchBlockHeader(hash); @@ -551,9 +607,13 @@ export default class BlocksController extends AbstractController * @param req Express Request * @param res Express Response */ - private getLatestBlockHeader: RequestHandler = async ({ query: { finalized, useRcBlock } }, res): Promise => { + private getLatestBlockHeader: RequestHandler = async ( + { query: { finalized, useRcBlock, useRcBlockFormat } }, + res, + ): Promise => { const paramFinalized = finalized !== 'false'; const useRcBlockArg = useRcBlock === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; if (useRcBlockArg) { const rcApi = ApiPromiseRegistry.getApiByType('relay')[0]?.api; @@ -568,9 +628,14 @@ export default class BlocksController extends AbstractController const rcAtResults = await this.getHashFromRcAt(rcHash); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - BlocksController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(rcHash); + BlocksController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + BlocksController.sanitizedSend(res, []); + } return; } @@ -595,7 +660,13 @@ export default class BlocksController extends AbstractController results.push(enhancedResult); } - BlocksController.sanitizedSend(res, results); + // Send response based on format + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(rcHash); + BlocksController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, results)); + } else { + BlocksController.sanitizedSend(res, results); + } } else { const hash = paramFinalized ? await this.api.rpc.chain.getFinalizedHead() : undefined; const headerResult = await this.service.fetchBlockHeader(hash); @@ -610,7 +681,7 @@ export default class BlocksController extends AbstractController * @param res Express Response */ private getBlocks: IRequestHandlerWithMetrics = async ( - { query: { range, eventDocs, extrinsicDocs, noFees, useRcBlock, useEvmFormat }, method, route }, + { query: { range, eventDocs, extrinsicDocs, noFees, useRcBlock, useRcBlockFormat, useEvmFormat }, method, route }, res, ): Promise => { if (!range) throw new BadRequest('range query parameter must be inputted.'); @@ -618,6 +689,7 @@ export default class BlocksController extends AbstractController // We set a max range to 500 blocks. const rangeOfNums = this.parseRangeOfNumbersOrThrow(range, 500); const useRcBlockArg = useRcBlock === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; const eventDocsArg = eventDocs === 'true'; const extrinsicDocsArg = extrinsicDocs === 'true'; @@ -706,7 +778,19 @@ export default class BlocksController extends AbstractController */ blocks.sort((a, b) => a.number.toNumber() - b.number.toNumber()); - BlocksController.sanitizedSend(res, blocks); + // Note: For range queries with useRcBlockFormat=object, the response format + // doesn't apply the same way since we're querying multiple RC blocks. + // The array format is maintained for consistency with range queries. + if (useRcBlockArg && useObjectFormat) { + // For range queries with object format, we wrap all blocks in a single response + // Note: This uses a synthetic rcBlock since we're querying a range + const firstRcBlockNumber = rangeOfNums[0].toString(); + const rcBlockInfo = await this.getRcBlockInfo(firstRcBlockNumber); + BlocksController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, blocks)); + } else { + BlocksController.sanitizedSend(res, blocks); + } + // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access const path = route.path as string; if (res.locals.metrics) { From b1b9250d81b7ec040891aafd501c6da352b7e4c6 Mon Sep 17 00:00:00 2001 From: tarikgul Date: Fri, 9 Jan 2026 11:10:16 -0500 Subject: [PATCH 06/10] add useRcBlockFormat support to BlocksExtrinsicsController --- .../blocks/BlocksExtrinsicsController.ts | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/controllers/blocks/BlocksExtrinsicsController.ts b/src/controllers/blocks/BlocksExtrinsicsController.ts index b9112df60..c479e0562 100644 --- a/src/controllers/blocks/BlocksExtrinsicsController.ts +++ b/src/controllers/blocks/BlocksExtrinsicsController.ts @@ -49,18 +49,27 @@ export default class BlocksExtrinsicsController extends AbstractController = async ( - { params: { blockId, extrinsicIndex }, query: { eventDocs, extrinsicDocs, noFees, useRcBlock, useEvmFormat } }, + { + params: { blockId, extrinsicIndex }, + query: { eventDocs, extrinsicDocs, noFees, useRcBlock, useRcBlockFormat, useEvmFormat }, + }, res, ): Promise => { const useRcBlockArg = useRcBlock === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; if (useRcBlockArg) { // Treat the blockId parameter as a relay chain block identifier const rcAtResults = await this.getHashFromRcAt(blockId); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - BlocksExtrinsicsController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(blockId); + BlocksExtrinsicsController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + BlocksExtrinsicsController.sanitizedSend(res, []); + } return; } @@ -119,7 +128,13 @@ export default class BlocksExtrinsicsController extends AbstractController Date: Fri, 9 Jan 2026 11:10:39 -0500 Subject: [PATCH 07/10] add useRcBlockFormat support to BlocksRawExtrinsicsController --- .../blocks/BlocksRawExtrinsicsController.ts | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/controllers/blocks/BlocksRawExtrinsicsController.ts b/src/controllers/blocks/BlocksRawExtrinsicsController.ts index 0560a55aa..5b6f81b72 100644 --- a/src/controllers/blocks/BlocksRawExtrinsicsController.ts +++ b/src/controllers/blocks/BlocksRawExtrinsicsController.ts @@ -45,19 +45,25 @@ export default class BlocksRawExtrinsicsController extends AbstractController = async ( - { params: { blockId }, query: { useRcBlock }, method, route }, + { params: { blockId }, query: { useRcBlock, useRcBlockFormat }, method, route }, res, ): Promise => { const useRcBlockArg = useRcBlock === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; let rawBlock; if (useRcBlockArg) { // Treat the blockId parameter as a relay chain block identifier const rcAtResults = await this.getHashFromRcAt(blockId); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - BlocksRawExtrinsicsController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(blockId); + BlocksRawExtrinsicsController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + BlocksRawExtrinsicsController.sanitizedSend(res, []); + } return; } @@ -78,7 +84,13 @@ export default class BlocksRawExtrinsicsController extends AbstractController Date: Fri, 9 Jan 2026 15:27:06 -0500 Subject: [PATCH 08/10] add useRcBlockFormat support to all account controllers --- .../accounts/AccountsAssetsController.ts | 41 +++++++++++++++---- .../accounts/AccountsBalanceInfoController.ts | 21 ++++++++-- .../AccountsForeignAssetsController.ts | 21 ++++++++-- .../accounts/AccountsPoolAssetsController.ts | 41 +++++++++++++++---- .../accounts/AccountsProxyInfoController.ts | 21 ++++++++-- .../accounts/AccountsStakingInfoController.ts | 20 +++++++-- .../AccountsStakingPayoutsController.ts | 20 +++++++-- .../accounts/AccountsVestingInfoController.ts | 20 +++++++-- 8 files changed, 165 insertions(+), 40 deletions(-) diff --git a/src/controllers/accounts/AccountsAssetsController.ts b/src/controllers/accounts/AccountsAssetsController.ts index 28ba55af2..7d657fb69 100644 --- a/src/controllers/accounts/AccountsAssetsController.ts +++ b/src/controllers/accounts/AccountsAssetsController.ts @@ -98,15 +98,22 @@ export default class AccountsAssetsController extends AbstractController => { + const useObjectFormat = useRcBlockFormat === 'object'; + if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - AccountsAssetsController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + AccountsAssetsController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + AccountsAssetsController.sanitizedSend(res, []); + } return; } @@ -130,7 +137,13 @@ export default class AccountsAssetsController extends AbstractController => { if (typeof delegate !== 'string' || typeof assetId !== 'string') { @@ -148,13 +161,19 @@ export default class AccountsAssetsController extends AbstractController = async ( - { params: { address }, query: { at, useRcBlock, token, denominated } }, + { params: { address }, query: { at, useRcBlock, useRcBlockFormat, token, denominated } }, res, ): Promise => { + const useObjectFormat = useRcBlockFormat === 'object'; + if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - AccountsBalanceController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + AccountsBalanceController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + AccountsBalanceController.sanitizedSend(res, []); + } return; } @@ -129,7 +136,13 @@ export default class AccountsBalanceController extends AbstractController => { + const useObjectFormat = useRcBlockFormat === 'object'; + if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - AccountsForeignAssetsController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + AccountsForeignAssetsController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + AccountsForeignAssetsController.sanitizedSend(res, []); + } return; } @@ -109,7 +116,13 @@ export default class AccountsForeignAssetsController extends AbstractController< results.push(enhancedResult); } - AccountsForeignAssetsController.sanitizedSend(res, results); + // Send response based on format + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + AccountsForeignAssetsController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, results)); + } else { + AccountsForeignAssetsController.sanitizedSend(res, results); + } } else { const hash = await this.getHashFromAt(at); const foreignAssetsArray = Array.isArray(foreignAssets) ? (foreignAssets as string[]) : []; diff --git a/src/controllers/accounts/AccountsPoolAssetsController.ts b/src/controllers/accounts/AccountsPoolAssetsController.ts index 9de89eb13..6632f367d 100644 --- a/src/controllers/accounts/AccountsPoolAssetsController.ts +++ b/src/controllers/accounts/AccountsPoolAssetsController.ts @@ -97,15 +97,22 @@ export default class AccountsPoolAssetsController extends AbstractController => { + const useObjectFormat = useRcBlockFormat === 'object'; + if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - AccountsPoolAssetsController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + AccountsPoolAssetsController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + AccountsPoolAssetsController.sanitizedSend(res, []); + } return; } @@ -129,7 +136,13 @@ export default class AccountsPoolAssetsController extends AbstractController => { if (typeof delegate !== 'string' || typeof assetId !== 'string') { @@ -147,13 +160,19 @@ export default class AccountsPoolAssetsController extends AbstractController = async ( - { params: { address }, query: { at, useRcBlock } }, + { params: { address }, query: { at, useRcBlock, useRcBlockFormat } }, res, ): Promise => { + const useObjectFormat = useRcBlockFormat === 'object'; + if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - AccountsProxyInfoController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + AccountsProxyInfoController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + AccountsProxyInfoController.sanitizedSend(res, []); + } return; } @@ -72,7 +79,13 @@ export default class AccountsProxyInfoController extends AbstractController = async ( - { params: { address }, query: { at, useRcBlock, includeClaimedRewards } }, + { params: { address }, query: { at, useRcBlock, useRcBlockFormat, includeClaimedRewards } }, res, ): Promise => { const { isAssetHubMigrated } = ApiPromiseRegistry.assetHubInfo; const includeClaimedRewardsArg = includeClaimedRewards !== 'false'; + const useObjectFormat = useRcBlockFormat === 'object'; if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - AccountsStakingInfoController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + AccountsStakingInfoController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + AccountsStakingInfoController.sanitizedSend(res, []); + } return; } @@ -146,7 +152,13 @@ export default class AccountsStakingInfoController extends AbstractController = async ( - { params: { address }, query: { depth, era, unclaimedOnly, at, useRcBlock } }, + { params: { address }, query: { depth, era, unclaimedOnly, at, useRcBlock, useRcBlockFormat } }, res, ): Promise => { const { specName } = this; const isKusama = specName.toString().toLowerCase() === 'kusama'; const { isAssetHubMigrated } = ApiPromiseRegistry.assetHubInfo; + const useObjectFormat = useRcBlockFormat === 'object'; if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - AccountsStakingPayoutsController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + AccountsStakingPayoutsController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + AccountsStakingPayoutsController.sanitizedSend(res, []); + } return; } @@ -192,7 +198,13 @@ export default class AccountsStakingPayoutsController extends AbstractController results.push(enhancedResult); } - AccountsStakingPayoutsController.sanitizedSend(res, results); + // Send response based on format + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + AccountsStakingPayoutsController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, results)); + } else { + AccountsStakingPayoutsController.sanitizedSend(res, results); + } } else { let hash = await this.getHashFromAt(at); let apiAt = await this.api.at(hash); diff --git a/src/controllers/accounts/AccountsVestingInfoController.ts b/src/controllers/accounts/AccountsVestingInfoController.ts index 454631b19..7cbe88357 100644 --- a/src/controllers/accounts/AccountsVestingInfoController.ts +++ b/src/controllers/accounts/AccountsVestingInfoController.ts @@ -88,17 +88,23 @@ export default class AccountsVestingInfoController extends AbstractController = async ( - { params: { address }, query: { at, useRcBlock, includeClaimable } }, + { params: { address }, query: { at, useRcBlock, useRcBlockFormat, includeClaimable } }, res, ): Promise => { const shouldIncludeClaimable = includeClaimable === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - AccountsVestingInfoController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + AccountsVestingInfoController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + AccountsVestingInfoController.sanitizedSend(res, []); + } return; } @@ -126,7 +132,13 @@ export default class AccountsVestingInfoController extends AbstractController Date: Fri, 9 Jan 2026 16:15:36 -0500 Subject: [PATCH 09/10] add useRcBlockFormat support to pallets controllers --- .../PalletsAssetConversionController.ts | 48 +++++++++++++++---- .../pallets/PalletsAssetsController.ts | 20 ++++++-- .../pallets/PalletsConstsController.ts | 40 ++++++++++++---- .../pallets/PalletsDispatchablesController.ts | 40 ++++++++++++---- .../pallets/PalletsErrorsController.ts | 40 ++++++++++++---- .../pallets/PalletsEventsController.ts | 40 ++++++++++++---- .../pallets/PalletsForeignAssetsController.ts | 24 ++++++++-- .../PalletsNominationPoolsController.ts | 44 +++++++++++++---- .../PalletsOnGoingReferendaController.ts | 24 ++++++++-- .../pallets/PalletsPoolAssetsController.ts | 20 ++++++-- .../PalletsStakingProgressController.ts | 24 ++++++++-- .../PalletsStakingValidatorsController.ts | 24 ++++++++-- .../pallets/PalletsStorageController.ts | 40 ++++++++++++---- 13 files changed, 348 insertions(+), 80 deletions(-) diff --git a/src/controllers/pallets/PalletsAssetConversionController.ts b/src/controllers/pallets/PalletsAssetConversionController.ts index 0add6beae..7e5cf6254 100644 --- a/src/controllers/pallets/PalletsAssetConversionController.ts +++ b/src/controllers/pallets/PalletsAssetConversionController.ts @@ -36,13 +36,23 @@ export default class PalletsAssetConversionController extends AbstractController ]); } - private getNextAvailableId: RequestHandler = async ({ query: { at, useRcBlock } }, res): Promise => { + private getNextAvailableId: RequestHandler = async ( + { query: { at, useRcBlock, useRcBlockFormat } }, + res, + ): Promise => { + const useObjectFormat = useRcBlockFormat === 'object'; + if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - PalletsAssetConversionController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsAssetConversionController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + PalletsAssetConversionController.sanitizedSend(res, []); + } return; } @@ -64,7 +74,13 @@ export default class PalletsAssetConversionController extends AbstractController results.push(enhancedResult); } - PalletsAssetConversionController.sanitizedSend(res, results); + // Send response based on format + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsAssetConversionController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, results)); + } else { + PalletsAssetConversionController.sanitizedSend(res, results); + } } else { const hash = await this.getHashFromAt(at); const result = await this.service.fetchNextAvailableId(hash); @@ -72,13 +88,23 @@ export default class PalletsAssetConversionController extends AbstractController } }; - private getLiquidityPools: RequestHandler = async ({ query: { at, useRcBlock } }, res): Promise => { + private getLiquidityPools: RequestHandler = async ( + { query: { at, useRcBlock, useRcBlockFormat } }, + res, + ): Promise => { + const useObjectFormat = useRcBlockFormat === 'object'; + if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - PalletsAssetConversionController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsAssetConversionController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + PalletsAssetConversionController.sanitizedSend(res, []); + } return; } @@ -100,7 +126,13 @@ export default class PalletsAssetConversionController extends AbstractController results.push(enhancedResult); } - PalletsAssetConversionController.sanitizedSend(res, results); + // Send response based on format + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsAssetConversionController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, results)); + } else { + PalletsAssetConversionController.sanitizedSend(res, results); + } } else { const hash = await this.getHashFromAt(at); const result = await this.service.fetchLiquidityPools(hash); diff --git a/src/controllers/pallets/PalletsAssetsController.ts b/src/controllers/pallets/PalletsAssetsController.ts index 6b5731b16..7e33f1de1 100644 --- a/src/controllers/pallets/PalletsAssetsController.ts +++ b/src/controllers/pallets/PalletsAssetsController.ts @@ -83,7 +83,7 @@ export default class PalletsAssetsController extends AbstractController => { /** @@ -91,13 +91,19 @@ export default class PalletsAssetsController extends AbstractController = async ( - { query: { at, metadata, useRcBlock }, params: { palletId, constantItemId } }, + { query: { at, metadata, useRcBlock, useRcBlockFormat }, params: { palletId, constantItemId } }, res, ): Promise => { const metadataArg = metadata === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - PalletsConstantsController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsConstantsController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + PalletsConstantsController.sanitizedSend(res, []); + } return; } @@ -91,7 +97,13 @@ export default class PalletsConstantsController extends AbstractController => { const onlyIdsArg = onlyIds === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - PalletsConstantsController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsConstantsController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + PalletsConstantsController.sanitizedSend(res, []); + } return; } @@ -146,7 +164,13 @@ export default class PalletsConstantsController extends AbstractController = async ( - { query: { metadata, at, useRcBlock }, params: { palletId, dispatchableItemId } }, + { query: { metadata, at, useRcBlock, useRcBlockFormat }, params: { palletId, dispatchableItemId } }, res, ): Promise => { const metadataArg = metadata === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - PalletsDispatchablesController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsDispatchablesController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + PalletsDispatchablesController.sanitizedSend(res, []); + } return; } @@ -91,7 +97,13 @@ export default class PalletsDispatchablesController extends AbstractController

=> { const onlyIdsArg = onlyIds === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - PalletsDispatchablesController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsDispatchablesController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + PalletsDispatchablesController.sanitizedSend(res, []); + } return; } @@ -146,7 +164,13 @@ export default class PalletsDispatchablesController extends AbstractController

= async ( - { query: { at, metadata, useRcBlock }, params: { palletId, errorItemId } }, + { query: { at, metadata, useRcBlock, useRcBlockFormat }, params: { palletId, errorItemId } }, res, ): Promise => { const metadataArg = metadata === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - PalletsErrorsController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsErrorsController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + PalletsErrorsController.sanitizedSend(res, []); + } return; } @@ -91,7 +97,13 @@ export default class PalletsErrorsController extends AbstractController => { const onlyIdsArg = onlyIds === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - PalletsErrorsController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsErrorsController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + PalletsErrorsController.sanitizedSend(res, []); + } return; } @@ -146,7 +164,13 @@ export default class PalletsErrorsController extends AbstractController = async ( - { query: { at, metadata, useRcBlock }, params: { palletId, eventItemId } }, + { query: { at, metadata, useRcBlock, useRcBlockFormat }, params: { palletId, eventItemId } }, res, ): Promise => { const metadataArg = metadata === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - PalletsEventsController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsEventsController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + PalletsEventsController.sanitizedSend(res, []); + } return; } @@ -80,7 +86,13 @@ export default class PalletsEventsController extends AbstractController => { const onlyIdsArg = onlyIds === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - PalletsEventsController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsEventsController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + PalletsEventsController.sanitizedSend(res, []); + } return; } @@ -135,7 +153,13 @@ export default class PalletsEventsController extends AbstractController => { + private getForeignAssets: RequestHandler = async ( + { query: { at, useRcBlock, useRcBlockFormat } }, + res, + ): Promise => { + const useObjectFormat = useRcBlockFormat === 'object'; + if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - PalletsForeignAssetsController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsForeignAssetsController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + PalletsForeignAssetsController.sanitizedSend(res, []); + } return; } @@ -84,7 +94,13 @@ export default class PalletsForeignAssetsController extends AbstractController

=> { /** @@ -47,13 +47,19 @@ export default class PalletsNominationPoolController extends AbstractController< const index = this.parseNumberOrThrow(poolId, '`poolId` path param is not a number'); const metadataArg = metadata === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - PalletsNominationPoolController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsNominationPoolController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + PalletsNominationPoolController.sanitizedSend(res, []); + } return; } @@ -75,7 +81,13 @@ export default class PalletsNominationPoolController extends AbstractController< results.push(enhancedResult); } - PalletsNominationPoolController.sanitizedSend(res, results); + // Send response based on format + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsNominationPoolController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, results)); + } else { + PalletsNominationPoolController.sanitizedSend(res, results); + } } else { const hash = await this.getHashFromAt(at); const result = await this.service.fetchNominationPoolById(index, hash, metadataArg); @@ -83,13 +95,23 @@ export default class PalletsNominationPoolController extends AbstractController< } }; - private getNominationPoolInfo: RequestHandler = async ({ query: { at, useRcBlock } }, res): Promise => { + private getNominationPoolInfo: RequestHandler = async ( + { query: { at, useRcBlock, useRcBlockFormat } }, + res, + ): Promise => { + const useObjectFormat = useRcBlockFormat === 'object'; + if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - PalletsNominationPoolController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsNominationPoolController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + PalletsNominationPoolController.sanitizedSend(res, []); + } return; } @@ -111,7 +133,13 @@ export default class PalletsNominationPoolController extends AbstractController< results.push(enhancedResult); } - PalletsNominationPoolController.sanitizedSend(res, results); + // Send response based on format + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsNominationPoolController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, results)); + } else { + PalletsNominationPoolController.sanitizedSend(res, results); + } } else { const hash = await this.getHashFromAt(at); const result = await this.service.fetchNominationPoolInfo(hash); diff --git a/src/controllers/pallets/PalletsOnGoingReferendaController.ts b/src/controllers/pallets/PalletsOnGoingReferendaController.ts index 7e4fe34c7..be2423b3b 100644 --- a/src/controllers/pallets/PalletsOnGoingReferendaController.ts +++ b/src/controllers/pallets/PalletsOnGoingReferendaController.ts @@ -39,13 +39,23 @@ export default class PalletsOnGoingReferendaController extends AbstractControlle * @param _req Express Request * @param res Express Response */ - private getPalletOnGoingReferenda: RequestHandler = async ({ query: { at, useRcBlock } }, res): Promise => { + private getPalletOnGoingReferenda: RequestHandler = async ( + { query: { at, useRcBlock, useRcBlockFormat } }, + res, + ): Promise => { + const useObjectFormat = useRcBlockFormat === 'object'; + if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - PalletsOnGoingReferendaController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsOnGoingReferendaController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + PalletsOnGoingReferendaController.sanitizedSend(res, []); + } return; } @@ -67,7 +77,13 @@ export default class PalletsOnGoingReferendaController extends AbstractControlle results.push(enhancedResult); } - PalletsOnGoingReferendaController.sanitizedSend(res, results); + // Send response based on format + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsOnGoingReferendaController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, results)); + } else { + PalletsOnGoingReferendaController.sanitizedSend(res, results); + } } else { const hash = await this.getHashFromAt(at); const result = await this.service.derivePalletOnGoingReferenda(hash); diff --git a/src/controllers/pallets/PalletsPoolAssetsController.ts b/src/controllers/pallets/PalletsPoolAssetsController.ts index bd2fed0d8..f87c94214 100644 --- a/src/controllers/pallets/PalletsPoolAssetsController.ts +++ b/src/controllers/pallets/PalletsPoolAssetsController.ts @@ -75,7 +75,7 @@ export default class PalletsPoolAssetsController extends AbstractController => { /** @@ -83,13 +83,19 @@ export default class PalletsPoolAssetsController extends AbstractController => { + private getPalletStakingProgress: RequestHandler = async ( + { query: { at, useRcBlock, useRcBlockFormat } }, + res, + ): Promise => { + const useObjectFormat = useRcBlockFormat === 'object'; + if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - PalletsStakingProgressController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsStakingProgressController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + PalletsStakingProgressController.sanitizedSend(res, []); + } return; } @@ -130,7 +140,13 @@ export default class PalletsStakingProgressController extends AbstractController results.push(enhancedResult); } - PalletsStakingProgressController.sanitizedSend(res, results); + // Send response based on format + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsStakingProgressController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, results)); + } else { + PalletsStakingProgressController.sanitizedSend(res, results); + } } else { const hash = await this.getHashFromAt(at); const result = await this.service.derivePalletStakingProgress(hash); diff --git a/src/controllers/pallets/PalletsStakingValidatorsController.ts b/src/controllers/pallets/PalletsStakingValidatorsController.ts index 26dd769bc..2f1b85ec0 100644 --- a/src/controllers/pallets/PalletsStakingValidatorsController.ts +++ b/src/controllers/pallets/PalletsStakingValidatorsController.ts @@ -39,13 +39,23 @@ export default class PalletsStakingValidatorsController extends AbstractControll * @param _req Express Request * @param res Express Response */ - private getPalletStakingValidators: RequestHandler = async ({ query: { at, useRcBlock } }, res): Promise => { + private getPalletStakingValidators: RequestHandler = async ( + { query: { at, useRcBlock, useRcBlockFormat } }, + res, + ): Promise => { + const useObjectFormat = useRcBlockFormat === 'object'; + if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - PalletsStakingValidatorsController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsStakingValidatorsController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + PalletsStakingValidatorsController.sanitizedSend(res, []); + } return; } @@ -67,7 +77,13 @@ export default class PalletsStakingValidatorsController extends AbstractControll results.push(enhancedResult); } - PalletsStakingValidatorsController.sanitizedSend(res, results); + // Send response based on format + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsStakingValidatorsController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, results)); + } else { + PalletsStakingValidatorsController.sanitizedSend(res, results); + } } else { const hash = await this.getHashFromAt(at); const result = await this.service.derivePalletStakingValidators(hash); diff --git a/src/controllers/pallets/PalletsStorageController.ts b/src/controllers/pallets/PalletsStorageController.ts index ea6874648..bee7f4cfc 100644 --- a/src/controllers/pallets/PalletsStorageController.ts +++ b/src/controllers/pallets/PalletsStorageController.ts @@ -53,18 +53,24 @@ export default class PalletsStorageController extends AbstractController = async ( - { query: { at, keys, metadata, useRcBlock }, params: { palletId, storageItemId } }, + { query: { at, keys, metadata, useRcBlock, useRcBlockFormat }, params: { palletId, storageItemId } }, res, ): Promise => { const parsedKeys = Array.isArray(keys) ? keys : []; const metadataArg = metadata === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - PalletsStorageController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsStorageController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + PalletsStorageController.sanitizedSend(res, []); + } return; } @@ -95,7 +101,13 @@ export default class PalletsStorageController extends AbstractController => { const onlyIdsArg = onlyIds === 'true'; + const useObjectFormat = useRcBlockFormat === 'object'; if (useRcBlock === 'true') { const rcAtResults = await this.getHashFromRcAt(at); - // Return empty array if no Asset Hub blocks found + // Handle empty results based on format if (rcAtResults.length === 0) { - PalletsStorageController.sanitizedSend(res, []); + if (useObjectFormat) { + const rcBlockInfo = await this.getRcBlockInfo(at); + PalletsStorageController.sanitizedSend(res, this.formatRcBlockObjectResponse(rcBlockInfo, [])); + } else { + PalletsStorageController.sanitizedSend(res, []); + } return; } @@ -152,7 +170,13 @@ export default class PalletsStorageController extends AbstractController Date: Sat, 10 Jan 2026 10:36:46 -0500 Subject: [PATCH 10/10] Update the docs --- docs-v2/dist/bundle.js | 2 +- docs-v2/guides/USE_RC_BLOCK_SPEC.md | 54 ++++- docs-v2/openapi-v1.yaml | 330 +++++++++++++++++++++++++++- docs/dist/app.bundle.js | 2 +- docs/src/openapi-v1.yaml | 330 +++++++++++++++++++++++++++- 5 files changed, 707 insertions(+), 11 deletions(-) diff --git a/docs-v2/dist/bundle.js b/docs-v2/dist/bundle.js index f67784e96..8b02f58da 100644 --- a/docs-v2/dist/bundle.js +++ b/docs-v2/dist/bundle.js @@ -1,2 +1,2 @@ /*! For license information please see bundle.js.LICENSE.txt */ -(()=>{"use strict";var n={56:(n,e,t)=>{n.exports=function(n){var e=t.nc;e&&n.setAttribute("nonce",e)}},72:n=>{var e=[];function t(n){for(var t=-1,r=0;r{t.d(e,{A:()=>i});var r=t(601),a=t.n(r),o=t(314),s=t.n(o)()(a());s.push([n.id,"/* Responsive design styles for Substrate API Sidecar Documentation */\n\n/* Large screens (1200px and up) */\n@media (min-width: 1200px) {\n .content-container {\n max-width: 1200px;\n }\n \n .search-input {\n width: 350px;\n }\n \n .features-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n/* Medium screens (768px to 1023px) */\n@media (max-width: 1023px) {\n :root {\n --sidebar-width: 260px;\n }\n \n .header-content {\n padding: 0 var(--spacing-lg);\n }\n \n .search-input {\n width: 240px;\n }\n \n .main-content {\n padding: var(--spacing-xl);\n }\n \n .endpoint-title {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-md);\n }\n \n .parameter-header {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-xs);\n }\n \n .response-header {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-sm);\n }\n \n /* Header responsive for medium screens */\n .section-header h1 {\n font-size: var(--font-size-3xl);\n }\n}\n\n/* Tablet screens (768px to 1023px) */\n@media (max-width: 1023px) and (min-width: 768px) {\n .features-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n \n .search-item-header {\n flex-wrap: wrap;\n }\n \n .nav-group-header {\n padding: var(--spacing-sm) var(--spacing-lg);\n }\n \n .nav-link {\n padding: var(--spacing-sm) var(--spacing-lg);\n }\n}\n\n/* Small tablet and large mobile (640px to 767px) */\n@media (max-width: 767px) {\n .menu-toggle {\n display: flex;\n }\n \n .sidebar {\n transform: translateX(-100%);\n width: 100%;\n max-width: 320px;\n box-shadow: var(--shadow-xl);\n }\n \n .sidebar.mobile-open {\n transform: translateX(0);\n }\n \n .main-content {\n margin-left: 0;\n padding: var(--spacing-lg);\n }\n \n .header-content {\n padding: 0 var(--spacing-md);\n }\n \n .search-input {\n width: 200px;\n }\n \n .brand-subtitle {\n display: none;\n }\n \n .features-grid {\n grid-template-columns: 1fr;\n gap: var(--spacing-xl);\n }\n \n .feature-card {\n padding: var(--spacing-xl);\n }\n \n .section-header {\n margin-bottom: var(--spacing-xl);\n padding-bottom: var(--spacing-md);\n }\n \n .endpoint-title h2 {\n font-size: var(--font-size-xl);\n word-break: break-word;\n }\n \n .parameter-table {\n overflow-x: auto;\n }\n \n .parameter-row {\n padding: var(--spacing-md);\n }\n \n .code-block {\n font-size: var(--font-size-xs);\n }\n \n .search-results {\n position: fixed;\n top: var(--header-height);\n left: 0;\n right: 0;\n border-radius: 0;\n max-height: calc(100vh - var(--header-height));\n }\n \n .breadcrumb-list {\n flex-wrap: wrap;\n }\n \n .nav-subitem .nav-link {\n padding-left: var(--spacing-md);\n }\n}\n\n/* Mobile screens (480px to 639px) */\n@media (max-width: 639px) {\n .header-controls {\n gap: var(--spacing-sm);\n }\n \n .search-input {\n width: 160px;\n font-size: var(--font-size-sm);\n }\n \n .main-content {\n padding: var(--spacing-md);\n }\n \n .content-container {\n margin: 0;\n }\n \n .section-header {\n margin-bottom: var(--spacing-lg);\n }\n \n .endpoint-title {\n gap: var(--spacing-sm);\n }\n \n .method-badge.large {\n padding: 0.25rem 0.375rem;\n min-width: 2.5rem;\n font-size: var(--font-size-xs);\n }\n \n .endpoint-title h2 {\n font-size: var(--font-size-lg);\n }\n \n .parameters-section,\n .responses-section,\n .example-section,\n .example-request-section {\n margin-bottom: var(--spacing-2xl);\n }\n \n .parameter-row {\n padding: var(--spacing-sm);\n }\n \n .parameter-header {\n margin-bottom: var(--spacing-xs);\n }\n \n .response-item {\n margin-bottom: var(--spacing-md);\n }\n \n .response-header {\n padding: var(--spacing-md);\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-xs);\n }\n \n .code-header,\n .example-header {\n padding: var(--spacing-sm) var(--spacing-md);\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-xs);\n }\n \n .copy-button {\n padding: var(--spacing-xs);\n font-size: var(--font-size-xs);\n }\n \n .api-info {\n padding: 0 var(--spacing-md);\n }\n \n .server-selector {\n padding: 0 var(--spacing-md);\n }\n \n .nav-group-header {\n padding: var(--spacing-sm) var(--spacing-md);\n }\n \n .nav-link {\n padding: var(--spacing-sm) var(--spacing-md);\n font-size: var(--font-size-xs);\n }\n \n .nav-section-header {\n padding: 0 var(--spacing-md) var(--spacing-sm);\n }\n \n .search-item {\n padding: var(--spacing-sm);\n }\n \n .search-item-header {\n margin-bottom: var(--spacing-xs);\n }\n \n .search-item-tags {\n margin-top: var(--spacing-xs);\n }\n}\n\n/* Very small mobile screens (up to 479px) */\n@media (max-width: 479px) {\n .header-content {\n padding: 0 var(--spacing-sm);\n }\n \n .search-input {\n width: 140px;\n }\n \n .brand-title {\n font-size: var(--font-size-base);\n }\n \n .main-content {\n padding: var(--spacing-sm);\n }\n \n .endpoint-title h2 {\n font-size: var(--font-size-base);\n word-break: break-all;\n }\n \n .method-badge.large {\n padding: 0.125rem 0.25rem;\n min-width: 2rem;\n font-size: var(--font-size-xs);\n }\n \n .features-grid {\n gap: var(--spacing-lg);\n }\n \n .feature-card {\n padding: var(--spacing-lg);\n }\n \n .feature-icon {\n font-size: 1.5rem;\n margin-bottom: var(--spacing-md);\n }\n \n .sidebar {\n max-width: 280px;\n }\n \n .api-info {\n padding: 0 var(--spacing-sm);\n margin-bottom: var(--spacing-xl);\n }\n \n .server-selector {\n padding: 0 var(--spacing-sm);\n margin-bottom: var(--spacing-xl);\n }\n \n .nav-group-header {\n padding: var(--spacing-xs) var(--spacing-sm);\n }\n \n .nav-link {\n padding: var(--spacing-xs) var(--spacing-sm);\n }\n \n .nav-section-header {\n padding: 0 var(--spacing-sm) var(--spacing-sm);\n }\n \n .nav-subitem .nav-link {\n padding-left: var(--spacing-lg);\n }\n \n .parameter-row {\n padding: var(--spacing-xs) var(--spacing-sm);\n }\n \n .code-header,\n .example-header {\n padding: var(--spacing-xs) var(--spacing-sm);\n }\n \n .response-header {\n padding: var(--spacing-xs) var(--spacing-sm);\n }\n \n .schema-definition {\n padding: var(--spacing-md);\n }\n \n .search-results-content {\n padding: var(--spacing-md);\n }\n \n .search-no-results {\n padding: var(--spacing-2xl) var(--spacing-lg);\n }\n \n .no-results-icon {\n font-size: 2rem;\n margin-bottom: var(--spacing-md);\n }\n}\n\n/* Landscape phone orientation */\n@media (max-height: 600px) and (orientation: landscape) {\n .loading-screen {\n padding: var(--spacing-lg);\n }\n \n .sidebar {\n height: calc(100vh - var(--header-height));\n overflow-y: auto;\n }\n \n .search-results {\n max-height: 200px;\n }\n \n .nav-group-header {\n padding: var(--spacing-xs) var(--spacing-lg);\n }\n \n .nav-link {\n padding: var(--spacing-xs) var(--spacing-lg);\n }\n \n .api-info {\n margin-bottom: var(--spacing-lg);\n }\n \n .server-selector {\n margin-bottom: var(--spacing-lg);\n }\n}\n\n/* High contrast mode support */\n@media (prefers-contrast: high) {\n :root {\n --bg-primary: #000000;\n --bg-secondary: #1a1a1a;\n --bg-tertiary: #2d2d2d;\n --text-primary: #ffffff;\n --text-secondary: #e0e0e0;\n --border-primary: #555555;\n --accent-primary: #66b3ff;\n }\n}\n\n/* Reduced motion support */\n@media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n \n .spinner {\n animation: none;\n }\n}\n\n/* Print styles */\n@media print {\n .header,\n .sidebar,\n .search-results,\n .copy-button,\n .theme-toggle,\n .menu-toggle {\n display: none !important;\n }\n \n .main-content {\n margin-left: 0 !important;\n padding: 0 !important;\n }\n \n .content-section {\n break-inside: avoid;\n page-break-inside: avoid;\n }\n \n .endpoint-section {\n page-break-after: always;\n }\n \n body {\n background: white !important;\n color: black !important;\n }\n \n .code-block {\n border: 1px solid #000;\n background: #f5f5f5 !important;\n }\n}\n\n/* Focus management for keyboard navigation */\n@media (any-hover: none) {\n .nav-link:focus,\n .search-item:focus,\n .copy-button:focus {\n outline: 2px solid var(--accent-primary);\n outline-offset: 2px;\n }\n}\n\n/* Touch device optimizations */\n@media (any-hover: none) {\n .nav-link,\n .search-item,\n .copy-button,\n .theme-toggle {\n min-height: 44px;\n }\n \n .nav-group-header {\n min-height: 44px;\n }\n \n .section-toggle {\n min-width: 44px;\n min-height: 44px;\n }\n}\n\n/* Container queries for modern browsers */\n@supports (container-type: inline-size) {\n .search-container {\n container-type: inline-size;\n }\n \n @container (max-width: 300px) {\n .search-input {\n width: 100%;\n }\n }\n \n .parameter-table {\n container-type: inline-size;\n }\n \n @container (max-width: 500px) {\n .parameter-header {\n flex-direction: column;\n align-items: flex-start;\n }\n }\n}\n\n/* API Explorer Responsive Styles */\n@media (max-width: 1023px) {\n .explorer-header {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-md);\n }\n \n .try-button {\n width: 100%;\n justify-content: center;\n }\n \n .url-display {\n flex-wrap: wrap;\n }\n \n .request-url {\n min-width: 200px;\n }\n \n .response-tabs {\n flex-wrap: wrap;\n }\n \n .tab-button {\n flex: 1 1 auto;\n min-width: 120px;\n }\n}\n\n@media (max-width: 767px) {\n .explorer-content {\n padding: var(--spacing-lg);\n }\n \n .config-section {\n margin-bottom: var(--spacing-xl);\n }\n \n .parameter-label {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-xs);\n }\n \n .header-row,\n .custom-header-row {\n flex-direction: column;\n align-items: stretch;\n }\n \n .add-header-button,\n .remove-header-button {\n align-self: flex-end;\n margin-top: var(--spacing-sm);\n }\n \n .section-header {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-sm);\n }\n \n .response-meta {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-xs);\n }\n \n .tab-content {\n padding: var(--spacing-md);\n }\n \n .error-content {\n flex-direction: column;\n }\n \n .error-icon {\n align-self: flex-start;\n }\n}\n\n@media (max-width: 479px) {\n .explorer-content {\n padding: var(--spacing-md);\n }\n \n .url-display {\n flex-direction: column;\n }\n \n .request-url {\n min-width: auto;\n width: 100%;\n }\n \n .copy-url-button {\n align-self: flex-end;\n }\n \n .json-input {\n min-height: 150px;\n }\n \n .response-tabs {\n flex-direction: column;\n }\n \n .tab-button {\n flex: none;\n border-bottom: none;\n border-right: 2px solid transparent;\n }\n \n .tab-button.active {\n border-bottom: none;\n border-right-color: var(--accent-primary);\n }\n \n .loading-state {\n padding: var(--spacing-2xl);\n }\n \n .loading-spinner {\n flex-direction: column;\n text-align: center;\n gap: var(--spacing-md);\n }\n \n /* Responsive header */\n .section-header {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-lg);\n text-align: left;\n }\n \n .section-meta {\n align-self: stretch;\n justify-content: flex-end;\n }\n}",""]);const i=s},113:n=>{n.exports=function(n,e){if(e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}},142:(n,e,t)=>{t.d(e,{A:()=>i});var r=t(601),a=t.n(r),o=t(314),s=t.n(o)()(a());s.push([n.id,"/* Main CSS for Substrate API Sidecar Documentation - Dark Theme */\n\n/* CSS Custom Properties for Dark Theme */\n:root {\n /* Color Palette - GitHub Dark Inspired */\n --bg-primary: #0d1117;\n --bg-secondary: #161b22;\n --bg-tertiary: #21262d;\n --bg-overlay: rgba(13, 17, 23, 0.8);\n --bg-hover: #30363d;\n --bg-active: #282e33;\n \n /* Borders */\n --border-primary: #30363d;\n --border-secondary: #21262d;\n --border-focus: #58a6ff;\n \n /* Text Colors */\n --text-primary: #f0f6fc;\n --text-secondary: #8b949e;\n --text-tertiary: #6e7681;\n --text-link: #58a6ff;\n --text-link-hover: #79c0ff;\n --text-inverse: #24292f;\n \n /* Accent Colors */\n --accent-primary: #58a6ff;\n --accent-success: #3fb950;\n --accent-warning: #d29922;\n --accent-danger: #f85149;\n \n /* HTTP Method Colors */\n --method-get: #3fb950;\n --method-post: #d29922;\n --method-put: #58a6ff;\n --method-delete: #f85149;\n --method-patch: #a5a5a5;\n --method-head: #6f42c1;\n --method-options: #8b949e;\n \n /* Status Code Colors */\n --status-success: #3fb950;\n --status-redirect: #58a6ff;\n --status-client-error: #d29922;\n --status-server-error: #f85149;\n \n /* Shadows */\n --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n \n /* Typography */\n --font-family-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;\n --font-family-mono: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace;\n \n --font-size-xs: 0.75rem;\n --font-size-sm: 0.875rem;\n --font-size-base: 1rem;\n --font-size-lg: 1.125rem;\n --font-size-xl: 1.25rem;\n --font-size-2xl: 1.5rem;\n --font-size-3xl: 1.875rem;\n --font-size-4xl: 2.25rem;\n \n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n \n --line-height-tight: 1.25;\n --line-height-normal: 1.5;\n --line-height-relaxed: 1.625;\n \n /* Spacing */\n --spacing-xs: 0.25rem;\n --spacing-sm: 0.5rem;\n --spacing-md: 0.75rem;\n --spacing-lg: 1rem;\n --spacing-xl: 1.25rem;\n --spacing-2xl: 1.5rem;\n --spacing-3xl: 2rem;\n --spacing-4xl: 2.5rem;\n --spacing-5xl: 3rem;\n \n /* Border Radius */\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-xl: 0.75rem;\n \n /* Layout */\n --sidebar-width: 280px;\n --header-height: 64px;\n \n /* Transitions */\n --transition-fast: 150ms ease-in-out;\n --transition-normal: 200ms ease-in-out;\n --transition-slow: 300ms ease-in-out;\n}\n\n/* Light theme overrides (future feature) */\n[data-theme=\"light\"] {\n --bg-primary: #ffffff;\n --bg-secondary: #f6f8fa;\n --bg-tertiary: #ffffff;\n --bg-hover: #f3f4f6;\n --bg-active: #e5e7eb;\n \n --border-primary: #d0d7de;\n --border-secondary: #d8dee4;\n \n --text-primary: #24292f;\n --text-secondary: #656d76;\n --text-tertiary: #8b949e;\n --text-inverse: #f0f6fc;\n}\n\n/* Reset and Base Styles */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\nhtml {\n font-size: 16px;\n scroll-behavior: smooth;\n}\n\nbody {\n font-family: var(--font-family-sans);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-normal);\n line-height: var(--line-height-normal);\n color: var(--text-primary);\n background-color: var(--bg-primary);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n overflow-x: hidden;\n}\n\n/* Typography */\nh1, h2, h3, h4, h5, h6 {\n font-weight: var(--font-weight-semibold);\n line-height: var(--line-height-tight);\n margin-bottom: var(--spacing-md);\n color: var(--text-primary);\n}\n\nh1 { font-size: var(--font-size-3xl); }\nh2 { font-size: var(--font-size-2xl); }\nh3 { font-size: var(--font-size-xl); }\nh4 { font-size: var(--font-size-lg); }\nh5 { font-size: var(--font-size-base); }\nh6 { font-size: var(--font-size-sm); }\n\np {\n margin-bottom: var(--spacing-lg);\n color: var(--text-secondary);\n}\n\na {\n color: var(--text-link);\n text-decoration: none;\n transition: color var(--transition-fast);\n}\n\na:hover {\n color: var(--text-link-hover);\n text-decoration: underline;\n}\n\ncode {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n padding: 0.125rem 0.25rem;\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n color: var(--text-primary);\n}\n\npre {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n line-height: var(--line-height-relaxed);\n padding: var(--spacing-lg);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n overflow-x: auto;\n color: var(--text-primary);\n}\n\npre code {\n padding: 0;\n background: none;\n border: none;\n font-size: inherit;\n}\n\nstrong {\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n}\n\nem {\n font-style: italic;\n color: var(--text-secondary);\n}\n\n/* Loading Screen */\n.loading-screen {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: var(--bg-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 9999;\n}\n\n.loading-spinner {\n text-align: center;\n}\n\n.spinner {\n width: 48px;\n height: 48px;\n border: 3px solid var(--border-primary);\n border-top: 3px solid var(--accent-primary);\n border-radius: 50%;\n animation: spin 1s linear infinite;\n margin: 0 auto var(--spacing-lg);\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n.loading-spinner p {\n color: var(--text-secondary);\n margin: 0;\n}\n\n/* App Container */\n.app {\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n}\n\n/* Header */\n.header {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: var(--header-height);\n background-color: var(--bg-secondary);\n border-bottom: 1px solid var(--border-primary);\n z-index: 1000;\n}\n\n.header-content {\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 100%;\n padding: 0 var(--spacing-lg);\n max-width: 100%;\n}\n\n.header-brand {\n display: flex;\n align-items: center;\n gap: var(--spacing-md);\n min-width: 0;\n}\n\n.logo {\n flex-shrink: 0;\n}\n\n.brand-text {\n min-width: 0;\n}\n\n.brand-title {\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n margin: 0;\n color: var(--text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.brand-subtitle {\n font-size: var(--font-size-sm);\n color: var(--text-tertiary);\n white-space: nowrap;\n}\n\n.header-controls {\n display: flex;\n align-items: center;\n gap: var(--spacing-md);\n flex-shrink: 0;\n}\n\n/* Search */\n.search-container {\n position: relative;\n}\n\n.search-input-wrapper {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-input {\n width: 300px;\n height: 40px;\n padding: 0 var(--spacing-lg) 0 40px;\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-lg);\n color: var(--text-primary);\n font-size: var(--font-size-sm);\n transition: border-color var(--transition-fast), box-shadow var(--transition-fast);\n}\n\n.search-input:focus {\n outline: none;\n border-color: var(--border-focus);\n box-shadow: 0 0 0 2px rgba(88, 166, 255, 0.1);\n}\n\n.search-input::placeholder {\n color: var(--text-tertiary);\n}\n\n.search-icon {\n position: absolute;\n left: var(--spacing-md);\n color: var(--text-tertiary);\n pointer-events: none;\n z-index: 1;\n}\n\n.search-clear {\n position: absolute;\n right: var(--spacing-sm);\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: none;\n color: var(--text-tertiary);\n cursor: pointer;\n border-radius: var(--radius-sm);\n transition: all var(--transition-fast);\n}\n\n.search-clear:hover {\n color: var(--text-secondary);\n background-color: var(--bg-hover);\n}\n\n/* Theme Toggle */\n.theme-toggle {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-lg);\n color: var(--text-secondary);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.theme-toggle:hover {\n color: var(--text-primary);\n background-color: var(--bg-hover);\n border-color: var(--border-secondary);\n}\n\n/* Mobile Menu Toggle */\n.menu-toggle {\n display: none;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 40px;\n height: 40px;\n background: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-lg);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.menu-toggle span {\n display: block;\n width: 18px;\n height: 2px;\n background-color: var(--text-secondary);\n margin: 2px 0;\n transition: all var(--transition-fast);\n}\n\n.menu-toggle:hover {\n background-color: var(--bg-hover);\n border-color: var(--border-secondary);\n}\n\n.menu-toggle:hover span {\n background-color: var(--text-primary);\n}\n\n.menu-toggle.active span:nth-child(1) {\n transform: rotate(45deg) translate(5px, 5px);\n}\n\n.menu-toggle.active span:nth-child(2) {\n opacity: 0;\n}\n\n.menu-toggle.active span:nth-child(3) {\n transform: rotate(-45deg) translate(7px, -6px);\n}\n\n/* Main Layout */\n.main-layout {\n display: flex;\n margin-top: var(--header-height);\n min-height: calc(100vh - var(--header-height));\n}\n\n/* Sidebar */\n.sidebar {\n position: fixed;\n top: var(--header-height);\n left: 0;\n width: var(--sidebar-width);\n height: calc(100vh - var(--header-height));\n background-color: var(--bg-secondary);\n border-right: 1px solid var(--border-primary);\n overflow-y: auto;\n z-index: 999;\n transform: translateX(0);\n transition: transform var(--transition-normal);\n}\n\n.sidebar-content {\n padding: var(--spacing-xl) 0;\n}\n\n/* API Info */\n.api-info {\n padding: 0 var(--spacing-xl);\n margin-bottom: var(--spacing-2xl);\n}\n\n.api-version {\n display: inline-block;\n padding: var(--spacing-xs) var(--spacing-sm);\n background-color: var(--accent-primary);\n color: var(--text-inverse);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n border-radius: var(--radius-sm);\n margin-bottom: var(--spacing-md);\n}\n\n.api-description {\n font-size: var(--font-size-sm);\n color: var(--text-tertiary);\n line-height: var(--line-height-relaxed);\n}\n\n/* Server Selector */\n.server-selector {\n padding: 0 var(--spacing-xl);\n margin-bottom: var(--spacing-2xl);\n}\n\n.server-label {\n display: block;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--text-secondary);\n margin-bottom: var(--spacing-sm);\n}\n\n.server-select {\n width: 100%;\n padding: var(--spacing-sm) var(--spacing-md);\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n color: var(--text-primary);\n font-size: var(--font-size-sm);\n cursor: pointer;\n transition: border-color var(--transition-fast);\n}\n\n.server-select:focus {\n outline: none;\n border-color: var(--border-focus);\n}\n\n/* Main Content */\n.main-content {\n flex: 1;\n margin-left: var(--sidebar-width);\n padding: var(--spacing-2xl);\n overflow-y: auto;\n transition: margin-left var(--transition-normal);\n}\n\n/* Content Container */\n.content-container {\n max-width: 1024px;\n margin: 0 auto;\n}\n\n/* Responsive Design */\n@media (max-width: 1024px) {\n .search-input {\n width: 250px;\n }\n}\n\n@media (max-width: 768px) {\n .header-content {\n padding: 0 var(--spacing-md);\n }\n \n .brand-subtitle {\n display: none;\n }\n \n .search-input {\n width: 200px;\n }\n \n .menu-toggle {\n display: flex;\n }\n \n .sidebar {\n transform: translateX(-100%);\n }\n \n .sidebar.mobile-open {\n transform: translateX(0);\n }\n \n .main-content {\n margin-left: 0;\n padding: var(--spacing-lg);\n }\n}\n\n@media (max-width: 640px) {\n .header-controls {\n gap: var(--spacing-sm);\n }\n \n .search-input {\n width: 180px;\n }\n \n .main-content {\n padding: var(--spacing-md);\n }\n}\n\n/* Utility Classes */\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.flex {\n display: flex;\n}\n\n.items-center {\n align-items: center;\n}\n\n.justify-between {\n justify-content: space-between;\n}\n\n.gap-2 {\n gap: var(--spacing-sm);\n}\n\n.gap-4 {\n gap: var(--spacing-lg);\n}\n\n/* Focus Styles */\n*:focus {\n outline: none;\n}\n\n*:focus-visible {\n outline: 2px solid var(--border-focus);\n outline-offset: 2px;\n}",""]);const i=s},314:n=>{n.exports=function(n){var e=[];return e.toString=function(){return this.map(function(e){var t="",r=void 0!==e[5];return e[4]&&(t+="@supports (".concat(e[4],") {")),e[2]&&(t+="@media ".concat(e[2]," {")),r&&(t+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),t+=n(e),r&&(t+="}"),e[2]&&(t+="}"),e[4]&&(t+="}"),t}).join("")},e.i=function(n,t,r,a,o){"string"==typeof n&&(n=[[null,n,void 0]]);var s={};if(r)for(var i=0;i0?" ".concat(p[5]):""," {").concat(p[1],"}")),p[5]=o),t&&(p[2]?(p[1]="@media ".concat(p[2]," {").concat(p[1],"}"),p[2]=t):p[2]=t),a&&(p[4]?(p[1]="@supports (".concat(p[4],") {").concat(p[1],"}"),p[4]=a):p[4]="".concat(a)),e.push(p))}},e}},365:(n,e,t)=>{t.d(e,{A:()=>i});var r=t(601),a=t.n(r),o=t(314),s=t.n(o)()(a());s.push([n.id,"/* Component-specific styles for Substrate API Sidecar Documentation */\n\n/* Feature Icons - Clean Modern Design */\n.feature-icon {\n width: 48px;\n height: 48px;\n border-radius: var(--radius-lg);\n margin-bottom: var(--spacing-lg);\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.feature-icon::after {\n content: '';\n width: 24px;\n height: 24px;\n border-radius: var(--radius-sm);\n background-color: rgba(255, 255, 255, 0.2);\n}\n\n.account-icon {\n background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);\n}\n\n.block-icon {\n background: linear-gradient(135deg, #10b981 0%, #047857 100%);\n}\n\n.runtime-icon {\n background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%);\n}\n\n.transaction-icon {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n}\n\n/* Notice Box Improvements */\n.notice-box {\n padding: var(--spacing-lg);\n border-radius: var(--radius-md);\n border-left: 4px solid var(--accent-primary);\n background-color: rgba(88, 166, 255, 0.1);\n margin: var(--spacing-xl) 0;\n}\n\n.notice-box.info {\n border-left-color: var(--accent-primary);\n background-color: rgba(88, 166, 255, 0.08);\n}\n\n.notice-box .notice-content {\n margin: 0;\n}\n\n/* Navigation Components */\n.nav-menu {\n margin-bottom: var(--spacing-2xl);\n}\n\n.nav-section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-md) var(--spacing-xl);\n cursor: pointer;\n transition: background-color var(--transition-fast);\n border-radius: var(--radius-sm);\n margin: 0 var(--spacing-md);\n}\n\n.nav-section-header h3 {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n text-transform: uppercase;\n letter-spacing: 0.025em;\n margin: 0;\n flex: 1;\n}\n\n/* Clean up nav links */\n.nav-link {\n display: flex;\n align-items: center;\n padding: var(--spacing-md) var(--spacing-xl);\n color: var(--text-secondary);\n text-decoration: none;\n border-radius: var(--radius-sm);\n margin: 0 var(--spacing-md) var(--spacing-xs) var(--spacing-md);\n transition: all var(--transition-fast);\n font-weight: var(--font-weight-normal);\n}\n\n.nav-link:hover {\n background-color: var(--bg-hover);\n color: var(--text-primary);\n text-decoration: none;\n}\n\n.nav-link.active {\n background-color: var(--accent-primary);\n color: var(--text-inverse);\n}\n\n.nav-link.active:hover {\n background-color: var(--accent-primary);\n color: var(--text-inverse);\n}\n\n.nav-section {\n margin-bottom: var(--spacing-xl);\n}\n\n/* Improve feature cards */\n.features-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: var(--spacing-xl);\n margin-top: var(--spacing-xl);\n}\n\n.feature-card {\n padding: var(--spacing-2xl);\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-lg);\n transition: all var(--transition-fast);\n}\n\n.feature-card:hover {\n border-color: var(--accent-primary);\n transform: translateY(-2px);\n box-shadow: var(--shadow-lg);\n}\n\n.feature-card h3 {\n color: var(--text-primary);\n font-weight: var(--font-weight-semibold);\n margin-bottom: var(--spacing-md);\n}\n\n.feature-card p {\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin: 0;\n}\n\n/* Improve main content spacing */\n.section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--spacing-4xl);\n padding: var(--spacing-2xl);\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-lg);\n}\n\n.section-header h1 {\n font-size: var(--font-size-4xl);\n font-weight: var(--font-weight-bold);\n color: var(--text-primary);\n margin: 0;\n}\n\n.section-meta {\n display: flex;\n align-items: center;\n gap: var(--spacing-lg);\n}\n\n.version-badge {\n display: inline-flex;\n align-items: center;\n padding: var(--spacing-xs) var(--spacing-md);\n background-color: var(--accent-primary);\n color: var(--text-inverse);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n border-radius: var(--radius-md);\n}\n\n.github-link {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-xs);\n padding: var(--spacing-xs) var(--spacing-md);\n color: var(--text-secondary);\n text-decoration: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n transition: all var(--transition-fast);\n}\n\n.github-link:hover {\n color: var(--text-primary);\n border-color: var(--accent-primary);\n text-decoration: none;\n}\n\n.overview-content {\n max-width: 800px;\n}\n\n.lead {\n font-size: var(--font-size-xl);\n color: var(--text-primary);\n line-height: var(--line-height-relaxed);\n margin-bottom: var(--spacing-3xl);\n}\n\n/* Guide content spacing */\n.guide-content {\n max-width: 800px;\n}\n\n.guide-content h1 {\n font-size: var(--font-size-3xl);\n font-weight: var(--font-weight-bold);\n color: var(--text-primary);\n margin: var(--spacing-4xl) 0 var(--spacing-xl) 0;\n}\n\n.guide-content h1:first-child {\n margin-top: 0;\n}\n\n.guide-content h2 {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n margin: var(--spacing-3xl) 0 var(--spacing-lg) 0;\n padding-bottom: var(--spacing-sm);\n border-bottom: 1px solid var(--border-primary);\n}\n\n.guide-content h3 {\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n margin: var(--spacing-2xl) 0 var(--spacing-md) 0;\n}\n\n.guide-content h4 {\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-medium);\n color: var(--text-primary);\n margin: var(--spacing-xl) 0 var(--spacing-sm) 0;\n}\n\n.guide-content p {\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin-bottom: var(--spacing-lg);\n}\n\n.guide-content ul,\n.guide-content ol {\n margin: var(--spacing-lg) 0;\n padding-left: var(--spacing-2xl);\n}\n\n.guide-content li {\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin-bottom: var(--spacing-sm);\n}\n\n.guide-content .code-block {\n margin: var(--spacing-xl) 0;\n}\n\n.guide-content .notice-box {\n margin: var(--spacing-xl) 0;\n}\n\n.guide-content blockquote {\n border-left: 4px solid var(--accent-primary);\n padding-left: var(--spacing-lg);\n margin: var(--spacing-xl) 0;\n font-style: italic;\n color: var(--text-secondary);\n}\n\n/* Specification content spacing - same as guide content */\n.spec-content {\n max-width: 800px;\n}\n\n.spec-content h1 {\n font-size: var(--font-size-3xl);\n font-weight: var(--font-weight-bold);\n color: var(--text-primary);\n margin: var(--spacing-4xl) 0 var(--spacing-xl) 0;\n}\n\n.spec-content h1:first-child {\n margin-top: 0;\n}\n\n.spec-content h2 {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n margin: var(--spacing-3xl) 0 var(--spacing-lg) 0;\n padding-bottom: var(--spacing-sm);\n border-bottom: 1px solid var(--border-primary);\n}\n\n.spec-content h3 {\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n margin: var(--spacing-2xl) 0 var(--spacing-md) 0;\n}\n\n.spec-content h4 {\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-medium);\n color: var(--text-primary);\n margin: var(--spacing-xl) 0 var(--spacing-sm) 0;\n}\n\n.spec-content p {\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin-bottom: var(--spacing-lg);\n}\n\n.spec-content ul,\n.spec-content ol {\n margin: var(--spacing-lg) 0;\n padding-left: var(--spacing-2xl);\n}\n\n.spec-content li {\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin-bottom: var(--spacing-sm);\n}\n\n.spec-content .code-block {\n margin: var(--spacing-xl) 0;\n}\n\n.spec-content .notice-box {\n margin: var(--spacing-xl) 0;\n}\n\n.spec-content blockquote {\n border-left: 4px solid var(--accent-primary);\n padding-left: var(--spacing-lg);\n margin: var(--spacing-xl) 0;\n font-style: italic;\n color: var(--text-secondary);\n}\n\n.nav-section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-md) var(--spacing-xl);\n cursor: pointer;\n transition: background-color var(--transition-fast);\n border-radius: var(--radius-sm);\n margin: 0 var(--spacing-md);\n}\n\n.nav-section-header:hover {\n background-color: var(--bg-hover);\n}\n\n.nav-section-header span {\n font-size: var(--font-size-lg);\n margin-right: var(--spacing-sm);\n}\n\n.nav-section-header h3 {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n text-transform: uppercase;\n letter-spacing: 0.025em;\n margin: 0;\n flex: 1;\n}\n\n.section-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n background: none;\n border: none;\n color: var(--text-tertiary);\n cursor: pointer;\n border-radius: var(--radius-sm);\n transition: all var(--transition-fast);\n}\n\n.section-toggle:hover {\n color: var(--text-secondary);\n background-color: var(--bg-tertiary);\n}\n\n.section-toggle .chevron {\n transition: transform var(--transition-fast);\n}\n\n.section-toggle.collapsed .chevron {\n transform: rotate(-90deg);\n}\n\n/* Main navigation sections */\n.nav-section .nav-list {\n transition: max-height var(--transition-normal), opacity var(--transition-fast);\n overflow: hidden;\n max-height: 1000px;\n opacity: 1;\n}\n\n.nav-section .nav-list.collapsed {\n max-height: 0;\n opacity: 0;\n margin: 0;\n padding: 0;\n}\n\n.nav-list {\n list-style: none;\n margin: 0;\n padding: 0 0 0 var(--spacing-lg);\n}\n\n.nav-list.collapsed {\n display: none;\n}\n\n.nav-item {\n margin: 0;\n}\n\n.nav-link {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n padding: var(--spacing-sm) var(--spacing-xl);\n color: var(--text-secondary);\n text-decoration: none;\n font-size: var(--font-size-sm);\n border-left: 2px solid transparent;\n transition: all var(--transition-fast);\n}\n\n.nav-link:hover {\n color: var(--text-primary);\n background-color: var(--bg-hover);\n text-decoration: none;\n}\n\n.nav-link.active {\n color: var(--accent-primary);\n background-color: var(--bg-active);\n border-left-color: var(--accent-primary);\n}\n\n/* Nav Group Items - Tree Structure */\n.nav-group {\n margin-bottom: var(--spacing-xs);\n margin-left: var(--spacing-md);\n position: relative;\n}\n\n\n.nav-group-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-sm) var(--spacing-md);\n cursor: pointer;\n transition: background-color var(--transition-fast);\n border-radius: var(--radius-sm);\n margin: 0 var(--spacing-xs);\n}\n\n.nav-group-header:hover {\n background-color: var(--bg-hover);\n}\n\n.nav-group-header.expanded {\n background-color: var(--bg-active);\n}\n\n.nav-group-title {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--text-primary);\n text-transform: capitalize;\n flex: 1;\n}\n\n.nav-group-count {\n font-size: var(--font-size-xs);\n color: var(--text-tertiary);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n padding: 0.125rem 0.375rem;\n border-radius: var(--radius-sm);\n min-width: 1.5rem;\n text-align: center;\n margin-right: var(--spacing-sm);\n}\n\n.nav-group-chevron {\n color: var(--text-tertiary);\n transition: transform var(--transition-fast);\n}\n\n.nav-group-header.expanded .nav-group-chevron {\n transform: rotate(90deg);\n}\n\n.nav-sublist {\n max-height: 0;\n overflow: hidden;\n transition: max-height 0.3s ease-in-out, overflow 0.3s ease-in-out;\n margin-left: var(--spacing-lg);\n position: relative;\n list-style: none;\n padding: 0;\n}\n\n\n.nav-subitem {\n position: relative;\n}\n\n\n.nav-subitem .nav-link {\n padding: var(--spacing-xs) var(--spacing-md);\n font-size: var(--font-size-xs);\n margin: var(--spacing-xs) 0;\n}\n\n/* Method Badges */\n.method-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-semibold);\n text-transform: uppercase;\n letter-spacing: 0.025em;\n border-radius: var(--radius-sm);\n color: white;\n flex-shrink: 0;\n}\n\n.method-badge.small {\n padding: 0.125rem 0.375rem;\n min-width: 2.5rem;\n}\n\n.method-badge.large {\n padding: 0.25rem 0.5rem;\n min-width: 3rem;\n}\n\n.method-badge.method-get {\n background-color: var(--method-get);\n}\n\n.method-badge.method-post {\n background-color: var(--method-post);\n}\n\n.method-badge.method-put {\n background-color: var(--method-put);\n}\n\n.method-badge.method-delete {\n background-color: var(--method-delete);\n}\n\n.method-badge.method-patch {\n background-color: var(--method-patch);\n}\n\n.method-badge.method-head {\n background-color: var(--method-head);\n}\n\n.method-badge.method-options {\n background-color: var(--method-options);\n}\n\n/* Endpoint Path */\n.endpoint-path {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n color: var(--text-secondary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1;\n min-width: 0;\n}\n\n/* Schema Icons */\n.schema-icon {\n font-size: var(--font-size-sm);\n}\n\n.schema-name {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n color: var(--text-secondary);\n}\n\n/* Schema tree structure */\n#schemas-nav .nav-item {\n margin-left: var(--spacing-md);\n position: relative;\n}\n\n\n\n#schemas-nav .nav-link {\n padding: var(--spacing-xs) var(--spacing-md);\n margin: var(--spacing-xs) 0;\n}\n\n/* Breadcrumb */\n.breadcrumb {\n margin-bottom: var(--spacing-2xl);\n padding: var(--spacing-md) 0;\n border-bottom: 1px solid var(--border-primary);\n}\n\n.breadcrumb-list {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.breadcrumb-item {\n display: flex;\n align-items: center;\n font-size: var(--font-size-sm);\n}\n\n.breadcrumb-item:not(:last-child)::after {\n content: '/';\n color: var(--text-tertiary);\n margin-left: var(--spacing-sm);\n}\n\n.breadcrumb-item a {\n color: var(--text-link);\n text-decoration: none;\n}\n\n.breadcrumb-item a:hover {\n color: var(--text-link-hover);\n text-decoration: underline;\n}\n\n.breadcrumb-item.active span {\n color: var(--text-primary);\n font-weight: var(--font-weight-medium);\n}\n\n/* Content Sections */\n.content-section {\n margin-bottom: 0;\n}\n\n.section-header {\n margin-bottom: var(--spacing-2xl);\n padding-bottom: var(--spacing-lg);\n border-bottom: 1px solid var(--border-primary);\n}\n\n.section-meta {\n display: flex;\n align-items: center;\n gap: var(--spacing-md);\n margin-top: var(--spacing-md);\n}\n\n.version-badge {\n display: inline-flex;\n align-items: center;\n padding: var(--spacing-xs) var(--spacing-sm);\n background-color: var(--accent-primary);\n color: var(--text-inverse);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n border-radius: var(--radius-sm);\n}\n\n.github-link {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-xs);\n color: var(--text-link);\n text-decoration: none;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n transition: color var(--transition-fast);\n}\n\n.github-link:hover {\n color: var(--text-link-hover);\n text-decoration: none;\n}\n\n/* Endpoint Sections */\n.endpoint-section .section-header {\n position: relative;\n}\n\n.endpoint-title {\n display: flex;\n align-items: center;\n gap: var(--spacing-lg);\n flex-wrap: wrap;\n}\n\n.endpoint-title h2 {\n font-family: var(--font-family-mono);\n font-weight: var(--font-weight-medium);\n margin: 0;\n word-break: break-all;\n}\n\n.endpoint-meta {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n flex-wrap: wrap;\n}\n\n.tag {\n display: inline-flex;\n align-items: center;\n padding: var(--spacing-xs) var(--spacing-sm);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n color: var(--text-secondary);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n border-radius: var(--radius-sm);\n text-transform: capitalize;\n}\n\n.endpoint-summary {\n font-size: var(--font-size-lg);\n color: var(--text-primary);\n margin-bottom: var(--spacing-xl);\n}\n\n.endpoint-description {\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin-bottom: var(--spacing-xl);\n}\n\n/* Parameters */\n.parameters-section {\n margin-bottom: var(--spacing-4xl);\n}\n\n.parameters-section h3 {\n margin-bottom: var(--spacing-xl);\n}\n\n.parameter-group {\n margin-bottom: var(--spacing-md);\n margin-top: var(--spacing-md);\n}\n\n.parameter-group-title {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n color: var(--text-primary);\n margin-bottom: var(--spacing-lg);\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n}\n\n.parameter-group-title::before {\n content: '';\n width: 4px;\n height: 4px;\n background-color: var(--accent-primary);\n border-radius: 50%;\n}\n\n.parameter-table {\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.parameter-row {\n padding: var(--spacing-lg);\n border-bottom: 1px solid var(--border-primary);\n}\n\n.parameter-row:last-child {\n border-bottom: none;\n}\n\n.parameter-info {\n width: 100%;\n}\n\n.parameter-header {\n display: flex;\n align-items: center;\n gap: var(--spacing-md);\n margin-bottom: var(--spacing-sm);\n flex-wrap: wrap;\n}\n\n.parameter-name {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n}\n\n.required-badge {\n display: inline-flex;\n align-items: center;\n padding: 0.125rem 0.375rem;\n background-color: var(--accent-danger);\n color: white;\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n text-transform: uppercase;\n letter-spacing: 0.025em;\n border-radius: var(--radius-sm);\n}\n\n.optional-badge {\n display: inline-flex;\n align-items: center;\n padding: 0.125rem 0.375rem;\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n color: var(--text-tertiary);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n text-transform: uppercase;\n letter-spacing: 0.025em;\n border-radius: var(--radius-sm);\n}\n\n.parameter-type {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n color: var(--text-link);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n padding: 0.125rem 0.375rem;\n border-radius: var(--radius-sm);\n display: inline-block;\n margin-bottom: var(--spacing-sm);\n}\n\n.parameter-description {\n font-size: var(--font-size-sm);\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n}\n\n/* Request Body */\n.request-body-section {\n margin-bottom: var(--spacing-4xl);\n}\n\n.request-body-description {\n color: var(--text-secondary);\n margin-bottom: var(--spacing-lg);\n}\n\n/* Responses */\n.responses-section {\n margin-bottom: var(--spacing-4xl);\n}\n\n.responses-list {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-xl);\n}\n\n.response-item {\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.response-header {\n display: flex;\n align-items: center;\n gap: var(--spacing-md);\n padding: var(--spacing-lg);\n background-color: var(--bg-tertiary);\n border-bottom: 1px solid var(--border-primary);\n}\n\n.status-code {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 3rem;\n padding: 0.25rem 0.5rem;\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: white;\n border-radius: var(--radius-sm);\n}\n\n.status-code.status-success {\n background-color: var(--status-success);\n}\n\n.status-code.status-redirect {\n background-color: var(--status-redirect);\n}\n\n.status-code.status-client-error {\n background-color: var(--status-client-error);\n}\n\n.status-code.status-server-error {\n background-color: var(--status-server-error);\n}\n\n.response-description {\n flex: 1;\n font-size: var(--font-size-sm);\n color: var(--text-secondary);\n}\n\n/* Content Sections */\n.content-section {\n padding: var(--spacing-lg) var(--spacing-lg) var(--spacing-sm) var(--spacing-lg);\n}\n\n.media-type-section {\n margin-bottom: 0;\n}\n\n.media-type {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--text-primary);\n margin-bottom: var(--spacing-lg);\n}\n\n/* Schema Components */\n.schema-section .section-header {\n margin-bottom: var(--spacing-2xl);\n}\n\n.schema-title {\n font-family: var(--font-family-mono);\n margin: 0;\n}\n\n.schema-type-badge {\n display: inline-flex;\n align-items: center;\n padding: var(--spacing-xs) var(--spacing-sm);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n color: var(--text-secondary);\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n border-radius: var(--radius-sm);\n text-transform: lowercase;\n}\n\n.schema-summary {\n font-size: var(--font-size-lg);\n color: var(--text-primary);\n margin-bottom: var(--spacing-xl);\n}\n\n.schema-definition {\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n padding: var(--spacing-xl);\n}\n\n.schema-object,\n.schema-array,\n.schema-simple {\n margin-bottom: var(--spacing-lg);\n}\n\n.schema-type {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n color: var(--text-link);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n padding: 0.125rem 0.375rem;\n border-radius: var(--radius-sm);\n display: inline-block;\n margin-bottom: var(--spacing-sm);\n}\n\n.schema-properties {\n margin-left: var(--spacing-lg);\n border-left: 2px solid var(--border-primary);\n padding-left: var(--spacing-lg);\n}\n\n.schema-property {\n margin-bottom: var(--spacing-lg);\n padding-bottom: var(--spacing-lg);\n border-bottom: 1px solid var(--border-secondary);\n}\n\n.schema-property:last-child {\n border-bottom: none;\n margin-bottom: 0;\n padding-bottom: 0;\n}\n\n.property-header {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n margin-bottom: var(--spacing-sm);\n flex-wrap: wrap;\n}\n\n.property-name {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n}\n\n.property-type {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n color: var(--text-link);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n padding: 0.125rem 0.375rem;\n border-radius: var(--radius-sm);\n}\n\n.property-description {\n font-size: var(--font-size-sm);\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin-left: var(--spacing-lg);\n}\n\n.schema-ref {\n margin: var(--spacing-sm) 0;\n}\n\n.schema-ref-link {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-xs);\n color: var(--text-link);\n text-decoration: none;\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n padding: var(--spacing-xs) var(--spacing-sm);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n transition: all var(--transition-fast);\n}\n\n.schema-ref-link:hover {\n color: var(--text-link-hover);\n background-color: var(--bg-hover);\n text-decoration: none;\n}\n\n.schema-description {\n margin-left: var(--spacing-sm);\n font-size: var(--font-size-xs);\n color: var(--text-tertiary);\n}\n\n/* Example Sections */\n.example-section,\n.example-request-section {\n margin-bottom: var(--spacing-4xl);\n}\n\n.code-block {\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.code-header,\n.example-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-md) var(--spacing-lg);\n background-color: var(--bg-secondary);\n border-bottom: 1px solid var(--border-primary);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--text-secondary);\n}\n\n.copy-button {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n padding: var(--spacing-xs) var(--spacing-sm);\n background: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n color: var(--text-tertiary);\n font-size: var(--font-size-xs);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.copy-button:hover {\n color: var(--text-secondary);\n background-color: var(--bg-hover);\n border-color: var(--border-secondary);\n}\n\n.copy-button.copied {\n color: var(--accent-success);\n border-color: var(--accent-success);\n}\n\n/* Overview Components */\n.lead {\n font-size: var(--font-size-xl);\n color: var(--text-primary);\n margin-bottom: var(--spacing-4xl);\n line-height: var(--line-height-relaxed);\n}\n\n.features-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: var(--spacing-2xl);\n margin-bottom: var(--spacing-4xl);\n}\n\n.feature-card {\n padding: var(--spacing-2xl);\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-lg);\n transition: all var(--transition-normal);\n}\n\n.feature-card:hover {\n border-color: var(--border-secondary);\n transform: translateY(-2px);\n box-shadow: var(--shadow-lg);\n}\n\n.feature-icon {\n font-size: 2rem;\n margin-bottom: var(--spacing-lg);\n display: block;\n}\n\n.feature-card h3 {\n margin-bottom: var(--spacing-md);\n color: var(--text-primary);\n}\n\n.feature-card p {\n margin: 0;\n color: var(--text-secondary);\n font-size: var(--font-size-sm);\n}\n\n.quick-start {\n margin-top: var(--spacing-4xl);\n}\n\n.quick-start h3 {\n margin-bottom: var(--spacing-xl);\n color: var(--text-primary);\n}\n\n.notice-box {\n display: flex;\n align-items: flex-start;\n gap: var(--spacing-md);\n padding: var(--spacing-lg);\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-left: 4px solid var(--accent-primary);\n border-radius: var(--radius-md);\n margin-top: var(--spacing-xl);\n}\n\n.notice-icon {\n font-size: var(--font-size-lg);\n flex-shrink: 0;\n}\n\n.notice-content {\n flex: 1;\n font-size: var(--font-size-sm);\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n}\n\n.notice-content strong {\n color: var(--text-primary);\n}\n\n/* Search Results */\n.search-results {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-top: none;\n border-radius: 0 0 var(--radius-lg) var(--radius-lg);\n box-shadow: var(--shadow-xl);\n z-index: 1000;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.search-results-content {\n padding: var(--spacing-lg);\n}\n\n.search-section {\n margin-bottom: var(--spacing-xl);\n}\n\n.search-section:last-child {\n margin-bottom: 0;\n}\n\n.search-section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--spacing-md);\n}\n\n.search-section-header h4 {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n margin: 0;\n}\n\n.search-count {\n font-size: var(--font-size-xs);\n color: var(--text-tertiary);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n padding: 0.125rem 0.375rem;\n border-radius: var(--radius-sm);\n min-width: 1.5rem;\n text-align: center;\n}\n\n.search-items {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-sm);\n}\n\n.search-item {\n display: block;\n padding: var(--spacing-md);\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: all var(--transition-fast);\n text-decoration: none;\n color: inherit;\n}\n\n.search-item:hover {\n background-color: var(--bg-hover);\n border-color: var(--border-secondary);\n text-decoration: none;\n color: inherit;\n}\n\n.search-item-header {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n margin-bottom: var(--spacing-xs);\n}\n\n.search-item-path,\n.search-item-name {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n color: var(--text-primary);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.search-item-type {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n color: var(--text-link);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n padding: 0.125rem 0.375rem;\n border-radius: var(--radius-sm);\n}\n\n.search-item-summary {\n font-size: var(--font-size-xs);\n color: var(--text-secondary);\n line-height: var(--line-height-normal);\n margin-bottom: var(--spacing-xs);\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n.search-item-tags {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n flex-wrap: wrap;\n}\n\n.search-tag {\n font-size: var(--font-size-xs);\n color: var(--text-tertiary);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n padding: 0.125rem 0.375rem;\n border-radius: var(--radius-sm);\n text-transform: capitalize;\n}\n\n.search-item-more {\n padding: var(--spacing-sm);\n text-align: center;\n font-size: var(--font-size-xs);\n color: var(--text-tertiary);\n font-style: italic;\n}\n\n.search-no-results {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-4xl) var(--spacing-2xl);\n text-align: center;\n}\n\n.no-results-icon {\n font-size: 3rem;\n margin-bottom: var(--spacing-lg);\n opacity: 0.5;\n}\n\n.no-results-text p {\n margin-bottom: var(--spacing-sm);\n color: var(--text-primary);\n}\n\n.no-results-text small {\n color: var(--text-tertiary);\n font-size: var(--font-size-sm);\n}\n\n/* API Explorer Components */\n.api-explorer {\n margin-top: var(--spacing-4xl);\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.explorer-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-lg) var(--spacing-xl);\n background-color: var(--bg-tertiary);\n border-bottom: 1px solid var(--border-primary);\n}\n\n.explorer-header h3 {\n margin: 0;\n color: var(--text-primary);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n}\n\n.try-button {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n padding: var(--spacing-md) var(--spacing-lg);\n background-color: var(--accent-primary);\n color: white;\n border: none;\n border-radius: var(--radius-md);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.try-button:hover {\n background-color: var(--text-link-hover);\n transform: translateY(-1px);\n}\n\n.try-button:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n transform: none;\n}\n\n.explorer-content {\n padding: var(--spacing-xl);\n}\n\n.request-config {\n margin-bottom: var(--spacing-4xl);\n}\n\n.config-section {\n margin-bottom: var(--spacing-2xl);\n}\n\n.config-section h4 {\n color: var(--text-primary);\n margin-bottom: var(--spacing-lg);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n}\n\n.section-description {\n color: var(--text-secondary);\n margin-bottom: var(--spacing-lg);\n font-size: var(--font-size-sm);\n}\n\n/* URL Builder */\n.url-builder {\n margin-bottom: var(--spacing-lg);\n}\n\n.url-display {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n padding: var(--spacing-sm);\n}\n\n.request-url {\n flex: 1;\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n color: var(--text-primary);\n background: none;\n border: none;\n outline: none;\n padding: var(--spacing-sm);\n}\n\n.copy-url-button {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n color: var(--text-tertiary);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.copy-url-button:hover {\n color: var(--text-secondary);\n background-color: var(--bg-hover);\n}\n\n/* Parameter Forms */\n.parameters-form {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-xl);\n}\n\n.parameter-group h5 {\n color: var(--text-primary);\n margin-bottom: var(--spacing-lg);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n text-transform: uppercase;\n letter-spacing: 0.025em;\n}\n\n.parameter-input {\n margin-bottom: var(--spacing-lg);\n}\n\n.parameter-label {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n margin-bottom: var(--spacing-sm);\n flex-wrap: wrap;\n}\n\n.param-input {\n width: 100%;\n padding: var(--spacing-md);\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n color: var(--text-primary);\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n transition: border-color var(--transition-fast);\n}\n\n.param-input:focus {\n outline: none;\n border-color: var(--border-focus);\n box-shadow: 0 0 0 2px rgba(88, 166, 255, 0.1);\n}\n\n.param-input::placeholder {\n color: var(--text-tertiary);\n}\n\n/* Request Body Input */\n.request-body-input {\n position: relative;\n}\n\n.input-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--spacing-sm);\n}\n\n.input-header span {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n color: var(--text-secondary);\n}\n\n.format-json-button {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n padding: var(--spacing-xs) var(--spacing-sm);\n background: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n color: var(--text-tertiary);\n font-size: var(--font-size-xs);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.format-json-button:hover {\n color: var(--text-secondary);\n background-color: var(--bg-hover);\n}\n\n.json-input {\n width: 100%;\n min-height: 200px;\n padding: var(--spacing-lg);\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n color: var(--text-primary);\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n resize: vertical;\n transition: border-color var(--transition-fast);\n}\n\n.json-input:focus {\n outline: none;\n border-color: var(--border-focus);\n box-shadow: 0 0 0 2px rgba(88, 166, 255, 0.1);\n}\n\n/* Headers Input */\n.headers-input {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-sm);\n}\n\n.header-row,\n.custom-header-row {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n}\n\n.header-name,\n.header-value {\n flex: 1;\n padding: var(--spacing-sm) var(--spacing-md);\n font-size: var(--font-size-sm);\n color: var(--text-primary);\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n transition: border-color var(--transition-fast);\n}\n\n.header-name:focus,\n.header-value:focus {\n outline: none;\n border-color: var(--border-focus);\n}\n\n.add-header-button,\n.remove-header-button {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n background: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n color: var(--text-tertiary);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.add-header-button:hover {\n color: var(--accent-success);\n border-color: var(--accent-success);\n}\n\n.remove-header-button:hover {\n color: var(--accent-danger);\n border-color: var(--accent-danger);\n}\n\n/* Request/Response Area */\n.request-response-area {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-2xl);\n}\n\n.request-preview {\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-md) var(--spacing-lg);\n background-color: var(--bg-tertiary);\n border-bottom: 1px solid var(--border-primary);\n}\n\n.section-header h4 {\n margin: 0;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n}\n\n.copy-request-button,\n.copy-response-button {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n padding: var(--spacing-xs) var(--spacing-sm);\n background: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n color: var(--text-tertiary);\n font-size: var(--font-size-xs);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.copy-request-button:hover,\n.copy-response-button:hover {\n color: var(--text-secondary);\n background-color: var(--bg-hover);\n}\n\n/* Response Area */\n.response-area {\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.response-meta {\n display: flex;\n align-items: center;\n gap: var(--spacing-md);\n}\n\n.response-time {\n font-size: var(--font-size-xs);\n color: var(--text-tertiary);\n padding: 0.125rem 0.375rem;\n background-color: var(--bg-secondary);\n border-radius: var(--radius-sm);\n}\n\n.response-status {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-semibold);\n padding: 0.125rem 0.375rem;\n border-radius: var(--radius-sm);\n color: white;\n}\n\n/* Tab Navigation */\n.tab-navigation {\n display: flex;\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md) var(--radius-md) 0 0;\n margin-bottom: 0;\n}\n\n.tab-navigation .tab-button {\n flex: 1;\n padding: var(--spacing-lg) var(--spacing-xl);\n background: none;\n border: none;\n color: var(--text-secondary);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n transition: all var(--transition-fast);\n border-bottom: 3px solid transparent;\n position: relative;\n}\n\n.tab-navigation .tab-button:first-child {\n border-radius: var(--radius-md) 0 0 0;\n}\n\n.tab-navigation .tab-button:last-child {\n border-radius: 0 var(--radius-md) 0 0;\n}\n\n.tab-navigation .tab-button:hover {\n color: var(--text-primary);\n background-color: var(--bg-hover);\n}\n\n.tab-navigation .tab-button.active {\n color: var(--accent-primary);\n border-bottom-color: var(--accent-primary);\n background-color: var(--bg-primary);\n}\n\n.tab-content {\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-top: none;\n border-radius: 0 0 var(--radius-md) var(--radius-md);\n overflow: hidden;\n}\n\n.tab-pane {\n display: none;\n padding: var(--spacing-2xl);\n animation: fadeIn 0.2s ease-in-out;\n}\n\n.tab-pane.active {\n display: block;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n/* Getting Started Styles */\n.getting-started-content {\n max-width: 900px;\n}\n\n.setup-steps {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-3xl);\n margin-bottom: var(--spacing-4xl);\n}\n\n.setup-step {\n display: flex;\n gap: var(--spacing-xl);\n align-items: flex-start;\n}\n\n.step-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background-color: var(--accent-primary);\n color: white;\n font-weight: var(--font-weight-bold);\n font-size: var(--font-size-lg);\n border-radius: 50%;\n flex-shrink: 0;\n margin-top: var(--spacing-sm);\n}\n\n.step-content {\n flex: 1;\n}\n\n.step-content h4 {\n margin-bottom: var(--spacing-lg);\n color: var(--text-primary);\n font-size: var(--font-size-lg);\n}\n\n.step-content p {\n color: var(--text-secondary);\n margin-bottom: var(--spacing-lg);\n font-size: var(--font-size-sm);\n}\n\n.configuration-section {\n margin-top: var(--spacing-4xl);\n}\n\n.configuration-section h3 {\n margin-bottom: var(--spacing-xl);\n color: var(--text-primary);\n}\n\n.configuration-section p {\n color: var(--text-secondary);\n margin-bottom: var(--spacing-xl);\n}\n\n.config-table {\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.config-row {\n display: flex;\n align-items: center;\n padding: var(--spacing-lg);\n border-bottom: 1px solid var(--border-primary);\n}\n\n.config-row:last-child {\n border-bottom: none;\n}\n\n.config-key {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n min-width: 200px;\n padding-right: var(--spacing-lg);\n}\n\n.config-desc {\n color: var(--text-secondary);\n font-size: var(--font-size-sm);\n line-height: var(--line-height-relaxed);\n flex: 1;\n}\n\n/* Enhanced Features Styles */\n.features-content {\n max-width: 1200px;\n}\n\n.features-content .features-grid {\n grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));\n gap: var(--spacing-3xl);\n margin-bottom: var(--spacing-5xl);\n}\n\n.feature-card.detailed {\n padding: var(--spacing-3xl);\n min-height: 280px;\n}\n\n.feature-header {\n display: flex;\n align-items: center;\n gap: var(--spacing-lg);\n margin-bottom: var(--spacing-lg);\n}\n\n.feature-header .feature-icon {\n font-size: 2.5rem;\n margin-bottom: 0;\n}\n\n.feature-header h3 {\n margin: 0;\n font-size: var(--font-size-xl);\n}\n\n.feature-card.detailed p {\n font-size: var(--font-size-base);\n margin-bottom: var(--spacing-lg);\n line-height: var(--line-height-relaxed);\n}\n\n.feature-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.feature-list li {\n position: relative;\n padding-left: var(--spacing-xl);\n margin-bottom: var(--spacing-md);\n color: var(--text-secondary);\n font-size: var(--font-size-sm);\n line-height: var(--line-height-relaxed);\n}\n\n.feature-list li::before {\n content: '•';\n position: absolute;\n left: 0;\n color: var(--accent-primary);\n font-weight: var(--font-weight-bold);\n}\n\n.technical-features {\n margin-top: var(--spacing-4xl);\n}\n\n.technical-features h3 {\n margin-bottom: var(--spacing-3xl);\n color: var(--text-primary);\n text-align: center;\n}\n\n.tech-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: var(--spacing-2xl);\n}\n\n.tech-item {\n text-align: center;\n padding: var(--spacing-2xl);\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-lg);\n transition: all var(--transition-normal);\n}\n\n.tech-item:hover {\n border-color: var(--border-secondary);\n transform: translateY(-4px);\n box-shadow: var(--shadow-md);\n}\n\n.tech-item h4 {\n margin-bottom: var(--spacing-lg);\n color: var(--text-primary);\n font-size: var(--font-size-lg);\n}\n\n.tech-item p {\n color: var(--text-secondary);\n font-size: var(--font-size-sm);\n line-height: var(--line-height-relaxed);\n margin: 0;\n}\n\n/* Response Tabs */\n.response-tabs {\n display: flex;\n background-color: var(--bg-secondary);\n border-bottom: 1px solid var(--border-primary);\n}\n\n.response-tabs .tab-button {\n flex: 1;\n padding: var(--spacing-md) var(--spacing-lg);\n background: none;\n border: none;\n color: var(--text-secondary);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n transition: all var(--transition-fast);\n border-bottom: 2px solid transparent;\n}\n\n.response-tabs .tab-button:hover {\n color: var(--text-primary);\n background-color: var(--bg-hover);\n}\n\n.response-tabs .tab-button.active {\n color: var(--accent-primary);\n border-bottom-color: var(--accent-primary);\n background-color: var(--bg-primary);\n}\n\n.response-content {\n position: relative;\n}\n\n.tab-content {\n display: none;\n padding: var(--spacing-lg);\n}\n\n.tab-content.active {\n display: block;\n}\n\n/* Headers List */\n.headers-list {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-sm);\n}\n\n.header-item {\n display: flex;\n align-items: flex-start;\n gap: var(--spacing-sm);\n padding: var(--spacing-sm) 0;\n border-bottom: 1px solid var(--border-secondary);\n}\n\n.header-item:last-child {\n border-bottom: none;\n}\n\n.header-name {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n min-width: 120px;\n}\n\n.header-value {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n color: var(--text-secondary);\n word-break: break-all;\n flex: 1;\n}\n\n/* Loading State */\n.loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-4xl);\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n}\n\n.loading-spinner {\n display: flex;\n align-items: center;\n gap: var(--spacing-lg);\n color: var(--text-secondary);\n}\n\n.spinner.small {\n width: 24px;\n height: 24px;\n border-width: 2px;\n}\n\n/* Error State */\n.error-state {\n background-color: var(--bg-primary);\n border: 1px solid var(--accent-danger);\n border-radius: var(--radius-md);\n padding: var(--spacing-xl);\n}\n\n.error-content {\n display: flex;\n align-items: flex-start;\n gap: var(--spacing-lg);\n}\n\n.error-icon {\n font-size: 2rem;\n flex-shrink: 0;\n}\n\n.error-message {\n flex: 1;\n}\n\n.error-message h5 {\n color: var(--accent-danger);\n margin-bottom: var(--spacing-sm);\n font-size: var(--font-size-base);\n}\n\n.error-message p {\n color: var(--text-secondary);\n margin-bottom: var(--spacing-lg);\n}\n\n.error-details {\n margin-top: var(--spacing-md);\n}\n\n.error-details summary {\n color: var(--text-tertiary);\n cursor: pointer;\n font-size: var(--font-size-sm);\n margin-bottom: var(--spacing-sm);\n}\n\n.error-details pre {\n background-color: var(--bg-secondary);\n color: var(--text-tertiary);\n font-size: var(--font-size-xs);\n max-height: 200px;\n overflow-y: auto;\n}\n\n/* Interactive Parameter Input Forms */\n.example-request-section {\n margin-top: var(--spacing-4xl);\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.example-request-section h3 {\n margin: 0;\n padding: var(--spacing-lg) var(--spacing-xl);\n background-color: var(--bg-tertiary);\n border-bottom: 1px solid var(--border-primary);\n color: var(--text-primary);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n}\n\n.parameter-form {\n padding: var(--spacing-2xl);\n margin: var(--spacing-lg);\n}\n\n.parameter-section {\n margin-bottom: var(--spacing-xl);\n margin-top: var(--spacing-xl);\n}\n\n.parameter-section:last-child {\n margin-bottom: 0;\n}\n\n.parameter-section h4 {\n margin: 0 0 var(--spacing-lg) var(--spacing-sm);\n color: var(--text-primary);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n text-transform: uppercase;\n letter-spacing: 0.025em;\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n}\n\n.parameter-section h4::before {\n content: '';\n width: 4px;\n height: 4px;\n background-color: var(--accent-primary);\n border-radius: 50%;\n}\n\n.parameter-inputs {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-md);\n margin-left: var(--spacing-sm);\n margin-right: var(--spacing-sm);\n}\n\n.param-input-group {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-sm);\n margin-bottom: var(--spacing-sm);\n}\n\n.param-label {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--text-primary);\n flex-wrap: wrap;\n margin-left: var(--spacing-xs);\n}\n\n.param-input {\n padding: var(--spacing-sm) var(--spacing-md);\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n color: var(--text-primary);\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n transition: all var(--transition-fast);\n width: calc(100% - var(--spacing-md));\n box-sizing: border-box;\n margin: 0 var(--spacing-xs);\n}\n\n.param-input:focus {\n outline: none;\n border-color: var(--border-focus);\n box-shadow: 0 0 0 2px rgba(88, 166, 255, 0.1);\n}\n\n.param-input::placeholder {\n color: var(--text-tertiary);\n font-style: italic;\n}\n\n.param-input.error {\n border-color: var(--accent-danger);\n box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.1);\n}\n\n.param-input.error:focus {\n border-color: var(--accent-danger);\n box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.2);\n}\n\n.param-description {\n font-size: var(--font-size-xs);\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin-top: var(--spacing-xs);\n margin-left: var(--spacing-md);\n}\n\n.parameter-error {\n display: none;\n font-size: var(--font-size-xs);\n color: var(--accent-danger);\n margin-top: var(--spacing-xs);\n margin-left: var(--spacing-md);\n}\n\n.parameter-error.show {\n display: block;\n}\n\n.generate-curl-section {\n margin: var(--spacing-2xl) var(--spacing-lg) var(--spacing-lg) var(--spacing-lg);\n padding-top: var(--spacing-2xl);\n border-top: 1px solid var(--border-primary);\n}\n\n.generate-curl-btn {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n padding: var(--spacing-md) var(--spacing-lg);\n background-color: var(--accent-primary);\n color: white;\n border: none;\n border-radius: var(--radius-sm);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n transition: all var(--transition-fast);\n margin: 0 var(--spacing-sm) var(--spacing-lg) var(--spacing-sm);\n}\n\n.generate-curl-btn:hover {\n background-color: var(--text-link-hover);\n transform: translateY(-1px);\n}\n\n.generate-curl-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n transform: none;\n}\n\n.generated-curl-section {\n margin: var(--spacing-md) var(--spacing-sm) 0 var(--spacing-sm);\n}\n\n.generated-curl-container {\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n overflow: hidden;\n margin: var(--spacing-xs);\n}\n\n.generated-curl-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-sm) var(--spacing-md);\n background-color: var(--bg-tertiary);\n border-bottom: 1px solid var(--border-primary);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--text-secondary);\n}\n\n.generated-curl-code {\n padding: var(--spacing-md) var(--spacing-lg);\n}\n\n.generated-curl-code pre {\n margin: 0;\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n color: var(--text-primary);\n line-height: var(--line-height-relaxed);\n white-space: pre-wrap;\n word-break: break-all;\n}\n\n.copy-generated-curl {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n padding: var(--spacing-xs) var(--spacing-sm);\n background: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n color: var(--text-tertiary);\n font-size: var(--font-size-xs);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.copy-generated-curl:hover {\n color: var(--text-secondary);\n background-color: var(--bg-hover);\n border-color: var(--border-secondary);\n}\n\n.copy-generated-curl.copied {\n color: var(--accent-success);\n border-color: var(--accent-success);\n}\n\n/* Responsive design for parameter forms */\n@media (max-width: 768px) {\n .example-request-section h3 {\n padding: var(--spacing-md) var(--spacing-lg);\n font-size: var(--font-size-sm);\n }\n \n .parameter-form {\n padding: var(--spacing-lg);\n margin: var(--spacing-md);\n }\n \n .parameter-section {\n margin-bottom: var(--spacing-xl);\n }\n \n .parameter-section h4 {\n font-size: var(--font-size-xs);\n margin: var(--spacing-xs) 0 var(--spacing-md) var(--spacing-xs);\n }\n \n .parameter-inputs {\n margin-left: var(--spacing-xs);\n margin-right: var(--spacing-xs);\n }\n \n .param-label {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-xs);\n font-size: var(--font-size-xs);\n margin-left: var(--spacing-xs);\n }\n \n .param-input {\n padding: var(--spacing-xs) var(--spacing-sm);\n font-size: var(--font-size-xs);\n width: calc(100% - var(--spacing-sm));\n margin: 0 var(--spacing-xs);\n }\n \n .generate-curl-section {\n margin: var(--spacing-xl) var(--spacing-md) var(--spacing-md) var(--spacing-md);\n padding-top: var(--spacing-xl);\n }\n \n .generate-curl-btn {\n width: calc(100% - var(--spacing-lg));\n justify-content: center;\n padding: var(--spacing-sm) var(--spacing-md);\n font-size: var(--font-size-xs);\n margin: 0 var(--spacing-xs) var(--spacing-md) var(--spacing-xs);\n }\n \n .generated-curl-section {\n margin: var(--spacing-sm) var(--spacing-xs) 0 var(--spacing-xs);\n }\n \n .generated-curl-container {\n margin: var(--spacing-xs);\n }\n \n .generated-curl-header {\n padding: var(--spacing-xs) var(--spacing-sm);\n font-size: var(--font-size-xs);\n }\n \n .generated-curl-code {\n padding: var(--spacing-sm) var(--spacing-md);\n }\n \n .generated-curl-code pre {\n font-size: var(--font-size-xs);\n }\n}\n\n/* Configuration Cards */\n.config-cards {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: var(--spacing-lg);\n margin: var(--spacing-xl) 0;\n}\n\n.config-card {\n background: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n padding: var(--spacing-lg);\n transition: all 0.2s ease;\n}\n\n.config-card:hover {\n border-color: var(--accent-primary);\n background: var(--bg-tertiary);\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n}\n\n.config-card h4 {\n color: var(--text-primary);\n margin: 0 0 var(--spacing-sm) 0;\n font-size: var(--font-size-base);\n font-weight: 600;\n}\n\n.config-card p {\n color: var(--text-secondary);\n margin: 0;\n font-size: var(--font-size-sm);\n line-height: 1.5;\n}\n\n.config-example {\n margin: var(--spacing-lg) 0 var(--spacing-xl) 0;\n}\n\n.config-example h4 {\n color: var(--text-primary);\n margin: 0 0 var(--spacing-md) 0;\n font-size: var(--font-size-lg);\n font-weight: 600;\n}\n\n.config-guide-link {\n color: var(--accent-primary);\n text-decoration: none;\n font-weight: 500;\n transition: color 0.2s ease;\n}\n\n.config-guide-link:hover {\n color: var(--accent-primary);\n text-decoration: underline;\n}\n\n@media (max-width: 768px) {\n .config-cards {\n grid-template-columns: 1fr;\n gap: var(--spacing-md);\n }\n \n .config-card {\n padding: var(--spacing-md);\n }\n}\n\n/* Internal Link Styling */\n.internal-link {\n color: var(--accent-primary);\n text-decoration: none;\n font-weight: 500;\n transition: color 0.2s ease;\n border-bottom: 1px solid transparent;\n}\n\n.internal-link:hover {\n color: var(--accent-primary);\n text-decoration: none;\n border-bottom-color: var(--accent-primary);\n}\n\n/* Smooth scroll behavior for anchored elements */\nhtml {\n scroll-behavior: smooth;\n}\n\n/* Add some padding to headers when they're targeted by anchors */\nh1[id], h2[id], h3[id], h4[id] {\n scroll-margin-top: 80px; /* Account for fixed header */\n position: relative;\n}\n\n/* Highlight targeted sections briefly */\nh1[id]:target, h2[id]:target, h3[id]:target, h4[id]:target {\n animation: highlightTarget 2s ease-out;\n}\n\n@keyframes highlightTarget {\n 0% {\n background-color: rgba(88, 166, 255, 0.2);\n }\n 100% {\n background-color: transparent;\n }\n}\n\n/* Configuration Tables */\n.table-container {\n margin: var(--spacing-xl) 0;\n overflow-x: auto;\n border-radius: var(--radius-md);\n border: 1px solid var(--border-primary);\n background: var(--bg-secondary);\n}\n\n.config-table {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--font-size-sm);\n background: transparent;\n}\n\n.config-table thead {\n background: var(--bg-tertiary);\n border-bottom: 2px solid var(--border-primary);\n}\n\n.config-table thead th {\n padding: var(--spacing-md) var(--spacing-lg);\n text-align: left;\n font-weight: 600;\n color: var(--text-primary);\n border-right: 1px solid var(--border-primary);\n white-space: nowrap;\n}\n\n.config-table thead th:last-child {\n border-right: none;\n}\n\n.config-table tbody tr {\n border-bottom: 1px solid var(--border-secondary);\n transition: background-color 0.2s ease;\n}\n\n.config-table tbody tr:hover {\n background: rgba(88, 166, 255, 0.05);\n}\n\n.config-table tbody tr:last-child {\n border-bottom: none;\n}\n\n.config-table tbody td {\n padding: var(--spacing-md) var(--spacing-lg);\n color: var(--text-secondary);\n border-right: 1px solid var(--border-secondary);\n vertical-align: top;\n line-height: 1.5;\n}\n\n.config-table tbody td:last-child {\n border-right: none;\n}\n\n/* First column (Variable names) styling */\n.config-table tbody td:first-child {\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-weight: 600;\n color: var(--accent-primary);\n background: rgba(88, 166, 255, 0.08);\n white-space: nowrap;\n}\n\n/* Second column (Required) styling */\n.config-table tbody td:nth-child(2) {\n text-align: center;\n font-weight: 600;\n white-space: nowrap;\n}\n\n/* Third column (Default) styling */\n.config-table tbody td:nth-child(3) {\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: var(--font-size-xs);\n color: var(--text-tertiary);\n white-space: nowrap;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Special styling for checkmarks and cross marks */\n.config-table tbody td:nth-child(2):contains('✅') {\n color: #10b981;\n}\n\n.config-table tbody td:nth-child(2):contains('❌') {\n color: #ef4444;\n}\n\n/* Code elements in tables */\n.config-table code {\n background: rgba(88, 166, 255, 0.1);\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n font-size: var(--font-size-xs);\n color: var(--accent-primary);\n}\n\n/* Responsive table behavior */\n@media (max-width: 768px) {\n .table-container {\n margin: var(--spacing-lg) -var(--spacing-md);\n border-left: none;\n border-right: none;\n border-radius: 0;\n }\n \n .config-table {\n font-size: var(--font-size-xs);\n }\n \n .config-table thead th,\n .config-table tbody td {\n padding: var(--spacing-sm) var(--spacing-md);\n }\n \n .config-table tbody td:nth-child(3) {\n max-width: 120px;\n }\n}\n\n@media (max-width: 480px) {\n .config-table thead th,\n .config-table tbody td {\n padding: var(--spacing-xs) var(--spacing-sm);\n }\n \n .config-table thead th {\n font-size: var(--font-size-xs);\n }\n \n .config-table tbody td:nth-child(3) {\n max-width: 80px;\n }\n}\n\n/* Schema/Example Tabs Styling */\n.schema-example-tabs {\n margin-top: var(--spacing-lg);\n}\n\n.tab-headers {\n display: flex;\n border-bottom: 1px solid var(--border-primary);\n margin-bottom: 0;\n}\n\n.tab-header {\n background: none;\n border: none;\n padding: var(--spacing-md) var(--spacing-lg);\n color: var(--text-secondary);\n cursor: pointer;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n border-bottom: 2px solid transparent;\n transition: all var(--transition-fast);\n position: relative;\n}\n\n.tab-header:hover {\n color: var(--text-primary);\n background-color: var(--bg-hover);\n}\n\n.tab-header.active {\n color: var(--accent-primary);\n border-bottom-color: var(--accent-primary);\n background-color: var(--bg-tertiary);\n}\n\n.tab-contents {\n position: relative;\n min-height: 200px;\n}\n\n.tab-content {\n display: none;\n padding: var(--spacing-lg);\n animation: fadeIn 0.2s ease-in-out;\n}\n\n.tab-content.active {\n display: block;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(5px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n/* Generated Example Styling */\n.generated-example-section {\n background-color: var(--bg-secondary);\n border-radius: var(--radius-md);\n overflow: hidden;\n border: 1px solid var(--border-secondary);\n margin-bottom: 0;\n}\n\n.generated-example-section .example-header {\n background-color: var(--bg-tertiary);\n padding: var(--spacing-md) var(--spacing-lg);\n border-bottom: 1px solid var(--border-primary);\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--text-primary);\n}\n\n.generated-example-section .code-block {\n margin: 0;\n background-color: var(--bg-primary);\n}\n\n.generated-example-section .code-block pre {\n margin: 0;\n padding: var(--spacing-lg);\n background: transparent;\n border: none;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.example-note {\n padding: var(--spacing-sm) var(--spacing-lg);\n background-color: var(--bg-tertiary);\n border-top: 1px solid var(--border-primary);\n color: var(--text-secondary);\n}\n\n.example-note small {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n font-size: var(--font-size-xs);\n}\n\n/* No Example/Error States */\n.no-example, .example-error {\n padding: var(--spacing-xl);\n text-align: center;\n color: var(--text-secondary);\n background-color: var(--bg-secondary);\n border: 1px dashed var(--border-primary);\n border-radius: var(--radius-md);\n}\n\n.example-error {\n color: var(--accent-warning);\n border-color: var(--accent-warning);\n background-color: rgba(210, 153, 34, 0.05);\n}\n\n.example-error span {\n display: block;\n font-weight: var(--font-weight-medium);\n margin-bottom: var(--spacing-xs);\n}\n\n/* Copy Button Enhancement */\n.copy-button {\n background: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n color: var(--text-secondary);\n padding: var(--spacing-xs);\n border-radius: var(--radius-sm);\n cursor: pointer;\n transition: all var(--transition-fast);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.copy-button:hover {\n background-color: var(--bg-hover);\n color: var(--text-primary);\n border-color: var(--accent-primary);\n}\n\n.copy-button:active {\n transform: scale(0.95);\n}\n\n/* Copy Success Feedback */\n.copy-button.copied {\n background-color: var(--accent-success);\n border-color: var(--accent-success);\n color: white;\n}\n\n.copy-button.copied::after {\n content: '✓';\n position: absolute;\n font-size: var(--font-size-xs);\n}\n\n.copy-button.copied svg {\n opacity: 0;\n}\n\n/* Data Schema Section Styling */\n.data-schema-section {\n margin-top: var(--spacing-md);\n margin-bottom: 0;\n padding: var(--spacing-lg);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-secondary);\n border-radius: var(--radius-md);\n}\n\n.data-schema-header {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n margin-bottom: var(--spacing-md);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n font-size: var(--font-size-sm);\n}\n\n.schema-links {\n display: flex;\n flex-wrap: wrap;\n gap: var(--spacing-sm);\n margin-bottom: var(--spacing-md);\n}\n\n.schema-link {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-xs);\n padding: var(--spacing-xs) var(--spacing-sm);\n background-color: var(--bg-secondary);\n color: var(--text-link);\n text-decoration: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n font-size: var(--font-size-xs);\n font-family: var(--font-family-mono);\n transition: all var(--transition-fast);\n}\n\n.schema-link:hover {\n background-color: var(--bg-hover);\n border-color: var(--accent-primary);\n color: var(--text-link-hover);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.schema-link:active {\n transform: translateY(0);\n}\n\n.schema-link-icon {\n font-size: 0.75rem;\n opacity: 0.7;\n}\n\n.schema-link-name {\n font-weight: var(--font-weight-medium);\n}\n\n.schema-links-note {\n color: var(--text-secondary);\n font-size: var(--font-size-xs);\n font-style: italic;\n margin-bottom: 0;\n}\n\n.schema-links-note small {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n}\n\n/* Responsive schema links */\n@media (max-width: 768px) {\n .schema-links {\n flex-direction: column;\n }\n \n .schema-link {\n justify-content: flex-start;\n padding: var(--spacing-sm);\n }\n}",""]);const i=s},540:n=>{n.exports=function(n){var e=document.createElement("style");return n.setAttributes(e,n.attributes),n.insert(e,n.options),e}},601:n=>{n.exports=function(n){return n[1]}},659:n=>{var e={};n.exports=function(n,t){var r=function(n){if(void 0===e[n]){var t=document.querySelector(n);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(n){t=null}e[n]=t}return e[n]}(n);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(t)}},825:n=>{n.exports=function(n){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var e=n.insertStyleElement(n);return{update:function(t){!function(n,e,t){var r="";t.supports&&(r+="@supports (".concat(t.supports,") {")),t.media&&(r+="@media ".concat(t.media," {"));var a=void 0!==t.layer;a&&(r+="@layer".concat(t.layer.length>0?" ".concat(t.layer):""," {")),r+=t.css,a&&(r+="}"),t.media&&(r+="}"),t.supports&&(r+="}");var o=t.sourceMap;o&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),e.styleTagTransform(r,n,e.options)}(e,n,t)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(e)}}}}},e={};function t(r){var a=e[r];if(void 0!==a)return a.exports;var o=e[r]={id:r,exports:{}};return n[r](o,o.exports,t),o.exports}t.n=n=>{var e=n&&n.__esModule?()=>n.default:()=>n;return t.d(e,{a:e}),e},t.d=(n,e)=>{for(var r in e)t.o(e,r)&&!t.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:e[r]})},t.o=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),t.nc=void 0;var r=t(72),a=t.n(r),o=t(825),s=t.n(o),i=t(659),c=t.n(i),l=t(56),p=t.n(l),d=t(540),m=t.n(d),h=t(113),u=t.n(h),f=t(142),g={};g.styleTagTransform=u(),g.setAttributes=p(),g.insert=c().bind(null,"head"),g.domAPI=s(),g.insertStyleElement=m(),a()(f.A,g),f.A&&f.A.locals&&f.A.locals;var y=t(365),b={};b.styleTagTransform=u(),b.setAttributes=p(),b.insert=c().bind(null,"head"),b.domAPI=s(),b.insertStyleElement=m(),a()(y.A,b),y.A&&y.A.locals&&y.A.locals;var v=t(91),k={};function x(n){return x="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},x(n)}function w(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})),t.push.apply(t,r)}return t}function I(n,e,t){return(e=j(e))in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function S(n,e){return function(n){if(Array.isArray(n))return n}(n)||function(n,e){var t=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=t){var r,a,o,s,i=[],c=!0,l=!1;try{if(o=(t=t.call(n)).next,0===e){if(Object(t)!==t)return;c=!1}else for(;!(c=(r=o.call(t)).done)&&(i.push(r.value),i.length!==e);c=!0);}catch(n){l=!0,a=n}finally{try{if(!c&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(l)throw a}}return i}}(n,e)||T(n,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function T(n,e){if(n){if("string"==typeof n)return A(n,e);var t={}.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?A(n,e):void 0}}function A(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t3?(a=u===r)&&(c=o[(i=o[4])?5:(i=3,3)],o[4]=o[5]=n):o[0]<=h&&((a=t<2&&hr||r>u)&&(o[4]=t,o[5]=r,m.n=u,i=0))}if(a||t>1)return s;throw d=!0,r}return function(a,p,u){if(l>1)throw TypeError("Generator is already running");for(d&&1===p&&h(p,u),i=p,c=u;(e=i<2?n:c)||!d;){o||(i?i<3?(i>1&&(m.n=-1),h(i,c)):m.n=c:m.v=c);try{if(l=2,o){if(i||(a="next"),e=o[a]){if(!(e=e.call(o,c)))throw TypeError("iterator result is not an object");if(!e.done)return e;c=e.value,i<2&&(i=0)}else 1===i&&(e=o.return)&&e.call(o),i<2&&(c=TypeError("The iterator does not provide a '"+a+"' method"),i=1);o=n}else if((e=(d=m.n<0)?c:t.call(r,m))!==s)break}catch(e){o=n,i=1,c=e}finally{l=1}}return{value:e,done:d}}}(t,a,o),!0),l}var s={};function i(){}function c(){}function l(){}e=Object.getPrototypeOf;var p=[][r]?e(e([][r]())):(q(e={},r,function(){return this}),e),d=l.prototype=i.prototype=Object.create(p);function m(n){return Object.setPrototypeOf?Object.setPrototypeOf(n,l):(n.__proto__=l,q(n,a,"GeneratorFunction")),n.prototype=Object.create(d),n}return c.prototype=l,q(d,"constructor",l),q(l,"constructor",c),c.displayName="GeneratorFunction",q(l,a,"GeneratorFunction"),q(d),q(d,a,"Generator"),q(d,r,function(){return this}),q(d,"toString",function(){return"[object Generator]"}),(R=function(){return{w:o,m}})()}function q(n,e,t,r){var a=Object.defineProperty;try{a({},"",{})}catch(n){a=0}q=function(n,e,t,r){function o(e,t){q(n,e,function(n){return this._invoke(e,t,n)})}e?a?a(n,e,{value:t,enumerable:!r,configurable:!r,writable:!r}):n[e]=t:(o("next",0),o("throw",1),o("return",2))},q(n,e,t,r)}function E(n,e,t,r,a,o,s){try{var i=n[o](s),c=i.value}catch(n){return void t(n)}i.done?e(c):Promise.resolve(c).then(r,a)}function B(n,e){for(var t=0;t-\n Send a serialized transaction and receive back a naive fee estimate.\n Note: `partialFee` does not include any tips that you may add to increase\n a transaction's priority. See the reference on `compute_fee`.\n Replaces `/tx/fee-estimate` from versions < v1.0.0.\n Substrate Reference:\n - `RuntimeDispatchInfo`: https://crates.parity.io/pallet_transaction_payment_rpc_runtime_api/struct.RuntimeDispatchInfo.html\n - `query_info`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.query_info\n - `compute_fee`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee\n operationId: feeEstimateTransaction\n requestBody:\n $ref: '#/components/requestBodies/Transaction'\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionFeeEstimate'\n \"400\":\n description: fee estimation failure\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionFeeEstimateFailure'\n /transaction/material:\n get:\n tags:\n - transaction\n summary: Get all the network information needed to construct a transaction offline.\n description: Returns the material that is universal to constructing any\n signed transaction offline. Replaces `/tx/artifacts` from versions < v1.0.0.\n operationId: getTransactionMaterial\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the transaction construction\n material.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: noMeta\n in: query\n description: DEPRECATED! This is no longer supported\n schema:\n type: boolean\n default: false\n - name: metadata\n in: query\n description: Specifies the format of the metadata to be returned. Accepted values are\n 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata.\n When `metadata` is not inputted, the `metadata` field will be absent.\n schema:\n type: string\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionMaterial'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /transaction/material/{metadataVersion}:\n get:\n tags:\n - transaction\n summary: Get all the network information needed to construct a transaction offline and\n the version of metadata specified in `metadataVersion`.\n description: Returns all the materials necessary for constructing any signed transactions\n offline.\n operationId: getTransactionMaterialwithVersionedMetadata\n parameters:\n - name: metadataVersion\n in: path\n description: The version of metadata. The input is expected in a `vX` format, where `X`\n represents the version number (e.g. `v14`, `v15`). By default, metadata is outputted\n in 'json' format, unless the `metadata` query parameter is provided, in which case it\n can be either in 'json' or 'scale' format.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve the transaction construction\n material.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Specifies the format of the metadata to be returned. Accepted values are\n 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata.\n schema:\n type: string\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionMaterial'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/assets/{assetId}/asset-info:\n get:\n tags:\n - pallets\n summary: Get information and metadata associated with an asset.\n description: Returns information associated with an asset which includes\n the assets `AssetDetails` and `AssetMetadata`.\n operationId: getAssetById\n parameters:\n - name: assetId\n in: path\n description: The unsignedInteger Id of an asset.\n required: true\n schema:\n type: string\n format: unsignedInteger\n - name: at\n in: query\n description: Block at which to retrieve the assetInfo.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving asset info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n oneOf:\n - $ref: '#/components/schemas/PalletsAssetsInfo'\n - type: array\n items:\n $ref: '#/components/schemas/PalletsAssetsInfo'\n description: Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\n /pallets/asset-conversion/liquidity-pools:\n get:\n tags:\n - pallets\n summary: Get information related to existing liquidity pools.\n description: Returns a list of the existing liquidity pools and its corresponding \n tokens at a given block height. If no block is specified, it returns the latest list\n available.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the liquidity pools information.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving liquidity pools info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n oneOf:\n - $ref: '#/components/schemas/LiquidityPools'\n - type: array\n items:\n $ref: '#/components/schemas/LiquidityPools'\n description: Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/asset-conversion/next-available-id:\n get:\n tags:\n - pallets\n summary: Get the next available liquidity pool id.\n description: Returns the next available liquidity pool's id at a given \n block height. If no block is specified, it returns the latest list\n available.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the next liquidity pool's id.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving next available id. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n oneOf:\n - $ref: '#/components/schemas/NextAvailableId'\n - type: array\n items:\n $ref: '#/components/schemas/NextAvailableId'\n description: Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/foreign-assets:\n get:\n tags:\n - pallets\n summary: Get information and metadata associated with foreign assets.\n description: Returns information associated with every foreign asset which includes\n the assets `AssetDetails` and `AssetMetadata`.\n operationId: getForeignAssets\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the foreign assets.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving foreign assets info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n description: An array of foreign assets.\n $ref: '#/components/schemas/PalletsForeignAssets'\n /pallets/nomination-pools/info:\n get:\n tags:\n - pallets\n summary: Get information associated with nomination pools.\n description: Returns information and metadata for nomination pools including pool counters and limits.\n operationId: getNominationPoolInfo\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the nomination pool info.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving nomination pools info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletsNominationPoolsInfo'\n /pallets/nomination-pools/{poolId}:\n get:\n tags:\n - pallets\n summary: Get information and metadata associated with a nomination pool.\n description: Returns information associated with a nomination pool which includes\n the nomination pools' `bondedPool`, `rewardPool` and `metadata`.\n operationId: getNominationPoolById\n parameters:\n - name: poolId\n in: path\n description: The unsignedInteger Id of a nomination pool.\n required: true\n schema:\n type: string\n format: unsignedInteger\n - name: at\n in: query\n description: Block at which to retrieve the nomination pool.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving nomination pool info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletsNominationPool'\n /pallets/on-going-referenda:\n get:\n tags:\n - pallets\n summary: Get a list of all on-going referenda that have track `root (0)` and `whitelisted (1)`,\n along with their associated information.\n description: Returns information associated with on-going referenda which includes\n the referendum's `enactment`, `submitted` and `deciding` fields.\n operationId: getPalletOnGoingReferenda\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the on-going referenda.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving on-going referenda info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletsOnGoingReferenda'\n /pallets/{palletId}/consts:\n get:\n tags:\n - pallets\n summary: Get a list of constants for a pallet.\n description: Returns a list of const item metadata for constant items of the\n specified palletId.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is\n specified in the runtime metadata.'\n required: true\n schema:\n type: string\n - name: onlyIds\n in: query\n description: Only return the names (IDs) of the const items instead of every constant's metadata.\n required: false\n schema:\n type: boolean\n - name: at\n in: query\n description: Block at which to retrieve a list of\n the pallet's constant items.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet constants. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n description: Pallet info and Array of constantItemIds.\n $ref: '#/components/schemas/PalletConstants'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find pallet with palletId\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/{palletId}/consts/{constantItemId}:\n get:\n tags:\n - pallets\n summary: Get the value of a constant item.\n description: Returns the value stored under the constantItemId.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is\n specified in the runtime metadata.'\n required: true\n schema:\n type: string\n - name: constantItemId\n in: path\n description: Id of the const item to query for.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to query the const item at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Include the const items metadata (including documentation)\n if set to true.\n required: false\n schema:\n default: false\n type: boolean\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet constant item. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletConstantsItem'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find resource with id\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/{palletId}/dispatchables:\n get:\n tags:\n - pallets\n summary: Get a list of dispatchables for a pallet.\n description: Returns a list of dispatchable item metadata for distpachable items of the\n specified palletId.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is\n specified in the runtime metadata.'\n required: true\n schema:\n type: string\n - name: onlyIds\n in: query\n description: Only return the names (IDs) of the dispatchable items instead of every dispatchable's metadata.\n required: false\n schema:\n type: boolean\n - name: at\n in: query\n description: Block at which to retrieve dispatchable metadata.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving dispatchable metadata. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n description: Pallet info and Array of dispatchableItemIds.\n $ref: '#/components/schemas/PalletDispatchables'\n \"400\":\n description: invalid blockId supplied for at query param, or invalid parameter combination\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find pallet with palletId\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/{palletId}/dispatchables/{dispatchableItemId}:\n get:\n tags:\n - pallets\n summary: Get the value of a dispatchable item.\n description: Returns the value stored under the dispatchableItemId.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is\n specified in the runtime metadata.'\n required: true\n schema:\n type: string\n - name: dispatchableItemId\n in: path\n description: Id of the dispatchable item to query for.\n required: true\n schema:\n type: string\n - name: metadata\n in: query\n description: Include the dispatchable items metadata (including documentation)\n if set to true.\n required: false\n schema:\n default: false\n type: boolean\n - name: at\n in: query\n description: Block at which to retrieve dispatchable metadata.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving dispatchable metadata. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletDispatchablesItem'\n \"400\":\n description: invalid blockId supplied for at query param, or invalid parameter combination\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find resource with id\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/{palletId}/errors:\n get:\n tags:\n - pallets\n summary: Get a list of errors for a pallet.\n description: Returns a list of error item metadata for error items of the\n specified palletId.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to read error metadata for. Note: the pallet name must match what is\n specified in the runtime metadata.'\n required: true\n schema:\n type: string\n - name: onlyIds\n in: query\n description: Only return the names (IDs) of the error items instead of every error's metadata.\n required: false\n schema:\n type: boolean\n - name: at\n in: query\n description: Block at which to retrieve a list of\n the pallet's error items.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet errors. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n description: Pallet info and Array of errorItemIds.\n $ref: '#/components/schemas/PalletErrors'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find pallet with palletId\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/{palletId}/errors/{errorItemId}:\n get:\n tags:\n - pallets\n summary: Get the value of an error item.\n description: Returns the value stored under the errorItemId.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to read error metadata for. Note: the pallet name must match what is\n specified in the runtime metadata.'\n required: true\n schema:\n type: string\n - name: errorItemId\n in: path\n description: Id of the error item to query for.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to query the error item at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Include the error items metadata (including documentation)\n if set to true.\n required: false\n schema:\n default: false\n type: boolean\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet error item. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletErrorsItem'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find resource with id\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/{palletId}/events:\n get:\n tags:\n - pallets\n summary: Get a list of events for a pallet.\n description: Returns a list of event item metadata for event items of the\n specified palletId.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to read event metadata for. Note: the pallet name must match what is\n specified in the runtime metadata.'\n required: true\n schema:\n type: string\n - name: onlyIds\n in: query\n description: Only return the names (IDs) of the event items instead of every event's metadata.\n required: false\n schema:\n type: boolean\n - name: at\n in: query\n description: Block at which to retrieve a list of\n the pallet's event items.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet events. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n description: Pallet info and Array of eventItemIds.\n $ref: '#/components/schemas/PalletEvents'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find pallet with palletId\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/{palletId}/events/{eventItemId}:\n get:\n tags:\n - pallets\n summary: Get the value of an event item.\n description: Returns the value stored under the eventItemId.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to read event metadata for. Note: the pallet name must match what is\n specified in the runtime metadata.'\n required: true\n schema:\n type: string\n - name: eventItemId\n in: path\n description: Id of the event item to query for.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to query the event item at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Include the event items metadata (including documentation)\n if set to true.\n required: false\n schema:\n default: false\n type: boolean\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet event item. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletEventsItem'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find resource with id\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /runtime/metadata:\n get:\n tags:\n - runtime\n summary: Get the runtime metadata in decoded, JSON form.\n description: >-\n Returns the runtime metadata as a JSON object.\n Substrate Reference:\n - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html\n - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the metadata at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/RuntimeMetadata'\n /runtime/metadata/{metadataVersion}:\n get:\n tags:\n - runtime\n summary: Get the requested version of runtime metadata in decoded, JSON form.\n description: >-\n Returns the requested version of runtime metadata as a JSON object.\n Substrate Reference:\n - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html\n - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\n parameters:\n - name: metadataVersion\n in: path\n description: The version of metadata. The input is expected in a `vX` format, where `X`\n represents the version number (e.g. `v14`, `v15`).\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve the metadata at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/RuntimeMetadata'\n /runtime/metadata/versions:\n get:\n tags:\n - runtime\n summary: Get the available versions of runtime metadata.\n description: >-\n Returns the available versions of runtime metadata.\n Substrate Reference:\n - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html\n - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the metadata versions at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n type: array\n items:\n type: string\n description: An array with the available metadata versions.\n /runtime/code:\n get:\n tags:\n - runtime\n summary: Get the runtime wasm blob.\n description: Returns the runtime Wasm blob in hex format.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the runtime wasm blob at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/RuntimeCode'\n /runtime/spec:\n get:\n tags:\n - runtime\n summary: Get version information of the Substrate runtime.\n description: Returns version information related to the runtime.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve runtime version information at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/RuntimeSpec'\n /rc/runtime/spec:\n get:\n tags:\n - rc runtime\n summary: Get version information of the relay chain Substrate runtime.\n description: Returns version information related to the relay chain runtime. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for runtime specification.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve runtime version information at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/RuntimeSpec'\n /rc/runtime/metadata:\n get:\n tags:\n - rc runtime\n summary: Get the relay chain's metadata.\n description: Returns the relay chain's runtime metadata in decoded JSON format. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for metadata.\n parameters:\n - name: at\n in: query\n description: Block hash or height at which to query. If not provided, queries finalized head.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/RuntimeMetadata'\n /rc/runtime/metadata/versions:\n get:\n tags:\n - rc runtime\n summary: Get the available versions of relay chain's metadata.\n description: Returns the available versions of the relay chain's metadata. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for metadata versions.\n parameters:\n - name: at\n in: query\n description: Block hash or height at which to query. If not provided, queries finalized head.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n type: array\n items:\n type: string\n /rc/runtime/metadata/{metadataVersion}:\n get:\n tags:\n - rc runtime\n summary: Get the relay chain's metadata at a specific version.\n description: Returns the relay chain's runtime metadata at a specific version in decoded JSON format. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for versioned metadata.\n parameters:\n - name: metadataVersion\n in: path\n description: The specific version of the Metadata to query. The input must conform to the 'vX' format, where 'X' represents the version number (examples 'v14', 'v15').\n required: true\n schema:\n type: string\n pattern: '^v[0-9]+$'\n - name: at\n in: query\n description: Block hash or height at which to query. If not provided, queries finalized head.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/RuntimeMetadata'\n \"400\":\n description: Invalid version format or version not available\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/runtime/code:\n get:\n tags:\n - rc runtime\n summary: Get the Wasm code blob of the relay chain Substrate runtime.\n description: Returns the relay chain's runtime code in Wasm format. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for runtime code.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve runtime code information at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/RuntimeCode'\n /rc/pallets/on-going-referenda:\n get:\n tags:\n - rc pallets\n summary: Get relay chain ongoing referenda.\n description: Returns information about ongoing referenda in the relay chain.\n operationId: getRcPalletsOnGoingReferenda\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve relay chain referenda information.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletsOnGoingReferenda'\n \"400\":\n description: invalid blockId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/consts:\n get:\n tags:\n - rc pallets\n summary: Get a list of constants for a relay chain pallet.\n description: Returns a list of constant metadata for the specified relay chain pallet.\n operationId: getRcPalletsConsts\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read constants from.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet constants.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: onlyIds\n in: query\n description: Only return constant IDs, not values and metadata.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletConstants'\n \"400\":\n description: invalid palletId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/consts/{constantItemId}:\n get:\n tags:\n - rc pallets\n summary: Get a constant from a relay chain pallet by its ID.\n description: Returns information about a specific constant from the specified relay chain pallet.\n operationId: getRcPalletsConstsItem\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read the constant from.\n required: true\n schema:\n type: string\n - name: constantItemId\n in: path\n description: Name of the constant to retrieve.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet constant.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Include metadata for the constant.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletConstantsItem'\n \"400\":\n description: invalid palletId or constantItemId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/dispatchables:\n get:\n tags:\n - rc pallets\n summary: Get a list of dispatchables for a relay chain pallet.\n description: Returns a list of dispatchable metadata for the specified relay chain pallet.\n operationId: getRcPalletsDispatchables\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read dispatchables from.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet dispatchables.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: onlyIds\n in: query\n description: Only return dispatchable IDs, not values and metadata.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletDispatchables'\n \"400\":\n description: invalid palletId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/dispatchables/{dispatchableItemId}:\n get:\n tags:\n - rc pallets\n summary: Get a dispatchable from a relay chain pallet by its ID.\n description: Returns information about a specific dispatchable from the specified relay chain pallet.\n operationId: getRcPalletsDispatchablesItem\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read the dispatchable from.\n required: true\n schema:\n type: string\n - name: dispatchableItemId\n in: path\n description: Name of the dispatchable to retrieve.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet dispatchable.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Include metadata for the dispatchable.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletDispatchablesItem'\n \"400\":\n description: invalid palletId or dispatchableItemId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/errors:\n get:\n tags:\n - rc pallets\n summary: Get a list of errors for a relay chain pallet.\n description: Returns a list of error metadata for the specified relay chain pallet.\n operationId: getRcPalletsErrors\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read errors from.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet errors.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: onlyIds\n in: query\n description: Only return error IDs, not values and metadata.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletErrors'\n \"400\":\n description: invalid palletId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/errors/{errorItemId}:\n get:\n tags:\n - rc pallets\n summary: Get an error from a relay chain pallet by its ID.\n description: Returns information about a specific error from the specified relay chain pallet.\n operationId: getRcPalletsErrorsItem\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read the error from.\n required: true\n schema:\n type: string\n - name: errorItemId\n in: path\n description: Name of the error to retrieve.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet error.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Include metadata for the error.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletErrorsItem'\n \"400\":\n description: invalid palletId or errorItemId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/events:\n get:\n tags:\n - rc pallets\n summary: Get a list of events for a relay chain pallet.\n description: Returns a list of event metadata for the specified relay chain pallet.\n operationId: getRcPalletsEvents\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read events from.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet events.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: onlyIds\n in: query\n description: Only return event IDs, not values and metadata.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletEvents'\n \"400\":\n description: invalid palletId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/events/{eventItemId}:\n get:\n tags:\n - rc pallets\n summary: Get an event from a relay chain pallet by its ID.\n description: Returns information about a specific event from the specified relay chain pallet.\n operationId: getRcPalletsEventsItem\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read the event from.\n required: true\n schema:\n type: string\n - name: eventItemId\n in: path\n description: Name of the event to retrieve.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet event.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Include metadata for the event.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletEventsItem'\n \"400\":\n description: invalid palletId or eventItemId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/storage:\n get:\n tags:\n - rc pallets\n summary: Get a list of storage items for a relay chain pallet.\n description: Returns a list of storage item metadata for the specified relay chain pallet.\n operationId: getRcPalletsStorage\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read storage items from.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet storage items.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: onlyIds\n in: query\n description: Only return storage item IDs, not values and metadata.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletStorage'\n \"400\":\n description: invalid palletId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/storage/{storageItemId}:\n get:\n tags:\n - rc pallets\n summary: Get a storage item from a relay chain pallet by its ID.\n description: Returns the value stored under the specified storage item ID from the relay chain pallet. For maps, query parameter keys are required.\n operationId: getRcPalletsStorageItem\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read the storage item from.\n required: true\n schema:\n type: string\n - name: storageItemId\n in: path\n description: Name of the storage item to retrieve.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet storage item.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: keys\n in: query\n description: Storage map keys for map-type storage items. Required for map and double map storage items.\n required: false\n schema:\n type: array\n items:\n type: string\n - name: metadata\n in: query\n description: Include metadata for the storage item.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletStorageItem'\n \"400\":\n description: invalid palletId, storageItemId, or keys supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/staking/progress:\n get:\n tags:\n - rc pallets\n - rc staking\n summary: Get progress on the general Staking pallet system on Relay Chain.\n description: Returns information on the progress of key components of the\n staking system and estimates of future points of interest. If you are querying\n from Asset Hub for staking progress, this endpoint requires multi chain connections\n between the relay chain, and asset hub itself. Set the asset hub rpc to SAS_SUBSTRATE_URL,\n and add the relay chain to the SAS_SUBSTRATE_MULTI_CHAIN_URL env var. Refer to the README for the structure\n of the env vars. The `useRcBlock` parameter allows querying Asset Hub state using relay chain\n block numbers, enabling post-migration infrastructure to continue using relay chain\n block identifiers while accessing Asset Hub data.\n operationId: getRcStakingProgress\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve a staking progress report.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n oneOf:\n - $ref: '#/components/schemas/StakingProgress'\n - type: array\n items:\n $ref: '#/components/schemas/StakingProgress'\n description: Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\n \"400\":\n description: invalid blockId supplied for at query param, or invalid parameter combination\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/staking/validators:\n get:\n tags:\n - rc pallets\n - rc staking\n summary: Get all validators (active/waiting) of a specific chain.\n description: Returns a list of all validators addresses and their corresponding status which can be either\n active or waiting. For declared validators, it also includes their commission rate (as parts-per-billion)\n and nomination blocking status. It will also return a list of active validators that will not be part of\n the next era for staking. They will be under the key \"validatorsToBeChilled\". It's important to note,\n that addresses can be present in both the \"validators\" key, and \"validatorsToBeChilled\". Commission and\n blocked properties are not present for active validators that have been chilled.\n operationId: getRcStakingValidators\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the list of validators.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema: \n $ref: '#/components/schemas/StakingValidators'\n \"400\":\n description: invalid blockId supplied for at query param, or invalid parameter combination\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n\n /rc/transaction:\n post:\n tags:\n - rc transaction\n summary: Submit a transaction to the relay chain node's transaction pool.\n description: Accepts a valid signed extrinsic for the relay chain. Replaces `/tx` from versions\n < v1.0.0.\n operationId: submitRcTransaction\n requestBody:\n $ref: '#/components/requestBodies/Transaction'\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionSuccess'\n \"400\":\n description: failed to parse or submit transaction\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionFailure'\n /rc/transaction/dry-run:\n post:\n tags:\n - rc transaction\n summary: Dry run an extrinsic on the relay chain.\n description: Use the `dryRun` call to simulate the submission of a transaction\n to the relay chain without executing it so that you can check for potential errors and\n validate the expected outcome.\n operationId: dryrunRcTransaction\n requestBody:\n $ref: '#/components/requestBodies/TransactionDryRun'\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionDryRun'\n \"400\":\n description: failed to dry-run transaction\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionFailure'\n /rc/transaction/fee-estimate:\n post:\n tags:\n - rc transaction\n summary: Receive a fee estimate for a relay chain transaction.\n description: >-\n Send a serialized transaction and receive back a naive fee estimate for the relay chain.\n Note: `partialFee` does not include any tips that you may add to increase\n a transaction's priority. See the reference on `compute_fee`.\n Replaces `/tx/fee-estimate` from versions < v1.0.0.\n Substrate Reference:\n - `RuntimeDispatchInfo`: https://crates.parity.io/pallet_transaction_payment_rpc_runtime_api/struct.RuntimeDispatchInfo.html\n - `query_info`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.query_info\n - `compute_fee`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee\n operationId: feeEstimateRcTransaction\n requestBody:\n $ref: '#/components/requestBodies/Transaction'\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionFeeEstimate'\n \"400\":\n description: fee estimation failure\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionFeeEstimateFailure'\n /rc/transaction/material:\n get:\n tags:\n - rc transaction\n summary: Get all the relay chain network information needed to construct a transaction offline.\n description: Returns the material that is universal to constructing any\n signed transaction offline for the relay chain. Replaces `/tx/artifacts` from versions < v1.0.0.\n operationId: getRcTransactionMaterial\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the transaction construction\n material from the relay chain.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: noMeta\n in: query\n description: DEPRECATED! This is no longer supported\n schema:\n type: boolean\n default: false\n - name: metadata\n in: query\n description: Specifies the format of the metadata to be returned. Accepted values are\n 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata.\n When `metadata` is not inputted, the `metadata` field will be absent.\n schema:\n type: string\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionMaterial'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/transaction/material/{metadataVersion}:\n get:\n tags:\n - rc transaction\n summary: Get all the relay chain network information needed to construct a transaction offline and\n the version of metadata specified in `metadataVersion`.\n description: Returns all the materials necessary for constructing any signed transactions\n offline for the relay chain.\n operationId: getRcTransactionMaterialwithVersionedMetadata\n parameters:\n - name: metadataVersion\n in: path\n description: The version of metadata. The input is expected in a `vX` format, where `X`\n represents the version number (e.g. `v14`, `v15`). By default, metadata is outputted\n in 'json' format, unless the `metadata` query parameter is provided, in which case it\n can be either in 'json' or 'scale' format.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve the transaction construction\n material from the relay chain.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Specifies the format of the metadata to be returned. Accepted values are\n 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata.\n schema:\n type: string\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionMaterial'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n\n /pallets/{palletId}/storage:\n get:\n tags:\n - pallets\n summary: Get a list of storage items for a pallet.\n description: Returns a list of storage item metadata for storage items of the\n specified palletId.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to query the storage of. Note: the pallet name must match what is\n specified in the runtime metadata.'\n required: true\n schema:\n type: string\n - name: onlyIds\n in: query\n description: Only return the names (IDs) of the storage items instead of all of each storage\n item's metadata.\n required: false\n schema:\n type: boolean\n - name: at\n in: query\n description: Block at which to retrieve a list of\n the pallet's storage items.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet storage. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n description: Pallet info and Array of storageItemIds.\n $ref: '#/components/schemas/PalletStorage'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find pallet with palletId\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/{palletId}/storage/{storageItemId}:\n get:\n tags:\n - pallets\n summary: Get the value of a storage item.\n description: Returns the value stored under the storageItemId. If it is a\n map, query param key1 is required. If the storage item is double map\n query params key1 and key2 are required.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to query the storage of. Note: pallet name aligns with\n pallet name as specified in runtime metadata.'\n required: true\n schema:\n type: string\n - name: storageItemId\n in: path\n description: Id of the storage item to query for.\n required: true\n schema:\n type: string\n - name: keys\n in: query\n description: Set of N keys used for querying a storage map. It should be queried using the \n following format - ?keys[]=key1&keys[]=key2. Order matters, as it will determine the \n order the keys are passed into the storage calls.\n required: false\n schema:\n type: array\n items:\n type: string\n description: An array of storage keys.\n - name: at\n in: query\n description: Block at which to query the storage item at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Include the storage items metadata (including documentation)\n if set to true.\n required: false\n schema:\n default: false\n type: boolean\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet storage item. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletStorageItem'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find resource with id\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/pool-assets/{assetId}/asset-info:\n get:\n tags:\n - pallets\n summary: Get information and metadata associated with a pool asset.\n description: Returns information associated with a pool asset which includes\n the assets `AssetDetails` and `AssetMetadata`.\n operationId: getPoolAssetById\n parameters:\n - name: assetId\n in: path\n description: The unsignedInteger Id of a pool asset.\n required: true\n schema:\n type: string\n format: unsignedInteger\n - name: at\n in: query\n description: Block at which to retrieve the assetInfo.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pool asset info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n oneOf:\n - $ref: '#/components/schemas/PalletsPoolAssetsInfo'\n - type: array\n items:\n $ref: '#/components/schemas/PalletsPoolAssetsInfo'\n description: Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\n /pallets/staking/progress:\n get:\n tags:\n - staking\n - pallets\n summary: Get progress on the general Staking pallet system.\n description: Returns information on the progress of key components of the\n staking system and estimates of future points of interest. If you are querying\n from Asset Hub for staking progress, this endpoint requires multi chain connections\n between the relay chain, and asset hub itself. Set the asset hub rpc to SAS_SUBSTRATE_URL,\n and add the relay chain to the SAS_SUBSTRATE_MULTI_CHAIN_URL env var. Refer to the README for the structure\n of the env vars. The `useRcBlock` parameter allows querying Asset Hub state using relay chain\n block numbers, enabling post-migration infrastructure to continue using relay chain\n block identifiers while accessing Asset Hub data.\n operationId: getStakingProgress\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve a staking progress report.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving staking progress report. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n oneOf:\n - $ref: '#/components/schemas/StakingProgress'\n - type: array\n items:\n $ref: '#/components/schemas/StakingProgress'\n description: Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\n \"400\":\n description: invalid blockId supplied for at query param, or invalid parameter combination\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/staking/validators:\n get:\n tags:\n - staking\n - pallets\n summary: Get all validators (active/waiting) of a specific chain.\n description: Returns a list of all validators addresses and their corresponding status which can be either\n active or waiting. For declared validators, it also includes their commission rate and nomination blocking\n status. It will also return a list of active validators that will not be part of the next era for staking.\n They will be under the key \"validatorsToBeChilled\". It's important to note, that addresses can be present\n in both the \"validators\" key, and \"validatorsToBeChilled\". Commission and blocked properties are not present\n for active validators that have been chilled.\n operationId: getStakingValidators\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the list of validators.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving staking validators. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema: \n $ref: '#/components/schemas/StakingValidators'\n \"400\":\n description: invalid blockId supplied for at query param, or invalid parameter combination\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /paras:\n get:\n tags:\n - paras\n summary: |\n [DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all registered paras (parathreads & parachains).\n description: Returns all registered parachains and parathreads with lifecycle info.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve paras list at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Paras'\n /paras/leases/current:\n get:\n tags:\n - paras\n summary: |\n [DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get general information about the current lease period.\n description: |\n Returns an overview of the current lease period, including lease holders.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve current lease period info at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: currentLeaseHolders\n in: query\n description: |\n Wether or not to include the `currentLeaseHolders` property. Inclusion\n of the property will likely result in a larger payload and increased\n response time.\n required: false\n schema:\n type: boolean\n default: true\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ParasLeasesCurrent'\n /paras/auctions/current:\n get:\n tags:\n - paras\n summary: |\n [DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the status of the current auction.\n description: |\n Returns an overview of the current auction. There is only one auction\n at a time. If there is no auction most fields will be `null`. If the current\n auction phase is in `vrfDelay` and you are looking to retrieve the latest winning\n bids, it is advised to query one block before `finishEnd` in the `endingPeriod` phase\n for that auction as there technically are no winners during the `vrfDelay` and thus\n the field is `null`.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve auction progress at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ParasAuctionsCurrent'\n /paras/crowdloans:\n get:\n tags:\n - paras\n summary: |\n [DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all stored crowdloans.\n description: |\n Returns a list of all the crowdloans and their associated paraIds.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the list of paraIds that have crowdloans at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ParasCrowdloans'\n /paras/{paraId}/crowdloan-info:\n get:\n tags:\n - paras\n summary: |\n [DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get crowdloan information for a `paraId`.\n description: |\n Returns crowdloan's `fundInfo` and the set of `leasePeriods` the crowdloan`\n covers.\n parameters:\n - name: paraId\n in: path\n description: paraId to query the crowdloan information of.\n required: true\n schema:\n type: number\n - name: at\n in: query\n description: Block at which to retrieve info at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ParasCrowdloanInfo'\n /paras/{paraId}/lease-info:\n get:\n tags:\n - paras\n summary: |\n [DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get current and future leases as well as the lifecycle stage for a given `paraId`.\n description: |\n Returns a list of leases that belong to the `paraId` as well as the\n `paraId`'s current lifecycle stage.\n parameters:\n - name: paraId\n in: path\n description: paraId to query the crowdloan information of.\n required: true\n schema:\n type: number\n - name: at\n in: query\n description: Block at which to retrieve para's leases at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ParasLeaseInfo'\n /paras/head/included-candidates:\n get:\n tags:\n - paras\n summary: |\n [DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the included (backed and considered available) parachain candidates at the\n specified block height or at the most recent finalized head otherwise.\n description: |\n Returns an object with all the parachain id's as keys, and their headers as values.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve para's heads at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ParasHeaders'\n /paras/head/backed-candidates:\n get:\n tags:\n - paras\n summary: |\n [DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the backed parachain candidates at the specified block height or at the most recent finalized head otherwise.\n description: |\n Returns an object with all the parachain id's as keys, and their headers as values.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve para's heads at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ParasHeaders'\n /paras/{number}/inclusion:\n get:\n tags:\n - paras\n summary: Get relay chain inclusion information for a specific parachain block.\n description: |\n Returns the relay chain block number where a parachain block was included,\n along with the relay parent number used during production. This endpoint helps\n track the lifecycle of parachain blocks from production to inclusion.\n\n **Note**: This endpoint requires a multi-chain connection (both parachain and relay chain APIs).\n parameters:\n - name: number\n in: path\n description: Parachain block number to find inclusion information for.\n required: true\n schema:\n type: string\n format: unsignedInteger\n - name: depth\n in: query\n description: Maximum number of relay chain blocks to search for inclusion (must be divisible by 5, max 100).\n required: false\n schema:\n type: integer\n minimum: 5\n maximum: 100\n multipleOf: 5\n default: 10\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ParachainInclusion'\n \"400\":\n description: Invalid depth parameter\n content:\n application/json:\n schema:\n type: object\n properties:\n error:\n type: string\n example: \"Depth parameter must be divisible by 5 for optimal performance.\"\n /experimental/blocks/head/traces:\n get:\n tags:\n - trace\n summary: |\n [Experimental - subject to breaking change.] Get traces for the most\n recently finalized block.\n description: |\n Returns traces (spans and events) of the most recently finalized block from\n RPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140)\n for conceptual info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/BlocksTrace'\n /experimental/blocks/{blockId}/traces:\n get:\n tags:\n - trace\n summary: |\n [Experimental - subject to breaking change.] Get traces for the given `blockId`.\n description: |\n Returns traces (spans and events) of the specified block from\n RPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140) for conceptual info.\n parameters:\n - name: blockId\n in: path\n description: Block identifier, as the block height or block hash.\n required: true\n schema:\n pattern: '^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}'\n type: string\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/BlocksTrace'\n /experimental/blocks/head/traces/operations:\n get:\n tags:\n - trace\n summary: |\n [Experimental - subject to breaking change.] Get the operations from the\n most recently finalized block.\n description: |\n Returns the operations from the most recently finalized block. Operations\n represent one side of a balance change. For example if Alice transfers\n 100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\n\n Given account A and A's balance at block k0 (Ak0), if we sum all the\n operations for A from block k1 through kn against Ak0, we will end up\n with A's balance at block kn (Akn). Thus, operations can be used to audit\n that balances change as expected.\n\n This is useful for Substrate based chains because the advanced business\n logic can make it difficult to ensure auditable balance reconciliation\n based purely on events. Instead of using events one can use the\n operations given from this endpoint.\n\n Note - each operation corresponds to a delta of a single field of the\n `system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\n and `fee_frozen`).\n Note - operations are assigned a block execution phase (and extrinsic index\n for those in the apply extrinsic phase) based on an \"action group\". For\n example all the operations for 1 extrinsic will be in the same action group.\n The action groups can optionally be fetched with the `action` query param\n for closer auditing.\n Note - There are no 0 value operations (e.g. a transfer of 0, or a\n transfer to itself)\n\n To learn more about operation and action group creation please consult\n [this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\n parameters:\n - name: actions\n in: query\n description: Whether or not to include action groups.\n required: false\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/BlocksTraceOperations'\n /experimental/blocks/{blockId}/traces/operations:\n get:\n tags:\n - trace\n summary: |\n [Experimental - subject to breaking change.] Get the operations from the\n specified block.\n description: |\n Returns the operations from the most recently finalized block. Operations\n represent one side of a balance change. For example if Alice transfers\n 100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\n\n Given account A and A's balance at block k0 (Ak0), if we sum all the\n operations for A from block k1 through kn against Ak0, we will end up\n with A's balance at block kn (Akn). Thus, operations can be used to audit\n that balances change as expected.\n\n This is useful for Substrate based chains because the advanced business\n logic can make it difficult to ensure auditable balance reconciliation\n based purely on events. Instead of using events one can use the\n operations given from this endpoint.\n\n Note - each operation corresponds to a delta of a single field of the\n `system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\n and `fee_frozen`).\n Note - operations are assigned a block execution phase (and extrinsic index\n for those in the apply extrinsic phase) based on an \"action group\". For\n example all the operations for 1 extrinsic will be in the same action group.\n The action groups can optionally be fetched with the `action` query param\n for closer auditing.\n Note - There are no 0 value operations (e.g. a transfer of 0, or a\n transfer to itself)\n\n To learn more about operation and action group creation please consult\n [this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\n parameters:\n - name: blockId\n in: path\n description: Block identifier, as the block height or block hash.\n required: true\n schema:\n pattern: '^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}'\n type: string\n - name: actions\n in: query\n description: Whether or not to include action groups.\n required: false\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/BlocksTraceOperations'\ncomponents:\n schemas:\n AccountAssetsApproval:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n amount:\n type: string\n description: The amount of funds approved for the balance transfer from the owner\n to some delegated target.\n format: unsignedInteger\n deposit:\n type: string\n description: The amount reserved on the owner's account to hold this item in storage.\n format: unsignedInteger\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n AhmInfo:\n type: object\n description: Asset Hub Migration information including migration boundaries for both relay chain and Asset Hub.\n properties:\n relay:\n type: object\n description: Relay chain migration information\n properties:\n startBlock:\n type: integer\n nullable: true\n description: Block number when relay chain migration started, or null if not available\n format: unsignedInteger\n endBlock:\n type: integer\n nullable: true\n description: Block number when relay chain migration ended, or null if not available\n format: unsignedInteger\n assetHub:\n type: object\n description: Asset Hub migration information\n properties:\n startBlock:\n type: integer\n nullable: true\n description: Block number when Asset Hub migration started, or null if not available\n format: unsignedInteger\n endBlock:\n type: integer\n nullable: true\n description: Block number when Asset Hub migration ended, or null if not available\n format: unsignedInteger\n example:\n relay:\n startBlock: 26041702\n endBlock: 26071771\n assetHub:\n startBlock: 11716733\n endBlock: 11736597\n AccountAssetsBalances:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n assets:\n type: array\n description: An array of queried assets.\n items:\n $ref: '#/components/schemas/AssetsBalance'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n AccountBalanceInfo:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n nonce:\n type: string\n description: Account nonce.\n format: unsignedInteger\n tokenSymbol:\n type: string\n description: Token symbol of the balances displayed in this response.\n format: unsignedInteger\n free:\n type: string\n description: Free balance of the account. Not equivalent to _spendable_\n balance. This is the only balance that matters in terms of most operations\n on tokens.\n format: unsignedInteger\n reserved:\n type: string\n description: Reserved balance of the account.\n format: unsignedInteger\n miscFrozen:\n type: string\n description: The amount that `free` may not drop below when withdrawing\n for anything except transaction fee payment. Note, that some runtimes may not have\n support for miscFrozen and if so the following will be returned `miscFrozen does not exist for this runtime`\n format: unsignedInteger\n feeFrozen:\n type: string\n description: The amount that `free` may not drop below when withdrawing\n specifically for transaction fee payment. Note, that some runtimes may not have\n support for feeFrozen and if so the following will be returned `feeFrozen does not exist for this runtime`\n format: unsignedInteger\n frozen:\n type: string\n description: The amount that `free` may not drop below when reducing the balance, except for actions\n where the account owner cannot reasonably benefit from the balance reduction, such as slashing.\n Note, that some runtimes may not have support for frozen and if so the following \n will be returned `frozen does not exist for this runtime`\n format: unsignedInteger\n transferable:\n type: string\n description: The amount that can be transferred from this account. This is calculated using the formula\n `free - max(maybeEd, frozen - reserve)` where `maybeEd` is the existential deposit if there are frozen\n funds or reserves, otherwise it is zero. This represents the actual spendable balance.\n Note, that some historical runtimes may not have support for the current formula used and if so the following\n will be returned `transferable not supported for this runtime`.\n format: unsignedInteger\n locks:\n type: array\n description: Array of locks on a balance. There can be many of these on\n an account and they \"overlap\", so the same balance is frozen by multiple\n locks\n items:\n $ref: '#/components/schemas/BalanceLock'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n AccountCompare:\n type: object\n properties:\n areEqual:\n type: boolean\n description: Whether the given SS58 addresses are equal or not. Equality is determined by comparing\n the accountId/publicKey of each address.\n addresses:\n type: array\n description: An array that contains detailed information for each of the queried SS58 addresses.\n items:\n $ref: '#/components/schemas/AddressDetails'\n AccountConvert:\n type: object\n properties:\n ss58Prefix:\n type: string\n description: SS58 prefix based on which the account ID or Public Key (hex) is converted to an SS58 address.\n format: unsignedInteger\n network:\n type: string\n description: The network based on which the returned address is encoded. It depends on the prefix\n that was given as a query param.\n address:\n type: string\n description: The returned SS58 address which is the result of the conversion\n of the account ID or Public Key (hex).\n accountId:\n type: string\n description: The given account ID or Public Key (hex) that is converted to an SS58 address.\n scheme:\n type: string\n description: The cryptographic scheme/algorithm used to encode the given account ID or Public Key (hex).\n publicKey:\n type: boolean\n description: Whether the given path parameter is a Public Key (hex) or not.\n AccountPoolAssetsBalances:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n poolAssets:\n type: array\n description: An array of queried assets.\n items:\n $ref: '#/components/schemas/AssetsBalance'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n AccountForeignAssetsBalances:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n foreignAssets:\n type: array\n description: An array of queried foreign assets.\n items:\n $ref: '#/components/schemas/ForeignAssetBalance'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ForeignAssetBalance:\n type: object\n properties:\n multiLocation:\n type: object\n description: The multilocation identifier of the foreign asset. This is an XCM multilocation\n object that uniquely identifies an asset across different parachains.\n balance:\n type: string\n description: The balance of the foreign asset.\n format: unsignedInteger\n isFrozen:\n type: boolean\n description: Whether the asset is frozen for non-admin transfers. Returns false if the\n runtime does not support isFrozen.\n isSufficient:\n type: boolean\n description: Whether a non-zero balance of this asset is a deposit of sufficient\n value to account for the state bloat associated with its balance storage. If set to\n `true`, then non-zero balances may be stored without a `consumer` reference (and thus\n an ED in the Balances pallet or whatever else is used to control user-account state\n growth).\n AccountProxyInfo:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n delegatedAccounts:\n type: array\n items:\n type: object\n properties:\n delegate:\n type: string\n description: Delegate address for the given proxy.\n format: ss58\n delay:\n type: string\n description: The announcement period required of the initial proxy. Will generally be zero.\n format: unsignedInteger\n proxyType:\n type: string\n description: The permissions allowed for this proxy account.\n depositHeld:\n type: string\n format: unsignedInteger\n description: The held deposit.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n AccountStakingInfo:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n rewardDestination:\n type: string\n description: The account to which rewards will be paid. Can be 'Staked' (Stash\n account, adding to the amount at stake), 'Stash' (Stash address, not\n adding to the amount at stake), or 'Controller' (Controller address).\n format: ss58\n enum:\n - Staked\n - Stash\n - Controller\n controller:\n type: string\n description: Controller address for the given Stash.\n format: ss58\n numSlashingSpans:\n type: string\n description: Number of slashing spans on Stash account; `null` if provided address\n is not a Controller.\n format: unsignedInteger\n nominations:\n $ref: '#/components/schemas/Nominations'\n staking:\n $ref: '#/components/schemas/StakingLedger'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n description: >-\n Note: For Sidecar versions prior to v.20.0.0, in field `claimedRewards` under `staking`, we return whatever we would find under `StakingLedger` with no further calculations.\n From v.20.0.0 onwards, `claimedRewards` is calculated based on different calls: `lastReward`, `claimedRewards` or `legacyClaimedRewards`.\n Note on lastReward: Runtime versions of Kusama less than 1062 will either have `lastReward` in place of\n `claimedRewards`, or no field at all. This is related to changes in reward distribution.\n See: [Lazy Payouts](https://github.com/paritytech/substrate/pull/4474),\n [Simple Payouts](https://github.com/paritytech/substrate/pull/5406)\n AccountStakingPayouts:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n erasPayouts:\n type: array\n items:\n type: object\n properties:\n era:\n type: string\n format: unsignedInteger\n description: Era this information is associated with.\n totalEraRewardPoints:\n type: string\n format: unsignedInteger\n description: Total reward points for the era. Equals the sum of\n reward points for all the validators in the set.\n totalEraPayout:\n type: string\n format: unsignedInteger\n description: Total payout for the era. Validators split the payout\n based on the portion of `totalEraRewardPoints` they have.\n payouts:\n $ref: '#/components/schemas/Payouts'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n AccountValidation:\n type: object\n properties:\n isValid:\n type: boolean\n description: Whether the given address is valid ss58 formatted.\n ss58Prefix:\n type: string\n description: SS58 prefix of the given address. If the address is a valid\n base58 format, but incorrect ss58, a prefix for the given address will still be returned.\n format: unsignedInteger\n network:\n type: string\n description: The network based on which the given address is encoded.\n accountId:\n type: string\n description: The account id of the given address.\n AccountVestingInfo:\n type: object\n description: Sidecar version's <= v10.0.0 have a`vesting` return value that defaults to an object for\n when there is no available vesting-info data. It also returns a `VestingInfo` as an object.\n For Sidecar >=11.0.0, that value will now default as an array when there is no value, and `Vec`\n is returned when there is.\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n vesting:\n type: array\n items:\n $ref: '#/components/schemas/VestingSchedule'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n vestedBalance:\n type: string\n description: Total vested amount across all schedules based on time elapsed. Only present when `includeClaimable` parameter is used.\n format: unsignedInteger\n vestingTotal:\n type: string\n description: Total locked amount across all vesting schedules. Only present when `includeClaimable` parameter is used.\n format: unsignedInteger\n vestedClaimable:\n type: string\n description: Actual amount that can be claimed now (vestedBalance minus already claimed). Only present when `includeClaimable` parameter is used.\n format: unsignedInteger\n blockNumberForCalculation:\n type: string\n description: The block number used for vesting calculations. Only present when `includeClaimable` parameter is used.\n format: unsignedInteger\n blockNumberSource:\n type: string\n description: Which chain's block number was used for calculations ('relay' or 'self'). Only present when `includeClaimable` parameter is used.\n enum:\n - relay\n - self\n AddressDetails:\n type: object\n properties:\n ss58Format:\n type: string\n description: The queried SS58 address.\n ss58Prefix:\n type: string\n description: SS58 prefix of the given address.\n format: unsignedInteger\n network:\n type: string\n description: The network based on which the given address is encoded.\n publicKey:\n type: string\n description: The account ID/Public Key (hex) of the queried SS58 address.\n AssetsBalance:\n type: object\n properties:\n assetId:\n type: string\n description: The identifier of the asset.\n format: unsignedInteger\n balance:\n type: string\n description: The balance of the asset.\n format: unsignedInteger\n isFrozen:\n type: boolean\n description: Whether the asset is frozen for non-admin transfers. Note, that some runtimes may not have\n support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\n isSufficient:\n type: boolean\n description: Whether a non-zero balance of this asset is a deposit of sufficient\n value to account for the state bloat associated with its balance storage. If set to\n `true`, then non-zero balances may be stored without a `consumer` reference (and thus\n an ED in the Balances pallet or whatever else is used to control user-account state\n growth).\n AssetInfo:\n type: object\n properties:\n owner:\n type: string\n description: Owner of the assets privileges.\n format: SS58\n issuer:\n type: string\n description: The `AccountId` able to mint tokens.\n format: SS58\n admin:\n type: string\n description: The `AccountId` that can thaw tokens, force transfers and burn token from\n any account.\n format: SS58\n freezer:\n type: string\n description: The `AccountId` that can freeze tokens.\n format: SS58\n supply:\n type: string\n description: The total supply across accounts.\n format: unsignedInteger\n deposit:\n type: string\n description: The balance deposited for this. This pays for the data stored.\n format: unsignedInteger\n minBalance:\n type: string\n description: The ED for virtual accounts.\n format: unsignedInteger\n isSufficient:\n type: boolean\n description: If `true`, then any account with this asset is given a provider reference. Otherwise, it\n requires a consumer reference.\n accounts:\n type: string\n description: The total number of accounts.\n format: unsignedInteger\n sufficients:\n type: string\n description: The total number of accounts for which is placed a self-sufficient reference.\n approvals:\n type: string\n description: The total number of approvals.\n format: unsignedInteger\n status:\n type: string\n description: The status of the asset.\n AssetMetadata:\n type: object\n properties:\n deposit:\n type: string\n description: The balance deposited for this metadata. This pays for the data\n stored in this struct.\n format: unsignedInteger\n name:\n type: string\n description: The user friendly name of this asset.\n format: $hex\n symbol:\n type: string\n description: The ticker symbol for this asset.\n format: $hex\n decimals:\n type: string\n description: The number of decimals this asset uses to represent one unit.\n format: unsignedInteger\n isFrozen:\n type: boolean\n description: Whether the asset metadata may be changed by a non Force origin. Note, that some runtimes may not have\n support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\n AssetMultiLocation:\n oneOf:\n - $ref: '#/components/schemas/AssetMultiLocationObject'\n - $ref: '#/components/schemas/AssetMultiLocationHex'\n AssetMultiLocationObject:\n type: object\n properties:\n parents:\n type: string\n format: unsignedInteger\n interior:\n type: object\n description: The multiLocation of the foreign asset as an object.\n example: \"{\\\"parents\\\":\\\"2\\\",\\\"interior\\\":{\\\"X1\\\":{\\\"GlobalConsensus\\\":\\\"Polkadot\\\"}}}\"\n AssetMultiLocationHex:\n type: string\n pattern: '^0x[0-9a-fA-F]+$'\n description: The multiLocation of the foreign asset given as a hexadecimal value.\n BalanceLock:\n type: object\n properties:\n id:\n type: string\n description: An identifier for this lock. Only one lock may be in existence\n for each identifier.\n amount:\n type: string\n description: The amount below which the free balance may not drop with this\n lock in effect.\n format: unsignedInteger\n reasons:\n type: string\n description: Reasons for withdrawing balance.\n enum:\n - Fee = 0\n - Misc = 1\n - All = 2\n Block:\n type: object\n properties:\n number:\n type: string\n description: The block's height.\n format: unsignedInteger\n hash:\n type: string\n description: The block's hash.\n format: hex\n parentHash:\n type: string\n description: The hash of the parent block.\n format: hex\n stateRoot:\n type: string\n description: The state root after executing this block.\n format: hex\n extrinsicRoot:\n type: string\n description: The Merkle root of the extrinsics.\n format: hex\n authorId:\n type: string\n description: The account ID of the block author (may be undefined for some\n chains).\n format: ss58\n logs:\n type: array\n items:\n $ref: '#/components/schemas/DigestItem'\n description: Array of `DigestItem`s associated with the block.\n onInitialize:\n $ref: '#/components/schemas/BlockInitialize'\n extrinsics:\n type: array\n description: Array of extrinsics (inherents and transactions) within the\n block.\n items:\n $ref: '#/components/schemas/Extrinsic'\n onFinalize:\n $ref: '#/components/schemas/BlockFinalize'\n finalized:\n type: boolean\n description: >-\n A boolean identifying whether the block is finalized or not.\n Note: on chains that do not have deterministic finality this field is omitted.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n description: >-\n Note: Block finalization does not correspond to consensus, i.e. whether\n the block is in the canonical chain. It denotes the finalization of block\n _construction._\n BlockRaw:\n type: object\n properties:\n number:\n type: string\n description: The block's height.\n format: unsignedInteger\n parentHash:\n type: string\n description: The hash of the parent block.\n format: hex\n stateRoot:\n type: string\n description: The state root after executing this block.\n format: hex\n extrinsicRoot:\n type: string\n description: The Merkle root of the extrinsics.\n format: hex\n digest:\n type: object\n properties:\n logs:\n type: array\n items:\n $ref: '#/components/schemas/DigestItem'\n description: Array of `DigestItem`s associated with the block.\n extrinsics:\n type: array\n description: Array of raw extrinsics (inherents and transactions) within the\n block.\n items:\n type: string\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n Blocks:\n type: array\n items: \n $ref: '#/components/schemas/Block'\n BlockFinalize:\n type: object\n properties:\n events:\n type: array\n items:\n $ref: '#/components/schemas/SanitizedEvent'\n description: Object with an array of `SanitizedEvent`s that occurred during\n block construction finalization with the `method` and `data` for each.\n BlockHeader:\n type: object\n properties:\n parentHash:\n type: string\n description: The hash of the parent block.\n format: hex\n number:\n type: string\n description: The block's height.\n format: unsignedInteger\n stateRoot:\n type: string\n description: The state root after executing this block.\n format: hex\n extrinsicRoot:\n type: string\n description: The Merkle root of the extrinsics.\n format: hex\n digest:\n type: object\n properties:\n logs:\n type: array\n items:\n $ref: '#/components/schemas/DigestItem'\n description: Array of `DigestItem`s associated with the block.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n BlockIdentifiers:\n type: object\n properties:\n hash:\n type: string\n description: The block's hash.\n format: hex\n height:\n type: string\n description: The block's height.\n format: unsignedInteger\n BlockParaInclusions:\n type: object\n description: Contains all decoded parachain inclusion information for a relay chain block\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n inclusions:\n type: array\n description: Array of parachain inclusions in this relay chain block, sorted by paraId\n items:\n $ref: '#/components/schemas/ParaInclusion'\n ParaInclusion:\n type: object\n description: Information about a single parachain inclusion event\n properties:\n paraId:\n type: string\n description: The parachain ID\n format: unsignedInteger\n paraBlockNumber:\n type: number\n description: The parachain block number that was included (decoded from HeadData)\n format: unsignedInteger\n paraBlockHash:\n type: string\n description: The parachain block hash that was included (decoded from HeadData)\n format: hex\n descriptor:\n $ref: '#/components/schemas/ParaInclusionDescriptor'\n commitmentsHash:\n type: string\n description: Hash of the candidate commitments\n format: hex\n coreIndex:\n type: string\n description: Core index assigned to this parachain block\n format: unsignedInteger\n groupIndex:\n type: string\n description: Validator group index that backed this parachain block\n format: unsignedInteger\n ParaInclusionDescriptor:\n type: object\n description: Candidate descriptor containing parachain inclusion metadata\n properties:\n relayParent:\n type: string\n description: The relay chain parent block hash\n format: hex\n persistedValidationDataHash:\n type: string\n description: Hash of the persisted validation data\n format: hex\n povHash:\n type: string\n description: Hash of the Proof of Validity (PoV)\n format: hex\n erasureRoot:\n type: string\n description: Root hash of the erasure encoding\n format: hex\n paraHead:\n type: string\n description: Hash of the parachain head data\n format: hex\n validationCodeHash:\n type: string\n description: Hash of the validation code\n format: hex\n BlockInitialize:\n type: object\n properties:\n events:\n type: array\n items:\n $ref: '#/components/schemas/SanitizedEvent'\n description: Object with an array of `SanitizedEvent`s that occurred during\n block initialization with the `method` and `data` for each.\n BlocksTrace:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n blockHash:\n type: string\n events:\n type: array\n items:\n $ref: '#/components/schemas/TraceEvent'\n parentHash:\n type: string\n spans:\n type: array\n items:\n $ref: '#/components/schemas/TraceSpan'\n storageKeys:\n type: string\n description: Hex encoded storage keys used to filter events.\n tracingTargets:\n type: string\n description: Targets used to filter spans and events.\n BlocksTraceOperations:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n operations:\n type: array\n items:\n $ref: '#/components/schemas/Operation'\n CoretimeRegionsResponse: \n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n regions:\n type: array\n items:\n $ref: '#/components/schemas/CoretimeRegion'\n CoretimeLeasesResponse: \n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n leases:\n type: array\n items:\n $ref: '#/components/schemas/CoretimeLease'\n CoretimeReservationsResponse: \n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n reservations:\n type: array\n items:\n $ref: '#/components/schemas/CoretimeReservation'\n CoretimeRenewalsResponse: \n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n renewals:\n type: array\n items:\n $ref: '#/components/schemas/CoretimeRenewal'\n CoretimeChainInfoResponse:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n configuration:\n $ref: '#/components/schemas/CoretimeConfig'\n currentRegion:\n type: object\n properties: \n start: \n type: string\n description: The start time.\n end: \n type: string\n description: The end time.\n cores:\n type: object\n properties: \n total: \n type: string\n description: The total number of cores.\n available: \n type: string\n description: The number of free cores.\n sold: \n type: string\n description: The number of reserved cores.\n currentCorePrice: \n type: string\n description: The current core price.\n selloutPrice: \n type: string\n description: The sellout price.\n firstCore:\n type: string\n description: The first core id.\n CoretimeRelayInfoResponse:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n brokerId:\n type: string\n description: The broker parachain id.\n palletVersion:\n type: string\n description: The pallet version.\n maxHistoricalRevenue:\n type: string\n description: The maximum historical revenue.\n CoretimeChainCoresResponse:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n cores:\n type: array\n items:\n $ref: '#/components/schemas/CoretimeCore'\n CoretimeRelayCoresResponse:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n cores:\n type: array\n items:\n $ref: '#/components/schemas/CoretimeRelayCoreDescriptor'\n CoretimeRelayCoreDescriptor:\n type: object\n properties:\n paraId:\n type: string\n description: The parachain id.\n type: \n type: string\n description: The parachain type.\n info:\n type: object\n properties: \n currentWork: \n type: object\n properties:\n assignments:\n type: array\n items:\n type: object\n properties:\n isPool:\n type: boolean\n description: Whether the workload is a pool.\n isTask:\n type: boolean\n description: Whether the workload is a task.\n ratio: \n type: string\n description: The ratio of the workload.\n remaining:\n type: string\n description: The remaining workload.\n task:\n type: string\n description: The parachain id.\n endHint:\n type: string\n description: The end hint.\n pos: \n type: string\n description: The position.\n step: \n type: string\n description: The step.\n queue: \n type: object\n properties:\n first: \n type: string\n description: The first assignment in queue.\n last:\n type: string\n description: The last assignment in queue.\n CoretimeCore:\n type: object\n properties:\n coreId:\n type: string\n description: The core id.\n paraId:\n type: string\n description: The parachain core.\n workload:\n type: object\n $ref: '#/components/schemas/CoretimeWorkload'\n workplan:\n type: array\n items: \n $ref: '#/components/schemas/CoretimeWorkplan'\n type:\n description: The paid price.\n type: object\n properties:\n condition: \n type: string\n description: Type of assignment.\n details:\n type: object\n oneOf: \n - $ref: '#/components/schemas/CoretimeUntil'\n - $ref: '#/components/schemas/CoretimeMask'\n regions:\n type: array\n items:\n $ref: '#/components/schemas/CoretimeRegion'\n CoretimeConfig:\n type: object\n properties:\n interludeLength:\n type: string\n description: The interlude length.\n leadinLength:\n type: string\n description: The leadin length.\n regionLength:\n type: string\n description: The region length.\n relayBlocksPerTimeslice:\n type: string\n description: The number of relay chain blocks per timeslice.\n CoretimeSaleInfo:\n type: object\n properties:\n phase:\n type: string\n description: The phase of the sale.\n saleStart:\n type: string\n description: The sale start.\n leadinLength:\n type: string\n description: The leading length.\n endPrice:\n type: string\n description: The end price.\n regionBegin:\n type: string\n description: The region start time.\n regionEnd:\n type: string\n description: The region end time.\n idealCoresSold:\n type: string\n description: The ideal number of cores sold.\n coresOffered:\n type: string\n description: The number of cores on sale.\n firstCore:\n type: string\n description: The first core id.\n selloutPrice:\n type: string\n description: The sellout price.\n coresSold:\n type: string\n description: The number of cores sold.\n CoretimeMask:\n type: string\n description: The mask.\n CoretimeUntil:\n type: string\n description: The lease expiry time.\n CoretimeWorkplan: \n type: object\n properties:\n core: \n type: string\n description: The core id.\n timeslice: \n type: string\n description: The timeslice.\n info:\n type: array\n items:\n $ref: '#/components/schemas/CoretimeWorkplanInfo'\n CoretimeWorkplanInfo:\n type: object\n properties: \n isPool:\n type: boolean\n description: Whether the workload is a pool.\n isTask:\n type: boolean\n description: Whether the workload is a task.\n mask:\n type: string\n description: The mask.\n task:\n type: string\n description: The parachain id.\n CoretimeWorkload:\n type: object\n properties:\n isPool: \n type: boolean\n description: Whether the workload is a pool.\n isTask:\n type: boolean\n description: Whether the workload is a task.\n mask:\n type: string\n description: The mask.\n task:\n type: string\n description: The parachain id.\n CoretimeRegion:\n type: object\n properties:\n core: \n type: string\n description: The core id.\n begin:\n type: string\n description: The begin time.\n end:\n type: string\n description: The end time.\n owner: \n type: string\n description: The owner of the region.\n paid:\n type: string\n description: The paid price.\n mask: \n type: string\n description: The mask.\n CoretimeLease:\n type: object\n properties:\n task:\n type: string\n description: The parachain id.\n until: \n type: string\n description: The lease expiry time.\n core:\n type: string\n description: The core id.\n CoretimeReservation:\n type: object\n properties:\n task:\n type: string\n description: The parachain id.\n mask: \n type: string\n description: The mask.\n CoretimeRenewal:\n type: object\n properties:\n completion:\n type: string\n description: The completion status.\n core: \n type: string\n description: The core id.\n mask:\n type: string\n description: The mask.\n price: \n type: string\n description: The renewal price.\n task: \n type: string\n description: The parachain id.\n when: \n type: string\n description: The renewal time.\n BlockWithDecodedXcmMsgs:\n allOf:\n - $ref: \"#/components/schemas/Block\"\n - $ref: \"#/components/schemas/DecodedXcmMsgs\"\n description: Block information that includes the decoded XCM messages if any are found in the queried block.\n If not, the decodedXcmMsgs object will be returned with three empty arrays corresponding to each direction,\n horizontalMessages, downwardMessages, upwardMessages.\n BondedPool:\n type: object\n properties:\n points:\n type: number\n state:\n type: string\n memberCounter:\n type: number\n roles:\n type: object\n properties:\n depositor:\n type: string\n root:\n type: string\n nominator:\n type: string\n stateToggler:\n type: string\n ChainType:\n type: object\n description: Type of the chain. It will return one of the following enum variants as a key. Live, Development, Local, or Custom. Each variant will have a value as null except when the ChainType is Custom, it will return a string.\n properties:\n live:\n type: string\n nullable: true\n default: null\n development:\n type: string\n nullable: true\n default: null\n local:\n type: string\n nullable: true\n default: null\n custom:\n type: string\n example: \"{\\\"live\\\": null}\"\n ContractsInkQuery:\n type: object\n description: Result from calling a query to a Ink contract.\n properties:\n debugMessage:\n type: string\n gasConsumed:\n type: string\n gasRequired:\n type: string\n output:\n type: boolean\n result:\n type: object\n description: Will result in an Ok or Err object depending on the result of the query.\n storageDeposit:\n type: object\n ContractMetadata:\n type: object\n description: Metadata used to instantiate a ContractPromise. This metadata can be generated\n by compiling the contract you are querying.\n DecodedXcmMsgs:\n type: object\n properties:\n decodedXcmMsgs:\n type: object\n properties:\n horizontalMessages:\n type: object\n oneOf:\n - $ref: \"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInRelay\"\n - $ref: \"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInParachain\"\n downwardMessages:\n type: array\n items:\n type: object\n properties:\n sentAt:\n type: string\n format: unsignedInteger\n description: Represents the block number that the XCM message was sent at on the relay chain.\n msg:\n type: string\n description: Represents the XCM message.\n data:\n type: object\n description: The decoded instructions included in the XCM message and their respective fields.\n upwardMessages:\n type: array\n items:\n type: object\n properties:\n originParaId:\n type: string\n format: unsignedInteger\n description: The Parachain id that the specific XCM message was sent from.\n data:\n type: object\n description: The decoded instructions included in the XCM message and their respective fields.\n description: \n Object with three arrays, one for every XCM direction. The arrays are populated or left empty based on the direction \n of the current XCM message that is being decoded. The XCM messages can be Upward and/or Horizontal (`in transit`) messages when\n connected to a Relay chain. When connected to a Parachain, the messages can be Downward and/or Horizontal. One or more messages\n can be present in a single block. In case of multiple messages from the same paraIds (originParaId and/or destinationParaId),\n the messages will be shown under the field `data`. \n DecodedXcmMsgsHorizontalMessagesInRelay:\n type: array\n items:\n type: object\n properties:\n originParaId:\n type: string\n format: unsignedInteger\n description: The Parachain id that the specific XCM message was sent from.\n destinationParaId:\n type: string\n format: unsignedInteger\n description: The Parachain id that the specific XCM message was sent to.\n data:\n type: object\n description: The decoded instructions included in the XCM message and their respective fields.\n description: Array that includes the Horizontal (`in transit`) messages when we are connected to a Relay Chain.\n Each block can contain one or more messages. If multiple messages share the same origin and destination paraId,\n they will be displayed within the data field.\n DecodedXcmMsgsHorizontalMessagesInParachain:\n type: array\n items:\n type: object\n properties:\n sentAt:\n type: string\n format: unsignedInteger\n description: Represents the block number that the XCM message was sent at on the relay chain.\n originParaId:\n type: string\n format: unsignedInteger\n description: The Parachain id that the specific XCM message was sent from.\n data:\n type: object\n description: The decoded instructions included in the XCM message and their respective fields.\n description: Array that includes the Horizontal Messages when we are connected to a Parachain.\n Each block can contain one or more messages. If multiple messages originate from the same parachain (originParaId),\n they will be displayed within the data field.\n DigestItem:\n type: object\n properties:\n type:\n type: string\n index:\n type: string\n format: unsignedInteger\n value:\n type: array\n items:\n type: string\n ElectionStatus:\n type: object\n properties:\n status:\n type: object\n description: >-\n [Deprecated](Works for polkadot runtimes before v0.8.30).\n\n Era election status: either `Close: null` or `Open: `.\n A status of `Close` indicates that the submission window for solutions\n from off-chain Phragmen is not open. A status of `Open` indicates that the\n submission window for off-chain Phragmen solutions has been open since\n BlockNumber. N.B. when the submission window is open, certain\n extrinsics are not allowed because they would mutate the state that the\n off-chain Phragmen calculation relies on for calculating results.\n toggleEstimate:\n type: string\n description: Upper bound estimate of the block height at which the `status`\n will switch.\n format: unsignedInteger\n description: Information about the off-chain election. Not included in response when\n `forceEra.isForceNone`.\n Error:\n type: object\n properties:\n code:\n type: number\n message:\n type: string\n stack:\n type: string\n level:\n type: string\n ExtrinsicMethod:\n type: object\n properties:\n pallet:\n type: string\n method:\n type: string\n description: Extrinsic method\n Extrinsic:\n type: object\n properties:\n method:\n $ref: '#/components/schemas/ExtrinsicMethod'\n signature:\n $ref: '#/components/schemas/Signature'\n nonce:\n type: string\n description: Account nonce, if applicable.\n format: unsignedInteger\n args:\n type: object\n description: >-\n Object of arguments keyed by parameter name. Note: if you are expecting an [`OpaqueCall`](https://substrate.dev/rustdocs/v2.0.0/pallet_multisig/type.OpaqueCall.html)\n and it is not decoded in the response (i.e. it is just a hex string), then Sidecar was\n not able to decode it and likely that it is not a valid call for the runtime.\n tip:\n type: string\n description: Any tip added to the transaction.\n format: unsignedInteger\n hash:\n type: string\n description: The transaction's hash.\n format: hex\n info:\n $ref: '#/components/schemas/RuntimeDispatchInfo'\n era:\n $ref: '#/components/schemas/GenericExtrinsicEra'\n events:\n type: array\n description: An array of `SanitizedEvent`s that occurred during extrinsic\n execution.\n items:\n $ref: '#/components/schemas/SanitizedEvent'\n success:\n type: boolean\n description: Whether or not the extrinsic succeeded.\n paysFee:\n type: boolean\n description: Whether the extrinsic requires a fee. Careful! This field relates\n to whether or not the extrinsic requires a fee if called as a transaction.\n Block authors could insert the extrinsic as an inherent in the block\n and not pay a fee. Always check that `paysFee` is `true` and that the\n extrinsic is signed when reconciling old blocks.\n ExtrinsicIndex:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n extrinsic:\n $ref: '#/components/schemas/Extrinsic'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n description: A single extrinsic at a given block.\n FundInfo:\n type: object\n properties:\n depositor:\n type: string\n verifier:\n type: string\n deposit:\n type: string\n format: unsignedInteger\n raised:\n type: string\n format: unsignedInteger\n end:\n type: string\n format: unsignedInteger\n cap:\n type: string\n format: unsignedInteger\n lastConstribution:\n type: string\n enum:\n - preEnding\n - ending\n firstPeriod:\n type: string\n format: unsignedInteger\n lastPeriod:\n type: string\n format: unsignedInteger\n trieIndex:\n type: string\n format: unsignedInteger\n GenericExtrinsicEra:\n type: object\n description: |\n The return value for era can either be `mortalEra`, or `immortalEra` and is represented as an enum in substrate. `immortalEra` meaning\n the transaction is valid forever. `mortalEra` consists of a tuple containing a period and phase.\n ex: `\"{\"mortalEra\": [\"64\", \"11\"]}\"`. The Period is the period of validity from the block hash found in the signing material.\n The Phase is the period that this transaction's lifetime begins (and, importantly,\n implies which block hash is included in the signature material).\n properties:\n mortalEra:\n type: array\n items:\n type: string\n description: Tuple of a Phase, and Period. Each item in the array will be a string formatted as an integer.\n immortalEra:\n type: string\n description: Hardcoded constant '0x00'.\n format: hex\n example: \"{\\\"mortalEra\\\":[\\\"64\\\", \\\"11\\\"]}\"\n LiquidityPools:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n pools:\n type: array\n description: Array containing existent liquidity pool's token id.\n items:\n $ref: '#/components/schemas/LiquidityPool'\n example: \"[{\\\"reserves\\\":[{\\\"parents\\\":\\\"1\\\",\\\"interior\\\":{\\\"here\\\":\n null}},{\\\"parents\\\":\\\"0\\\",\\\"interior\\\":{\\\"x2\\\":[{\\\"palletInstance\\\":\n \\\"50\\\"},{\\\"generalIndex\\\":\\\"2\\\"}]}}],\\\"lpToken\\\":{\\\"lpToken\\\":\\\"1\\\"}\n },{\\\"lpToken\\\":{\\\"lpToken\\\":\\\"0\\\"}}]\"\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n LiquidityPool:\n type: object\n properties:\n reserves:\n type: array\n items:\n type: object\n properties:\n parents:\n type: string\n format: unsignedInteger\n interior:\n type: object\n lpToken:\n type: string\n format: unsignedInteger\n description: Liquidity pool token ID.\n NextAvailableId:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n id:\n type: string\n description: Next availabe liquidity pool's id.\n example: \"4\"\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n NodeNetwork:\n type: object\n properties:\n nodeRoles:\n $ref: '#/components/schemas/NodeRole'\n numPeers:\n type: string\n description: Number of peers the node is connected to.\n format: unsignedInteger\n isSyncing:\n type: boolean\n description: Whether or not the node is syncing. `False` indicates that the node is in sync.\n shouldHavePeers:\n type: boolean\n description: Whether or not the node should be connected to peers. Might be false\n for local chains or when running without discovery.\n localPeerId:\n type: string\n description: Local copy of the `PeerId`.\n localListenAddresses:\n type: array\n description: Multiaddresses that the local node is listening on. The addresses\n include a trailing `/p2p/` with the local PeerId, and are thus suitable\n to be passed to `system_addReservedPeer` or as a bootnode address for\n example.\n items:\n type: string\n peersInfo:\n type: array\n items:\n $ref: '#/components/schemas/PeerInfo'\n NodeRole:\n type: string\n description: Role of this node. (N.B. Sentry nodes are being deprecated.)\n enum:\n - Full\n - LightClient\n - Authority\n - Sentry\n NodeVersion:\n type: object\n properties:\n clientVersion:\n type: string\n description: Node's binary version.\n clientImplName:\n type: string\n description: Node's implementation name.\n chain:\n type: string\n description: Node's chain name.\n description: Version information of the node.\n Nominations:\n type: object\n properties:\n targets:\n type: array\n items:\n type: string\n description: The targets of the nomination.\n submittedIn:\n type: string\n format: unsignedInteger\n description: >-\n The era the nominations were submitted. (Except for initial\n nominations which are considered submitted at era 0.)\n suppressed:\n type: boolean\n description: Whether the nominations have been suppressed.\n OnboardingAs:\n type: string\n enum:\n - parachain\n - parathread\n description: |\n This property only shows up when `paraLifecycle=onboarding`. It\n describes if a particular para is onboarding as a `parachain` or a\n `parathread`.\n Operation:\n type: object\n properties:\n phase:\n $ref: '#/components/schemas/OperationPhase'\n parentSpanId:\n $ref: '#/components/schemas/SpanId'\n primarySpanId:\n $ref: '#/components/schemas/SpanId'\n eventIndex:\n type: string\n format: unsignedInteger\n description: Index of the underlying trace event.\n address:\n type: string\n description: |\n Account this operation affects. Note - this will be an object like\n `{ id: address }` if the network uses `MultiAddress`\n storage:\n type: object\n properties:\n pallet:\n type: string\n item:\n type: string\n field1:\n type: string\n description: |\n A field of the storage item. (i.e `system::Account::get(address).data`)\n field2:\n type: string\n description: |\n A field of the struct described by field1 (i.e\n `system::Account::get(address).data.free`)\n amount:\n $ref: '#/components/schemas/OperationAmount'\n OperationAmount:\n type: object\n properties:\n values:\n type: string\n format: unsignedInteger\n currency:\n $ref: '#/components/schemas/OperationAmountCurrency'\n OperationAmountCurrency:\n type: object\n properties:\n symbol:\n type: string\n example: KSM\n OperationPhase:\n type: object\n properties:\n variant:\n type: string\n enum:\n - onInitialize\n - initialChecks\n - applyExtrinsic\n - onFinalize\n - finalChecks\n description: Phase of block execution pipeline.\n extrinsicIndex:\n type: string\n format: unsignedInteger\n description: |\n If phase variant is `applyExtrinsic` this will be the index of\n the extrinsic. Otherwise this field will not be present.\n PalletsAssetsInfo:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n assetInfo:\n $ref: '#/components/schemas/AssetInfo'\n assetMetadata:\n $ref: '#/components/schemas/AssetMetadata'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n PalletConstants:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up constants.\n example: \"14\"\n items:\n type: array\n items:\n $ref: '#/components/schemas/PalletConstantsItemMetadata'\n description: Array containing metadata for each constant entry of the pallet.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletConstantsItem:\n type: object\n properties:\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up constants.\n example: \"14\"\n errorItem:\n type: string\n description: Name of the constant item.\n example: \"EnactmentPeriod\"\n metadata:\n $ref: '#/components/schemas/PalletConstantsItemMetadata'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletConstantsItemMetadata:\n type: object\n properties:\n name:\n type: string\n example: \"VotingPeriod\"\n description: The constant item's name (which is the same as the constant item's ID).\n type:\n type: string\n example: \"4\"\n value:\n type: string\n example: \"0x00270600\"\n description: The hex value of the constant\n docs:\n type: string\n example: \"Information concerning any given constant.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"\n description: Metadata of an constant item from a FRAME pallet.\n PalletDispatchables:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up dispatchables.\n example: \"14\"\n items:\n type: array\n items:\n $ref: '#/components/schemas/PalletDispatchablesItemMetadata'\n description: Array containing metadata for each dispatchable entry of the pallet.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n PalletDispatchablesItem:\n type: object\n properties:\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up dispatchables.\n example: \"14\"\n dispatchableItem:\n type: string\n description: Name of the dispatchable item.\n example: \"vote\"\n metadata:\n $ref: '#/components/schemas/PalletDispatchablesItemMetadata'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n PalletDispatchablesItemMetadata:\n type: object\n properties:\n name:\n type: string\n example: \"propose\"\n description: The dispatchable item's name (which is the same as the dispatchable item's ID).\n fields:\n type: array\n items:\n type: string\n index:\n type: string\n example: \"0\"\n description: The index of the dispatchable item in the lists of pallet dispatchables.\n docs:\n type: string\n example: \"Information concerning any given dispatchable.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"\n args:\n type: array\n items:\n type: string\n description: Metadata of a dispatchable item from a FRAME pallet.\n PalletErrors:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up errors.\n example: \"14\"\n items:\n type: array\n items:\n $ref: '#/components/schemas/PalletErrorsItemMetadata'\n description: Array containing metadata for each error entry of the pallet.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletErrorsItem:\n type: object\n properties:\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up errors.\n example: \"14\"\n errorItem:\n type: string\n description: Name of the error item.\n example: \"ValueLow\"\n metadata:\n $ref: '#/components/schemas/PalletErrorsItemMetadata'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletErrorsItemMetadata:\n type: object\n properties:\n name:\n type: string\n example: \"InsufficientFunds\"\n description: The error item's name (which is the same as the error item's ID).\n fields:\n type: array\n items:\n type: string\n index:\n type: string\n example: \"0\"\n description: The index of the error item in the lists of pallet errors\n docs:\n type: string\n example: \" Information concerning any given error.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"\n args:\n type: array\n items:\n type: string\n description: Metadata of an error item from a FRAME pallet.\n PalletEvents:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up events.\n example: \"14\"\n items:\n type: array\n items:\n $ref: '#/components/schemas/PalletEventsItemMetadata'\n description: Array containing metadata for each event entry of the pallet.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletEventsItem:\n type: object\n properties:\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up events.\n example: \"14\"\n eventItem:\n type: string\n description: Name of the events item.\n example: \"Proposed\"\n metadata:\n $ref: '#/components/schemas/PalletEventsItemMetadata'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletEventsItemMetadata:\n type: object\n properties:\n name:\n type: string\n example: \"Tabled\"\n description: The event item's name (which is the same as the event item's ID).\n fields:\n type: array\n items:\n type: string\n index:\n type: string\n example: \"0\"\n description: The index of the error item in the lists of pallet events\n docs:\n type: string\n example: \" Information concerning any given event.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"\n args:\n type: array\n items:\n type: string\n description: Metadata of an event item from a FRAME pallet.\n PalletsForeignAssets:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n items:\n type: array\n items:\n $ref: '#/components/schemas/PalletsForeignAssetsInfo'\n description: Array containing the `AssetDetails` and `AssetMetadata` of every foreign asset.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n PalletsForeignAssetsInfo:\n type: object\n properties:\n multiLocation:\n $ref: '#/components/schemas/AssetMultiLocation'\n foreignAssetInfo:\n $ref: '#/components/schemas/AssetInfo'\n foreignAssetMetadata:\n $ref: '#/components/schemas/AssetMetadata'\n PalletsNominationPool:\n type: object\n properties:\n bondedPool:\n $ref: '#/components/schemas/BondedPool'\n rewardPool:\n $ref: '#/components/schemas/RewardPool'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletsNominationPoolsInfo:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n counterForBondedPools: \n type: number\n counterForMetadata:\n type: number\n counterForPoolMembers:\n type: number\n counterForReversePoolIdLookup:\n type: number\n counterForRewardPools:\n type: number\n counterForSubPoolsStorage:\n type: number\n lastPoolId:\n type: number\n maxPoolMembers:\n type: number\n maxPoolMembersPerPool:\n type: number\n nullable: true\n maxPools:\n type: number\n minCreateBond:\n type: number\n minJoinBond:\n type: number\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletsOnGoingReferenda:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n referenda:\n type: array\n items:\n type: object\n properties:\n id:\n type: string\n description: Referendum's id.\n decisionDeposit:\n type: object\n properties:\n who:\n type: string\n description: The account who placed the referendum's decision deposit.\n amount:\n type: string\n format: unsignedInteger\n description: The amount of the decision deposit.\n description: A deposit which is required for a referendum to progress to the decision phase.\n enactment:\n type: string\n enum:\n - at\n - after\n description: The enactment period of the referendum. It can be defined using either the `at` option,\n which specifies the exact block height when the referendum will be enacted, or the `after` option,\n which indicates the number of blocks after which the enactment will occur.\n submitted:\n type: string\n format: unsignedInteger\n description: The block number at which the referendum was submitted.\n deciding:\n type: object\n properties:\n since:\n type: string\n format: unsignedInteger\n description: The block number at which the referendum started being `decided`.\n confirming:\n type: string\n format: unsignedInteger\n description: The block number at which the referendum's confirmation stage will end at as long as\n it doesn't lose its approval in the meantime.\n description: A list of ongoing referenda and their details.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletsPoolAssetsInfo:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n poolAssetInfo:\n $ref: '#/components/schemas/AssetInfo'\n poolAssetMetadata:\n $ref: '#/components/schemas/AssetMetadata'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletStorage:\n type: object\n properties:\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up storage.\n example: \"15\"\n items:\n type: array\n items:\n $ref: '#/components/schemas/PalletStorageItemMetadata'\n description: Array containing metadata for each storage entry of the pallet.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletStorageItem:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up storage.\n example: \"15\"\n storageItem:\n type: string\n description: Name of the storage item.\n example: \"referendumInfoOf\"\n keys:\n type: array\n items:\n type: string\n description: N Storage keys passed in as the `keys` query param. \n example: [\"0x00\", \"0x01\"]\n value:\n type: object\n description: Value returned by this storage query.\n example:\n Ongoing:\n end: \"1612800\"\n proposalHash: \"0x7de70fc8be782076d0b5772be77153d172a5381c72dd56d3385e25f62abf507e\"\n threshold: \"Supermajorityapproval\"\n delay: \"403200\"\n tally:\n ayes: \"41925212461400000\"\n nays: \"214535586500000\"\n turnout: \"34485320658000000\"\n metadata:\n $ref: '#/components/schemas/PalletStorageItemMetadata'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletStorageItemMetadata:\n type: object\n properties:\n name:\n type: string\n example: \"ReferendumInfoOf\"\n description: The storage item's name (which is the same as the storage item's ID).\n modifier:\n type: string\n example: \"Optional\"\n type:\n $ref: '#/components/schemas/PalletStorageType'\n fallback:\n type: string\n example: \"0x00\"\n docs:\n type: string\n example: \" Information concerning any given referendum.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"\n description: Metadata of a storage item from a FRAME pallet.\n PalletStorageType:\n type: object\n description: This is going to be formatted to the type of StorageEntryTypeV14.\n Para:\n type: object\n properties:\n paraId:\n type: string\n format: unsignedInteger\n paraLifecycle:\n $ref: '#/components/schemas/ParaLifecycle'\n onboardingAs:\n $ref: '#/components/schemas/OnboardingAs'\n Paras:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n paras:\n type: array\n items:\n $ref: '#/components/schemas/Para'\n ParasAuctionsCurrent:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n beginEnd:\n type: string\n format: unisgnedInteger or $null\n description: |\n Fist block (number) of the auction ending phase. `null` if there is no ongoing\n auction.\n finishEnd:\n type: string\n format: unisgnedInteger or $null\n description: |\n Last block (number) of the auction ending phase. `null` if there is no ongoing\n auction.\n phase:\n type: string\n enum:\n - startPeriod\n - endPeriod\n - vrfDelay\n description: |\n An auction can be in one of 4 phases. Both `startingPeriod` () and `endingPeriod` indicate\n an ongoing auction, while `vrfDelay` lines up with the `AuctionStatus::VrfDelay` . Finally, a value of `null`\n indicates there is no ongoing auction. Keep in mind the that the `finishEnd` field is the block number the\n `endingPeriod` finishes and the `vrfDelay` period begins. The `vrfDelay` period is typically about an\n epoch long and no crowdloan contributions are accepted.\n auctionIndex:\n type: string\n format: unsignedInteger\n description: |\n The auction number. If there is no current auction this will be the number\n of the previous auction.\n leasePeriods:\n type: array\n items:\n type: string\n format: unsignedInteger\n description: |\n Lease period indexes that may be bid on in this auction. `null` if\n there is no ongoing auction.\n winning:\n type: array\n items:\n $ref: '#/components/schemas/WinningData'\n ParasCrowdloans:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n funds:\n type: array\n items:\n type: object\n properties:\n paraId:\n type: string\n format: unsignedInteger\n fundInfo:\n $ref: '#/components/schemas/FundInfo'\n description: |\n List of paras that have crowdloans.\n ParasCrowdloanInfo:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n fundInfo:\n $ref: '#/components/schemas/FundInfo'\n leasePeriods:\n type: array\n items:\n type: string\n format: unsignedInteger\n description: Lease periods the crowdloan can bid on.\n ParasHeaders:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n paraId:\n type: object\n description: |\n The key is not named `paraId` and will be the number of the parachain. There is technically no limit to the number of paraId keys there can be. \n properties:\n hash:\n type: string\n description: The block's hash.\n format: hex\n number:\n type: string\n description: The block's height.\n format: unsignedInteger\n parentHash:\n type: string\n description: The hash of the parent block.\n format: hex\n stateRoot:\n type: string\n description: The state root after executing this block.\n format: hex\n extrinsicsRoot:\n type: string\n description: The Merkle root of the extrinsics.\n format: hex\n digest:\n type: object\n properties:\n logs:\n type: array\n items:\n $ref: '#/components/schemas/DigestItem'\n description: Array of `DigestItem`s associated with the block.\n ParachainInclusion:\n type: object\n properties:\n parachainBlock:\n type: integer\n description: The parachain block number that was searched for.\n parachainBlockHash:\n type: string\n format: hex\n description: The hash of the parachain block.\n parachainId:\n type: integer\n description: The parachain ID.\n relayParentNumber:\n type: integer\n description: The relay chain block number used as parent during parachain block production.\n inclusionNumber:\n type: integer\n nullable: true\n description: The relay chain block number where the parachain block was included (null if not found).\n found:\n type: boolean\n description: Whether the inclusion was found within the search depth.\n required:\n - parachainBlock\n - parachainBlockHash\n - parachainId\n - relayParentNumber\n - inclusionNumber\n - found\n ParasLeasesCurrent:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n leasePeriodIndex:\n type: string\n format: unsignedInteger\n description: Current lease period index. This value may be null when the current block now,\n substracted by the leaseOffset is less then zero.\n endOfLeasePeriod:\n type: string\n format: unsignedInteger\n description: Last block (number) of the current lease period. This value may be null when\n `leasePeriodIndex` is null.\n currentLeaseHolders:\n type: array\n items:\n type: string\n format: unsignedInteger\n description: List of `paraId`s that currently hold a lease.\n ParasLeaseInfo:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n paraLifecycle:\n $ref: '#/components/schemas/ParaLifecycle'\n onboardingAs:\n $ref: '#/components/schemas/OnboardingAs'\n leases:\n type: array\n items:\n type: object\n properties:\n leasePeriodIndex:\n type: string\n format: unsignedInteger\n account:\n type: string\n deposit:\n type: string\n format: unsignedInteger\n description: |\n List of lease periods for which the `paraId` holds a lease along with\n the deposit held and the associated `accountId`.\n ParaLifecycle:\n type: string\n enum:\n - onboarding\n - parathread\n - parachain\n - upgradingParathread\n - downgradingParachain\n - offboardingParathread\n - offboardingParachain\n description: |\n The possible states of a para, to take into account delayed lifecycle\n changes.\n Payouts:\n type: array\n items:\n type: object\n properties:\n validatorId:\n type: string\n description: AccountId of the validator the payout is coming from.\n nominatorStakingPayout:\n type: string\n format: unsignedInteger\n description: Payout for the reward destination associated with the\n accountId the query was made for.\n claimed:\n type: boolean\n description: Whether or not the reward has been claimed.\n totalValidatorRewardPoints:\n type: string\n format: unsignedInteger\n description: Number of reward points earned by the validator.\n validatorCommission:\n type: string\n format: unsignedInteger\n description: The percentage of the total payout that the validator takes as commission,\n expressed as a Perbill.\n totalValidatorExposure:\n type: string\n format: unsignedInteger\n description: The sum of the validator's and its nominators' stake.\n nominatorExposure:\n type: string\n format: unsignedInteger\n description: The amount of stake the nominator has behind the validator.\n description: Payout for a nominating _Stash_ address and\n information about the validator they were nominating.\n PeerInfo:\n type: object\n properties:\n peerId:\n type: string\n description: Peer ID.\n roles:\n type: string\n description: Roles the peer is running\n protocolVersion:\n type: string\n description: Peer's protocol version.\n format: unsignedInteger\n bestHash:\n type: string\n description: Hash of the best block on the peer's canon chain.\n format: hex\n bestNumber:\n type: string\n description: Height of the best block on the peer's canon chain.\n format: unsignedInteger\n RewardPool:\n type: object\n properties:\n lastRecordedRewardCounter: \n type: number\n lastRecordedTotalPayouts:\n type: number\n totalRewardsClaimed:\n type: number\n RuntimeCode:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n code:\n type: string\n format: hex\n RuntimeDispatchInfo:\n type: object\n properties:\n weight:\n $ref: '#/components/schemas/WeightsV2'\n description: Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\n class:\n type: string\n description: Extrinsic class.\n enum:\n - Normal\n - Operational\n - Mandatory\n partialFee:\n type: string\n description: The _inclusion fee_ of a transaction, i.e. the minimum fee required for a transaction. Includes weight and encoded length fees, but does not have access to any signed extensions, e.g. the `tip`.\n format: unsignedInteger\n kind:\n type: string\n description: Information on the partialFee that is collected. Can be either `preDispatch`, `postDispatch` or `fromEvent`.\n `preDispatch` means the information used to collect the fee was from `payment_queryInfo`, `postDispatch` means\n the information used to calculate the fee was from finalized weights for the extrinsic, and `fromEvent` means that the partialFee was\n abstracted from the `TransactionPayment::TransactionPaidFee` event. \n description: RuntimeDispatchInfo for the transaction. Includes the `partialFee`.\n RuntimeMetadata:\n type: object\n description: |\n Substrate runtime metadata containing pallet information, types registry, and API specifications.\n The structure varies significantly between different runtime versions (V9-V16) and different chains.\n This is a generic container that preserves the actual metadata structure as returned by the runtime.\n properties:\n magicNumber:\n type: string\n description: The magic number identifying this as Substrate metadata (typically \"1635018093\")\n example: \"1635018093\"\n metadata:\n type: object\n description: |\n Version-specific metadata content. The structure depends entirely on the runtime metadata version\n and can include various combinations of pallets, lookup registries, extrinsics, APIs, and other\n runtime-specific information.\n required:\n - magicNumber\n - metadata\n RuntimeSpec:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n authoringVersion:\n type: string\n description: The version of the authorship interface. An authoring node\n will not attempt to author blocks unless this is equal to its native runtime.\n chainType:\n $ref: '#/components/schemas/ChainType'\n implVersion:\n type: string\n description: Version of the implementation specification. Non-consensus-breaking\n optimizations are about the only changes that could be made which would\n result in only the `impl_version` changing. The `impl_version` is set to 0\n when `spec_version` is incremented.\n specName:\n type: string\n description: Identifies the different Substrate runtimes.\n specVersion:\n type: string\n description: Version of the runtime specification.\n transactionVersion:\n type: string\n description: All existing dispatches are fully compatible when this number\n doesn't change. This number must change when an existing dispatchable\n (module ID, dispatch ID) is changed, either through an alteration in its\n user-level semantics, a parameter added/removed/changed, a dispatchable\n being removed, a module being removed, or a dispatchable/module changing\n its index.\n properties:\n type: object\n description: Arbitrary properties defined in the chain spec.\n description: Version information related to the runtime.\n SanitizedEvent:\n type: object\n properties:\n method:\n type: string\n data:\n type: array\n items:\n type: string\n Signature:\n type: object\n properties:\n signature:\n type: string\n format: hex\n signer:\n type: string\n format: ss58\n description: Object with `signature` and `signer`, or `null` if unsigned.\n SpanId:\n type: object\n properties:\n name:\n type: string\n target:\n type: string\n id:\n type: string\n format: unsignedInteger\n StakingLedger:\n type: object\n properties:\n stash:\n type: string\n description: The _Stash_ account whose balance is actually locked and at stake.\n format: ss58\n total:\n type: string\n description: The total amount of the _Stash_'s balance that we are currently accounting\n for. Simply `active + unlocking`.\n format: unsignedInteger\n active:\n type: string\n description: The total amount of the _Stash_'s balance that will be at stake\n in any forthcoming eras.\n format: unsignedInteger\n unlocking:\n type: string\n description: Any balance that is becoming free, which may eventually be\n transferred out of the _Stash_ (assuming it doesn't get slashed first).\n Represented as an array of objects, each with an `era` at which `value`\n will be unlocked.\n format: unsignedInteger\n claimedRewards:\n type: array\n description: Array of objects, each containing an `era` and its corresponding `status`,\n which represents the rewards status of the queried Stash account. The queried account can either be\n a validator or nominator account. This array is populated with values from `stakingLedger.lastReward`,\n `stakingLedger.legacyClaimedRewards` or `stakingLedger.claimedRewards`, as well as the\n `query.staking.claimedRewards` call, depending on whether the queried block is before or after the migration.\n For more details on the implementation and the migration, refer to the related PR\n (https://github.com/paritytech/substrate-api-sidecar/pull/1445) and linked issue\n (https://github.com/paritytech/substrate-api-sidecar/issues/1433#issuecomment-2075914389).\n items:\n type: object\n properties:\n era:\n type: string\n description: The era for which we check the rewards status.\n format: unsignedInteger\n status:\n type: string\n description: The rewards status of the stakers backing a validator.\n enum:\n - claimed\n - unclaimed\n - partially claimed\n description: The staking ledger.\n StakingProgress:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n activeEra:\n type: string\n description: |\n `EraIndex` of the era being rewarded.\n format: unsignedInteger\n forceEra:\n type: string\n description: Current status of era forcing.\n enum:\n - ForceNone\n - NotForcing\n - ForceAlways\n - ForceNew\n nextActiveEraEstimate:\n type: string\n description: Upper bound estimate of the block height at which the next\n active era will start. Not included in response when `forceEra.isForceNone`.\n format: unsignedInteger\n nextSessionEstimate:\n type: string\n description: Upper bound estimate of the block height at which the next\n session will start.\n format: unsignedInteger\n unappliedSlashes:\n type: array\n items:\n $ref: '#/components/schemas/UnappliedSlash'\n description: Array of upcoming `UnappliedSlash` indexed by era.\n electionStatus:\n $ref: '#/components/schemas/ElectionStatus'\n idealValidatorCount:\n type: string\n description: Upper bound of validator set size; considered the ideal size.\n Not included in response when `forceEra.isForceNone`.\n format: unsignedInteger\n validatorSet:\n type: array\n description: Stash account IDs of the validators for the current session.\n Not included in response when `forceEra.isForceNone`.\n items:\n type: string\n format: ss58\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n StakingValidators:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n validators:\n type: array\n items:\n type: object\n properties:\n address:\n type: string\n description: Address of validator.\n status:\n type: string\n description: Status of individual validator (active/waiting).\n commission:\n type: string\n description: The validator's commission rate as parts-per-billion (e.g., \"100000000\" = 10%). Not present for chilled validators.\n blocked:\n type: boolean\n description: Whether the validator is blocked from receiving new nominations. Not present for chilled validators.\n validatorsToBeChilled:\n description: Validators that will not be participating in the next era.\n type: array\n items:\n type: object\n properties:\n address:\n type: string\n description: Address of validator.\n status:\n type: string\n description: Status of individual validator (active/waiting).\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n StorageEntryTypeV13:\n type: object\n properties:\n hasher:\n type: string\n description: Returns a string deonting the storage hasher.\n key:\n type: string\n description: Key of the queried pallet storageId.\n value:\n type: string\n description: Value of the queried pallet storageId.\n linked:\n type: boolean\n StorageEntryTypeV14:\n type: object\n properties:\n hasher:\n type: array\n items:\n type: string\n description: Returns a string denoting the storage\n hasher inside of an array.\n key:\n type: string\n description: The SiLookupTypeId to identify the type.\n value:\n type: string\n description: The SiLookupTypeId to identify the type.\n TraceEvent:\n type: object\n properties:\n data:\n type: object\n properties:\n stringValues:\n $ref: '#/components/schemas/TraceEventDataStringValues'\n parentId:\n type: string\n format: unsignedInteger\n target:\n type: string\n TraceEventDataStringValues:\n type: object\n properties:\n key:\n type: string\n format: hex\n description: The complete storage key for the entry.\n method:\n type: string\n description: Normally one of Put or Get.\n result:\n type: string\n format: hex\n description: Hex scale encoded storage value.\n description: Note these exact values will only be present for storage events.\n TraceSpan:\n type: object\n properties:\n id:\n type: string\n format: unsignedInteger\n name:\n type: string\n parentId:\n type: string\n format: unsignedInteger\n target:\n type: string\n wasm:\n type: boolean\n Transaction:\n type: object\n properties:\n tx:\n type: string\n format: hex\n TransactionDispatchOutcome:\n type: object\n description: The result of a valid transaction submitted via the `dry-run` endpoint.\n properties:\n actualWeight:\n type: string\n format: unsignedInteger\n description: The actual weight of the transaction.\n paysFee:\n type: string\n format: boolean\n description: Whether the transaction pays a fee.\n TransactionDispatchError:\n type: object\n description: The reason why the dispatch call failed.\n properties:\n errorType:\n type: string\n enum:\n - Other\n - CannotLookup\n - BadOrigin\n - ModuleError\n - ConsumerRemaining\n - NoProviders\n - TooManyConsumers\n - TokenError\n - ArithmeticError\n - TransactionalError\n - Exhausted\n - Corruption\n - Unavailable\n - RootNotAllowed\n description: The type of transaction error.\n TransactionValidityError:\n type: object\n description: The error result from an invalid transaction submitted via the `dry-run` endpoint.\n properties:\n errorType:\n type: string\n enum:\n - Unimplemented\n - VersionedConversionFailed\n description: The type of transaction error, either `Unimplemented` or `VersionedConversionFailed`.\n DryRunBody:\n type: object\n properties: \n at: \n type: string\n format: unsignedInteger\n tx: \n type: string\n format: hex\n senderAddress:\n type: string\n format: ss58\n TransactionDryRun:\n type: object\n properties:\n resultType:\n type: string\n enum:\n - DispatchOutcome\n - DispatchError\n - TransactionValidityError\n description: The result will be either a `DispatchOutcome` if the transaction is valid, a `DispatchError`\n if the transaction failed, or a `TransactionValidityError` if the transaction is invalid.\n result:\n oneOf:\n - $ref: '#/components/schemas/TransactionDispatchOutcome'\n - $ref: '#/components/schemas/TransactionDispatchError'\n - $ref: '#/components/schemas/TransactionValidityError'\n description: >-\n References:\n - `PostDispatchInfo`: https://docs.rs/frame-support/38.0.0/frame_support/dispatch/struct.PostDispatchInfo.html\n - `DispatchError`: https://docs.rs/sp-runtime/39.0.1/sp_runtime/enum.DispatchError.html\n - `Error Type`: https://paritytech.github.io/polkadot-sdk/master/xcm_runtime_apis/dry_run/enum.Error.html\n TransactionFailedToParse:\n type: object\n properties:\n code:\n type: number\n error:\n type: string\n description: >-\n `Failed to parse a tx.`\n transaction:\n type: string\n format: hex\n cause:\n type: string\n stack:\n type: string\n description: Error message when Sidecar fails to parse the transaction.\n TransactionFailedToSubmit:\n type: object\n properties:\n code:\n type: number\n error:\n type: string\n description: Failed to submit transaction.\n transaction:\n type: string\n format: hex\n cause:\n type: string\n stack:\n type: string\n description: >-\n Error message when the node rejects the submitted transaction.\n TransactionFailure:\n oneOf:\n - $ref: '#/components/schemas/TransactionFailedToSubmit'\n - $ref: '#/components/schemas/TransactionFailedToParse'\n TransactionFeeEstimate:\n type: object\n properties:\n weight:\n $ref: '#/components/schemas/WeightsV2'\n description: Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\n class:\n type: string\n description: Extrinsic class.\n enum:\n - Normal\n - Operational\n - Mandatory\n partialFee:\n type: string\n description: Expected inclusion fee for the transaction. Note that the fee\n rate changes up to 30% in a 24 hour period and this will not be the exact\n fee.\n format: unsignedInteger\n description: >-\n Note: `partialFee` does not include any tips that you may add to increase a transaction's\n priority. See [compute_fee](https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee).\n TransactionFeeEstimateFailure:\n type: object\n properties:\n code:\n type: number\n at:\n type: object\n properties:\n hash:\n type: string\n error:\n type: string\n description: Error description.\n transaction:\n type: string\n format: hex\n block:\n type: string\n description: Block hash of the block fee estimation was attempted at.\n cause:\n type: string\n description: Error message from the client.\n stack:\n type: string\n TransactionMaterial:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n genesisHash:\n type: string\n description: The hash of the chain's genesis block.\n format: blockHash\n chainName:\n type: string\n description: The chain's name.\n specName:\n type: string\n description: The chain's spec.\n specVersion:\n type: string\n description: The spec version. Always increased in a runtime upgrade.\n txVersion:\n type: string\n description: The transaction version. Common `txVersion` numbers indicate\n that the transaction encoding format and method indices are the same.\n Needed for decoding in an offline environment. Adding new transactions\n does not change `txVersion`.\n metadata:\n type: string\n description: The chain's metadata. It will only be present when the metadata query param is used.\n description: >-\n Note: `chainName`, `specName`, and `specVersion` are used to define a type registry with a set\n of signed extensions and types. For Polkadot and Kusama, `chainName` is not used in defining\n this registry, but in other Substrate-based chains that re-launch their network without\n changing the `specName`, the `chainName` would be needed to create the correct registry.\n Substrate Reference:\n - `RuntimeVersion`: https://crates.parity.io/sp_version/struct.RuntimeVersion.html\n - `SignedExtension`: https://crates.parity.io/sp_runtime/traits/trait.SignedExtension.html\n - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html\n TransactionPool:\n type: object\n properties:\n pool:\n type: array\n items:\n type: object\n properties:\n hash:\n type: string\n format: hex\n description: H256 hash of the extrinsic.\n encodedExtrinsic:\n type: string\n format: hex\n description: Scale encoded extrinsic.\n tip:\n type: string\n format: unsignedInteger\n description: The tip included in the extrinsic. Only included if the query param `includeFee` is set to true.\n priority:\n type: string\n format: unsignedInteger\n description: Computed priority of an extrinsic. Only included if the query param `includeFee` is set to true.\n partialFee:\n type: string\n format: unsignedInteger\n description: Provided `partialFee` of an extrinsic. Only included if the query param `includeFee` is set to true.\n TransactionSuccess:\n type: object\n properties:\n hash:\n type: string\n description: The hash of the encoded transaction.\n UnappliedSlash:\n type: object\n properties:\n validator:\n type: string\n description: Stash account ID of the offending validator.\n format: ss58\n own:\n type: string\n description: The amount the validator will be slashed.\n format: unsignedInteger\n others:\n type: array\n description: Array of tuples(`[accountId, amount]`) representing all the\n stashes of other slashed stakers and the amount they will be slashed.\n items:\n type: string\n format: tuple[ss58, unsignedInteger]\n reporters:\n type: array\n description: Array of account IDs of the reporters of the offense.\n items:\n type: string\n format: ss58\n payout:\n type: string\n description: Amount of bounty payout to reporters.\n format: unsignedInteger\n VestingSchedule:\n type: object\n properties:\n locked:\n type: string\n description: Number of tokens locked at start.\n format: unsignedInteger\n perBlock:\n type: string\n description: Number of tokens that gets unlocked every block after `startingBlock`.\n format: unsignedInteger\n startingBlock:\n type: string\n description: Starting block for unlocking (vesting).\n format: unsignedInteger\n vested:\n type: string\n description: Amount that has vested based on time elapsed for this schedule. Only present when `includeClaimable` parameter is used.\n format: unsignedInteger\n description: Vesting schedule for an account.\n WeightsV2:\n type: object\n properties:\n refTime:\n type: string\n description: The weight of computational time used based on some reference hardware.\n proofSize:\n type: string\n description: The weight of storage space used by proof of validity.\n WinningData:\n type: object\n properties:\n bid:\n type: object\n properties:\n accountId:\n type: string\n paraId:\n type: string\n format: unsignedInteger\n amount:\n type: string\n format: unsignedInteger\n leaseSet:\n type: array\n items:\n type: string\n format: unsignedInteger\n description: |\n A currently winning bid and the set of lease periods the bid is for. The\n `amount` of the bid is per lease period. The `bid` property will be `null`\n if no bid has been made for the corresponding `leaseSet`.\n requestBodies:\n Transaction:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Transaction'\n required: true\n TransactionDryRun:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/DryRunBody'\n required: true\n ContractMetadata:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ContractMetadata'\n\n"),this.processSpec(),console.log("OpenAPI specification loaded successfully"),n.a(2,this.spec);case 1:throw n.p=1,e=n.v,console.error("Error loading OpenAPI specification:",e),e;case 2:return n.a(2)}},n,this,[[0,1]])}),r=function(){var n=this,e=arguments;return new Promise(function(r,a){var o=t.apply(n,e);function s(n){E(o,r,a,s,i,"next",n)}function i(n){E(o,r,a,s,i,"throw",n)}s(void 0)})},function(){return r.apply(this,arguments)})},{key:"processSpec",value:function(){if(!this.spec)throw new Error("No specification loaded");this.processTags(),this.processEndpoints(),this.processSchemas()}},{key:"processTags",value:function(){var n=this;this.spec.tags&&this.spec.tags.forEach(function(e){n.tags.set(e.name,{name:e.name,description:e.description||"",endpoints:[]})})}},{key:"processEndpoints",value:function(){var n=this;this.spec.paths&&Object.entries(this.spec.paths).forEach(function(e){var t=S(e,2),r=t[0],a=t[1];Object.entries(a).forEach(function(e){var t=S(e,2),a=t[0],o=t[1];if("parameters"!==a){var s="".concat(a.toUpperCase(),"_").concat(r.replace(/[{}\/]/g,"_")),i={id:s,path:r,method:a.toUpperCase(),summary:o.summary||"",description:o.description||"",operationId:o.operationId||"",tags:o.tags||[],parameters:n.processParameters(o.parameters||[]),responses:n.processResponses(o.responses||{}),requestBody:o.requestBody?n.processRequestBody(o.requestBody):null};n.endpoints.set(s,i),i.tags.forEach(function(e){var t=n.tags.get(e);t&&t.endpoints.push(i)})}})})}},{key:"processParameters",value:function(n){var e=this;return n.map(function(n){return{name:n.name,in:n.in,description:n.description||"",required:n.required||!1,schema:n.schema?e.processSchema(n.schema):null,example:n.example}})}},{key:"processResponses",value:function(n){var e=this,t={};return Object.entries(n).forEach(function(n){var r=S(n,2),a=r[0],o=r[1];t[a]={description:o.description||"",content:o.content?e.processContent(o.content):null,headers:o.headers||{}}}),t}},{key:"processRequestBody",value:function(n){return{description:n.description||"",required:n.required||!1,content:n.content?this.processContent(n.content):null}}},{key:"processContent",value:function(n){var e=this,t={};return Object.entries(n).forEach(function(n){var r=S(n,2),a=r[0],o=r[1];t[a]={schema:o.schema?e.processSchema(o.schema):null,example:o.example,examples:o.examples}}),t}},{key:"processSchemas",value:function(){var n=this;this.spec.components&&this.spec.components.schemas&&Object.entries(this.spec.components.schemas).forEach(function(e){var t=S(e,2),r=t[0],a=t[1];n.schemas.set(r,function(n){for(var e=1;e0}).sort(function(n,e){return n.name.localeCompare(e.name)})}},{key:"getAllSchemas",value:function(){return Array.from(this.schemas.values()).sort(function(n,e){return n.name.localeCompare(e.name)})}},{key:"search",value:function(n){if(!n||n.length<2)return{endpoints:[],schemas:[]};var e=n.toLowerCase(),t={endpoints:[],schemas:[]};return this.endpoints.forEach(function(n){"".concat(n.path," ").concat(n.summary," ").concat(n.description," ").concat(n.tags.join(" ")).toLowerCase().includes(e)&&t.endpoints.push(n)}),this.schemas.forEach(function(n){"".concat(n.name," ").concat(n.description||"").toLowerCase().includes(e)&&t.schemas.push(n)}),t.endpoints.sort(function(n,t){return(n.path.toLowerCase().includes(e)?0:1)-(t.path.toLowerCase().includes(e)?0:1)}),t.schemas.sort(function(n,t){return(n.name.toLowerCase().includes(e)?0:1)-(t.name.toLowerCase().includes(e)?0:1)}),t}},{key:"getApiInfo",value:function(){var n,e,t,r,a;return this.spec?{title:(null===(n=this.spec.info)||void 0===n?void 0:n.title)||"API Documentation",description:(null===(e=this.spec.info)||void 0===e?void 0:e.description)||"",version:(null===(t=this.spec.info)||void 0===t?void 0:t.version)||"1.0.0",contact:(null===(r=this.spec.info)||void 0===r?void 0:r.contact)||{},license:(null===(a=this.spec.info)||void 0===a?void 0:a.license)||{},servers:this.spec.servers||[]}:null}},{key:"getServers",value:function(){var n;return(null===(n=this.spec)||void 0===n?void 0:n.servers)||[]}},{key:"formatEndpointPath",value:function(n){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"")+n.path}},{key:"generateExampleRequest",value:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",t=this.formatEndpointPath(n,e),r=n.method,a="curl -X ".concat(r,' "').concat(t,'"');if("GET"!==r&&(a+=' \\\n -H "Content-Type: application/json"'),n.requestBody){var o,s=null===(o=n.requestBody.content)||void 0===o?void 0:o["application/json"];null!=s&&s.example&&(a+=" \\\n -d '".concat(JSON.stringify(s.example,null,2),"'"))}return a}},{key:"getMethodColorClass",value:function(n){return{GET:"method-get",POST:"method-post",PUT:"method-put",DELETE:"method-delete",PATCH:"method-patch",HEAD:"method-head",OPTIONS:"method-options"}[n]||"method-default"}},{key:"generateExampleFromSchema",value:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new Set;if(e>10)return"...";if(!n)return null;if(0===e){var r=JSON.stringify(n);if(this.exampleCache.has(r))return this.exampleCache.get(r);var a=this._generateExampleFromSchemaInternal(n,e,t);return this.exampleCache.set(r,a),a}return this._generateExampleFromSchemaInternal(n,e,t)}},{key:"_generateExampleFromSchemaInternal",value:function(n){var e=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new Set;if(t>10)return"...";if(!n)return null;if(n.$ref){var a=this.resolveRef(n.$ref);if(!a||r.has(a))return"[Reference to ".concat(a,"]");r.add(a);var o=this.schemas.get(a);if(o){var s=this._generateExampleFromSchemaInternal(o,t+1,r);return r.delete(a),s}return"[".concat(a," schema not found]")}if(n.oneOf&&n.oneOf.length>0)return this._generateExampleFromSchemaInternal(n.oneOf[0],t+1,r);if(n.anyOf&&n.anyOf.length>0)return this._generateExampleFromSchemaInternal(n.anyOf[0],t+1,r);if(n.allOf&&n.allOf.length>0){var i,c={},l=function(n){var e="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(!e){if(Array.isArray(n)||(e=T(n))){e&&(n=e);var t=0,r=function(){};return{s:r,n:function(){return t>=n.length?{done:!0}:{done:!1,value:n[t++]}},e:function(n){throw n},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){e=e.call(n)},n:function(){var n=e.next();return o=n.done,n},e:function(n){s=!0,a=n},f:function(){try{o||null==e.return||e.return()}finally{if(s)throw a}}}}(n.allOf);try{for(l.s();!(i=l.n()).done;){var p=i.value,d=this._generateExampleFromSchemaInternal(p,t+1,r);d&&"object"===x(d)&&Object.assign(c,d)}}catch(n){l.e(n)}finally{l.f()}return Object.keys(c).length>0?c:null}if("array"===n.type&&n.items)return[this._generateExampleFromSchemaInternal(n.items,t+1,r)];if("object"===n.type){var m={};return n.properties&&Object.entries(n.properties).forEach(function(n){var a=S(n,2),o=a[0],s=a[1];m[o]=e._generateExampleFromSchemaInternal(s,t+1,r)}),m}return this.generateExampleForPrimitive(n)}},{key:"generateExampleForPrimitive",value:function(n){var e=n.type,t=n.format;if(void 0!==n.example)return n.example;if(n.enum&&n.enum.length>0)return n.enum[0];if(t)switch(t){case"SS58":return"15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5";case"unsignedInteger":return"1000000000000";case"$hex":return"0x1234567890abcdef";case"date-time":return"2023-01-01T12:00:00.000Z";case"uuid":return"123e4567-e89b-12d3-a456-426614174000";case"email":return"example@email.com";case"uri":return"https://example.com";case"binary":return"base64EncodedData"}switch(e){case"string":return n.description&&n.description.toLowerCase().includes("hash")?"0x1234567890abcdef1234567890abcdef12345678":n.description&&n.description.toLowerCase().includes("address")?"15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5":"example_string";case"number":case"integer":return 123;case"boolean":return!0;default:return null}}},{key:"generateExampleResponse",value:function(n){var e,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"200";if(!n.responses||!n.responses[t])return null;var r=null===(e=n.responses[t].content)||void 0===e?void 0:e["application/json"];return r&&r.schema?this.generateExampleFromSchema(r.schema):null}},{key:"getAllExampleResponses",value:function(n){var e=this;if(!n.responses)return{};var t={};return Object.entries(n.responses).forEach(function(r){var a=S(r,2),o=a[0],s=a[1],i=e.generateExampleResponse(n,o);null!==i&&(t[o]={description:s.description,example:i})}),t}}],e&&B(n.prototype,e),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,e,t,r}();function C(n){return C="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},C(n)}function O(n,e){return function(n){if(Array.isArray(n))return n}(n)||function(n,e){var t=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=t){var r,a,o,s,i=[],c=!0,l=!1;try{if(o=(t=t.call(n)).next,0===e){if(Object(t)!==t)return;c=!1}else for(;!(c=(r=o.call(t)).done)&&(i.push(r.value),i.length!==e);c=!0);}catch(n){l=!0,a=n}finally{try{if(!c&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(l)throw a}}return i}}(n,e)||function(n,e){if(n){if("string"==typeof n)return $(n,e);var t={}.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?$(n,e):void 0}}(n,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function $(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t\n ').concat(n.capitalizeFirst(t.name),'\n ').concat(t.endpoints.length,'\n \n \n \n \n

\n "),e.appendChild(r)}),this.parser.getAllSchemas().slice(0,20).forEach(function(n){var e=document.createElement("li");e.className="nav-item",e.innerHTML='\n \n 📋\n ').concat(n.name,"\n \n "),t.appendChild(e)}))}},{key:"renderEndpoint",value:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!n)return"";var t=this.parser.generateExampleRequest(n,e);return'\n
\n
\n
\n ').concat(n.method,'\n

').concat(n.path,'

\n
\n
\n ').concat(n.tags.map(function(n){return''.concat(n,"")}).join(""),'\n
\n
\n\n
\n ').concat(n.summary?'

'.concat(n.summary,"

"):"","\n ").concat(n.description?'
'.concat(this.formatDescription(n.description),"
"):"","\n\n ").concat(this.renderParameters(n.parameters),"\n ").concat(this.renderRequestBody(n.requestBody),"\n ").concat(this.renderResponses(n.responses),"\n ").concat(this.renderExampleRequest(t,n),"\n
\n
\n ")}},{key:"renderParameters",value:function(n){var e=this;if(!n||0===n.length)return"";var t=this.groupParametersByLocation(n);return'\n
\n

Parameters

\n '.concat(Object.entries(t).map(function(n){var t=O(n,2),r=t[0],a=t[1];return'\n
\n

'.concat(e.capitalizeFirst(r),' Parameters

\n
\n ').concat(a.map(function(n){return e.renderParameter(n)}).join(""),"\n
\n
\n ")}).join(""),"\n
\n ")}},{key:"groupParametersByLocation",value:function(n){return n.reduce(function(n,e){var t=e.in||"query";return n[t]||(n[t]=[]),n[t].push(e),n},{})}},{key:"renderParameter",value:function(n){var e=this.getTypeInfo(n.schema);return'\n
\n
\n
\n '.concat(n.name,"\n ").concat(n.required?'required':'optional','\n
\n
').concat(e,"
\n ").concat(n.description?'
'.concat(n.description,"
"):"","\n
\n
\n ")}},{key:"renderRequestBody",value:function(n){return n?'\n
\n

Request Body

\n '.concat(n.required?'required':"","\n ").concat(n.description?'

'.concat(n.description,"

"):"","\n ").concat(this.renderContent(n.content),"\n
\n "):""}},{key:"renderResponses",value:function(n){var e=this;return n&&0!==Object.keys(n).length?'\n
\n

Responses

\n
\n '.concat(Object.entries(n).map(function(n){var t=O(n,2),r=t[0],a=t[1];return e.renderResponse(r,a)}).join(""),"\n
\n
\n "):""}},{key:"renderResponse",value:function(n,e){var t=this.getStatusClass(n);return'\n
\n
\n ').concat(n,'\n ').concat(e.description,"\n
\n ").concat(e.content?this.renderContent(e.content):"","\n
\n ")}},{key:"renderContent",value:function(n){var e=this;return n?'\n
\n '.concat(Object.entries(n).map(function(n){var t=O(n,2),r=t[0],a=t[1];return'\n
\n

'.concat(r,"

\n ").concat(a.schema?e.renderSchema(a.schema):"","\n ").concat(a.example?e.renderExample(a.example,r):"","\n ").concat(a.schema?e.renderSchemaExample(a.schema,r):"","\n
\n ")}).join(""),"\n
\n "):""}},{key:"renderSchema",value:function(n){var e=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!n)return"";if(t>3)return'
Schema too deep...
';if(n.$ref){var r=n.resolvedRef;return'\n \n ")}return"object"===n.type&&n.properties?'\n
\n
object
\n
\n ').concat(Object.entries(n.properties).map(function(r){var a,o=O(r,2),s=o[0],i=o[1];return'\n
\n
\n '.concat(s,"\n ").concat(null!==(a=n.required)&&void 0!==a&&a.includes(s)?'required':"",'\n ').concat(e.getTypeInfo(i),"\n
\n ").concat(i.description?'
'.concat(i.description,"
"):"","\n ").concat(e.renderSchema(i,t+1),"\n
\n ")}).join(""),"\n
\n
\n "):"array"===n.type&&n.items?'\n
\n
array of:
\n ').concat(this.renderSchema(n.items,t+1),"\n
\n "):'\n
\n ').concat(this.getTypeInfo(n),"\n ").concat(n.description?''.concat(n.description,""):"","\n
\n ")}},{key:"renderExample",value:function(n,e){var t=this.formatExample(n,e),r=this.getLanguageFromMediaType(e);return'\n
\n
\n Example\n \n
\n
\n
').concat(this.escapeHtml(t),"
\n
\n
\n ")}},{key:"renderSchemaExample",value:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"application/json";if(!n)return"";try{var t=this.parser.generateExampleFromSchema(n);if(!t)return'\n
\n
\n Generated Example Response\n
\n
Unable to generate example from this schema
\n
\n ';var r=this.formatExample(t,e);return'\n
\n
\n Generated Example Response\n \n
\n
\n
').concat(this.escapeHtml(r),'
\n
\n
\n 💡 This example was automatically generated from the API schema\n
\n ').concat(this.renderDataSchemaSection(n),"\n
\n ")}catch(e){return console.error("Error generating example from schema:",e,n),'\n
\n
\n Generated Example Response\n
\n
\n ⚠️ Error generating example\n Schema processing failed: '.concat(e.message,"\n
\n
\n ")}}},{key:"renderDataSchemaSection",value:function(n){if(!n)return"";var e=this.extractSchemaReferences(n);return 0===e.length?"":'\n
\n
\n 📋 Data Schema\n
\n \n \n
\n ')}},{key:"extractSchemaReferences",value:function(n){var e=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set,r=new Set;if(!n||"object"!==C(n))return Array.from(r);if(n.$ref){var a=this.parser.resolveRef(n.$ref);if(a&&!t.has(a)){r.add(a),t.add(a);var o=this.parser.getSchema(a);o&&this.extractSchemaReferences(o,t).forEach(function(n){return r.add(n)})}}return n.oneOf&&n.oneOf.forEach(function(n){e.extractSchemaReferences(n,t).forEach(function(n){return r.add(n)})}),n.anyOf&&n.anyOf.forEach(function(n){e.extractSchemaReferences(n,t).forEach(function(n){return r.add(n)})}),n.allOf&&n.allOf.forEach(function(n){e.extractSchemaReferences(n,t).forEach(function(n){return r.add(n)})}),n.items&&this.extractSchemaReferences(n.items,t).forEach(function(n){return r.add(n)}),n.properties&&Object.values(n.properties).forEach(function(n){e.extractSchemaReferences(n,t).forEach(function(n){return r.add(n)})}),Array.from(r)}},{key:"renderExampleRequest",value:function(n,e){return'\n
\n

Try this endpoint

\n '.concat(this.renderParameterInputs(e),"\n ").concat(this.renderGeneratedCurl(e),"\n
\n ")}},{key:"renderParameterInputs",value:function(n){var e=this;if(!n.parameters||0===n.parameters.length)return this.renderSimpleEndpoint(n);var t=n.parameters.filter(function(n){return"path"===n.in}),r=n.parameters.filter(function(n){return"query"===n.in});return'\n
\n ').concat(t.length>0?'\n
\n

Required Parameters

\n '.concat(t.map(function(t){return e.renderParameterInput(t,n.id,!0)}).join(""),"\n
\n "):"","\n \n ").concat(r.length>0?'\n
\n

Optional Parameters

\n '.concat(r.map(function(t){return e.renderParameterInput(t,n.id,!1)}).join(""),"\n
\n "):"",'\n\n
\n \n
\n
\n ')}},{key:"renderParameterInput",value:function(n,e,t){var r=this.getParameterPlaceholder(n),a=t?"required":"";return'\n
\n \n \n
\n ")}},{key:"renderSimpleEndpoint",value:function(n){var e="curl -X ".concat(n.method.toUpperCase(),' "http://localhost:8080').concat(n.path,'"');return'\n
\n

This endpoint requires no parameters.

\n
\n
\n cURL\n \n
\n
').concat(this.escapeHtml(e),"
\n
\n
\n ")}},{key:"renderGeneratedCurl",value:function(n){return'\n \n ')}},{key:"getParameterPlaceholder",value:function(n){var e,t=n.name.toLowerCase();if("usercblock"===t)return"true";if(t.includes("address")||t.includes("account"))return"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";if(t.includes("hash")||t.includes("blockhash"))return"0x1234...abcdef";if(t.includes("block")||t.includes("number")||t.includes("height"))return"1000000";if(t.includes("limit"))return"10";if(t.includes("page"))return"1";switch((null===(e=n.schema)||void 0===e?void 0:e.type)||n.type||"string"){case"integer":case"number":return"123";case"boolean":return"true";default:return"Enter ".concat(n.name)}}},{key:"generateEnhancedCurl",value:function(n,e){var t=this;if(!n)return"";var r=e+n.path,a=n.method.toUpperCase();if(n.parameters&&n.parameters.filter(function(n){return"path"===n.in}).forEach(function(n){var e=t.getParameterExample(n);r=r.replace("{".concat(n.name,"}"),e)}),n.parameters){var o=n.parameters.filter(function(n){return"query"===n.in});if(o.length>0){var s=o.map(function(n){var e=t.getParameterExample(n);return"".concat(n.name,"=").concat(e)}).join("&");r+="?".concat(s)}}var i="curl -X ".concat(a);if("GET"!==a&&(i+=' -H "Content-Type: application/json"'),n.requestBody&&("POST"===a||"PUT"===a||"PATCH"===a)){var c=this.generateExampleRequestBody(n.requestBody);c&&(i+=" \\\\\n -d '".concat(c,"'"))}return i+' \\\\\n "'.concat(r,'"')}},{key:"getParameterExample",value:function(n){var e,t;if(void 0!==n.example)return n.example;if(void 0!==(null===(e=n.schema)||void 0===e?void 0:e.example))return n.schema.example;var r=(null===(t=n.schema)||void 0===t?void 0:t.type)||n.type||"string",a=n.name.toLowerCase();if(a.includes("id"))return"12345";if(a.includes("hash")||a.includes("blockhash"))return"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef";if(a.includes("address")||a.includes("account"))return"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";if(a.includes("block"))return"1000000";if(a.includes("number")||a.includes("height"))return"1000";if(a.includes("limit"))return"10";if(a.includes("page"))return"1";if(a.includes("at"))return"1000000";if(a.includes("from"))return"0";if(a.includes("to"))return"100";switch(r){case"integer":case"number":return"123";case"boolean":return"true";default:return"example"}}},{key:"generateExampleRequestBody",value:function(n){if(!n||!n.content)return null;var e=n.content["application/json"];return e&&e.schema?JSON.stringify({example:"request body - replace with actual data"}):null}},{key:"renderSchemaPage",value:function(n){return n?'\n
\n
\n

').concat(n.name,'

\n
\n ').concat(n.type||"object",'\n
\n
\n\n
\n ').concat(n.description?'

'.concat(n.description,"

"):"",'\n \n
\n

Schema Definition

\n ').concat(this.renderSchema(n),"\n
\n
\n
\n "):""}},{key:"capitalizeFirst",value:function(n){return n.charAt(0).toUpperCase()+n.slice(1)}},{key:"truncatePath",value:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:30;return n.length>e?n.substring(0,e)+"...":n}},{key:"getTypeInfo",value:function(n){if(!n)return"unknown";var e=n.type||"object";return n.format&&(e+=" (".concat(n.format,")")),n.$ref&&(e=n.resolvedRef||"reference"),e}},{key:"getStatusClass",value:function(n){var e=parseInt(n);return e>=200&&e<300?"status-success":e>=300&&e<400?"status-redirect":e>=400&&e<500?"status-client-error":e>=500?"status-server-error":"status-default"}},{key:"formatDescription",value:function(n){return n.replace(/\*\*(.*?)\*\*/g,"$1").replace(/\*(.*?)\*/g,"$1").replace(/`(.*?)`/g,"$1").replace(/\n/g,"
")}},{key:"formatExample",value:function(n,e){return"application/json"===e?"string"==typeof n?n:JSON.stringify(n,null,2):"string"==typeof n?n:JSON.stringify(n)}},{key:"getLanguageFromMediaType",value:function(n){return{"application/json":"json","application/xml":"xml","text/plain":"text","text/html":"html","application/x-www-form-urlencoded":"text"}[n]||"text"}},{key:"escapeHtml",value:function(n){var e=document.createElement("div");return e.textContent=n,e.innerHTML}}],e&&H(n.prototype,e),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,e}();function N(n){return N="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},N(n)}function L(n,e){for(var t=0;t0||n.schemas.length>0){var e='\n
\n '.concat(n.endpoints.length>0?this.renderEndpointResults(n.endpoints):"","\n ").concat(n.schemas.length>0?this.renderSchemaResults(n.schemas):"","\n
\n ");this.searchResults.innerHTML=e,this.showResults()}else this.renderNoResults()}},{key:"renderEndpointResults",value:function(n){var e=this,t=n.slice(0,8);return'\n
\n
\n

Endpoints

\n '.concat(n.length,'\n
\n
\n ').concat(t.map(function(n){return e.renderEndpointResult(n)}).join(""),"\n ").concat(n.length>8?'\n
\n +'.concat(n.length-8," more endpoints\n
\n "):"","\n
\n
\n ")}},{key:"renderEndpointResult",value:function(n){return'\n
\n
\n ').concat(n.method,'\n ').concat(n.path,'\n
\n
\n ').concat(n.summary||n.description||"No description available","\n
\n ").concat(n.tags.length>0?'\n
\n '.concat(n.tags.map(function(n){return''.concat(n,"")}).join(""),"\n
\n "):"","\n
\n ")}},{key:"renderSchemaResults",value:function(n){var e=this,t=n.slice(0,6);return'\n
\n
\n

Schemas

\n '.concat(n.length,'\n
\n
\n ').concat(t.map(function(n){return e.renderSchemaResult(n)}).join(""),"\n ").concat(n.length>6?'\n
\n +'.concat(n.length-6," more schemas\n
\n "):"","\n
\n
\n ")}},{key:"renderSchemaResult",value:function(n){return'\n
\n
\n 📋\n ').concat(n.name,'\n ').concat(n.type||"object","\n
\n ").concat(n.description?'\n
\n '.concat(this.truncateText(n.description,100),"\n
\n "):"","\n
\n ")}},{key:"renderNoResults",value:function(){this.searchResults.innerHTML='\n
\n
🔍
\n
\n

No results found

\n Try different keywords or check your spelling\n
\n
\n ',this.showResults()}},{key:"showResults",value:function(){this.searchResults&&(this.searchResults.style.display="block")}},{key:"hideResults",value:function(){this.searchResults&&(this.searchResults.style.display="none")}},{key:"clear",value:function(){this.searchResults&&(this.searchResults.innerHTML="",this.hideResults())}},{key:"highlightText",value:function(n,e){if(!e||!n)return n;var t=new RegExp("(".concat(this.escapeRegExp(e),")"),"gi");return n.replace(t,"$1")}},{key:"escapeRegExp",value:function(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}},{key:"truncateText",value:function(n,e){return n.length<=e?n:n.substring(0,e).trim()+"..."}},{key:"filterByTag",value:function(n){var e=this.parser.tags.get(n);return e?e.endpoints:[]}},{key:"getSuggestions",value:function(n){if(!n||n.length<2)return[];var e=new Set,t=n.toLowerCase();return this.parser.endpoints.forEach(function(n){n.path.toLowerCase().includes(t)&&e.add(n.path)}),this.parser.schemas.forEach(function(n){n.name.toLowerCase().includes(t)&&e.add(n.name)}),this.parser.tags.forEach(function(n){n.name.toLowerCase().includes(t)&&e.add(n.name)}),Array.from(e).slice(0,5)}},{key:"advancedSearch",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=n.query,t=void 0===e?"":e,r=n.tags,a=void 0===r?[]:r,o=n.methods,s=void 0===o?[]:o,i=n.responseStatus,c=void 0===i?[]:i,l=n.hasParameters,p=void 0===l?null:l,d={endpoints:[],schemas:[]};return d=t?this.search(t):{endpoints:Array.from(this.parser.endpoints.values()),schemas:Array.from(this.parser.schemas.values())},a.length>0&&(d.endpoints=d.endpoints.filter(function(n){return n.tags.some(function(n){return a.includes(n)})})),s.length>0&&(d.endpoints=d.endpoints.filter(function(n){return s.includes(n.method)})),c.length>0&&(d.endpoints=d.endpoints.filter(function(n){return Object.keys(n.responses).some(function(n){return c.includes(n)})})),null!==p&&(d.endpoints=d.endpoints.filter(function(n){var e=n.parameters&&n.parameters.length>0;return p?e:!e})),d}},{key:"getSearchStats",value:function(){return{totalEndpoints:this.parser.endpoints.size,totalSchemas:this.parser.schemas.size,totalTags:this.parser.tags.size,endpointsByMethod:this.getEndpointsByMethod(),endpointsByTag:this.getEndpointsByTag()}}},{key:"getEndpointsByMethod",value:function(){var n={};return this.parser.endpoints.forEach(function(e){n[e.method]||(n[e.method]=0),n[e.method]++}),n}},{key:"getEndpointsByTag",value:function(){var n={};return this.parser.tags.forEach(function(e){n[e.name]=e.endpoints.length}),n}}],e&&L(n.prototype,e),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,e}();function W(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t
').concat(G(a.trim()),"
"),r++,o}),o=[],s=function(n,e){var t="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(!t){if(Array.isArray(n)||(t=function(n,e){if(n){if("string"==typeof n)return W(n,e);var t={}.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?W(n,e):void 0}}(n))||e&&n&&"number"==typeof n.length){t&&(n=t);var r=0,a=function(){};return{s:a,n:function(){return r>=n.length?{done:!0}:{done:!1,value:n[r++]}},e:function(n){throw n},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,i=!1;return{s:function(){t=t.call(n)},n:function(){var n=t.next();return s=n.done,n},e:function(n){i=!0,o=n},f:function(){try{s||null==t.return||t.return()}finally{if(i)throw o}}}}((a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=function(n){return n.replace(/^(\|[^|\n]+(?:\|[^|\n]*)*\|)\s*\n(\|[\s\-:|]+\|)\s*\n((?:^\|[^|\n]+(?:\|[^|\n]*)*\|\s*$\n?)+)/gm,function(n,e,t,r){var a=e.split("|").map(function(n){return n.trim()}).filter(function(n){return n}).map(function(n){return n.replace(/`([^`]+)`/g,"$1")}).map(function(n){return"".concat(n,"")}).join(""),o=r.trim().split("\n").filter(function(n){return n.trim()&&n.includes("|")}).map(function(n){var e=n.split("|").map(function(n){return n.trim()}).filter(function(n){return n}).map(function(n){return n.replace(/`([^`]+)`/g,"$1")}).map(function(n){return"".concat(n,"")}).join("");return"".concat(e,"")}).join("\n");return'
\n\n\n'.concat(a,"\n\n\n").concat(o,"\n\n
\n
")})}(a=a.replace(/## ⚠️ Important: (.*$)/gm,'
⚠️ Important: $1
'))).replace(/^> \*\*Note\*\*: (.*$)/gm,'
Note: $1
')).replace(/^> \*\*Important\*\*: (.*$)/gm,'
Important: $1
')).replace(/^> (.*$)/gm,"
$1
")).replace(/^# (.*$)/gm,function(n,e){var t=e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");return'

').concat(e,"

")})).replace(/^## (.*$)/gm,function(n,e){var t=e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");return'

').concat(e,"

")})).replace(/^### (.*$)/gm,function(n,e){var t=e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");return'

').concat(e,"

")})).replace(/^#### (.*$)/gm,function(n,e){var t=e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");return'

').concat(e,"

")})).replace(/\*\*(.*?)\*\*/g,"$1")).replace(/\*(.*?)\*/g,"$1")).replace(/`([^`]+)`/g,"$1")).replace(/\[([^\]]+)\]\(([^)]+)\)/g,function(n,e,t){return t.startsWith("#")?'').concat(e,""):'').concat(e,"")})).replace(/^- (.*$)/gm,"
  • $1
  • ")).replace(/^\d+\. (.*$)/gm,"
  • $1
  • ")).split(/\n\s*\n/));try{for(s.s();!(e=s.n()).done;){var i=e.value;if(i=i.trim())if(i.startsWith("")){var c=/^\d+\./.test(i.split("\n")[0])?"ol":"ul";o.push("<".concat(c,">").concat(i,""))}else o.push("

    ".concat(i.replace(/\n/g," "),"

    "))}}catch(n){s.e(n)}finally{s.f()}a=(a=o.join("\n\n")).replace(/<\/(ul|ol)>\s*<\1>/g,"");for(var l=0;l":">",'"':""","'":"'"};return n.replace(/[&<>"']/g,function(n){return e[n]})}var U={"asset-hub-migration":F('# Asset Hub Migration & Elastic Scaling Guide\n\nThis comprehensive guide explains how to configure Asset Hub migration in Substrate API Sidecar and understand the related elastic scaling changes that prepare the API for future multi-block scenarios.\n\n## ⚠️ Important: Niche Feature Notice\n\n**The `useRcBlock` parameter and elastic scaling functionality is a specialized feature designed for stakeholders who specifically need to track Asset Hub blocks using relay chain block references.** \n\n**If you are not planning to use the relay chain as a way to track Asset Hub state, you can safely ignore everything related to `useRcBlock` and elastic scaling in this guide.** Standard Asset Hub queries will continue to work exactly as before without any configuration changes.\n\n## Environment Variables\n\n### Required Configuration\n\nTo properly handle Asset Hub migration, you need to configure two environment variables:\n\n1. `SAS_SUBSTRATE_URL`: The primary WebSocket URL for your Asset Hub node\n2. `SAS_SUBSTRATE_MULTI_CHAIN_URL`: A JSON array containing additional chain configurations\n\n### Important Note on Node Requirements\n\nIf you need to use any of the endpoints that require multi-chain configuration (like `/pallets/staking/progress`), you will need to run two separate nodes:\n- One node for the Asset Hub chain\n- One node for the relay chain\n\nBoth nodes must be running and accessible for these endpoints to function properly.\n\n### Multi-Chain Configuration\n\nThe `SAS_SUBSTRATE_MULTI_CHAIN_URL` environment variable accepts a JSON array of chain configurations. Each configuration object should contain:\n\n- `url`: The WebSocket URL for the additional node\n- `type`: The type of chain (can be \'relay\', \'assethub\', \'parachain\', or undefined)\n\nCurrently, this configuration is primarily used for:\n- Querying staking information\n- Retrieving additional session/babe information from the relay chain\n\nIn future releases, this configuration will also be used to improve performance by allowing Sidecar to retrieve information from multiple nodes.\n\n## Example Configuration\n\nHere\'s an example configuration for Westend network:\n\n```bash\n# Primary Asset Hub node\nSAS_SUBSTRATE_URL=wss://westend-asset-hub-rpc.polkadot.io\n\n# Additional chain configuration (relay chain in this case)\nSAS_SUBSTRATE_MULTI_CHAIN_URL=\'[{"url":"wss://westend-rpc.polkadot.io","type":"relay"}]\'\n```\n\n## Affected Endpoints\n\nCurrently, only the following endpoint requires the multi-chain configuration:\n- `/pallets/staking/progress`\n\nThe `/pallets/staking/progress` endpoint requires two chains because it needs to combine information from both chains:\n- The Asset Hub chain provides era information from the staking pallet\n- The relay chain provides additional storage information from the babe pallet\n\nThis dual-chain requirement is specific to this endpoint, as it needs to gather information from both sources to provide complete staking progress data.\n\n## Elastic Scaling & Response Structure Changes\n\n> **Note**: This section only applies if you are using the `useRcBlock` parameter. If you\'re not using relay chain block tracking, you can skip this entire section.\n\n**Important**: All endpoints that support the `useRcBlock` parameter return array responses instead of single enhanced objects (when used). This prepares the API for Polkadot/Kusama elastic scaling where multiple Asset Hub blocks could exist per relay chain block.\n\n### What Changed\n\n#### New Array Response Behavior\n\nWhen using `useRcBlock` parameter, endpoints now return an array of response objects:\n\n```json\n[\n {\n "at": {\n "hash": "0x...",\n "height": "1234567"\n },\n "data": "...",\n "rcBlockNumber": "5678901",\n "ahTimestamp": "1234567890"\n }\n]\n```\n\nIf no Asset Hub blocks are found for the specified relay chain block, an empty array is returned:\n\n```json\n[]\n```\n\n#### Affected Parameters\n\n- **`useRcBlock`**: When set to \'true\', uses the relay chain block specified in the \'at\' parameter to determine corresponding Asset Hub block(s)\n\n#### Response Format Summary\n\n- **With `useRcBlock=true`**: Returns `[{...result, rcBlockNumber, ahTimestamp}]` or `[]`\n- **Without `useRcBlock`**: Returns single response object (unchanged)\n\n### Affected Endpoints\n\n> **Note**: These endpoints only change behavior when using `useRcBlock=true`. Without this parameter, they work exactly as before.\n\nAll the following endpoints support the `useRcBlock` parameter and return array responses when it\'s used:\n\n#### Account Endpoints\n- `/accounts/{accountId}/asset-balances`\n- `/accounts/{accountId}/asset-approvals`\n- `/accounts/{accountId}/pool-asset-balances`\n- `/accounts/{accountId}/pool-asset-approvals`\n- `/accounts/{accountId}/balance-info`\n- `/accounts/{accountId}/staking-info`\n- `/accounts/{accountId}/staking-payouts`\n- `/accounts/{accountId}/vesting-info`\n- `/accounts/{accountId}/proxy-info`\n\n#### Block Endpoints (useRcBlock)\n- `/blocks/head`\n- `/blocks/{blockId}`\n- `/blocks/{blockId}/header`\n- `/blocks/head/header`\n- `/blocks/{blockId}/extrinsics/{extrinsicIndex}`\n- `/blocks/{blockId}/extrinsics-raw`\n- `/blocks`\n\n#### Pallets Endpoints\n- `/pallets/asset-conversion/next-available-id`\n- `/pallets/asset-conversion/liquidity-pools`\n- `/pallets/assets/{assetId}/asset-info`\n- `/pallets/{palletId}/consts`\n- `/pallets/{palletId}/consts/{constantItemId}`\n- `/pallets/{palletId}/dispatchables`\n- `/pallets/{palletId}/dispatchables/{dispatchableItemId}`\n- `/pallets/{palletId}/errors`\n- `/pallets/{palletId}/errors/{errorItemId}`\n- `/pallets/{palletId}/events`\n- `/pallets/{palletId}/events/{eventItemId}`\n- `/pallets/foreign-assets`\n- `/pallets/nomination-pools/info`\n- `/pallets/nomination-pools/{poolId}`\n- `/pallets/ongoing-referenda`\n- `/pallets/pool-assets/{assetId}/asset-info`\n- `/pallets/staking/progress`\n- `/pallets/staking/validators`\n- `/pallets/{palletId}/storage`\n- `/pallets/{palletId}/storage/{storageItemId}`\n\n## Migration Steps\n\n> **Important Reminder**: These migration steps are only necessary if you plan to use the `useRcBlock` parameter for relay chain block tracking. Standard Asset Hub functionality requires no migration.\n\n### 1. Complete Environment Setup\n\nEnsure your Substrate API Sidecar instance is configured with both Asset Hub and relay chain nodes:\n\n```bash\n# Asset Hub node (primary)\nSAS_SUBSTRATE_URL=wss://westend-asset-hub-rpc.polkadot.io\n\n# Relay chain node (secondary, required for useRcBlock functionality)\nSAS_SUBSTRATE_MULTI_CHAIN_URL=\'[{"url":"wss://westend-rpc.polkadot.io","type":"relay"}]\'\n```\n\n### 2. Update Response Handling\n\nIf you\'re using `useRcBlock` parameter, update your code to handle array responses:\n\n```javascript\nconst response = await fetch(\'/accounts/123/balance-info?at=5000000&useRcBlock=true\');\nconst data = await response.json();\n\n// Handle array response\nif (data.length === 0) {\n console.log(\'No Asset Hub blocks found for this relay chain block\');\n} else {\n // Process each Asset Hub block (currently will be 0 or 1, but prepared for multiple)\n data.forEach(item => {\n console.log(item.free);\n console.log(item.rcBlockNumber);\n });\n}\n```\n\n### 3. Check for Empty Results\n\nThe new behavior returns empty arrays when no Asset Hub blocks are found:\n\n```javascript\nconst response = await fetch(\'/accounts/123/balance-info?at=5000000&useRcBlock=true\');\nconst data = await response.json();\n\nif (data.length === 0) {\n // No Asset Hub blocks found for this relay chain block\n console.log(\'No data available for this relay chain block\');\n return;\n}\n\n// Process results\nconst result = data[0]; // Get first (and currently only) result\n```\n\n### 4. Prepare for Future Elastic Scaling\n\nWhile current implementation returns 0 or 1 results, elastic scaling will enable multiple Asset Hub blocks per relay chain block:\n\n```javascript\nconst response = await fetch(\'/accounts/123/balance-info?at=5000000&useRcBlock=true\');\nconst data = await response.json();\n\n// Handle multiple Asset Hub blocks (future-ready)\ndata.forEach((block, index) => {\n console.log(`Asset Hub block ${index + 1}:`);\n console.log(`Block number: ${block.at.height}`);\n console.log(`RC block: ${block.rcBlockNumber}`);\n console.log(`Timestamp: ${block.ahTimestamp}`);\n});\n```\n\n## Backward Compatibility\n\n- **Regular queries** (without `useRcBlock`) continue to return single objects unchanged\n- **All existing functionality** remains the same for standard queries\n- **Only array structure** changes affect `useRcBlock` queries\n\n## Benefits\n\n1. **Asset Hub Migration Support**: Enables querying Asset Hub data using relay chain block references\n2. **Elastic Scaling Ready**: Prepared for multiple Asset Hub blocks per relay chain block\n3. **Consistent API**: All endpoints follow the same array response pattern\n4. **Predictable**: Empty arrays instead of errors when no blocks found\n\n## Examples\n\n### Single Result (Current Behavior)\n```bash\ncurl "https://polkadot-asset-hub-public-sidecar.parity-chains.parity.io/accounts/123/balance-info?at=20000000&useRcBlock=true"\n```\n\nResponse:\n```json\n[\n {\n "at": {\n "hash": "0x...",\n "height": "1234567"\n },\n "free": "1000000000000",\n "reserved": "0",\n "miscFrozen": "0",\n "feeFrozen": "0",\n "rcBlockNumber": "20000000",\n "ahTimestamp": "1705123456789"\n }\n]\n```\n\n### Empty Result (No Asset Hub Block Found)\n```bash\ncurl "https://polkadot-asset-hub-public-sidecar.parity-chains.parity.io/accounts/123/balance-info?at=999999999&useRcBlock=true"\n```\n\nResponse:\n```json\n[]\n```\n\n### Regular Query (Unchanged)\n```bash\ncurl "https://polkadot-asset-hub-public-sidecar.parity-chains.parity.io/accounts/123/balance-info"\n```\n\nResponse (unchanged):\n```json\n{\n "at": {\n "hash": "0x...",\n "height": "1234567"\n },\n "free": "1000000000000",\n "reserved": "0",\n "miscFrozen": "0",\n "feeFrozen": "0"\n}\n```\n\n## Historic Data Limitations\n\nThe `/pallets/staking/progress` endpoint currently does not support historic queries. This means you can only query the current staking progress state, and cannot retrieve historical staking progress data from past blocks.\n\nAll other endpoints will continue to work with just the primary node configuration (`SAS_SUBSTRATE_URL`).\n\n## Need Help?\n\nIf you encounter issues during migration, please:\n\n1. **First, verify multi-chain setup**: Ensure both Asset Hub and relay chain nodes are running and accessible\n2. **Check environment variables**: Verify `SAS_SUBSTRATE_URL` and `SAS_SUBSTRATE_MULTI_CHAIN_URL` are correctly configured\n3. **Test connectivity**: Ensure both WebSocket URLs are reachable from your Sidecar instance\n4. **Review array handling**: Update your client code to handle array responses when using `useRcBlock`\n5. **Check this guide**: Review the migration steps and examples above\n6. **Open an issue**: For persistent issues, create an issue on [GitHub](https://github.com/paritytech/substrate-api-sidecar/issues)\n\n**Remember**: The `useRcBlock` parameter requires both Asset Hub and relay chain APIs to be available and properly configured. Without proper multi-chain setup, these features will not work.\n\nThe changes enable Asset Hub migration support while preparing the API for future elastic scaling scenarios where multiple Asset Hub blocks could exist per relay chain block.\n'),"useRcBlock-spec":F('# Substrate API Sidecar: useRcBlock Query Parameters Specification\n\n## Prerequisites\nThe `useRcBlock` functionality requires two connection configurations:\n\n**Primary Connection (Asset Hub):**\n- `SAS_SUBSTRATE_URL`: Connection to Asset Hub node\n\n**Multi-Chain Connection (Relay Chain):**\n- `SAS_SUBSTRATE_MULTI_CHAIN_URL`: JSON array of chain configurations, each containing a `url` and `type` property. The `type` can be \'relay\', \'assethub\', \'parachain\', or undefined. Currently used for Asset Hub migration to query staking information and additional session/babe information from the relay chain. In future releases, this will also be used to improve performance by allowing Sidecar to retrieve information from multiple nodes. This environment variable should be used in combination with the `SAS_SUBSTRATE_URL` variable.\n\n**Example Configuration:**\n```\nSAS_SUBSTRATE_URL=wss://westend-asset-hub-rpc.polkadot.io\nSAS_SUBSTRATE_MULTI_CHAIN_URL=\'[{"url":"wss://westend-rpc.polkadot.io","type":"relay"}]\'\n```\n\n## Query Parameters Overview\n\n### useRcBlock Parameter\nThe `useRcBlock` parameter is a boolean parameter that works in conjunction with the existing `at` parameter. When `useRcBlock=true`, the API queries relay chain data at the block specified by the `at` parameter, treating the `at` value as a relay chain block identifier instead of an Asset Hub block identifier.\n\n**Special Behavior**: When `useRcBlock=true` is used without an `at` parameter, the API will use the finalizedHead of the relay chain to get the associated Asset Hub block.\n\n**Block Finalization Note**: The `useRcBlock` parameter does not make any assumptions about whether the block you pass is finalized or a best block. It is recommended to ensure the block you are passing is finalized if block finalization is important for your use case.\n\n## Implementation: useRcBlock Query Parameter\n\n### Core Functionality\nThe `useRcBlock` parameter can be added to existing sidecar endpoints to query Asset Hub state using relay chain block identifiers.\n\n**Parameter Format:**\n```\nat=&useRcBlock=true\n```\n\n**Example Usage:**\n```\nGET /pallets/staking/progress?at=1000000&useRcBlock=true\nGET /accounts/{accountId}/balance-info?at=0x123abc&useRcBlock=true\nGET /blocks/head?useRcBlock=true\nGET /blocks/12345?at=12345&useRcBlock=true\n```\n\n### Response Format Changes\n\n**Without useRcBlock (Traditional Behavior):**\nReturns single response object (unchanged):\n```json\n{\n // ... existing endpoint response data\n}\n```\n\n**With useRcBlock=true:**\nReturns array format with additional metadata:\n```json\n[{\n // ... existing endpoint response data\n "rcBlockHash": "0x1234567890abcdef...",\n "rcBlockNumber": "1000000",\n "ahTimestamp": "1642694400"\n}]\n```\n\nOr empty array `[]` if no corresponding Asset Hub block exists.\n\n## Supported Endpoints\n\n### Block Endpoints Supporting useRcBlock:\n\n1. **`/blocks/head`** - Get latest block using RC head block\n2. **`/blocks/head/header`** - Get latest block header using RC head block\n3. **`/blocks/{blockId}`** - Get single block by RC block identifier\n4. **`/blocks/{blockId}/header`** - Get block header by RC block identifier\n5. **`/blocks`** - Get block range where range represents RC block numbers (skips RC blocks without corresponding AH blocks)\n6. **`/blocks/{blockId}/extrinsics-raw`** - Get raw extrinsics by RC block identifier\n7. **`/blocks/{blockId}/extrinsics/{extrinsicIndex}`** - Get specific extrinsic by RC block identifier\n\n### Non-Block Endpoints Supporting useRcBlock:\nMost existing sidecar endpoints support the `useRcBlock` parameter, including:\n- `/pallets/*` endpoints\n- `/accounts/*` endpoints\n- Other state query endpoints\n\n## Key Features and Behavior\n\n### Enhanced Response Format\nWhen `useRcBlock=true` is used, responses include additional context fields:\n- `rcBlockHash`: The relay chain block hash\n- `rcBlockNumber`: The relay chain block number\n- `ahTimestamp`: The Asset Hub block timestamp\n- Array format prepares for future elastic scaling scenarios\n\n### Backward Compatibility\n- Defaults to `false`, maintaining existing functionality when not specified\n- Existing endpoints remain unchanged when `useRcBlock` is not used\n- No breaking changes to current API behavior\n\n### Graceful Handling\n- Range endpoints skip RC blocks without corresponding AH blocks\n- Returns empty array `[]` when no corresponding Asset Hub block exists\n- Multi-block scenarios are handled when Asset Hub produces multiple blocks within a single relay chain block period\n\n### Validation Logic\nThe `validateUseRcBlock` middleware ensures:\n1. **Boolean validation**: Must be "true" or "false" string\n2. **Asset Hub requirement**: Only works when connected to Asset Hub\n3. **Relay chain availability**: Requires relay chain API configuration via `SAS_SUBSTRATE_MULTI_CHAIN_URL`\n\n## Multi-Block and Elastic Scaling Scenarios\n\n### Multi-Block Scenarios\nWhen Asset Hub produces multiple blocks within a single relay chain block period (due to faster block times), the array response format accommodates multiple blocks. The array structure prepares the API for future elastic scaling requirements.\n\n### Elastic Scaling Preparation\nThe array response format is designed to support future elastic scaling scenarios where multiple Asset Hub blocks may be produced for a single relay chain block reference.\n\n---\n\n## Potential Future Enhancements\n\n### `enforceFinalizedBlockOnAt` Parameter (Suggested Safeguard)\n\nAn optional safeguard parameter `enforceFinalizedBlockOnAt` could be implemented to enforce that blocks passed via the at parameter are finalized. When `enforceFinalizedBlockOnAt=true`, the endpoint will error if the specified block is not finalized, providing additional safety for applications that require finalized block guarantees.\n'),"advanced-config":F('# Advanced Configuration Guide\n\nThis comprehensive guide covers all configuration options available in Substrate API Sidecar. All environment variables use the `SAS_` prefix (Substrate API Sidecar).\n\n## Table of Contents\n\n- [Express Server Configuration](#express-server-configuration)\n- [Substrate Node Connection](#substrate-node-connection)\n- [Custom Type Definitions](#custom-type-definitions)\n- [Logging Configuration](#logging-configuration)\n- [Metrics & Monitoring](#metrics--monitoring)\n- [Development & Debugging](#development--debugging)\n- [Environment Profiles](#environment-profiles)\n- [Docker Configuration](#docker-configuration)\n\n## Express Server Configuration\n\nConfigure the HTTP server that serves the REST API.\n\n### Basic Server Settings\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `SAS_EXPRESS_BIND_HOST` | `127.0.0.1` | Network interface to bind to. **Use `0.0.0.0` for Docker** |\n| `SAS_EXPRESS_PORT` | `8080` | Port number (2-6 digits) |\n| `SAS_EXPRESS_KEEP_ALIVE_TIMEOUT` | `5000` | Keep-alive timeout in milliseconds |\n| `SAS_EXPRESS_MAX_BODY` | `100kb` | Maximum request body size |\n\n### Controller Management\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `SAS_EXPRESS_INJECTED_CONTROLLERS` | `false` | Auto-detect pallets and inject controllers vs. using chain config |\n\n**Example:**\n```bash\nexport SAS_EXPRESS_BIND_HOST=0.0.0.0\nexport SAS_EXPRESS_PORT=3000\nexport SAS_EXPRESS_KEEP_ALIVE_TIMEOUT=10000\nexport SAS_EXPRESS_MAX_BODY=1mb\nexport SAS_EXPRESS_INJECTED_CONTROLLERS=true\n```\n\n## Substrate Node Connection\n\nConfigure connections to Substrate-based blockchain nodes.\n\n### Primary Node Connection\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `SAS_SUBSTRATE_URL` | ✅ | `ws://127.0.0.1:9944` | WebSocket or HTTP URL to node |\n\n**Supported protocols:** `ws://`, `wss://`, `http://`, `https://`\n\n### Multi-Chain Configuration\n\nFor Asset Hub migration and multi-chain queries:\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `SAS_SUBSTRATE_MULTI_CHAIN_URL` | ❌ | JSON array of chain configurations |\n\n**Format:**\n```json\n[{"url":"wss://relay-chain.com","type":"relay"}]\n```\n\n**Chain types:**\n- `relay` - Relay chain (Polkadot/Kusama)\n- `assethub` - Asset Hub parachain\n- `parachain` - Other parachains\n- `undefined` - Generic chain\n\n**Example configurations:**\n\n```bash\n# Single node (basic)\nexport SAS_SUBSTRATE_URL=wss://polkadot-rpc.polkadot.io\n\n# Asset Hub with relay chain\nexport SAS_SUBSTRATE_URL=wss://polkadot-asset-hub-rpc.polkadot.io\nexport SAS_SUBSTRATE_MULTI_CHAIN_URL=\'[{"url":"wss://polkadot-rpc.polkadot.io","type":"relay"}]\'\n\n# Local development\nexport SAS_SUBSTRATE_URL=ws://127.0.0.1:9944\nexport SAS_SUBSTRATE_MULTI_CHAIN_URL=\'[{"url":"ws://127.0.0.1:9945","type":"relay"}]\'\n```\n\n### Caching\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `SAS_SUBSTRATE_CACHE_CAPACITY` | `0` | Max cache size for @polkadot/api (0 = no cache) |\n\n## Custom Type Definitions\n\nFor chains with custom types not recognized by polkadot-js/api.\n\n### Type Definition Files\n\n| Variable | Format | Description |\n|----------|--------|-------------|\n| `SAS_SUBSTRATE_TYPES_BUNDLE` | `OverrideBundleType` | Bundle with versioning, aliases, derives, RPC |\n| `SAS_SUBSTRATE_TYPES_CHAIN` | `Record` | Types keyed by chain name |\n| `SAS_SUBSTRATE_TYPES_SPEC` | `Record` | Types keyed by spec name |\n| `SAS_SUBSTRATE_TYPES` | `RegistryTypes` | Basic type definitions |\n\n**Example for custom node template:**\n\n1. Create types file:\n```json\n{\n "Address": "AccountId",\n "LookupSource": "AccountId"\n}\n```\n\n2. Set environment variable:\n```bash\nexport SAS_SUBSTRATE_TYPES=/path/to/my-custom-types.json\n```\n\n### Type Bundle Generation\n\nUse the [generate-type-bundle](https://github.com/paritytech/generate-type-bundle) tool:\n\n```bash\nnpx @polkadot/typegen-cli generate --package @my-org/my-chain-types --endpoint ws://127.0.0.1:9944\nexport SAS_SUBSTRATE_TYPES_BUNDLE=/path/to/generated-bundle.json\n```\n\n## Logging Configuration\n\nControl logging behavior and output formatting.\n\n### Log Levels\n\n| Variable | Default | Options | Description |\n|----------|---------|---------|-------------|\n| `SAS_LOG_LEVEL` | `info` | `error`, `warn`, `info`, `http`, `verbose`, `debug`, `silly` | Minimum log level |\n\n**HTTP Status Code Mapping:**\n- `< 400` → `http` level\n- `400-499` → `warn` level \n- `≥ 500` → `error` level\n\n### Log Formatting\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `SAS_LOG_JSON` | `false` | Output logs in JSON format |\n| `SAS_LOG_FILTER_RPC` | `false` | Filter polkadot-js API-WS RPC logs |\n| `SAS_LOG_STRIP_ANSI` | `false` | Remove ANSI color codes |\n\n### File Logging\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `SAS_LOG_WRITE` | `false` | Write logs to file |\n| `SAS_LOG_WRITE_PATH` | `./logs` | Directory for log files |\n| `SAS_LOG_WRITE_MAX_FILE_SIZE` | `5242880` | Max file size (5MB) |\n| `SAS_LOG_WRITE_MAX_FILES` | `5` | Max number of log files |\n\n**Example configurations:**\n\n```bash\n# Development logging\nexport SAS_LOG_LEVEL=debug\nexport SAS_LOG_JSON=false\n\n# Production logging\nexport SAS_LOG_LEVEL=info\nexport SAS_LOG_JSON=true\nexport SAS_LOG_WRITE=true\nexport SAS_LOG_WRITE_PATH=/var/log/sidecar\n\n# RPC debugging\nexport SAS_LOG_LEVEL=http\nexport SAS_LOG_FILTER_RPC=false\nexport SAS_LOG_STRIP_ANSI=true\n```\n\n## Metrics & Monitoring\n\nEnable Prometheus metrics and Loki logging integration.\n\n### Metrics Server\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `SAS_METRICS_ENABLED` | `false` | Enable metrics collection |\n| `SAS_METRICS_PROM_HOST` | `127.0.0.1` | Prometheus server host |\n| `SAS_METRICS_PROM_PORT` | `9100` | Prometheus server port |\n| `SAS_METRICS_INCLUDE_QUERYPARAMS` | `false` | Include query params in metrics labels |\n\n### Loki Integration\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `SAS_METRICS_LOKI_HOST` | `127.0.0.1` | Loki server host |\n| `SAS_METRICS_LOKI_PORT` | `3100` | Loki server port |\n\n### Available Metrics\n\n**HTTP Metrics:**\n- `sas_http_requests` - Total HTTP requests\n- `sas_http_request_success` - Successful requests\n- `sas_http_request_error` - Failed requests\n- `sas_request_duration_seconds` - Request latency\n- `sas_response_size_bytes_seconds` - Response size\n- `sas_response_size_latency_ratio_seconds` - Bytes per second\n\n**Block Controller Metrics:**\n- `sas_extrinsics_in_request` - Extrinsics in block range requests\n- `sas_extrinsics_per_second` - Extrinsics processing rate\n- `sas_extrinsics_per_block` - Extrinsics per block\n- `sas_seconds_per_block` - Processing time per block\n\n**Endpoints:**\n- Prometheus: `http://host:port/metrics`\n- JSON format: `http://host:port/metrics.json`\n\n**Example setup:**\n\n```bash\n# Enable metrics\nexport SAS_METRICS_ENABLED=true\nexport SAS_METRICS_PROM_PORT=9090\nexport SAS_METRICS_INCLUDE_QUERYPARAMS=true\n\n# With external monitoring stack\nexport SAS_METRICS_PROM_HOST=prometheus.internal.com\nexport SAS_METRICS_LOKI_HOST=loki.internal.com\n```\n\n## Development & Debugging\n\n### Fee Calculation Debugging\n\nEnable detailed logging for fee and staking calculations:\n\n```bash\nCALC_DEBUG=1 sh calc/build.sh\n```\n\n### RPC Request Logging\n\nLog all RPC requests/responses:\n\n```bash\nyarn start:log-rpc\n# or\nNODE_ENV=test SAS_LOG_STRIP_ANSI=true yarn start\n```\n\n### Trace Endpoints\n\nEnable experimental tracing endpoints:\n\n1. **Run node with:** `--unsafe-rpc-external`\n2. **Verify chain support:** Check if `BlocksTrace` controller is active\n3. **Available for:** Polkadot, Kusama\n\n**Trace endpoints:**\n- `/experimental/blocks/{blockId}/traces/operations`\n- `/experimental/blocks/head/traces/operations`\n- `/experimental/blocks/{blockId}/traces`\n- `/experimental/blocks/head/traces`\n\n## Environment Profiles\n\nUse different configuration profiles for various environments.\n\n### Profile Structure\n\nCreate environment-specific files:\n```\n.env.local # Local development\n.env.staging # Staging environment\n.env.production # Production settings\n.env.test # Testing configuration\n```\n\n### Loading Profiles\n\n```bash\n# Use specific profile\nNODE_ENV=staging yarn start\n\n# Development with custom profile\nNODE_ENV=myprofile yarn dev\n```\n\n### Example Profiles\n\n**.env.local (Development):**\n```bash\nSAS_SUBSTRATE_URL=ws://127.0.0.1:9944\nSAS_EXPRESS_BIND_HOST=127.0.0.1\nSAS_EXPRESS_PORT=8080\nSAS_LOG_LEVEL=debug\nSAS_METRICS_ENABLED=false\n```\n\n**.env.production (Production):**\n```bash\nSAS_SUBSTRATE_URL=wss://polkadot-rpc.polkadot.io\nSAS_EXPRESS_BIND_HOST=0.0.0.0\nSAS_EXPRESS_PORT=8080\nSAS_LOG_LEVEL=info\nSAS_LOG_JSON=true\nSAS_LOG_WRITE=true\nSAS_METRICS_ENABLED=true\nSAS_EXPRESS_KEEP_ALIVE_TIMEOUT=30000\n```\n\n**.env.docker (Docker):**\n```bash\nSAS_SUBSTRATE_URL=ws://host.docker.internal:9944\nSAS_EXPRESS_BIND_HOST=0.0.0.0\nSAS_EXPRESS_PORT=8080\nSAS_LOG_JSON=true\n```\n\n## Docker Configuration\n\n### Environment File\n\nUse `.env.docker` with Docker:\n\n```bash\ndocker run --rm -it --env-file .env.docker -p 8080:8080 parity/substrate-api-sidecar\n```\n\n### Docker Compose\n\n```yaml\nversion: \'3.8\'\nservices:\n sidecar:\n image: parity/substrate-api-sidecar:latest\n ports:\n - "8080:8080"\n environment:\n - SAS_SUBSTRATE_URL=ws://substrate-node:9944\n - SAS_EXPRESS_BIND_HOST=0.0.0.0\n - SAS_LOG_LEVEL=info\n - SAS_LOG_JSON=true\n depends_on:\n - substrate-node\n```\n\n### Networking Notes\n\n- **Always use `SAS_EXPRESS_BIND_HOST=0.0.0.0`** in Docker\n- Use service names for internal communication\n- Use `host.docker.internal` to access host services\n\n## Configuration Validation\n\n### Testing Configuration\n\n```bash\n# Test connection\ncurl http://localhost:8080/blocks/head\n\n# Check metrics (if enabled)\ncurl http://localhost:8080/metrics\n\n# Verify node connection\ncurl http://localhost:8080/node/version\n```\n\n### Common Issues\n\n**Connection refused:**\n- Check `SAS_SUBSTRATE_URL` is reachable\n- Verify WebSocket/HTTP protocol matches node\n\n**Docker networking:**\n- Ensure `SAS_EXPRESS_BIND_HOST=0.0.0.0`\n- Check port mapping: `-p host_port:container_port`\n\n**Type errors:**\n- Add custom types with `SAS_SUBSTRATE_TYPES*` variables\n- Use type bundle generator for complex chains\n\n**Performance:**\n- Enable caching: `SAS_SUBSTRATE_CACHE_CAPACITY=1000`\n- Tune keep-alive: `SAS_EXPRESS_KEEP_ALIVE_TIMEOUT=30000`\n- Monitor metrics for bottlenecks\n\n## Complete Example\n\nFull production configuration:\n\n```bash\n#!/bin/bash\n# Production Sidecar Configuration\n\n# Server\nexport SAS_EXPRESS_BIND_HOST=0.0.0.0\nexport SAS_EXPRESS_PORT=8080\nexport SAS_EXPRESS_KEEP_ALIVE_TIMEOUT=30000\nexport SAS_EXPRESS_MAX_BODY=500kb\n\n# Blockchain connection\nexport SAS_SUBSTRATE_URL=wss://polkadot-rpc.polkadot.io\nexport SAS_SUBSTRATE_CACHE_CAPACITY=2000\n\n# Asset Hub multi-chain setup\nexport SAS_SUBSTRATE_MULTI_CHAIN_URL=\'[\n {"url":"wss://polkadot-asset-hub-rpc.polkadot.io","type":"assethub"},\n {"url":"wss://polkadot-rpc.polkadot.io","type":"relay"}\n]\'\n\n# Logging\nexport SAS_LOG_LEVEL=info\nexport SAS_LOG_JSON=true\nexport SAS_LOG_WRITE=true\nexport SAS_LOG_WRITE_PATH=/var/log/sidecar\nexport SAS_LOG_WRITE_MAX_FILE_SIZE=10485760 # 10MB\nexport SAS_LOG_FILTER_RPC=true\n\n# Metrics\nexport SAS_METRICS_ENABLED=true\nexport SAS_METRICS_PROM_HOST=0.0.0.0\nexport SAS_METRICS_PROM_PORT=9100\nexport SAS_METRICS_LOKI_HOST=loki.monitoring.svc\nexport SAS_METRICS_LOKI_PORT=3100\n\n# Start sidecar\nsubstrate-api-sidecar\n```\n\n---\n\nFor more specific chain integration, see the [Chain Integration Guide](https://github.com/paritytech/substrate-api-sidecar/blob/master/guides/CHAIN_INTEGRATION.md).')};function V(n){return V="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},V(n)}function X(n,e){return function(n){if(Array.isArray(n))return n}(n)||function(n,e){var t=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=t){var r,a,o,s,i=[],c=!0,l=!1;try{if(o=(t=t.call(n)).next,0===e){if(Object(t)!==t)return;c=!1}else for(;!(c=(r=o.call(t)).done)&&(i.push(r.value),i.length!==e);c=!0);}catch(n){l=!0,a=n}finally{try{if(!c&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(l)throw a}}return i}}(n,e)||function(n,e){if(n){if("string"==typeof n)return K(n,e);var t={}.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?K(n,e):void 0}}(n,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function K(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t3?(a=u===r)&&(c=o[(i=o[4])?5:(i=3,3)],o[4]=o[5]=n):o[0]<=h&&((a=t<2&&hr||r>u)&&(o[4]=t,o[5]=r,m.n=u,i=0))}if(a||t>1)return s;throw d=!0,r}return function(a,p,u){if(l>1)throw TypeError("Generator is already running");for(d&&1===p&&h(p,u),i=p,c=u;(e=i<2?n:c)||!d;){o||(i?i<3?(i>1&&(m.n=-1),h(i,c)):m.n=c:m.v=c);try{if(l=2,o){if(i||(a="next"),e=o[a]){if(!(e=e.call(o,c)))throw TypeError("iterator result is not an object");if(!e.done)return e;c=e.value,i<2&&(i=0)}else 1===i&&(e=o.return)&&e.call(o),i<2&&(c=TypeError("The iterator does not provide a '"+a+"' method"),i=1);o=n}else if((e=(d=m.n<0)?c:t.call(r,m))!==s)break}catch(e){o=n,i=1,c=e}finally{l=1}}return{value:e,done:d}}}(t,a,o),!0),l}var s={};function i(){}function c(){}function l(){}e=Object.getPrototypeOf;var p=[][r]?e(e([][r]())):(Y(e={},r,function(){return this}),e),d=l.prototype=i.prototype=Object.create(p);function m(n){return Object.setPrototypeOf?Object.setPrototypeOf(n,l):(n.__proto__=l,Y(n,a,"GeneratorFunction")),n.prototype=Object.create(d),n}return c.prototype=l,Y(d,"constructor",l),Y(l,"constructor",c),c.displayName="GeneratorFunction",Y(l,a,"GeneratorFunction"),Y(d),Y(d,a,"Generator"),Y(d,r,function(){return this}),Y(d,"toString",function(){return"[object Generator]"}),(J=function(){return{w:o,m}})()}function Y(n,e,t,r){var a=Object.defineProperty;try{a({},"",{})}catch(n){a=0}Y=function(n,e,t,r){function o(e,t){Y(n,e,function(n){return this._invoke(e,t,n)})}e?a?a(n,e,{value:t,enumerable:!r,configurable:!r,writable:!r}):n[e]=t:(o("next",0),o("throw",1),o("return",2))},Y(n,e,t,r)}function Q(n,e,t,r,a,o,s){try{var i=n[o](s),c=i.value}catch(n){return void t(n)}i.done?e(c):Promise.resolve(c).then(r,a)}function Z(n){return function(){var e=this,t=arguments;return new Promise(function(r,a){var o=n.apply(e,t);function s(n){Q(o,r,a,s,i,"next",n)}function i(n){Q(o,r,a,s,i,"throw",n)}s(void 0)})}}function nn(n,e){for(var t=0;t1))try{var r=this.getSpecContentKey(n),a=U[r];if(!a)throw new Error("Specification content not found for: ".concat(n));t&&(t.innerHTML=a,this.setupCodeCopyButtons(t))}catch(e){console.error("Error loading specification content:",e),t&&(t.innerHTML='\n
    \n
    \n Error Loading Specification: Could not load the "'.concat(this.getSpecDisplayName(n),'" specification content.\n
    \n
    \n '))}}},{key:"getSpecContentKey",value:function(n){return{useRcBlock:"useRcBlock-spec"}[n]||n}},{key:"getSpecDisplayName",value:function(n){return{useRcBlock:"useRcBlock Specification"}[n]||n.replace(/-/g," ").replace(/\b\w/g,function(n){return n.toUpperCase()})}},{key:"loadGuideContent",value:function(n,e){var t=e.querySelector(".guide-content");if(!(t&&t.children.length>1))try{var r=U[n];if(!r)throw new Error("Guide content not found for: ".concat(n));t&&(t.innerHTML=r,this.setupCodeCopyButtons(t))}catch(e){console.error("Error loading guide content:",e),t&&(t.innerHTML='\n
    \n
    \n Error Loading Guide: Could not load the "'.concat(this.getGuideDisplayName(n),'" guide content.\n
    \n
    \n '))}}},{key:"setupCodeCopyButtons",value:function(n){n.querySelectorAll(".copy-button[data-copy]").forEach(function(n){n.addEventListener("click",function(e){e.preventDefault();var t=n.dataset.copy;navigator.clipboard&&navigator.clipboard.writeText(t).then(function(){var e=n.innerHTML;n.innerHTML='',setTimeout(function(){n.innerHTML=e},1e3)})})})}},{key:"getGuideDisplayName",value:function(n){return{"asset-hub-migration":"Asset Hub Migration","useRcBlock-spec":"useRcBlock Specification"}[n]||n.replace(/-/g," ").replace(/\b\w/g,function(n){return n.toUpperCase()})}},{key:"setupSearch",value:function(){var n,e=this,t=document.getElementById("search-input"),r=document.getElementById("search-clear"),a=document.getElementById("search-results");t&&this.searchHandler&&(t.addEventListener("input",function(t){var a=t.target.value.trim();r.style.display=a?"flex":"none",clearTimeout(n),n=setTimeout(function(){e.performSearch(a)},300)}),r.addEventListener("click",function(){t.value="",r.style.display="none",e.clearSearch()}),a.addEventListener("click",function(n){if(n.target.matches("[data-search-endpoint]")){n.preventDefault();var r=n.target.dataset.searchEndpoint;e.navigateToEndpoint(r),e.clearSearch(),t.blur()}else if(n.target.matches("[data-search-schema]")){n.preventDefault();var a=n.target.dataset.searchSchema;e.navigateToSchema(a),e.clearSearch(),t.blur()}}),t.addEventListener("keydown",function(n){"Escape"===n.key&&(e.clearSearch(),t.blur())}),document.addEventListener("click",function(n){n.target.closest(".search-container")||(a.style.display="none")}))}},{key:"setupServerSelection",value:function(){var n=this,e=document.getElementById("server-select");if(e){var t=this.parser.getServers();e.innerHTML="",t.forEach(function(n,t){var r=document.createElement("option");r.value=t,r.textContent=n.description||n.url,"http://localhost:8080"===n.url&&(r.selected=!0),e.appendChild(r)}),e.addEventListener("change",function(e){var r=parseInt(e.target.value),a=t[r];a&&(n.currentServer=a.url,n.updateExampleRequests())})}}},{key:"setupThemeToggle",value:function(){var n=document.getElementById("theme-toggle");if(n){var e=localStorage.getItem("theme")||"dark";document.documentElement.setAttribute("data-theme",e),n.addEventListener("click",function(){var n="dark"===document.documentElement.getAttribute("data-theme")?"light":"dark";document.documentElement.setAttribute("data-theme",n),localStorage.setItem("theme",n)})}}},{key:"setupMobileMenu",value:function(){var n=document.getElementById("menu-toggle"),e=document.getElementById("sidebar");n&&e&&(n.addEventListener("click",function(){e.classList.toggle("mobile-open"),n.classList.toggle("active")}),document.addEventListener("click",function(t){e.contains(t.target)||n.contains(t.target)||(e.classList.remove("mobile-open"),n.classList.remove("active"))}))}},{key:"setupCopyToClipboard",value:function(){var n=this;document.addEventListener("click",function(){var e=Z(J().m(function e(t){var r,a,o;return J().w(function(e){for(;;)switch(e.p=e.n){case 0:if(!t.target.matches(".copy-button")&&!t.target.closest(".copy-button")){e.n=4;break}if(t.preventDefault(),r=t.target.matches(".copy-button")?t.target:t.target.closest(".copy-button"),a=r.dataset.copy){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,navigator.clipboard.writeText(a);case 2:n.showCopyFeedback(r),e.n=4;break;case 3:e.p=3,o=e.v,console.error("Failed to copy text:",o),n.fallbackCopy(a,r);case 4:return e.a(2)}},e,null,[[1,3]])}));return function(n){return e.apply(this,arguments)}}())}},{key:"setupScrollSpy",value:function(){var n=new IntersectionObserver(function(n){n.forEach(function(n){var e=n.target.id,t=document.querySelector('[href="#'.concat(e,'"]'));t&&n.isIntersecting&&(document.querySelectorAll(".nav-link.active").forEach(function(n){n.classList.remove("active")}),t.classList.add("active"))})},{root:null,rootMargin:"-10% 0px -80% 0px",threshold:0});document.querySelectorAll(".content-section").forEach(function(e){n.observe(e)})}},{key:"setupCollapsibleSections",value:function(){document.addEventListener("click",function(n){if(n.target.matches(".section-toggle")||n.target.closest(".section-toggle")){n.preventDefault(),n.stopPropagation();var e=n.target.matches(".section-toggle")?n.target:n.target.closest(".section-toggle"),t=e.dataset.target,r=document.getElementById(t);r&&(r.classList.toggle("collapsed"),e.classList.toggle("collapsed"))}if(n.target.matches(".nav-section-header")||n.target.closest(".nav-section-header")){var a=(n.target.matches(".nav-section-header")?n.target:n.target.closest(".nav-section-header")).querySelector(".section-toggle");if(a){var o=a.dataset.target,s=document.getElementById(o);s&&(s.classList.toggle("collapsed"),a.classList.toggle("collapsed"))}}})}},{key:"setupCurlGenerator",value:function(){var n=this;document.addEventListener("click",function(e){if(e.target.matches(".generate-curl-btn")||e.target.closest(".generate-curl-btn")){e.preventDefault();var t=(e.target.matches(".generate-curl-btn")?e.target:e.target.closest(".generate-curl-btn")).dataset.endpointId;n.generateCurlCommand(t)}}),document.addEventListener("click",function(){var e=Z(J().m(function e(t){var r,a,o;return J().w(function(e){for(;;)switch(e.p=e.n){case 0:if(!t.target.id||!t.target.id.startsWith("copy-curl-")){e.n=4;break}if(t.preventDefault(),r=t.target.id.replace("copy-curl-",""),!(a=document.getElementById("curl-command-".concat(r)))||!a.textContent){e.n=4;break}return e.p=1,e.n=2,navigator.clipboard.writeText(a.textContent);case 2:n.showCopyFeedback(t.target),e.n=4;break;case 3:e.p=3,o=e.v,console.error("Failed to copy:",o);case 4:return e.a(2)}},e,null,[[1,3]])}));return function(n){return e.apply(this,arguments)}}())}},{key:"setupApiExplorerListeners",value:function(){var n=this;document.addEventListener("input",function(e){if(e.target.matches(".param-input")||e.target.matches(".json-input")){var t=e.target.dataset.endpoint;t&&n.updateApiExplorerPreview(t)}})}},{key:"updateApiExplorerPreview",value:function(n){var e=this.parser.getEndpoint(n);if(e){var t=this.buildApiExplorerRequestConfig(e,n),r=document.getElementById("curl-preview-".concat(n));r&&(r.textContent=this.generateCurl(t))}}},{key:"buildApiExplorerRequestConfig",value:function(n,e){var t=this.currentServer+n.path,r={method:n.method,headers:{"Content-Type":"application/json"}},a=new URLSearchParams,o={};document.querySelectorAll('input[data-endpoint="'.concat(e,'"]')).forEach(function(n){var e=n.name,t=n.value.trim(),s=n.dataset.location;if(t)switch(s){case"path":o[e]=t;break;case"query":a.append(e,t);break;case"header":r.headers[e]=t}}),Object.entries(o).forEach(function(n){var e=X(n,2),r=e[0],a=e[1];t=t.replace("{".concat(r,"}"),encodeURIComponent(a))});var s=a.toString();s&&(t+=(t.includes("?")?"&":"?")+s);var i=document.getElementById("request-body-".concat(e));if(i&&i.value.trim())try{r.body=JSON.stringify(JSON.parse(i.value))}catch(n){r.body=i.value}return{url:t,options:r}}},{key:"generateCurl",value:function(n){var e="curl -X ".concat(n.options.method,' "').concat(n.url,'"');return Object.entries(n.options.headers||{}).forEach(function(n){var t=X(n,2),r=t[0],a=t[1];e+=' \\\n -H "'.concat(r,": ").concat(a,'"')}),n.options.body&&(e+=" \\\n -d '".concat(n.options.body,"'")),e}},{key:"generateCurlCommand",value:function(n){var e=this.parser.getEndpoint(n);if(e){var t=document.querySelectorAll('[data-endpoint-id="'.concat(n,'"] .param-input')),r={},a=!1;if(t.forEach(function(n){var e=n.dataset.paramName,t=n.dataset.paramLocation,o=n.value.trim();n.hasAttribute("required")&&!o?(a=!0,n.classList.add("error")):n.classList.remove("error"),o&&(r[t]||(r[t]={}),r[t][e]=o)}),a)this.showParameterError(n,"Please fill in all required parameters");else{var o=this.currentServer+e.path,s=e.method.toUpperCase();if(r.path&&Object.entries(r.path).forEach(function(n){var e=X(n,2),t=e[0],r=e[1];o=o.replace("{".concat(t,"}"),encodeURIComponent(r))}),r.query&&Object.keys(r.query).length>0){var i=Object.entries(r.query).map(function(n){var e=X(n,2),t=e[0],r=e[1];return"".concat(encodeURIComponent(t),"=").concat(encodeURIComponent(r))}).join("&");o+="?".concat(i)}var c="curl -X ".concat(s);"GET"!==s&&(c+=' -H "Content-Type: application/json"'),!e.requestBody||"POST"!==s&&"PUT"!==s&&"PATCH"!==s||(c+=' \\\n -d \'{"example": "data"}\' \\'),c+=' \\\n "'.concat(o,'"'),this.displayGeneratedCurl(n,c)}}}},{key:"displayGeneratedCurl",value:function(n,e){var t=document.getElementById("curl-output-".concat(n)),r=document.getElementById("curl-command-".concat(n)),a=document.getElementById("copy-curl-".concat(n));t&&r&&(r.textContent=e,t.style.display="block",a&&(a.dataset.copy=e),t.scrollIntoView({behavior:"smooth",block:"nearest"}))}},{key:"showParameterError",value:function(n,e){var t=document.querySelector('[data-endpoint-id="'.concat(n,'"] .param-error'));t&&t.remove();var r=document.querySelector('[data-endpoint-id="'.concat(n,'"] .generate-curl-section'));if(r){var a=document.createElement("div");a.className="param-error",a.textContent=e,r.insertBefore(a,r.firstChild),setTimeout(function(){a.parentNode&&a.remove()},5e3)}}},{key:"render",value:function(){this.components.renderNavigation(),this.updateApiInfo(),setTimeout(function(){var n=document.getElementById("endpoints-nav"),e=document.querySelector('[data-target="endpoints-nav"]');n&&e&&(n.classList.remove("collapsed"),e.classList.remove("collapsed"))},100)}},{key:"updateApiInfo",value:function(){var n=this.parser.getApiInfo();document.querySelectorAll("#api-version, #version-display").forEach(function(e){e.textContent="v".concat(n.version)}),document.title="".concat(n.title," Documentation")}},{key:"navigateToEndpoint",value:function(n){console.log("Navigating to endpoint:",n);var e=this.parser.getEndpoint(n);if(e)try{var t=this.components.renderEndpoint(e,this.currentServer);this.showContent(t),this.updateBreadcrumb([{name:"API",href:"#overview"},{name:e.tags[0]||"Endpoints",href:"#"},{name:"".concat(e.method," ").concat(e.path),href:"#endpoint-".concat(n)}]),window.scrollTo(0,0),console.log("Successfully navigated to endpoint:",n)}catch(n){console.error("Error navigating to endpoint:",n)}else console.error("Endpoint not found:",n)}},{key:"navigateToSchema",value:function(n){var e=this.parser.getSchema(n);if(e){var t=this.components.renderSchemaPage(e);this.showContent(t),this.updateBreadcrumb([{name:"API",href:"#overview"},{name:"Schemas",href:"#"},{name:n,href:"#schema-".concat(n)}]),window.scrollTo(0,0)}}},{key:"showContent",value:function(n){var e=document.getElementById("dynamic-content"),t=document.getElementById("overview"),r=document.getElementById("getting-started");e&&t&&(t.style.display="none",r&&(r.style.display="none"),e.innerHTML=n,document.querySelectorAll('[id^="guide-"], [id^="spec-"]').forEach(function(n){n.style.display="none"}))}},{key:"showOverview",value:function(){var n=document.getElementById("dynamic-content"),e=document.getElementById("overview"),t=document.getElementById("getting-started");n&&e&&(e.style.display="block",t&&(t.style.display="none"),n.innerHTML="",document.querySelectorAll('[id^="guide-"], [id^="spec-"]').forEach(function(n){n.style.display="none"})),window.scrollTo(0,0),this.hideBreadcrumb()}},{key:"showGettingStarted",value:function(){var n=document.getElementById("dynamic-content"),e=document.getElementById("overview"),t=document.getElementById("getting-started");n&&t&&e&&(e.style.display="none",t.style.display="block",n.innerHTML="",document.querySelectorAll('[id^="guide-"], [id^="spec-"]').forEach(function(n){n.style.display="none"})),window.scrollTo(0,0),this.hideBreadcrumb()}},{key:"performSearch",value:function(n){var e=this.searchHandler.search(n);this.searchHandler.renderResults(e)}},{key:"clearSearch",value:function(){var n=document.getElementById("search-input"),e=document.getElementById("search-clear"),t=document.getElementById("search-results");n&&(n.value=""),e&&(e.style.display="none"),t&&(t.style.display="none")}},{key:"updateBreadcrumb",value:function(n){var e=document.getElementById("breadcrumb"),t=e.querySelector(".breadcrumb-list");t&&(t.innerHTML=n.map(function(e,t){return'\n \n ")}).join(""),e.style.display="block")}},{key:"hideBreadcrumb",value:function(){var n=document.getElementById("breadcrumb");n&&(n.style.display="none")}},{key:"updateExampleRequests",value:function(){var n=this;console.log("Server changed to:",this.currentServer),document.querySelectorAll(".request-url").forEach(function(e){var t=e.dataset.endpoint,r=n.parser.getEndpoint(t);r&&(e.value=n.currentServer+r.path)}),document.querySelectorAll('[id^="curl-preview-"]').forEach(function(n){n.textContent="# Enter parameters to generate request"}),document.querySelectorAll('[id^="curl-command-"]').forEach(function(n){n.textContent=""})}},{key:"showCopyFeedback",value:function(n){var e=n.innerHTML;n.innerHTML="✓",n.classList.add("copied"),setTimeout(function(){n.innerHTML=e,n.classList.remove("copied")},2e3)}},{key:"copyToClipboard",value:(t=Z(J().m(function n(e){var t;return J().w(function(n){for(;;)switch(n.p=n.n){case 0:return n.p=0,n.n=1,navigator.clipboard.writeText(e);case 1:n.n=3;break;case 2:n.p=2,t=n.v,console.error("Failed to copy text:",t),this.fallbackCopy(e);case 3:return n.a(2)}},n,this,[[0,2]])})),function(n){return t.apply(this,arguments)})},{key:"fallbackCopy",value:function(n,e){var t=document.createElement("textarea");t.value=n,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();try{document.execCommand("copy"),this.showCopyFeedback(e)}catch(n){console.error("Fallback copy failed:",n)}document.body.removeChild(t)}},{key:"showLoading",value:function(){var n=document.getElementById("loading-screen"),e=document.getElementById("app");n&&(n.style.display="flex"),e&&(e.style.display="none")}},{key:"hideLoading",value:function(){var n=document.getElementById("loading-screen"),e=document.getElementById("app");n&&(n.style.display="none"),e&&(e.style.display="block")}},{key:"showError",value:function(n){var e=document.getElementById("loading-screen");e&&(e.innerHTML='\n
    \n
    ⚠️
    \n

    '.concat(n,'

    \n \n
    \n '))}}],e&&nn(n.prototype,e),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,e,t,r}();document.addEventListener("DOMContentLoaded",function(){var n=new tn;window.docAppInstance=n,n.init()}),window.addEventListener("hashchange",function(){var n=window.location.hash.slice(1);if(n.startsWith("endpoint-")){var e=n.replace("endpoint-",""),t=window.docAppInstance;t&&t.navigateToEndpoint(e)}else if(n.startsWith("schema-")){var r=n.replace("schema-",""),a=window.docAppInstance;a&&a.navigateToSchema(r)}else if("getting-started"===n){var o=window.docAppInstance;if(o){o.showGettingStarted(),document.querySelectorAll("[data-page]").forEach(function(n){n.classList.remove("active")});var s=document.querySelector('[data-page="getting-started"]');s&&s.classList.add("active")}}else if(n.startsWith("guide-")){var i=n.replace("guide-",""),c=window.docAppInstance;if(c){c.showGuide(i),document.querySelectorAll("[data-guide]").forEach(function(n){n.classList.remove("active")});var l=document.querySelector('[data-guide="'.concat(i,'"]'));l&&l.classList.add("active")}}else if(n.startsWith("spec-")){var p=n.replace("spec-",""),d=window.docAppInstance;if(d){d.showSpecification(p),document.querySelectorAll("[data-spec]").forEach(function(n){n.classList.remove("active")});var m=document.querySelector('[data-spec="'.concat(p,'"]'));m&&m.classList.add("active")}}else if(!n||"overview"===n){var h=window.docAppInstance;if(h){h.showOverview(),document.querySelectorAll("[data-page]").forEach(function(n){n.classList.remove("active")});var u=document.querySelector('[data-page="overview"]');u&&u.classList.add("active")}}}),window.addEventListener("load",function(){var n=window.location.hash.slice(1);n&&"overview"!==n&&setTimeout(function(){console.log("Triggering initial navigation for hash:",n),window.dispatchEvent(new HashChangeEvent("hashchange"))},1e3)}),window.DocApp=tn})(); \ No newline at end of file +(()=>{"use strict";var n={56:(n,e,t)=>{n.exports=function(n){var e=t.nc;e&&n.setAttribute("nonce",e)}},72:n=>{var e=[];function t(n){for(var t=-1,r=0;r{t.d(e,{A:()=>i});var r=t(601),a=t.n(r),o=t(314),s=t.n(o)()(a());s.push([n.id,"/* Responsive design styles for Substrate API Sidecar Documentation */\n\n/* Large screens (1200px and up) */\n@media (min-width: 1200px) {\n .content-container {\n max-width: 1200px;\n }\n \n .search-input {\n width: 350px;\n }\n \n .features-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n/* Medium screens (768px to 1023px) */\n@media (max-width: 1023px) {\n :root {\n --sidebar-width: 260px;\n }\n \n .header-content {\n padding: 0 var(--spacing-lg);\n }\n \n .search-input {\n width: 240px;\n }\n \n .main-content {\n padding: var(--spacing-xl);\n }\n \n .endpoint-title {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-md);\n }\n \n .parameter-header {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-xs);\n }\n \n .response-header {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-sm);\n }\n \n /* Header responsive for medium screens */\n .section-header h1 {\n font-size: var(--font-size-3xl);\n }\n}\n\n/* Tablet screens (768px to 1023px) */\n@media (max-width: 1023px) and (min-width: 768px) {\n .features-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n \n .search-item-header {\n flex-wrap: wrap;\n }\n \n .nav-group-header {\n padding: var(--spacing-sm) var(--spacing-lg);\n }\n \n .nav-link {\n padding: var(--spacing-sm) var(--spacing-lg);\n }\n}\n\n/* Small tablet and large mobile (640px to 767px) */\n@media (max-width: 767px) {\n .menu-toggle {\n display: flex;\n }\n \n .sidebar {\n transform: translateX(-100%);\n width: 100%;\n max-width: 320px;\n box-shadow: var(--shadow-xl);\n }\n \n .sidebar.mobile-open {\n transform: translateX(0);\n }\n \n .main-content {\n margin-left: 0;\n padding: var(--spacing-lg);\n }\n \n .header-content {\n padding: 0 var(--spacing-md);\n }\n \n .search-input {\n width: 200px;\n }\n \n .brand-subtitle {\n display: none;\n }\n \n .features-grid {\n grid-template-columns: 1fr;\n gap: var(--spacing-xl);\n }\n \n .feature-card {\n padding: var(--spacing-xl);\n }\n \n .section-header {\n margin-bottom: var(--spacing-xl);\n padding-bottom: var(--spacing-md);\n }\n \n .endpoint-title h2 {\n font-size: var(--font-size-xl);\n word-break: break-word;\n }\n \n .parameter-table {\n overflow-x: auto;\n }\n \n .parameter-row {\n padding: var(--spacing-md);\n }\n \n .code-block {\n font-size: var(--font-size-xs);\n }\n \n .search-results {\n position: fixed;\n top: var(--header-height);\n left: 0;\n right: 0;\n border-radius: 0;\n max-height: calc(100vh - var(--header-height));\n }\n \n .breadcrumb-list {\n flex-wrap: wrap;\n }\n \n .nav-subitem .nav-link {\n padding-left: var(--spacing-md);\n }\n}\n\n/* Mobile screens (480px to 639px) */\n@media (max-width: 639px) {\n .header-controls {\n gap: var(--spacing-sm);\n }\n \n .search-input {\n width: 160px;\n font-size: var(--font-size-sm);\n }\n \n .main-content {\n padding: var(--spacing-md);\n }\n \n .content-container {\n margin: 0;\n }\n \n .section-header {\n margin-bottom: var(--spacing-lg);\n }\n \n .endpoint-title {\n gap: var(--spacing-sm);\n }\n \n .method-badge.large {\n padding: 0.25rem 0.375rem;\n min-width: 2.5rem;\n font-size: var(--font-size-xs);\n }\n \n .endpoint-title h2 {\n font-size: var(--font-size-lg);\n }\n \n .parameters-section,\n .responses-section,\n .example-section,\n .example-request-section {\n margin-bottom: var(--spacing-2xl);\n }\n \n .parameter-row {\n padding: var(--spacing-sm);\n }\n \n .parameter-header {\n margin-bottom: var(--spacing-xs);\n }\n \n .response-item {\n margin-bottom: var(--spacing-md);\n }\n \n .response-header {\n padding: var(--spacing-md);\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-xs);\n }\n \n .code-header,\n .example-header {\n padding: var(--spacing-sm) var(--spacing-md);\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-xs);\n }\n \n .copy-button {\n padding: var(--spacing-xs);\n font-size: var(--font-size-xs);\n }\n \n .api-info {\n padding: 0 var(--spacing-md);\n }\n \n .server-selector {\n padding: 0 var(--spacing-md);\n }\n \n .nav-group-header {\n padding: var(--spacing-sm) var(--spacing-md);\n }\n \n .nav-link {\n padding: var(--spacing-sm) var(--spacing-md);\n font-size: var(--font-size-xs);\n }\n \n .nav-section-header {\n padding: 0 var(--spacing-md) var(--spacing-sm);\n }\n \n .search-item {\n padding: var(--spacing-sm);\n }\n \n .search-item-header {\n margin-bottom: var(--spacing-xs);\n }\n \n .search-item-tags {\n margin-top: var(--spacing-xs);\n }\n}\n\n/* Very small mobile screens (up to 479px) */\n@media (max-width: 479px) {\n .header-content {\n padding: 0 var(--spacing-sm);\n }\n \n .search-input {\n width: 140px;\n }\n \n .brand-title {\n font-size: var(--font-size-base);\n }\n \n .main-content {\n padding: var(--spacing-sm);\n }\n \n .endpoint-title h2 {\n font-size: var(--font-size-base);\n word-break: break-all;\n }\n \n .method-badge.large {\n padding: 0.125rem 0.25rem;\n min-width: 2rem;\n font-size: var(--font-size-xs);\n }\n \n .features-grid {\n gap: var(--spacing-lg);\n }\n \n .feature-card {\n padding: var(--spacing-lg);\n }\n \n .feature-icon {\n font-size: 1.5rem;\n margin-bottom: var(--spacing-md);\n }\n \n .sidebar {\n max-width: 280px;\n }\n \n .api-info {\n padding: 0 var(--spacing-sm);\n margin-bottom: var(--spacing-xl);\n }\n \n .server-selector {\n padding: 0 var(--spacing-sm);\n margin-bottom: var(--spacing-xl);\n }\n \n .nav-group-header {\n padding: var(--spacing-xs) var(--spacing-sm);\n }\n \n .nav-link {\n padding: var(--spacing-xs) var(--spacing-sm);\n }\n \n .nav-section-header {\n padding: 0 var(--spacing-sm) var(--spacing-sm);\n }\n \n .nav-subitem .nav-link {\n padding-left: var(--spacing-lg);\n }\n \n .parameter-row {\n padding: var(--spacing-xs) var(--spacing-sm);\n }\n \n .code-header,\n .example-header {\n padding: var(--spacing-xs) var(--spacing-sm);\n }\n \n .response-header {\n padding: var(--spacing-xs) var(--spacing-sm);\n }\n \n .schema-definition {\n padding: var(--spacing-md);\n }\n \n .search-results-content {\n padding: var(--spacing-md);\n }\n \n .search-no-results {\n padding: var(--spacing-2xl) var(--spacing-lg);\n }\n \n .no-results-icon {\n font-size: 2rem;\n margin-bottom: var(--spacing-md);\n }\n}\n\n/* Landscape phone orientation */\n@media (max-height: 600px) and (orientation: landscape) {\n .loading-screen {\n padding: var(--spacing-lg);\n }\n \n .sidebar {\n height: calc(100vh - var(--header-height));\n overflow-y: auto;\n }\n \n .search-results {\n max-height: 200px;\n }\n \n .nav-group-header {\n padding: var(--spacing-xs) var(--spacing-lg);\n }\n \n .nav-link {\n padding: var(--spacing-xs) var(--spacing-lg);\n }\n \n .api-info {\n margin-bottom: var(--spacing-lg);\n }\n \n .server-selector {\n margin-bottom: var(--spacing-lg);\n }\n}\n\n/* High contrast mode support */\n@media (prefers-contrast: high) {\n :root {\n --bg-primary: #000000;\n --bg-secondary: #1a1a1a;\n --bg-tertiary: #2d2d2d;\n --text-primary: #ffffff;\n --text-secondary: #e0e0e0;\n --border-primary: #555555;\n --accent-primary: #66b3ff;\n }\n}\n\n/* Reduced motion support */\n@media (prefers-reduced-motion: reduce) {\n *,\n *::before,\n *::after {\n animation-duration: 0.01ms !important;\n animation-iteration-count: 1 !important;\n transition-duration: 0.01ms !important;\n scroll-behavior: auto !important;\n }\n \n .spinner {\n animation: none;\n }\n}\n\n/* Print styles */\n@media print {\n .header,\n .sidebar,\n .search-results,\n .copy-button,\n .theme-toggle,\n .menu-toggle {\n display: none !important;\n }\n \n .main-content {\n margin-left: 0 !important;\n padding: 0 !important;\n }\n \n .content-section {\n break-inside: avoid;\n page-break-inside: avoid;\n }\n \n .endpoint-section {\n page-break-after: always;\n }\n \n body {\n background: white !important;\n color: black !important;\n }\n \n .code-block {\n border: 1px solid #000;\n background: #f5f5f5 !important;\n }\n}\n\n/* Focus management for keyboard navigation */\n@media (any-hover: none) {\n .nav-link:focus,\n .search-item:focus,\n .copy-button:focus {\n outline: 2px solid var(--accent-primary);\n outline-offset: 2px;\n }\n}\n\n/* Touch device optimizations */\n@media (any-hover: none) {\n .nav-link,\n .search-item,\n .copy-button,\n .theme-toggle {\n min-height: 44px;\n }\n \n .nav-group-header {\n min-height: 44px;\n }\n \n .section-toggle {\n min-width: 44px;\n min-height: 44px;\n }\n}\n\n/* Container queries for modern browsers */\n@supports (container-type: inline-size) {\n .search-container {\n container-type: inline-size;\n }\n \n @container (max-width: 300px) {\n .search-input {\n width: 100%;\n }\n }\n \n .parameter-table {\n container-type: inline-size;\n }\n \n @container (max-width: 500px) {\n .parameter-header {\n flex-direction: column;\n align-items: flex-start;\n }\n }\n}\n\n/* API Explorer Responsive Styles */\n@media (max-width: 1023px) {\n .explorer-header {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-md);\n }\n \n .try-button {\n width: 100%;\n justify-content: center;\n }\n \n .url-display {\n flex-wrap: wrap;\n }\n \n .request-url {\n min-width: 200px;\n }\n \n .response-tabs {\n flex-wrap: wrap;\n }\n \n .tab-button {\n flex: 1 1 auto;\n min-width: 120px;\n }\n}\n\n@media (max-width: 767px) {\n .explorer-content {\n padding: var(--spacing-lg);\n }\n \n .config-section {\n margin-bottom: var(--spacing-xl);\n }\n \n .parameter-label {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-xs);\n }\n \n .header-row,\n .custom-header-row {\n flex-direction: column;\n align-items: stretch;\n }\n \n .add-header-button,\n .remove-header-button {\n align-self: flex-end;\n margin-top: var(--spacing-sm);\n }\n \n .section-header {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-sm);\n }\n \n .response-meta {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-xs);\n }\n \n .tab-content {\n padding: var(--spacing-md);\n }\n \n .error-content {\n flex-direction: column;\n }\n \n .error-icon {\n align-self: flex-start;\n }\n}\n\n@media (max-width: 479px) {\n .explorer-content {\n padding: var(--spacing-md);\n }\n \n .url-display {\n flex-direction: column;\n }\n \n .request-url {\n min-width: auto;\n width: 100%;\n }\n \n .copy-url-button {\n align-self: flex-end;\n }\n \n .json-input {\n min-height: 150px;\n }\n \n .response-tabs {\n flex-direction: column;\n }\n \n .tab-button {\n flex: none;\n border-bottom: none;\n border-right: 2px solid transparent;\n }\n \n .tab-button.active {\n border-bottom: none;\n border-right-color: var(--accent-primary);\n }\n \n .loading-state {\n padding: var(--spacing-2xl);\n }\n \n .loading-spinner {\n flex-direction: column;\n text-align: center;\n gap: var(--spacing-md);\n }\n \n /* Responsive header */\n .section-header {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-lg);\n text-align: left;\n }\n \n .section-meta {\n align-self: stretch;\n justify-content: flex-end;\n }\n}",""]);const i=s},113:n=>{n.exports=function(n,e){if(e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}},142:(n,e,t)=>{t.d(e,{A:()=>i});var r=t(601),a=t.n(r),o=t(314),s=t.n(o)()(a());s.push([n.id,"/* Main CSS for Substrate API Sidecar Documentation - Dark Theme */\n\n/* CSS Custom Properties for Dark Theme */\n:root {\n /* Color Palette - GitHub Dark Inspired */\n --bg-primary: #0d1117;\n --bg-secondary: #161b22;\n --bg-tertiary: #21262d;\n --bg-overlay: rgba(13, 17, 23, 0.8);\n --bg-hover: #30363d;\n --bg-active: #282e33;\n \n /* Borders */\n --border-primary: #30363d;\n --border-secondary: #21262d;\n --border-focus: #58a6ff;\n \n /* Text Colors */\n --text-primary: #f0f6fc;\n --text-secondary: #8b949e;\n --text-tertiary: #6e7681;\n --text-link: #58a6ff;\n --text-link-hover: #79c0ff;\n --text-inverse: #24292f;\n \n /* Accent Colors */\n --accent-primary: #58a6ff;\n --accent-success: #3fb950;\n --accent-warning: #d29922;\n --accent-danger: #f85149;\n \n /* HTTP Method Colors */\n --method-get: #3fb950;\n --method-post: #d29922;\n --method-put: #58a6ff;\n --method-delete: #f85149;\n --method-patch: #a5a5a5;\n --method-head: #6f42c1;\n --method-options: #8b949e;\n \n /* Status Code Colors */\n --status-success: #3fb950;\n --status-redirect: #58a6ff;\n --status-client-error: #d29922;\n --status-server-error: #f85149;\n \n /* Shadows */\n --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);\n --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);\n \n /* Typography */\n --font-family-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;\n --font-family-mono: 'SF Mono', Monaco, 'Cascadia Code', 'Roboto Mono', Consolas, 'Courier New', monospace;\n \n --font-size-xs: 0.75rem;\n --font-size-sm: 0.875rem;\n --font-size-base: 1rem;\n --font-size-lg: 1.125rem;\n --font-size-xl: 1.25rem;\n --font-size-2xl: 1.5rem;\n --font-size-3xl: 1.875rem;\n --font-size-4xl: 2.25rem;\n \n --font-weight-normal: 400;\n --font-weight-medium: 500;\n --font-weight-semibold: 600;\n --font-weight-bold: 700;\n \n --line-height-tight: 1.25;\n --line-height-normal: 1.5;\n --line-height-relaxed: 1.625;\n \n /* Spacing */\n --spacing-xs: 0.25rem;\n --spacing-sm: 0.5rem;\n --spacing-md: 0.75rem;\n --spacing-lg: 1rem;\n --spacing-xl: 1.25rem;\n --spacing-2xl: 1.5rem;\n --spacing-3xl: 2rem;\n --spacing-4xl: 2.5rem;\n --spacing-5xl: 3rem;\n \n /* Border Radius */\n --radius-sm: 0.25rem;\n --radius-md: 0.375rem;\n --radius-lg: 0.5rem;\n --radius-xl: 0.75rem;\n \n /* Layout */\n --sidebar-width: 280px;\n --header-height: 64px;\n \n /* Transitions */\n --transition-fast: 150ms ease-in-out;\n --transition-normal: 200ms ease-in-out;\n --transition-slow: 300ms ease-in-out;\n}\n\n/* Light theme overrides (future feature) */\n[data-theme=\"light\"] {\n --bg-primary: #ffffff;\n --bg-secondary: #f6f8fa;\n --bg-tertiary: #ffffff;\n --bg-hover: #f3f4f6;\n --bg-active: #e5e7eb;\n \n --border-primary: #d0d7de;\n --border-secondary: #d8dee4;\n \n --text-primary: #24292f;\n --text-secondary: #656d76;\n --text-tertiary: #8b949e;\n --text-inverse: #f0f6fc;\n}\n\n/* Reset and Base Styles */\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\nhtml {\n font-size: 16px;\n scroll-behavior: smooth;\n}\n\nbody {\n font-family: var(--font-family-sans);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-normal);\n line-height: var(--line-height-normal);\n color: var(--text-primary);\n background-color: var(--bg-primary);\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n overflow-x: hidden;\n}\n\n/* Typography */\nh1, h2, h3, h4, h5, h6 {\n font-weight: var(--font-weight-semibold);\n line-height: var(--line-height-tight);\n margin-bottom: var(--spacing-md);\n color: var(--text-primary);\n}\n\nh1 { font-size: var(--font-size-3xl); }\nh2 { font-size: var(--font-size-2xl); }\nh3 { font-size: var(--font-size-xl); }\nh4 { font-size: var(--font-size-lg); }\nh5 { font-size: var(--font-size-base); }\nh6 { font-size: var(--font-size-sm); }\n\np {\n margin-bottom: var(--spacing-lg);\n color: var(--text-secondary);\n}\n\na {\n color: var(--text-link);\n text-decoration: none;\n transition: color var(--transition-fast);\n}\n\na:hover {\n color: var(--text-link-hover);\n text-decoration: underline;\n}\n\ncode {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n padding: 0.125rem 0.25rem;\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n color: var(--text-primary);\n}\n\npre {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n line-height: var(--line-height-relaxed);\n padding: var(--spacing-lg);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n overflow-x: auto;\n color: var(--text-primary);\n}\n\npre code {\n padding: 0;\n background: none;\n border: none;\n font-size: inherit;\n}\n\nstrong {\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n}\n\nem {\n font-style: italic;\n color: var(--text-secondary);\n}\n\n/* Loading Screen */\n.loading-screen {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: var(--bg-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 9999;\n}\n\n.loading-spinner {\n text-align: center;\n}\n\n.spinner {\n width: 48px;\n height: 48px;\n border: 3px solid var(--border-primary);\n border-top: 3px solid var(--accent-primary);\n border-radius: 50%;\n animation: spin 1s linear infinite;\n margin: 0 auto var(--spacing-lg);\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n.loading-spinner p {\n color: var(--text-secondary);\n margin: 0;\n}\n\n/* App Container */\n.app {\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n}\n\n/* Header */\n.header {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n height: var(--header-height);\n background-color: var(--bg-secondary);\n border-bottom: 1px solid var(--border-primary);\n z-index: 1000;\n}\n\n.header-content {\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 100%;\n padding: 0 var(--spacing-lg);\n max-width: 100%;\n}\n\n.header-brand {\n display: flex;\n align-items: center;\n gap: var(--spacing-md);\n min-width: 0;\n}\n\n.logo {\n flex-shrink: 0;\n}\n\n.brand-text {\n min-width: 0;\n}\n\n.brand-title {\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n margin: 0;\n color: var(--text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.brand-subtitle {\n font-size: var(--font-size-sm);\n color: var(--text-tertiary);\n white-space: nowrap;\n}\n\n.header-controls {\n display: flex;\n align-items: center;\n gap: var(--spacing-md);\n flex-shrink: 0;\n}\n\n/* Search */\n.search-container {\n position: relative;\n}\n\n.search-input-wrapper {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-input {\n width: 300px;\n height: 40px;\n padding: 0 var(--spacing-lg) 0 40px;\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-lg);\n color: var(--text-primary);\n font-size: var(--font-size-sm);\n transition: border-color var(--transition-fast), box-shadow var(--transition-fast);\n}\n\n.search-input:focus {\n outline: none;\n border-color: var(--border-focus);\n box-shadow: 0 0 0 2px rgba(88, 166, 255, 0.1);\n}\n\n.search-input::placeholder {\n color: var(--text-tertiary);\n}\n\n.search-icon {\n position: absolute;\n left: var(--spacing-md);\n color: var(--text-tertiary);\n pointer-events: none;\n z-index: 1;\n}\n\n.search-clear {\n position: absolute;\n right: var(--spacing-sm);\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: none;\n color: var(--text-tertiary);\n cursor: pointer;\n border-radius: var(--radius-sm);\n transition: all var(--transition-fast);\n}\n\n.search-clear:hover {\n color: var(--text-secondary);\n background-color: var(--bg-hover);\n}\n\n/* Theme Toggle */\n.theme-toggle {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-lg);\n color: var(--text-secondary);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.theme-toggle:hover {\n color: var(--text-primary);\n background-color: var(--bg-hover);\n border-color: var(--border-secondary);\n}\n\n/* Mobile Menu Toggle */\n.menu-toggle {\n display: none;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n width: 40px;\n height: 40px;\n background: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-lg);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.menu-toggle span {\n display: block;\n width: 18px;\n height: 2px;\n background-color: var(--text-secondary);\n margin: 2px 0;\n transition: all var(--transition-fast);\n}\n\n.menu-toggle:hover {\n background-color: var(--bg-hover);\n border-color: var(--border-secondary);\n}\n\n.menu-toggle:hover span {\n background-color: var(--text-primary);\n}\n\n.menu-toggle.active span:nth-child(1) {\n transform: rotate(45deg) translate(5px, 5px);\n}\n\n.menu-toggle.active span:nth-child(2) {\n opacity: 0;\n}\n\n.menu-toggle.active span:nth-child(3) {\n transform: rotate(-45deg) translate(7px, -6px);\n}\n\n/* Main Layout */\n.main-layout {\n display: flex;\n margin-top: var(--header-height);\n min-height: calc(100vh - var(--header-height));\n}\n\n/* Sidebar */\n.sidebar {\n position: fixed;\n top: var(--header-height);\n left: 0;\n width: var(--sidebar-width);\n height: calc(100vh - var(--header-height));\n background-color: var(--bg-secondary);\n border-right: 1px solid var(--border-primary);\n overflow-y: auto;\n z-index: 999;\n transform: translateX(0);\n transition: transform var(--transition-normal);\n}\n\n.sidebar-content {\n padding: var(--spacing-xl) 0;\n}\n\n/* API Info */\n.api-info {\n padding: 0 var(--spacing-xl);\n margin-bottom: var(--spacing-2xl);\n}\n\n.api-version {\n display: inline-block;\n padding: var(--spacing-xs) var(--spacing-sm);\n background-color: var(--accent-primary);\n color: var(--text-inverse);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n border-radius: var(--radius-sm);\n margin-bottom: var(--spacing-md);\n}\n\n.api-description {\n font-size: var(--font-size-sm);\n color: var(--text-tertiary);\n line-height: var(--line-height-relaxed);\n}\n\n/* Server Selector */\n.server-selector {\n padding: 0 var(--spacing-xl);\n margin-bottom: var(--spacing-2xl);\n}\n\n.server-label {\n display: block;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--text-secondary);\n margin-bottom: var(--spacing-sm);\n}\n\n.server-select {\n width: 100%;\n padding: var(--spacing-sm) var(--spacing-md);\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n color: var(--text-primary);\n font-size: var(--font-size-sm);\n cursor: pointer;\n transition: border-color var(--transition-fast);\n}\n\n.server-select:focus {\n outline: none;\n border-color: var(--border-focus);\n}\n\n/* Main Content */\n.main-content {\n flex: 1;\n margin-left: var(--sidebar-width);\n padding: var(--spacing-2xl);\n overflow-y: auto;\n transition: margin-left var(--transition-normal);\n}\n\n/* Content Container */\n.content-container {\n max-width: 1024px;\n margin: 0 auto;\n}\n\n/* Responsive Design */\n@media (max-width: 1024px) {\n .search-input {\n width: 250px;\n }\n}\n\n@media (max-width: 768px) {\n .header-content {\n padding: 0 var(--spacing-md);\n }\n \n .brand-subtitle {\n display: none;\n }\n \n .search-input {\n width: 200px;\n }\n \n .menu-toggle {\n display: flex;\n }\n \n .sidebar {\n transform: translateX(-100%);\n }\n \n .sidebar.mobile-open {\n transform: translateX(0);\n }\n \n .main-content {\n margin-left: 0;\n padding: var(--spacing-lg);\n }\n}\n\n@media (max-width: 640px) {\n .header-controls {\n gap: var(--spacing-sm);\n }\n \n .search-input {\n width: 180px;\n }\n \n .main-content {\n padding: var(--spacing-md);\n }\n}\n\n/* Utility Classes */\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n\n.truncate {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.flex {\n display: flex;\n}\n\n.items-center {\n align-items: center;\n}\n\n.justify-between {\n justify-content: space-between;\n}\n\n.gap-2 {\n gap: var(--spacing-sm);\n}\n\n.gap-4 {\n gap: var(--spacing-lg);\n}\n\n/* Focus Styles */\n*:focus {\n outline: none;\n}\n\n*:focus-visible {\n outline: 2px solid var(--border-focus);\n outline-offset: 2px;\n}",""]);const i=s},314:n=>{n.exports=function(n){var e=[];return e.toString=function(){return this.map(function(e){var t="",r=void 0!==e[5];return e[4]&&(t+="@supports (".concat(e[4],") {")),e[2]&&(t+="@media ".concat(e[2]," {")),r&&(t+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),t+=n(e),r&&(t+="}"),e[2]&&(t+="}"),e[4]&&(t+="}"),t}).join("")},e.i=function(n,t,r,a,o){"string"==typeof n&&(n=[[null,n,void 0]]);var s={};if(r)for(var i=0;i0?" ".concat(p[5]):""," {").concat(p[1],"}")),p[5]=o),t&&(p[2]?(p[1]="@media ".concat(p[2]," {").concat(p[1],"}"),p[2]=t):p[2]=t),a&&(p[4]?(p[1]="@supports (".concat(p[4],") {").concat(p[1],"}"),p[4]=a):p[4]="".concat(a)),e.push(p))}},e}},365:(n,e,t)=>{t.d(e,{A:()=>i});var r=t(601),a=t.n(r),o=t(314),s=t.n(o)()(a());s.push([n.id,"/* Component-specific styles for Substrate API Sidecar Documentation */\n\n/* Feature Icons - Clean Modern Design */\n.feature-icon {\n width: 48px;\n height: 48px;\n border-radius: var(--radius-lg);\n margin-bottom: var(--spacing-lg);\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.feature-icon::after {\n content: '';\n width: 24px;\n height: 24px;\n border-radius: var(--radius-sm);\n background-color: rgba(255, 255, 255, 0.2);\n}\n\n.account-icon {\n background: linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%);\n}\n\n.block-icon {\n background: linear-gradient(135deg, #10b981 0%, #047857 100%);\n}\n\n.runtime-icon {\n background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%);\n}\n\n.transaction-icon {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n}\n\n/* Notice Box Improvements */\n.notice-box {\n padding: var(--spacing-lg);\n border-radius: var(--radius-md);\n border-left: 4px solid var(--accent-primary);\n background-color: rgba(88, 166, 255, 0.1);\n margin: var(--spacing-xl) 0;\n}\n\n.notice-box.info {\n border-left-color: var(--accent-primary);\n background-color: rgba(88, 166, 255, 0.08);\n}\n\n.notice-box .notice-content {\n margin: 0;\n}\n\n/* Navigation Components */\n.nav-menu {\n margin-bottom: var(--spacing-2xl);\n}\n\n.nav-section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-md) var(--spacing-xl);\n cursor: pointer;\n transition: background-color var(--transition-fast);\n border-radius: var(--radius-sm);\n margin: 0 var(--spacing-md);\n}\n\n.nav-section-header h3 {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n text-transform: uppercase;\n letter-spacing: 0.025em;\n margin: 0;\n flex: 1;\n}\n\n/* Clean up nav links */\n.nav-link {\n display: flex;\n align-items: center;\n padding: var(--spacing-md) var(--spacing-xl);\n color: var(--text-secondary);\n text-decoration: none;\n border-radius: var(--radius-sm);\n margin: 0 var(--spacing-md) var(--spacing-xs) var(--spacing-md);\n transition: all var(--transition-fast);\n font-weight: var(--font-weight-normal);\n}\n\n.nav-link:hover {\n background-color: var(--bg-hover);\n color: var(--text-primary);\n text-decoration: none;\n}\n\n.nav-link.active {\n background-color: var(--accent-primary);\n color: var(--text-inverse);\n}\n\n.nav-link.active:hover {\n background-color: var(--accent-primary);\n color: var(--text-inverse);\n}\n\n.nav-section {\n margin-bottom: var(--spacing-xl);\n}\n\n/* Improve feature cards */\n.features-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: var(--spacing-xl);\n margin-top: var(--spacing-xl);\n}\n\n.feature-card {\n padding: var(--spacing-2xl);\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-lg);\n transition: all var(--transition-fast);\n}\n\n.feature-card:hover {\n border-color: var(--accent-primary);\n transform: translateY(-2px);\n box-shadow: var(--shadow-lg);\n}\n\n.feature-card h3 {\n color: var(--text-primary);\n font-weight: var(--font-weight-semibold);\n margin-bottom: var(--spacing-md);\n}\n\n.feature-card p {\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin: 0;\n}\n\n/* Improve main content spacing */\n.section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--spacing-4xl);\n padding: var(--spacing-2xl);\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-lg);\n}\n\n.section-header h1 {\n font-size: var(--font-size-4xl);\n font-weight: var(--font-weight-bold);\n color: var(--text-primary);\n margin: 0;\n}\n\n.section-meta {\n display: flex;\n align-items: center;\n gap: var(--spacing-lg);\n}\n\n.version-badge {\n display: inline-flex;\n align-items: center;\n padding: var(--spacing-xs) var(--spacing-md);\n background-color: var(--accent-primary);\n color: var(--text-inverse);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n border-radius: var(--radius-md);\n}\n\n.github-link {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-xs);\n padding: var(--spacing-xs) var(--spacing-md);\n color: var(--text-secondary);\n text-decoration: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n transition: all var(--transition-fast);\n}\n\n.github-link:hover {\n color: var(--text-primary);\n border-color: var(--accent-primary);\n text-decoration: none;\n}\n\n.overview-content {\n max-width: 800px;\n}\n\n.lead {\n font-size: var(--font-size-xl);\n color: var(--text-primary);\n line-height: var(--line-height-relaxed);\n margin-bottom: var(--spacing-3xl);\n}\n\n/* Guide content spacing */\n.guide-content {\n max-width: 800px;\n}\n\n.guide-content h1 {\n font-size: var(--font-size-3xl);\n font-weight: var(--font-weight-bold);\n color: var(--text-primary);\n margin: var(--spacing-4xl) 0 var(--spacing-xl) 0;\n}\n\n.guide-content h1:first-child {\n margin-top: 0;\n}\n\n.guide-content h2 {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n margin: var(--spacing-3xl) 0 var(--spacing-lg) 0;\n padding-bottom: var(--spacing-sm);\n border-bottom: 1px solid var(--border-primary);\n}\n\n.guide-content h3 {\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n margin: var(--spacing-2xl) 0 var(--spacing-md) 0;\n}\n\n.guide-content h4 {\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-medium);\n color: var(--text-primary);\n margin: var(--spacing-xl) 0 var(--spacing-sm) 0;\n}\n\n.guide-content p {\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin-bottom: var(--spacing-lg);\n}\n\n.guide-content ul,\n.guide-content ol {\n margin: var(--spacing-lg) 0;\n padding-left: var(--spacing-2xl);\n}\n\n.guide-content li {\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin-bottom: var(--spacing-sm);\n}\n\n.guide-content .code-block {\n margin: var(--spacing-xl) 0;\n}\n\n.guide-content .notice-box {\n margin: var(--spacing-xl) 0;\n}\n\n.guide-content blockquote {\n border-left: 4px solid var(--accent-primary);\n padding-left: var(--spacing-lg);\n margin: var(--spacing-xl) 0;\n font-style: italic;\n color: var(--text-secondary);\n}\n\n/* Specification content spacing - same as guide content */\n.spec-content {\n max-width: 800px;\n}\n\n.spec-content h1 {\n font-size: var(--font-size-3xl);\n font-weight: var(--font-weight-bold);\n color: var(--text-primary);\n margin: var(--spacing-4xl) 0 var(--spacing-xl) 0;\n}\n\n.spec-content h1:first-child {\n margin-top: 0;\n}\n\n.spec-content h2 {\n font-size: var(--font-size-2xl);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n margin: var(--spacing-3xl) 0 var(--spacing-lg) 0;\n padding-bottom: var(--spacing-sm);\n border-bottom: 1px solid var(--border-primary);\n}\n\n.spec-content h3 {\n font-size: var(--font-size-xl);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n margin: var(--spacing-2xl) 0 var(--spacing-md) 0;\n}\n\n.spec-content h4 {\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-medium);\n color: var(--text-primary);\n margin: var(--spacing-xl) 0 var(--spacing-sm) 0;\n}\n\n.spec-content p {\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin-bottom: var(--spacing-lg);\n}\n\n.spec-content ul,\n.spec-content ol {\n margin: var(--spacing-lg) 0;\n padding-left: var(--spacing-2xl);\n}\n\n.spec-content li {\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin-bottom: var(--spacing-sm);\n}\n\n.spec-content .code-block {\n margin: var(--spacing-xl) 0;\n}\n\n.spec-content .notice-box {\n margin: var(--spacing-xl) 0;\n}\n\n.spec-content blockquote {\n border-left: 4px solid var(--accent-primary);\n padding-left: var(--spacing-lg);\n margin: var(--spacing-xl) 0;\n font-style: italic;\n color: var(--text-secondary);\n}\n\n.nav-section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-md) var(--spacing-xl);\n cursor: pointer;\n transition: background-color var(--transition-fast);\n border-radius: var(--radius-sm);\n margin: 0 var(--spacing-md);\n}\n\n.nav-section-header:hover {\n background-color: var(--bg-hover);\n}\n\n.nav-section-header span {\n font-size: var(--font-size-lg);\n margin-right: var(--spacing-sm);\n}\n\n.nav-section-header h3 {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n text-transform: uppercase;\n letter-spacing: 0.025em;\n margin: 0;\n flex: 1;\n}\n\n.section-toggle {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n background: none;\n border: none;\n color: var(--text-tertiary);\n cursor: pointer;\n border-radius: var(--radius-sm);\n transition: all var(--transition-fast);\n}\n\n.section-toggle:hover {\n color: var(--text-secondary);\n background-color: var(--bg-tertiary);\n}\n\n.section-toggle .chevron {\n transition: transform var(--transition-fast);\n}\n\n.section-toggle.collapsed .chevron {\n transform: rotate(-90deg);\n}\n\n/* Main navigation sections */\n.nav-section .nav-list {\n transition: max-height var(--transition-normal), opacity var(--transition-fast);\n overflow: hidden;\n max-height: 1000px;\n opacity: 1;\n}\n\n.nav-section .nav-list.collapsed {\n max-height: 0;\n opacity: 0;\n margin: 0;\n padding: 0;\n}\n\n.nav-list {\n list-style: none;\n margin: 0;\n padding: 0 0 0 var(--spacing-lg);\n}\n\n.nav-list.collapsed {\n display: none;\n}\n\n.nav-item {\n margin: 0;\n}\n\n.nav-link {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n padding: var(--spacing-sm) var(--spacing-xl);\n color: var(--text-secondary);\n text-decoration: none;\n font-size: var(--font-size-sm);\n border-left: 2px solid transparent;\n transition: all var(--transition-fast);\n}\n\n.nav-link:hover {\n color: var(--text-primary);\n background-color: var(--bg-hover);\n text-decoration: none;\n}\n\n.nav-link.active {\n color: var(--accent-primary);\n background-color: var(--bg-active);\n border-left-color: var(--accent-primary);\n}\n\n/* Nav Group Items - Tree Structure */\n.nav-group {\n margin-bottom: var(--spacing-xs);\n margin-left: var(--spacing-md);\n position: relative;\n}\n\n\n.nav-group-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-sm) var(--spacing-md);\n cursor: pointer;\n transition: background-color var(--transition-fast);\n border-radius: var(--radius-sm);\n margin: 0 var(--spacing-xs);\n}\n\n.nav-group-header:hover {\n background-color: var(--bg-hover);\n}\n\n.nav-group-header.expanded {\n background-color: var(--bg-active);\n}\n\n.nav-group-title {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--text-primary);\n text-transform: capitalize;\n flex: 1;\n}\n\n.nav-group-count {\n font-size: var(--font-size-xs);\n color: var(--text-tertiary);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n padding: 0.125rem 0.375rem;\n border-radius: var(--radius-sm);\n min-width: 1.5rem;\n text-align: center;\n margin-right: var(--spacing-sm);\n}\n\n.nav-group-chevron {\n color: var(--text-tertiary);\n transition: transform var(--transition-fast);\n}\n\n.nav-group-header.expanded .nav-group-chevron {\n transform: rotate(90deg);\n}\n\n.nav-sublist {\n max-height: 0;\n overflow: hidden;\n transition: max-height 0.3s ease-in-out, overflow 0.3s ease-in-out;\n margin-left: var(--spacing-lg);\n position: relative;\n list-style: none;\n padding: 0;\n}\n\n\n.nav-subitem {\n position: relative;\n}\n\n\n.nav-subitem .nav-link {\n padding: var(--spacing-xs) var(--spacing-md);\n font-size: var(--font-size-xs);\n margin: var(--spacing-xs) 0;\n}\n\n/* Method Badges */\n.method-badge {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-semibold);\n text-transform: uppercase;\n letter-spacing: 0.025em;\n border-radius: var(--radius-sm);\n color: white;\n flex-shrink: 0;\n}\n\n.method-badge.small {\n padding: 0.125rem 0.375rem;\n min-width: 2.5rem;\n}\n\n.method-badge.large {\n padding: 0.25rem 0.5rem;\n min-width: 3rem;\n}\n\n.method-badge.method-get {\n background-color: var(--method-get);\n}\n\n.method-badge.method-post {\n background-color: var(--method-post);\n}\n\n.method-badge.method-put {\n background-color: var(--method-put);\n}\n\n.method-badge.method-delete {\n background-color: var(--method-delete);\n}\n\n.method-badge.method-patch {\n background-color: var(--method-patch);\n}\n\n.method-badge.method-head {\n background-color: var(--method-head);\n}\n\n.method-badge.method-options {\n background-color: var(--method-options);\n}\n\n/* Endpoint Path */\n.endpoint-path {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n color: var(--text-secondary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex: 1;\n min-width: 0;\n}\n\n/* Schema Icons */\n.schema-icon {\n font-size: var(--font-size-sm);\n}\n\n.schema-name {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n color: var(--text-secondary);\n}\n\n/* Schema tree structure */\n#schemas-nav .nav-item {\n margin-left: var(--spacing-md);\n position: relative;\n}\n\n\n\n#schemas-nav .nav-link {\n padding: var(--spacing-xs) var(--spacing-md);\n margin: var(--spacing-xs) 0;\n}\n\n/* Breadcrumb */\n.breadcrumb {\n margin-bottom: var(--spacing-2xl);\n padding: var(--spacing-md) 0;\n border-bottom: 1px solid var(--border-primary);\n}\n\n.breadcrumb-list {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.breadcrumb-item {\n display: flex;\n align-items: center;\n font-size: var(--font-size-sm);\n}\n\n.breadcrumb-item:not(:last-child)::after {\n content: '/';\n color: var(--text-tertiary);\n margin-left: var(--spacing-sm);\n}\n\n.breadcrumb-item a {\n color: var(--text-link);\n text-decoration: none;\n}\n\n.breadcrumb-item a:hover {\n color: var(--text-link-hover);\n text-decoration: underline;\n}\n\n.breadcrumb-item.active span {\n color: var(--text-primary);\n font-weight: var(--font-weight-medium);\n}\n\n/* Content Sections */\n.content-section {\n margin-bottom: 0;\n}\n\n.section-header {\n margin-bottom: var(--spacing-2xl);\n padding-bottom: var(--spacing-lg);\n border-bottom: 1px solid var(--border-primary);\n}\n\n.section-meta {\n display: flex;\n align-items: center;\n gap: var(--spacing-md);\n margin-top: var(--spacing-md);\n}\n\n.version-badge {\n display: inline-flex;\n align-items: center;\n padding: var(--spacing-xs) var(--spacing-sm);\n background-color: var(--accent-primary);\n color: var(--text-inverse);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n border-radius: var(--radius-sm);\n}\n\n.github-link {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-xs);\n color: var(--text-link);\n text-decoration: none;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n transition: color var(--transition-fast);\n}\n\n.github-link:hover {\n color: var(--text-link-hover);\n text-decoration: none;\n}\n\n/* Endpoint Sections */\n.endpoint-section .section-header {\n position: relative;\n}\n\n.endpoint-title {\n display: flex;\n align-items: center;\n gap: var(--spacing-lg);\n flex-wrap: wrap;\n}\n\n.endpoint-title h2 {\n font-family: var(--font-family-mono);\n font-weight: var(--font-weight-medium);\n margin: 0;\n word-break: break-all;\n}\n\n.endpoint-meta {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n flex-wrap: wrap;\n}\n\n.tag {\n display: inline-flex;\n align-items: center;\n padding: var(--spacing-xs) var(--spacing-sm);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n color: var(--text-secondary);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n border-radius: var(--radius-sm);\n text-transform: capitalize;\n}\n\n.endpoint-summary {\n font-size: var(--font-size-lg);\n color: var(--text-primary);\n margin-bottom: var(--spacing-xl);\n}\n\n.endpoint-description {\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin-bottom: var(--spacing-xl);\n}\n\n/* Parameters */\n.parameters-section {\n margin-bottom: var(--spacing-4xl);\n}\n\n.parameters-section h3 {\n margin-bottom: var(--spacing-xl);\n}\n\n.parameter-group {\n margin-bottom: var(--spacing-md);\n margin-top: var(--spacing-md);\n}\n\n.parameter-group-title {\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n color: var(--text-primary);\n margin-bottom: var(--spacing-lg);\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n}\n\n.parameter-group-title::before {\n content: '';\n width: 4px;\n height: 4px;\n background-color: var(--accent-primary);\n border-radius: 50%;\n}\n\n.parameter-table {\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.parameter-row {\n padding: var(--spacing-lg);\n border-bottom: 1px solid var(--border-primary);\n}\n\n.parameter-row:last-child {\n border-bottom: none;\n}\n\n.parameter-info {\n width: 100%;\n}\n\n.parameter-header {\n display: flex;\n align-items: center;\n gap: var(--spacing-md);\n margin-bottom: var(--spacing-sm);\n flex-wrap: wrap;\n}\n\n.parameter-name {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n}\n\n.required-badge {\n display: inline-flex;\n align-items: center;\n padding: 0.125rem 0.375rem;\n background-color: var(--accent-danger);\n color: white;\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n text-transform: uppercase;\n letter-spacing: 0.025em;\n border-radius: var(--radius-sm);\n}\n\n.optional-badge {\n display: inline-flex;\n align-items: center;\n padding: 0.125rem 0.375rem;\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n color: var(--text-tertiary);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n text-transform: uppercase;\n letter-spacing: 0.025em;\n border-radius: var(--radius-sm);\n}\n\n.parameter-type {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n color: var(--text-link);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n padding: 0.125rem 0.375rem;\n border-radius: var(--radius-sm);\n display: inline-block;\n margin-bottom: var(--spacing-sm);\n}\n\n.parameter-description {\n font-size: var(--font-size-sm);\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n}\n\n/* Request Body */\n.request-body-section {\n margin-bottom: var(--spacing-4xl);\n}\n\n.request-body-description {\n color: var(--text-secondary);\n margin-bottom: var(--spacing-lg);\n}\n\n/* Responses */\n.responses-section {\n margin-bottom: var(--spacing-4xl);\n}\n\n.responses-list {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-xl);\n}\n\n.response-item {\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.response-header {\n display: flex;\n align-items: center;\n gap: var(--spacing-md);\n padding: var(--spacing-lg);\n background-color: var(--bg-tertiary);\n border-bottom: 1px solid var(--border-primary);\n}\n\n.status-code {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 3rem;\n padding: 0.25rem 0.5rem;\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: white;\n border-radius: var(--radius-sm);\n}\n\n.status-code.status-success {\n background-color: var(--status-success);\n}\n\n.status-code.status-redirect {\n background-color: var(--status-redirect);\n}\n\n.status-code.status-client-error {\n background-color: var(--status-client-error);\n}\n\n.status-code.status-server-error {\n background-color: var(--status-server-error);\n}\n\n.response-description {\n flex: 1;\n font-size: var(--font-size-sm);\n color: var(--text-secondary);\n}\n\n/* Content Sections */\n.content-section {\n padding: var(--spacing-lg) var(--spacing-lg) var(--spacing-sm) var(--spacing-lg);\n}\n\n.media-type-section {\n margin-bottom: 0;\n}\n\n.media-type {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--text-primary);\n margin-bottom: var(--spacing-lg);\n}\n\n/* Schema Components */\n.schema-section .section-header {\n margin-bottom: var(--spacing-2xl);\n}\n\n.schema-title {\n font-family: var(--font-family-mono);\n margin: 0;\n}\n\n.schema-type-badge {\n display: inline-flex;\n align-items: center;\n padding: var(--spacing-xs) var(--spacing-sm);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n color: var(--text-secondary);\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-medium);\n border-radius: var(--radius-sm);\n text-transform: lowercase;\n}\n\n.schema-summary {\n font-size: var(--font-size-lg);\n color: var(--text-primary);\n margin-bottom: var(--spacing-xl);\n}\n\n.schema-definition {\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n padding: var(--spacing-xl);\n}\n\n.schema-object,\n.schema-array,\n.schema-simple {\n margin-bottom: var(--spacing-lg);\n}\n\n.schema-type {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n color: var(--text-link);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n padding: 0.125rem 0.375rem;\n border-radius: var(--radius-sm);\n display: inline-block;\n margin-bottom: var(--spacing-sm);\n}\n\n.schema-properties {\n margin-left: var(--spacing-lg);\n border-left: 2px solid var(--border-primary);\n padding-left: var(--spacing-lg);\n}\n\n.schema-property {\n margin-bottom: var(--spacing-lg);\n padding-bottom: var(--spacing-lg);\n border-bottom: 1px solid var(--border-secondary);\n}\n\n.schema-property:last-child {\n border-bottom: none;\n margin-bottom: 0;\n padding-bottom: 0;\n}\n\n.property-header {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n margin-bottom: var(--spacing-sm);\n flex-wrap: wrap;\n}\n\n.property-name {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n}\n\n.property-type {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n color: var(--text-link);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n padding: 0.125rem 0.375rem;\n border-radius: var(--radius-sm);\n}\n\n.property-description {\n font-size: var(--font-size-sm);\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin-left: var(--spacing-lg);\n}\n\n.schema-ref {\n margin: var(--spacing-sm) 0;\n}\n\n.schema-ref-link {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-xs);\n color: var(--text-link);\n text-decoration: none;\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n padding: var(--spacing-xs) var(--spacing-sm);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n transition: all var(--transition-fast);\n}\n\n.schema-ref-link:hover {\n color: var(--text-link-hover);\n background-color: var(--bg-hover);\n text-decoration: none;\n}\n\n.schema-description {\n margin-left: var(--spacing-sm);\n font-size: var(--font-size-xs);\n color: var(--text-tertiary);\n}\n\n/* Example Sections */\n.example-section,\n.example-request-section {\n margin-bottom: var(--spacing-4xl);\n}\n\n.code-block {\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.code-header,\n.example-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-md) var(--spacing-lg);\n background-color: var(--bg-secondary);\n border-bottom: 1px solid var(--border-primary);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--text-secondary);\n}\n\n.copy-button {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n padding: var(--spacing-xs) var(--spacing-sm);\n background: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n color: var(--text-tertiary);\n font-size: var(--font-size-xs);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.copy-button:hover {\n color: var(--text-secondary);\n background-color: var(--bg-hover);\n border-color: var(--border-secondary);\n}\n\n.copy-button.copied {\n color: var(--accent-success);\n border-color: var(--accent-success);\n}\n\n/* Overview Components */\n.lead {\n font-size: var(--font-size-xl);\n color: var(--text-primary);\n margin-bottom: var(--spacing-4xl);\n line-height: var(--line-height-relaxed);\n}\n\n.features-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: var(--spacing-2xl);\n margin-bottom: var(--spacing-4xl);\n}\n\n.feature-card {\n padding: var(--spacing-2xl);\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-lg);\n transition: all var(--transition-normal);\n}\n\n.feature-card:hover {\n border-color: var(--border-secondary);\n transform: translateY(-2px);\n box-shadow: var(--shadow-lg);\n}\n\n.feature-icon {\n font-size: 2rem;\n margin-bottom: var(--spacing-lg);\n display: block;\n}\n\n.feature-card h3 {\n margin-bottom: var(--spacing-md);\n color: var(--text-primary);\n}\n\n.feature-card p {\n margin: 0;\n color: var(--text-secondary);\n font-size: var(--font-size-sm);\n}\n\n.quick-start {\n margin-top: var(--spacing-4xl);\n}\n\n.quick-start h3 {\n margin-bottom: var(--spacing-xl);\n color: var(--text-primary);\n}\n\n.notice-box {\n display: flex;\n align-items: flex-start;\n gap: var(--spacing-md);\n padding: var(--spacing-lg);\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-left: 4px solid var(--accent-primary);\n border-radius: var(--radius-md);\n margin-top: var(--spacing-xl);\n}\n\n.notice-icon {\n font-size: var(--font-size-lg);\n flex-shrink: 0;\n}\n\n.notice-content {\n flex: 1;\n font-size: var(--font-size-sm);\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n}\n\n.notice-content strong {\n color: var(--text-primary);\n}\n\n/* Search Results */\n.search-results {\n position: absolute;\n top: 100%;\n left: 0;\n right: 0;\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-top: none;\n border-radius: 0 0 var(--radius-lg) var(--radius-lg);\n box-shadow: var(--shadow-xl);\n z-index: 1000;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.search-results-content {\n padding: var(--spacing-lg);\n}\n\n.search-section {\n margin-bottom: var(--spacing-xl);\n}\n\n.search-section:last-child {\n margin-bottom: 0;\n}\n\n.search-section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--spacing-md);\n}\n\n.search-section-header h4 {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n margin: 0;\n}\n\n.search-count {\n font-size: var(--font-size-xs);\n color: var(--text-tertiary);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n padding: 0.125rem 0.375rem;\n border-radius: var(--radius-sm);\n min-width: 1.5rem;\n text-align: center;\n}\n\n.search-items {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-sm);\n}\n\n.search-item {\n display: block;\n padding: var(--spacing-md);\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n cursor: pointer;\n transition: all var(--transition-fast);\n text-decoration: none;\n color: inherit;\n}\n\n.search-item:hover {\n background-color: var(--bg-hover);\n border-color: var(--border-secondary);\n text-decoration: none;\n color: inherit;\n}\n\n.search-item-header {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n margin-bottom: var(--spacing-xs);\n}\n\n.search-item-path,\n.search-item-name {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n color: var(--text-primary);\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.search-item-type {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n color: var(--text-link);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n padding: 0.125rem 0.375rem;\n border-radius: var(--radius-sm);\n}\n\n.search-item-summary {\n font-size: var(--font-size-xs);\n color: var(--text-secondary);\n line-height: var(--line-height-normal);\n margin-bottom: var(--spacing-xs);\n overflow: hidden;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n\n.search-item-tags {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n flex-wrap: wrap;\n}\n\n.search-tag {\n font-size: var(--font-size-xs);\n color: var(--text-tertiary);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-primary);\n padding: 0.125rem 0.375rem;\n border-radius: var(--radius-sm);\n text-transform: capitalize;\n}\n\n.search-item-more {\n padding: var(--spacing-sm);\n text-align: center;\n font-size: var(--font-size-xs);\n color: var(--text-tertiary);\n font-style: italic;\n}\n\n.search-no-results {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-4xl) var(--spacing-2xl);\n text-align: center;\n}\n\n.no-results-icon {\n font-size: 3rem;\n margin-bottom: var(--spacing-lg);\n opacity: 0.5;\n}\n\n.no-results-text p {\n margin-bottom: var(--spacing-sm);\n color: var(--text-primary);\n}\n\n.no-results-text small {\n color: var(--text-tertiary);\n font-size: var(--font-size-sm);\n}\n\n/* API Explorer Components */\n.api-explorer {\n margin-top: var(--spacing-4xl);\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.explorer-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-lg) var(--spacing-xl);\n background-color: var(--bg-tertiary);\n border-bottom: 1px solid var(--border-primary);\n}\n\n.explorer-header h3 {\n margin: 0;\n color: var(--text-primary);\n font-size: var(--font-size-lg);\n font-weight: var(--font-weight-semibold);\n}\n\n.try-button {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n padding: var(--spacing-md) var(--spacing-lg);\n background-color: var(--accent-primary);\n color: white;\n border: none;\n border-radius: var(--radius-md);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.try-button:hover {\n background-color: var(--text-link-hover);\n transform: translateY(-1px);\n}\n\n.try-button:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n transform: none;\n}\n\n.explorer-content {\n padding: var(--spacing-xl);\n}\n\n.request-config {\n margin-bottom: var(--spacing-4xl);\n}\n\n.config-section {\n margin-bottom: var(--spacing-2xl);\n}\n\n.config-section h4 {\n color: var(--text-primary);\n margin-bottom: var(--spacing-lg);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n}\n\n.section-description {\n color: var(--text-secondary);\n margin-bottom: var(--spacing-lg);\n font-size: var(--font-size-sm);\n}\n\n/* URL Builder */\n.url-builder {\n margin-bottom: var(--spacing-lg);\n}\n\n.url-display {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n padding: var(--spacing-sm);\n}\n\n.request-url {\n flex: 1;\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n color: var(--text-primary);\n background: none;\n border: none;\n outline: none;\n padding: var(--spacing-sm);\n}\n\n.copy-url-button {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n background: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n color: var(--text-tertiary);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.copy-url-button:hover {\n color: var(--text-secondary);\n background-color: var(--bg-hover);\n}\n\n/* Parameter Forms */\n.parameters-form {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-xl);\n}\n\n.parameter-group h5 {\n color: var(--text-primary);\n margin-bottom: var(--spacing-lg);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n text-transform: uppercase;\n letter-spacing: 0.025em;\n}\n\n.parameter-input {\n margin-bottom: var(--spacing-lg);\n}\n\n.parameter-label {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n margin-bottom: var(--spacing-sm);\n flex-wrap: wrap;\n}\n\n.param-input {\n width: 100%;\n padding: var(--spacing-md);\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n color: var(--text-primary);\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n transition: border-color var(--transition-fast);\n}\n\n.param-input:focus {\n outline: none;\n border-color: var(--border-focus);\n box-shadow: 0 0 0 2px rgba(88, 166, 255, 0.1);\n}\n\n.param-input::placeholder {\n color: var(--text-tertiary);\n}\n\n/* Request Body Input */\n.request-body-input {\n position: relative;\n}\n\n.input-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: var(--spacing-sm);\n}\n\n.input-header span {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n color: var(--text-secondary);\n}\n\n.format-json-button {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n padding: var(--spacing-xs) var(--spacing-sm);\n background: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n color: var(--text-tertiary);\n font-size: var(--font-size-xs);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.format-json-button:hover {\n color: var(--text-secondary);\n background-color: var(--bg-hover);\n}\n\n.json-input {\n width: 100%;\n min-height: 200px;\n padding: var(--spacing-lg);\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n color: var(--text-primary);\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n resize: vertical;\n transition: border-color var(--transition-fast);\n}\n\n.json-input:focus {\n outline: none;\n border-color: var(--border-focus);\n box-shadow: 0 0 0 2px rgba(88, 166, 255, 0.1);\n}\n\n/* Headers Input */\n.headers-input {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-sm);\n}\n\n.header-row,\n.custom-header-row {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n}\n\n.header-name,\n.header-value {\n flex: 1;\n padding: var(--spacing-sm) var(--spacing-md);\n font-size: var(--font-size-sm);\n color: var(--text-primary);\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n transition: border-color var(--transition-fast);\n}\n\n.header-name:focus,\n.header-value:focus {\n outline: none;\n border-color: var(--border-focus);\n}\n\n.add-header-button,\n.remove-header-button {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n background: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n color: var(--text-tertiary);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.add-header-button:hover {\n color: var(--accent-success);\n border-color: var(--accent-success);\n}\n\n.remove-header-button:hover {\n color: var(--accent-danger);\n border-color: var(--accent-danger);\n}\n\n/* Request/Response Area */\n.request-response-area {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-2xl);\n}\n\n.request-preview {\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-md) var(--spacing-lg);\n background-color: var(--bg-tertiary);\n border-bottom: 1px solid var(--border-primary);\n}\n\n.section-header h4 {\n margin: 0;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n}\n\n.copy-request-button,\n.copy-response-button {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n padding: var(--spacing-xs) var(--spacing-sm);\n background: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n color: var(--text-tertiary);\n font-size: var(--font-size-xs);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.copy-request-button:hover,\n.copy-response-button:hover {\n color: var(--text-secondary);\n background-color: var(--bg-hover);\n}\n\n/* Response Area */\n.response-area {\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.response-meta {\n display: flex;\n align-items: center;\n gap: var(--spacing-md);\n}\n\n.response-time {\n font-size: var(--font-size-xs);\n color: var(--text-tertiary);\n padding: 0.125rem 0.375rem;\n background-color: var(--bg-secondary);\n border-radius: var(--radius-sm);\n}\n\n.response-status {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-xs);\n font-weight: var(--font-weight-semibold);\n padding: 0.125rem 0.375rem;\n border-radius: var(--radius-sm);\n color: white;\n}\n\n/* Tab Navigation */\n.tab-navigation {\n display: flex;\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md) var(--radius-md) 0 0;\n margin-bottom: 0;\n}\n\n.tab-navigation .tab-button {\n flex: 1;\n padding: var(--spacing-lg) var(--spacing-xl);\n background: none;\n border: none;\n color: var(--text-secondary);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n transition: all var(--transition-fast);\n border-bottom: 3px solid transparent;\n position: relative;\n}\n\n.tab-navigation .tab-button:first-child {\n border-radius: var(--radius-md) 0 0 0;\n}\n\n.tab-navigation .tab-button:last-child {\n border-radius: 0 var(--radius-md) 0 0;\n}\n\n.tab-navigation .tab-button:hover {\n color: var(--text-primary);\n background-color: var(--bg-hover);\n}\n\n.tab-navigation .tab-button.active {\n color: var(--accent-primary);\n border-bottom-color: var(--accent-primary);\n background-color: var(--bg-primary);\n}\n\n.tab-content {\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-top: none;\n border-radius: 0 0 var(--radius-md) var(--radius-md);\n overflow: hidden;\n}\n\n.tab-pane {\n display: none;\n padding: var(--spacing-2xl);\n animation: fadeIn 0.2s ease-in-out;\n}\n\n.tab-pane.active {\n display: block;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n/* Getting Started Styles */\n.getting-started-content {\n max-width: 900px;\n}\n\n.setup-steps {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-3xl);\n margin-bottom: var(--spacing-4xl);\n}\n\n.setup-step {\n display: flex;\n gap: var(--spacing-xl);\n align-items: flex-start;\n}\n\n.step-number {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 40px;\n height: 40px;\n background-color: var(--accent-primary);\n color: white;\n font-weight: var(--font-weight-bold);\n font-size: var(--font-size-lg);\n border-radius: 50%;\n flex-shrink: 0;\n margin-top: var(--spacing-sm);\n}\n\n.step-content {\n flex: 1;\n}\n\n.step-content h4 {\n margin-bottom: var(--spacing-lg);\n color: var(--text-primary);\n font-size: var(--font-size-lg);\n}\n\n.step-content p {\n color: var(--text-secondary);\n margin-bottom: var(--spacing-lg);\n font-size: var(--font-size-sm);\n}\n\n.configuration-section {\n margin-top: var(--spacing-4xl);\n}\n\n.configuration-section h3 {\n margin-bottom: var(--spacing-xl);\n color: var(--text-primary);\n}\n\n.configuration-section p {\n color: var(--text-secondary);\n margin-bottom: var(--spacing-xl);\n}\n\n.config-table {\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n overflow: hidden;\n}\n\n.config-row {\n display: flex;\n align-items: center;\n padding: var(--spacing-lg);\n border-bottom: 1px solid var(--border-primary);\n}\n\n.config-row:last-child {\n border-bottom: none;\n}\n\n.config-key {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n min-width: 200px;\n padding-right: var(--spacing-lg);\n}\n\n.config-desc {\n color: var(--text-secondary);\n font-size: var(--font-size-sm);\n line-height: var(--line-height-relaxed);\n flex: 1;\n}\n\n/* Enhanced Features Styles */\n.features-content {\n max-width: 1200px;\n}\n\n.features-content .features-grid {\n grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));\n gap: var(--spacing-3xl);\n margin-bottom: var(--spacing-5xl);\n}\n\n.feature-card.detailed {\n padding: var(--spacing-3xl);\n min-height: 280px;\n}\n\n.feature-header {\n display: flex;\n align-items: center;\n gap: var(--spacing-lg);\n margin-bottom: var(--spacing-lg);\n}\n\n.feature-header .feature-icon {\n font-size: 2.5rem;\n margin-bottom: 0;\n}\n\n.feature-header h3 {\n margin: 0;\n font-size: var(--font-size-xl);\n}\n\n.feature-card.detailed p {\n font-size: var(--font-size-base);\n margin-bottom: var(--spacing-lg);\n line-height: var(--line-height-relaxed);\n}\n\n.feature-list {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n.feature-list li {\n position: relative;\n padding-left: var(--spacing-xl);\n margin-bottom: var(--spacing-md);\n color: var(--text-secondary);\n font-size: var(--font-size-sm);\n line-height: var(--line-height-relaxed);\n}\n\n.feature-list li::before {\n content: '•';\n position: absolute;\n left: 0;\n color: var(--accent-primary);\n font-weight: var(--font-weight-bold);\n}\n\n.technical-features {\n margin-top: var(--spacing-4xl);\n}\n\n.technical-features h3 {\n margin-bottom: var(--spacing-3xl);\n color: var(--text-primary);\n text-align: center;\n}\n\n.tech-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: var(--spacing-2xl);\n}\n\n.tech-item {\n text-align: center;\n padding: var(--spacing-2xl);\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-lg);\n transition: all var(--transition-normal);\n}\n\n.tech-item:hover {\n border-color: var(--border-secondary);\n transform: translateY(-4px);\n box-shadow: var(--shadow-md);\n}\n\n.tech-item h4 {\n margin-bottom: var(--spacing-lg);\n color: var(--text-primary);\n font-size: var(--font-size-lg);\n}\n\n.tech-item p {\n color: var(--text-secondary);\n font-size: var(--font-size-sm);\n line-height: var(--line-height-relaxed);\n margin: 0;\n}\n\n/* Response Tabs */\n.response-tabs {\n display: flex;\n background-color: var(--bg-secondary);\n border-bottom: 1px solid var(--border-primary);\n}\n\n.response-tabs .tab-button {\n flex: 1;\n padding: var(--spacing-md) var(--spacing-lg);\n background: none;\n border: none;\n color: var(--text-secondary);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n transition: all var(--transition-fast);\n border-bottom: 2px solid transparent;\n}\n\n.response-tabs .tab-button:hover {\n color: var(--text-primary);\n background-color: var(--bg-hover);\n}\n\n.response-tabs .tab-button.active {\n color: var(--accent-primary);\n border-bottom-color: var(--accent-primary);\n background-color: var(--bg-primary);\n}\n\n.response-content {\n position: relative;\n}\n\n.tab-content {\n display: none;\n padding: var(--spacing-lg);\n}\n\n.tab-content.active {\n display: block;\n}\n\n/* Headers List */\n.headers-list {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-sm);\n}\n\n.header-item {\n display: flex;\n align-items: flex-start;\n gap: var(--spacing-sm);\n padding: var(--spacing-sm) 0;\n border-bottom: 1px solid var(--border-secondary);\n}\n\n.header-item:last-child {\n border-bottom: none;\n}\n\n.header-name {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n min-width: 120px;\n}\n\n.header-value {\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n color: var(--text-secondary);\n word-break: break-all;\n flex: 1;\n}\n\n/* Loading State */\n.loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: var(--spacing-4xl);\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n}\n\n.loading-spinner {\n display: flex;\n align-items: center;\n gap: var(--spacing-lg);\n color: var(--text-secondary);\n}\n\n.spinner.small {\n width: 24px;\n height: 24px;\n border-width: 2px;\n}\n\n/* Error State */\n.error-state {\n background-color: var(--bg-primary);\n border: 1px solid var(--accent-danger);\n border-radius: var(--radius-md);\n padding: var(--spacing-xl);\n}\n\n.error-content {\n display: flex;\n align-items: flex-start;\n gap: var(--spacing-lg);\n}\n\n.error-icon {\n font-size: 2rem;\n flex-shrink: 0;\n}\n\n.error-message {\n flex: 1;\n}\n\n.error-message h5 {\n color: var(--accent-danger);\n margin-bottom: var(--spacing-sm);\n font-size: var(--font-size-base);\n}\n\n.error-message p {\n color: var(--text-secondary);\n margin-bottom: var(--spacing-lg);\n}\n\n.error-details {\n margin-top: var(--spacing-md);\n}\n\n.error-details summary {\n color: var(--text-tertiary);\n cursor: pointer;\n font-size: var(--font-size-sm);\n margin-bottom: var(--spacing-sm);\n}\n\n.error-details pre {\n background-color: var(--bg-secondary);\n color: var(--text-tertiary);\n font-size: var(--font-size-xs);\n max-height: 200px;\n overflow-y: auto;\n}\n\n/* Interactive Parameter Input Forms */\n.example-request-section {\n margin-top: var(--spacing-4xl);\n background-color: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-lg);\n overflow: hidden;\n}\n\n.example-request-section h3 {\n margin: 0;\n padding: var(--spacing-lg) var(--spacing-xl);\n background-color: var(--bg-tertiary);\n border-bottom: 1px solid var(--border-primary);\n color: var(--text-primary);\n font-size: var(--font-size-base);\n font-weight: var(--font-weight-semibold);\n}\n\n.parameter-form {\n padding: var(--spacing-2xl);\n margin: var(--spacing-lg);\n}\n\n.parameter-section {\n margin-bottom: var(--spacing-xl);\n margin-top: var(--spacing-xl);\n}\n\n.parameter-section:last-child {\n margin-bottom: 0;\n}\n\n.parameter-section h4 {\n margin: 0 0 var(--spacing-lg) var(--spacing-sm);\n color: var(--text-primary);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-semibold);\n text-transform: uppercase;\n letter-spacing: 0.025em;\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n}\n\n.parameter-section h4::before {\n content: '';\n width: 4px;\n height: 4px;\n background-color: var(--accent-primary);\n border-radius: 50%;\n}\n\n.parameter-inputs {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-md);\n margin-left: var(--spacing-sm);\n margin-right: var(--spacing-sm);\n}\n\n.param-input-group {\n display: flex;\n flex-direction: column;\n gap: var(--spacing-sm);\n margin-bottom: var(--spacing-sm);\n}\n\n.param-label {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--text-primary);\n flex-wrap: wrap;\n margin-left: var(--spacing-xs);\n}\n\n.param-input {\n padding: var(--spacing-sm) var(--spacing-md);\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n color: var(--text-primary);\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n transition: all var(--transition-fast);\n width: calc(100% - var(--spacing-md));\n box-sizing: border-box;\n margin: 0 var(--spacing-xs);\n}\n\n.param-input:focus {\n outline: none;\n border-color: var(--border-focus);\n box-shadow: 0 0 0 2px rgba(88, 166, 255, 0.1);\n}\n\n.param-input::placeholder {\n color: var(--text-tertiary);\n font-style: italic;\n}\n\n.param-input.error {\n border-color: var(--accent-danger);\n box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.1);\n}\n\n.param-input.error:focus {\n border-color: var(--accent-danger);\n box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.2);\n}\n\n.param-description {\n font-size: var(--font-size-xs);\n color: var(--text-secondary);\n line-height: var(--line-height-relaxed);\n margin-top: var(--spacing-xs);\n margin-left: var(--spacing-md);\n}\n\n.parameter-error {\n display: none;\n font-size: var(--font-size-xs);\n color: var(--accent-danger);\n margin-top: var(--spacing-xs);\n margin-left: var(--spacing-md);\n}\n\n.parameter-error.show {\n display: block;\n}\n\n.generate-curl-section {\n margin: var(--spacing-2xl) var(--spacing-lg) var(--spacing-lg) var(--spacing-lg);\n padding-top: var(--spacing-2xl);\n border-top: 1px solid var(--border-primary);\n}\n\n.generate-curl-btn {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n padding: var(--spacing-md) var(--spacing-lg);\n background-color: var(--accent-primary);\n color: white;\n border: none;\n border-radius: var(--radius-sm);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n cursor: pointer;\n transition: all var(--transition-fast);\n margin: 0 var(--spacing-sm) var(--spacing-lg) var(--spacing-sm);\n}\n\n.generate-curl-btn:hover {\n background-color: var(--text-link-hover);\n transform: translateY(-1px);\n}\n\n.generate-curl-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n transform: none;\n}\n\n.generated-curl-section {\n margin: var(--spacing-md) var(--spacing-sm) 0 var(--spacing-sm);\n}\n\n.generated-curl-container {\n background-color: var(--bg-primary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n overflow: hidden;\n margin: var(--spacing-xs);\n}\n\n.generated-curl-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: var(--spacing-sm) var(--spacing-md);\n background-color: var(--bg-tertiary);\n border-bottom: 1px solid var(--border-primary);\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--text-secondary);\n}\n\n.generated-curl-code {\n padding: var(--spacing-md) var(--spacing-lg);\n}\n\n.generated-curl-code pre {\n margin: 0;\n font-family: var(--font-family-mono);\n font-size: var(--font-size-sm);\n color: var(--text-primary);\n line-height: var(--line-height-relaxed);\n white-space: pre-wrap;\n word-break: break-all;\n}\n\n.copy-generated-curl {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n padding: var(--spacing-xs) var(--spacing-sm);\n background: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n color: var(--text-tertiary);\n font-size: var(--font-size-xs);\n cursor: pointer;\n transition: all var(--transition-fast);\n}\n\n.copy-generated-curl:hover {\n color: var(--text-secondary);\n background-color: var(--bg-hover);\n border-color: var(--border-secondary);\n}\n\n.copy-generated-curl.copied {\n color: var(--accent-success);\n border-color: var(--accent-success);\n}\n\n/* Responsive design for parameter forms */\n@media (max-width: 768px) {\n .example-request-section h3 {\n padding: var(--spacing-md) var(--spacing-lg);\n font-size: var(--font-size-sm);\n }\n \n .parameter-form {\n padding: var(--spacing-lg);\n margin: var(--spacing-md);\n }\n \n .parameter-section {\n margin-bottom: var(--spacing-xl);\n }\n \n .parameter-section h4 {\n font-size: var(--font-size-xs);\n margin: var(--spacing-xs) 0 var(--spacing-md) var(--spacing-xs);\n }\n \n .parameter-inputs {\n margin-left: var(--spacing-xs);\n margin-right: var(--spacing-xs);\n }\n \n .param-label {\n flex-direction: column;\n align-items: flex-start;\n gap: var(--spacing-xs);\n font-size: var(--font-size-xs);\n margin-left: var(--spacing-xs);\n }\n \n .param-input {\n padding: var(--spacing-xs) var(--spacing-sm);\n font-size: var(--font-size-xs);\n width: calc(100% - var(--spacing-sm));\n margin: 0 var(--spacing-xs);\n }\n \n .generate-curl-section {\n margin: var(--spacing-xl) var(--spacing-md) var(--spacing-md) var(--spacing-md);\n padding-top: var(--spacing-xl);\n }\n \n .generate-curl-btn {\n width: calc(100% - var(--spacing-lg));\n justify-content: center;\n padding: var(--spacing-sm) var(--spacing-md);\n font-size: var(--font-size-xs);\n margin: 0 var(--spacing-xs) var(--spacing-md) var(--spacing-xs);\n }\n \n .generated-curl-section {\n margin: var(--spacing-sm) var(--spacing-xs) 0 var(--spacing-xs);\n }\n \n .generated-curl-container {\n margin: var(--spacing-xs);\n }\n \n .generated-curl-header {\n padding: var(--spacing-xs) var(--spacing-sm);\n font-size: var(--font-size-xs);\n }\n \n .generated-curl-code {\n padding: var(--spacing-sm) var(--spacing-md);\n }\n \n .generated-curl-code pre {\n font-size: var(--font-size-xs);\n }\n}\n\n/* Configuration Cards */\n.config-cards {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: var(--spacing-lg);\n margin: var(--spacing-xl) 0;\n}\n\n.config-card {\n background: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-md);\n padding: var(--spacing-lg);\n transition: all 0.2s ease;\n}\n\n.config-card:hover {\n border-color: var(--accent-primary);\n background: var(--bg-tertiary);\n transform: translateY(-2px);\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\n}\n\n.config-card h4 {\n color: var(--text-primary);\n margin: 0 0 var(--spacing-sm) 0;\n font-size: var(--font-size-base);\n font-weight: 600;\n}\n\n.config-card p {\n color: var(--text-secondary);\n margin: 0;\n font-size: var(--font-size-sm);\n line-height: 1.5;\n}\n\n.config-example {\n margin: var(--spacing-lg) 0 var(--spacing-xl) 0;\n}\n\n.config-example h4 {\n color: var(--text-primary);\n margin: 0 0 var(--spacing-md) 0;\n font-size: var(--font-size-lg);\n font-weight: 600;\n}\n\n.config-guide-link {\n color: var(--accent-primary);\n text-decoration: none;\n font-weight: 500;\n transition: color 0.2s ease;\n}\n\n.config-guide-link:hover {\n color: var(--accent-primary);\n text-decoration: underline;\n}\n\n@media (max-width: 768px) {\n .config-cards {\n grid-template-columns: 1fr;\n gap: var(--spacing-md);\n }\n \n .config-card {\n padding: var(--spacing-md);\n }\n}\n\n/* Internal Link Styling */\n.internal-link {\n color: var(--accent-primary);\n text-decoration: none;\n font-weight: 500;\n transition: color 0.2s ease;\n border-bottom: 1px solid transparent;\n}\n\n.internal-link:hover {\n color: var(--accent-primary);\n text-decoration: none;\n border-bottom-color: var(--accent-primary);\n}\n\n/* Smooth scroll behavior for anchored elements */\nhtml {\n scroll-behavior: smooth;\n}\n\n/* Add some padding to headers when they're targeted by anchors */\nh1[id], h2[id], h3[id], h4[id] {\n scroll-margin-top: 80px; /* Account for fixed header */\n position: relative;\n}\n\n/* Highlight targeted sections briefly */\nh1[id]:target, h2[id]:target, h3[id]:target, h4[id]:target {\n animation: highlightTarget 2s ease-out;\n}\n\n@keyframes highlightTarget {\n 0% {\n background-color: rgba(88, 166, 255, 0.2);\n }\n 100% {\n background-color: transparent;\n }\n}\n\n/* Configuration Tables */\n.table-container {\n margin: var(--spacing-xl) 0;\n overflow-x: auto;\n border-radius: var(--radius-md);\n border: 1px solid var(--border-primary);\n background: var(--bg-secondary);\n}\n\n.config-table {\n width: 100%;\n border-collapse: collapse;\n font-size: var(--font-size-sm);\n background: transparent;\n}\n\n.config-table thead {\n background: var(--bg-tertiary);\n border-bottom: 2px solid var(--border-primary);\n}\n\n.config-table thead th {\n padding: var(--spacing-md) var(--spacing-lg);\n text-align: left;\n font-weight: 600;\n color: var(--text-primary);\n border-right: 1px solid var(--border-primary);\n white-space: nowrap;\n}\n\n.config-table thead th:last-child {\n border-right: none;\n}\n\n.config-table tbody tr {\n border-bottom: 1px solid var(--border-secondary);\n transition: background-color 0.2s ease;\n}\n\n.config-table tbody tr:hover {\n background: rgba(88, 166, 255, 0.05);\n}\n\n.config-table tbody tr:last-child {\n border-bottom: none;\n}\n\n.config-table tbody td {\n padding: var(--spacing-md) var(--spacing-lg);\n color: var(--text-secondary);\n border-right: 1px solid var(--border-secondary);\n vertical-align: top;\n line-height: 1.5;\n}\n\n.config-table tbody td:last-child {\n border-right: none;\n}\n\n/* First column (Variable names) styling */\n.config-table tbody td:first-child {\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-weight: 600;\n color: var(--accent-primary);\n background: rgba(88, 166, 255, 0.08);\n white-space: nowrap;\n}\n\n/* Second column (Required) styling */\n.config-table tbody td:nth-child(2) {\n text-align: center;\n font-weight: 600;\n white-space: nowrap;\n}\n\n/* Third column (Default) styling */\n.config-table tbody td:nth-child(3) {\n font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;\n font-size: var(--font-size-xs);\n color: var(--text-tertiary);\n white-space: nowrap;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n/* Special styling for checkmarks and cross marks */\n.config-table tbody td:nth-child(2):contains('✅') {\n color: #10b981;\n}\n\n.config-table tbody td:nth-child(2):contains('❌') {\n color: #ef4444;\n}\n\n/* Code elements in tables */\n.config-table code {\n background: rgba(88, 166, 255, 0.1);\n padding: 2px 6px;\n border-radius: var(--radius-sm);\n font-size: var(--font-size-xs);\n color: var(--accent-primary);\n}\n\n/* Responsive table behavior */\n@media (max-width: 768px) {\n .table-container {\n margin: var(--spacing-lg) -var(--spacing-md);\n border-left: none;\n border-right: none;\n border-radius: 0;\n }\n \n .config-table {\n font-size: var(--font-size-xs);\n }\n \n .config-table thead th,\n .config-table tbody td {\n padding: var(--spacing-sm) var(--spacing-md);\n }\n \n .config-table tbody td:nth-child(3) {\n max-width: 120px;\n }\n}\n\n@media (max-width: 480px) {\n .config-table thead th,\n .config-table tbody td {\n padding: var(--spacing-xs) var(--spacing-sm);\n }\n \n .config-table thead th {\n font-size: var(--font-size-xs);\n }\n \n .config-table tbody td:nth-child(3) {\n max-width: 80px;\n }\n}\n\n/* Schema/Example Tabs Styling */\n.schema-example-tabs {\n margin-top: var(--spacing-lg);\n}\n\n.tab-headers {\n display: flex;\n border-bottom: 1px solid var(--border-primary);\n margin-bottom: 0;\n}\n\n.tab-header {\n background: none;\n border: none;\n padding: var(--spacing-md) var(--spacing-lg);\n color: var(--text-secondary);\n cursor: pointer;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n border-bottom: 2px solid transparent;\n transition: all var(--transition-fast);\n position: relative;\n}\n\n.tab-header:hover {\n color: var(--text-primary);\n background-color: var(--bg-hover);\n}\n\n.tab-header.active {\n color: var(--accent-primary);\n border-bottom-color: var(--accent-primary);\n background-color: var(--bg-tertiary);\n}\n\n.tab-contents {\n position: relative;\n min-height: 200px;\n}\n\n.tab-content {\n display: none;\n padding: var(--spacing-lg);\n animation: fadeIn 0.2s ease-in-out;\n}\n\n.tab-content.active {\n display: block;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(5px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n/* Generated Example Styling */\n.generated-example-section {\n background-color: var(--bg-secondary);\n border-radius: var(--radius-md);\n overflow: hidden;\n border: 1px solid var(--border-secondary);\n margin-bottom: 0;\n}\n\n.generated-example-section .example-header {\n background-color: var(--bg-tertiary);\n padding: var(--spacing-md) var(--spacing-lg);\n border-bottom: 1px solid var(--border-primary);\n display: flex;\n align-items: center;\n justify-content: space-between;\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--text-primary);\n}\n\n.generated-example-section .code-block {\n margin: 0;\n background-color: var(--bg-primary);\n}\n\n.generated-example-section .code-block pre {\n margin: 0;\n padding: var(--spacing-lg);\n background: transparent;\n border: none;\n max-height: 400px;\n overflow-y: auto;\n}\n\n.example-note {\n padding: var(--spacing-sm) var(--spacing-lg);\n background-color: var(--bg-tertiary);\n border-top: 1px solid var(--border-primary);\n color: var(--text-secondary);\n}\n\n.example-note small {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n font-size: var(--font-size-xs);\n}\n\n/* No Example/Error States */\n.no-example, .example-error {\n padding: var(--spacing-xl);\n text-align: center;\n color: var(--text-secondary);\n background-color: var(--bg-secondary);\n border: 1px dashed var(--border-primary);\n border-radius: var(--radius-md);\n}\n\n.example-error {\n color: var(--accent-warning);\n border-color: var(--accent-warning);\n background-color: rgba(210, 153, 34, 0.05);\n}\n\n.example-error span {\n display: block;\n font-weight: var(--font-weight-medium);\n margin-bottom: var(--spacing-xs);\n}\n\n/* Copy Button Enhancement */\n.copy-button {\n background: var(--bg-secondary);\n border: 1px solid var(--border-primary);\n color: var(--text-secondary);\n padding: var(--spacing-xs);\n border-radius: var(--radius-sm);\n cursor: pointer;\n transition: all var(--transition-fast);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.copy-button:hover {\n background-color: var(--bg-hover);\n color: var(--text-primary);\n border-color: var(--accent-primary);\n}\n\n.copy-button:active {\n transform: scale(0.95);\n}\n\n/* Copy Success Feedback */\n.copy-button.copied {\n background-color: var(--accent-success);\n border-color: var(--accent-success);\n color: white;\n}\n\n.copy-button.copied::after {\n content: '✓';\n position: absolute;\n font-size: var(--font-size-xs);\n}\n\n.copy-button.copied svg {\n opacity: 0;\n}\n\n/* Data Schema Section Styling */\n.data-schema-section {\n margin-top: var(--spacing-md);\n margin-bottom: 0;\n padding: var(--spacing-lg);\n background-color: var(--bg-tertiary);\n border: 1px solid var(--border-secondary);\n border-radius: var(--radius-md);\n}\n\n.data-schema-header {\n display: flex;\n align-items: center;\n gap: var(--spacing-sm);\n margin-bottom: var(--spacing-md);\n font-weight: var(--font-weight-semibold);\n color: var(--text-primary);\n font-size: var(--font-size-sm);\n}\n\n.schema-links {\n display: flex;\n flex-wrap: wrap;\n gap: var(--spacing-sm);\n margin-bottom: var(--spacing-md);\n}\n\n.schema-link {\n display: inline-flex;\n align-items: center;\n gap: var(--spacing-xs);\n padding: var(--spacing-xs) var(--spacing-sm);\n background-color: var(--bg-secondary);\n color: var(--text-link);\n text-decoration: none;\n border: 1px solid var(--border-primary);\n border-radius: var(--radius-sm);\n font-size: var(--font-size-xs);\n font-family: var(--font-family-mono);\n transition: all var(--transition-fast);\n}\n\n.schema-link:hover {\n background-color: var(--bg-hover);\n border-color: var(--accent-primary);\n color: var(--text-link-hover);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.schema-link:active {\n transform: translateY(0);\n}\n\n.schema-link-icon {\n font-size: 0.75rem;\n opacity: 0.7;\n}\n\n.schema-link-name {\n font-weight: var(--font-weight-medium);\n}\n\n.schema-links-note {\n color: var(--text-secondary);\n font-size: var(--font-size-xs);\n font-style: italic;\n margin-bottom: 0;\n}\n\n.schema-links-note small {\n display: flex;\n align-items: center;\n gap: var(--spacing-xs);\n}\n\n/* Responsive schema links */\n@media (max-width: 768px) {\n .schema-links {\n flex-direction: column;\n }\n \n .schema-link {\n justify-content: flex-start;\n padding: var(--spacing-sm);\n }\n}",""]);const i=s},540:n=>{n.exports=function(n){var e=document.createElement("style");return n.setAttributes(e,n.attributes),n.insert(e,n.options),e}},601:n=>{n.exports=function(n){return n[1]}},659:n=>{var e={};n.exports=function(n,t){var r=function(n){if(void 0===e[n]){var t=document.querySelector(n);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(n){t=null}e[n]=t}return e[n]}(n);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(t)}},825:n=>{n.exports=function(n){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var e=n.insertStyleElement(n);return{update:function(t){!function(n,e,t){var r="";t.supports&&(r+="@supports (".concat(t.supports,") {")),t.media&&(r+="@media ".concat(t.media," {"));var a=void 0!==t.layer;a&&(r+="@layer".concat(t.layer.length>0?" ".concat(t.layer):""," {")),r+=t.css,a&&(r+="}"),t.media&&(r+="}"),t.supports&&(r+="}");var o=t.sourceMap;o&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),e.styleTagTransform(r,n,e.options)}(e,n,t)},remove:function(){!function(n){if(null===n.parentNode)return!1;n.parentNode.removeChild(n)}(e)}}}}},e={};function t(r){var a=e[r];if(void 0!==a)return a.exports;var o=e[r]={id:r,exports:{}};return n[r](o,o.exports,t),o.exports}t.n=n=>{var e=n&&n.__esModule?()=>n.default:()=>n;return t.d(e,{a:e}),e},t.d=(n,e)=>{for(var r in e)t.o(e,r)&&!t.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:e[r]})},t.o=(n,e)=>Object.prototype.hasOwnProperty.call(n,e),t.nc=void 0;var r=t(72),a=t.n(r),o=t(825),s=t.n(o),i=t(659),c=t.n(i),l=t(56),p=t.n(l),d=t(540),h=t.n(d),u=t(113),m=t.n(u),f=t(142),g={};g.styleTagTransform=m(),g.setAttributes=p(),g.insert=c().bind(null,"head"),g.domAPI=s(),g.insertStyleElement=h(),a()(f.A,g),f.A&&f.A.locals&&f.A.locals;var y=t(365),b={};b.styleTagTransform=m(),b.setAttributes=p(),b.insert=c().bind(null,"head"),b.domAPI=s(),b.insertStyleElement=h(),a()(y.A,b),y.A&&y.A.locals&&y.A.locals;var v=t(91),k={};function x(n){return x="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},x(n)}function w(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})),t.push.apply(t,r)}return t}function I(n,e,t){return(e=j(e))in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function R(n,e){return function(n){if(Array.isArray(n))return n}(n)||function(n,e){var t=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=t){var r,a,o,s,i=[],c=!0,l=!1;try{if(o=(t=t.call(n)).next,0===e){if(Object(t)!==t)return;c=!1}else for(;!(c=(r=o.call(t)).done)&&(i.push(r.value),i.length!==e);c=!0);}catch(n){l=!0,a=n}finally{try{if(!c&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(l)throw a}}return i}}(n,e)||S(n,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function S(n,e){if(n){if("string"==typeof n)return B(n,e);var t={}.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?B(n,e):void 0}}function B(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t3?(a=m===r)&&(c=o[(i=o[4])?5:(i=3,3)],o[4]=o[5]=n):o[0]<=u&&((a=t<2&&ur||r>m)&&(o[4]=t,o[5]=r,h.n=m,i=0))}if(a||t>1)return s;throw d=!0,r}return function(a,p,m){if(l>1)throw TypeError("Generator is already running");for(d&&1===p&&u(p,m),i=p,c=m;(e=i<2?n:c)||!d;){o||(i?i<3?(i>1&&(h.n=-1),u(i,c)):h.n=c:h.v=c);try{if(l=2,o){if(i||(a="next"),e=o[a]){if(!(e=e.call(o,c)))throw TypeError("iterator result is not an object");if(!e.done)return e;c=e.value,i<2&&(i=0)}else 1===i&&(e=o.return)&&e.call(o),i<2&&(c=TypeError("The iterator does not provide a '"+a+"' method"),i=1);o=n}else if((e=(d=h.n<0)?c:t.call(r,h))!==s)break}catch(e){o=n,i=1,c=e}finally{l=1}}return{value:e,done:d}}}(t,a,o),!0),l}var s={};function i(){}function c(){}function l(){}e=Object.getPrototypeOf;var p=[][r]?e(e([][r]())):(q(e={},r,function(){return this}),e),d=l.prototype=i.prototype=Object.create(p);function h(n){return Object.setPrototypeOf?Object.setPrototypeOf(n,l):(n.__proto__=l,q(n,a,"GeneratorFunction")),n.prototype=Object.create(d),n}return c.prototype=l,q(d,"constructor",l),q(l,"constructor",c),c.displayName="GeneratorFunction",q(l,a,"GeneratorFunction"),q(d),q(d,a,"Generator"),q(d,r,function(){return this}),q(d,"toString",function(){return"[object Generator]"}),(T=function(){return{w:o,m:h}})()}function q(n,e,t,r){var a=Object.defineProperty;try{a({},"",{})}catch(n){a=0}q=function(n,e,t,r){function o(e,t){q(n,e,function(n){return this._invoke(e,t,n)})}e?a?a(n,e,{value:t,enumerable:!r,configurable:!r,writable:!r}):n[e]=t:(o("next",0),o("throw",1),o("return",2))},q(n,e,t,r)}function A(n,e,t,r,a,o,s){try{var i=n[o](s),c=i.value}catch(n){return void t(n)}i.done?e(c):Promise.resolve(c).then(r,a)}function E(n,e){for(var t=0;t-\n Send a serialized transaction and receive back a naive fee estimate.\n Note: `partialFee` does not include any tips that you may add to increase\n a transaction's priority. See the reference on `compute_fee`.\n Replaces `/tx/fee-estimate` from versions < v1.0.0.\n Substrate Reference:\n - `RuntimeDispatchInfo`: https://crates.parity.io/pallet_transaction_payment_rpc_runtime_api/struct.RuntimeDispatchInfo.html\n - `query_info`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.query_info\n - `compute_fee`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee\n operationId: feeEstimateTransaction\n requestBody:\n $ref: '#/components/requestBodies/Transaction'\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionFeeEstimate'\n \"400\":\n description: fee estimation failure\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionFeeEstimateFailure'\n /transaction/material:\n get:\n tags:\n - transaction\n summary: Get all the network information needed to construct a transaction offline.\n description: Returns the material that is universal to constructing any\n signed transaction offline. Replaces `/tx/artifacts` from versions < v1.0.0.\n operationId: getTransactionMaterial\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the transaction construction\n material.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: noMeta\n in: query\n description: DEPRECATED! This is no longer supported\n schema:\n type: boolean\n default: false\n - name: metadata\n in: query\n description: Specifies the format of the metadata to be returned. Accepted values are\n 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata.\n When `metadata` is not inputted, the `metadata` field will be absent.\n schema:\n type: string\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionMaterial'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /transaction/material/{metadataVersion}:\n get:\n tags:\n - transaction\n summary: Get all the network information needed to construct a transaction offline and\n the version of metadata specified in `metadataVersion`.\n description: Returns all the materials necessary for constructing any signed transactions\n offline.\n operationId: getTransactionMaterialwithVersionedMetadata\n parameters:\n - name: metadataVersion\n in: path\n description: The version of metadata. The input is expected in a `vX` format, where `X`\n represents the version number (e.g. `v14`, `v15`). By default, metadata is outputted\n in 'json' format, unless the `metadata` query parameter is provided, in which case it\n can be either in 'json' or 'scale' format.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve the transaction construction\n material.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Specifies the format of the metadata to be returned. Accepted values are\n 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata.\n schema:\n type: string\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionMaterial'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/assets/{assetId}/asset-info:\n get:\n tags:\n - pallets\n summary: Get information and metadata associated with an asset.\n description: Returns information associated with an asset which includes\n the assets `AssetDetails` and `AssetMetadata`.\n operationId: getAssetById\n parameters:\n - name: assetId\n in: path\n description: The unsignedInteger Id of an asset.\n required: true\n schema:\n type: string\n format: unsignedInteger\n - name: at\n in: query\n description: Block at which to retrieve the assetInfo.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving asset info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n oneOf:\n - $ref: '#/components/schemas/PalletsAssetsInfo'\n - type: array\n items:\n $ref: '#/components/schemas/PalletsAssetsInfo'\n description: Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\n /pallets/asset-conversion/liquidity-pools:\n get:\n tags:\n - pallets\n summary: Get information related to existing liquidity pools.\n description: Returns a list of the existing liquidity pools and its corresponding \n tokens at a given block height. If no block is specified, it returns the latest list\n available.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the liquidity pools information.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving liquidity pools info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n oneOf:\n - $ref: '#/components/schemas/LiquidityPools'\n - type: array\n items:\n $ref: '#/components/schemas/LiquidityPools'\n description: Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/asset-conversion/next-available-id:\n get:\n tags:\n - pallets\n summary: Get the next available liquidity pool id.\n description: Returns the next available liquidity pool's id at a given \n block height. If no block is specified, it returns the latest list\n available.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the next liquidity pool's id.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving next available id. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n oneOf:\n - $ref: '#/components/schemas/NextAvailableId'\n - type: array\n items:\n $ref: '#/components/schemas/NextAvailableId'\n description: Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/foreign-assets:\n get:\n tags:\n - pallets\n summary: Get information and metadata associated with foreign assets.\n description: Returns information associated with every foreign asset which includes\n the assets `AssetDetails` and `AssetMetadata`.\n operationId: getForeignAssets\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the foreign assets.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving foreign assets info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n description: An array of foreign assets.\n $ref: '#/components/schemas/PalletsForeignAssets'\n /pallets/nomination-pools/info:\n get:\n tags:\n - pallets\n summary: Get information associated with nomination pools.\n description: Returns information and metadata for nomination pools including pool counters and limits.\n operationId: getNominationPoolInfo\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the nomination pool info.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving nomination pools info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletsNominationPoolsInfo'\n /pallets/nomination-pools/{poolId}:\n get:\n tags:\n - pallets\n summary: Get information and metadata associated with a nomination pool.\n description: Returns information associated with a nomination pool which includes\n the nomination pools' `bondedPool`, `rewardPool` and `metadata`.\n operationId: getNominationPoolById\n parameters:\n - name: poolId\n in: path\n description: The unsignedInteger Id of a nomination pool.\n required: true\n schema:\n type: string\n format: unsignedInteger\n - name: at\n in: query\n description: Block at which to retrieve the nomination pool.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving nomination pool info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletsNominationPool'\n /pallets/on-going-referenda:\n get:\n tags:\n - pallets\n summary: Get a list of all on-going referenda that have track `root (0)` and `whitelisted (1)`,\n along with their associated information.\n description: Returns information associated with on-going referenda which includes\n the referendum's `enactment`, `submitted` and `deciding` fields.\n operationId: getPalletOnGoingReferenda\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the on-going referenda.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving on-going referenda info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletsOnGoingReferenda'\n /pallets/{palletId}/consts:\n get:\n tags:\n - pallets\n summary: Get a list of constants for a pallet.\n description: Returns a list of const item metadata for constant items of the\n specified palletId.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is\n specified in the runtime metadata.'\n required: true\n schema:\n type: string\n - name: onlyIds\n in: query\n description: Only return the names (IDs) of the const items instead of every constant's metadata.\n required: false\n schema:\n type: boolean\n - name: at\n in: query\n description: Block at which to retrieve a list of\n the pallet's constant items.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet constants. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n description: Pallet info and Array of constantItemIds.\n $ref: '#/components/schemas/PalletConstants'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find pallet with palletId\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/{palletId}/consts/{constantItemId}:\n get:\n tags:\n - pallets\n summary: Get the value of a constant item.\n description: Returns the value stored under the constantItemId.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is\n specified in the runtime metadata.'\n required: true\n schema:\n type: string\n - name: constantItemId\n in: path\n description: Id of the const item to query for.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to query the const item at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Include the const items metadata (including documentation)\n if set to true.\n required: false\n schema:\n default: false\n type: boolean\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet constant item. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletConstantsItem'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find resource with id\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/{palletId}/dispatchables:\n get:\n tags:\n - pallets\n summary: Get a list of dispatchables for a pallet.\n description: Returns a list of dispatchable item metadata for distpachable items of the\n specified palletId.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is\n specified in the runtime metadata.'\n required: true\n schema:\n type: string\n - name: onlyIds\n in: query\n description: Only return the names (IDs) of the dispatchable items instead of every dispatchable's metadata.\n required: false\n schema:\n type: boolean\n - name: at\n in: query\n description: Block at which to retrieve dispatchable metadata.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving dispatchable metadata. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n description: Pallet info and Array of dispatchableItemIds.\n $ref: '#/components/schemas/PalletDispatchables'\n \"400\":\n description: invalid blockId supplied for at query param, or invalid parameter combination\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find pallet with palletId\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/{palletId}/dispatchables/{dispatchableItemId}:\n get:\n tags:\n - pallets\n summary: Get the value of a dispatchable item.\n description: Returns the value stored under the dispatchableItemId.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is\n specified in the runtime metadata.'\n required: true\n schema:\n type: string\n - name: dispatchableItemId\n in: path\n description: Id of the dispatchable item to query for.\n required: true\n schema:\n type: string\n - name: metadata\n in: query\n description: Include the dispatchable items metadata (including documentation)\n if set to true.\n required: false\n schema:\n default: false\n type: boolean\n - name: at\n in: query\n description: Block at which to retrieve dispatchable metadata.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving dispatchable metadata. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletDispatchablesItem'\n \"400\":\n description: invalid blockId supplied for at query param, or invalid parameter combination\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find resource with id\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/{palletId}/errors:\n get:\n tags:\n - pallets\n summary: Get a list of errors for a pallet.\n description: Returns a list of error item metadata for error items of the\n specified palletId.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to read error metadata for. Note: the pallet name must match what is\n specified in the runtime metadata.'\n required: true\n schema:\n type: string\n - name: onlyIds\n in: query\n description: Only return the names (IDs) of the error items instead of every error's metadata.\n required: false\n schema:\n type: boolean\n - name: at\n in: query\n description: Block at which to retrieve a list of\n the pallet's error items.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet errors. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n description: Pallet info and Array of errorItemIds.\n $ref: '#/components/schemas/PalletErrors'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find pallet with palletId\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/{palletId}/errors/{errorItemId}:\n get:\n tags:\n - pallets\n summary: Get the value of an error item.\n description: Returns the value stored under the errorItemId.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to read error metadata for. Note: the pallet name must match what is\n specified in the runtime metadata.'\n required: true\n schema:\n type: string\n - name: errorItemId\n in: path\n description: Id of the error item to query for.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to query the error item at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Include the error items metadata (including documentation)\n if set to true.\n required: false\n schema:\n default: false\n type: boolean\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet error item. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletErrorsItem'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find resource with id\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/{palletId}/events:\n get:\n tags:\n - pallets\n summary: Get a list of events for a pallet.\n description: Returns a list of event item metadata for event items of the\n specified palletId.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to read event metadata for. Note: the pallet name must match what is\n specified in the runtime metadata.'\n required: true\n schema:\n type: string\n - name: onlyIds\n in: query\n description: Only return the names (IDs) of the event items instead of every event's metadata.\n required: false\n schema:\n type: boolean\n - name: at\n in: query\n description: Block at which to retrieve a list of\n the pallet's event items.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet events. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n description: Pallet info and Array of eventItemIds.\n $ref: '#/components/schemas/PalletEvents'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find pallet with palletId\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/{palletId}/events/{eventItemId}:\n get:\n tags:\n - pallets\n summary: Get the value of an event item.\n description: Returns the value stored under the eventItemId.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to read event metadata for. Note: the pallet name must match what is\n specified in the runtime metadata.'\n required: true\n schema:\n type: string\n - name: eventItemId\n in: path\n description: Id of the event item to query for.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to query the event item at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Include the event items metadata (including documentation)\n if set to true.\n required: false\n schema:\n default: false\n type: boolean\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet event item. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletEventsItem'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find resource with id\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /runtime/metadata:\n get:\n tags:\n - runtime\n summary: Get the runtime metadata in decoded, JSON form.\n description: >-\n Returns the runtime metadata as a JSON object.\n Substrate Reference:\n - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html\n - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the metadata at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/RuntimeMetadata'\n /runtime/metadata/{metadataVersion}:\n get:\n tags:\n - runtime\n summary: Get the requested version of runtime metadata in decoded, JSON form.\n description: >-\n Returns the requested version of runtime metadata as a JSON object.\n Substrate Reference:\n - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html\n - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\n parameters:\n - name: metadataVersion\n in: path\n description: The version of metadata. The input is expected in a `vX` format, where `X`\n represents the version number (e.g. `v14`, `v15`).\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve the metadata at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/RuntimeMetadata'\n /runtime/metadata/versions:\n get:\n tags:\n - runtime\n summary: Get the available versions of runtime metadata.\n description: >-\n Returns the available versions of runtime metadata.\n Substrate Reference:\n - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html\n - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the metadata versions at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n type: array\n items:\n type: string\n description: An array with the available metadata versions.\n /runtime/code:\n get:\n tags:\n - runtime\n summary: Get the runtime wasm blob.\n description: Returns the runtime Wasm blob in hex format.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the runtime wasm blob at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/RuntimeCode'\n /runtime/spec:\n get:\n tags:\n - runtime\n summary: Get version information of the Substrate runtime.\n description: Returns version information related to the runtime.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve runtime version information at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/RuntimeSpec'\n /rc/runtime/spec:\n get:\n tags:\n - rc runtime\n summary: Get version information of the relay chain Substrate runtime.\n description: Returns version information related to the relay chain runtime. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for runtime specification.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve runtime version information at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/RuntimeSpec'\n /rc/runtime/metadata:\n get:\n tags:\n - rc runtime\n summary: Get the relay chain's metadata.\n description: Returns the relay chain's runtime metadata in decoded JSON format. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for metadata.\n parameters:\n - name: at\n in: query\n description: Block hash or height at which to query. If not provided, queries finalized head.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/RuntimeMetadata'\n /rc/runtime/metadata/versions:\n get:\n tags:\n - rc runtime\n summary: Get the available versions of relay chain's metadata.\n description: Returns the available versions of the relay chain's metadata. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for metadata versions.\n parameters:\n - name: at\n in: query\n description: Block hash or height at which to query. If not provided, queries finalized head.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n type: array\n items:\n type: string\n /rc/runtime/metadata/{metadataVersion}:\n get:\n tags:\n - rc runtime\n summary: Get the relay chain's metadata at a specific version.\n description: Returns the relay chain's runtime metadata at a specific version in decoded JSON format. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for versioned metadata.\n parameters:\n - name: metadataVersion\n in: path\n description: The specific version of the Metadata to query. The input must conform to the 'vX' format, where 'X' represents the version number (examples 'v14', 'v15').\n required: true\n schema:\n type: string\n pattern: '^v[0-9]+$'\n - name: at\n in: query\n description: Block hash or height at which to query. If not provided, queries finalized head.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/RuntimeMetadata'\n \"400\":\n description: Invalid version format or version not available\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/runtime/code:\n get:\n tags:\n - rc runtime\n summary: Get the Wasm code blob of the relay chain Substrate runtime.\n description: Returns the relay chain's runtime code in Wasm format. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for runtime code.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve runtime code information at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/RuntimeCode'\n /rc/pallets/on-going-referenda:\n get:\n tags:\n - rc pallets\n summary: Get relay chain ongoing referenda.\n description: Returns information about ongoing referenda in the relay chain.\n operationId: getRcPalletsOnGoingReferenda\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve relay chain referenda information.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletsOnGoingReferenda'\n \"400\":\n description: invalid blockId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/consts:\n get:\n tags:\n - rc pallets\n summary: Get a list of constants for a relay chain pallet.\n description: Returns a list of constant metadata for the specified relay chain pallet.\n operationId: getRcPalletsConsts\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read constants from.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet constants.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: onlyIds\n in: query\n description: Only return constant IDs, not values and metadata.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletConstants'\n \"400\":\n description: invalid palletId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/consts/{constantItemId}:\n get:\n tags:\n - rc pallets\n summary: Get a constant from a relay chain pallet by its ID.\n description: Returns information about a specific constant from the specified relay chain pallet.\n operationId: getRcPalletsConstsItem\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read the constant from.\n required: true\n schema:\n type: string\n - name: constantItemId\n in: path\n description: Name of the constant to retrieve.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet constant.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Include metadata for the constant.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletConstantsItem'\n \"400\":\n description: invalid palletId or constantItemId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/dispatchables:\n get:\n tags:\n - rc pallets\n summary: Get a list of dispatchables for a relay chain pallet.\n description: Returns a list of dispatchable metadata for the specified relay chain pallet.\n operationId: getRcPalletsDispatchables\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read dispatchables from.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet dispatchables.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: onlyIds\n in: query\n description: Only return dispatchable IDs, not values and metadata.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletDispatchables'\n \"400\":\n description: invalid palletId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/dispatchables/{dispatchableItemId}:\n get:\n tags:\n - rc pallets\n summary: Get a dispatchable from a relay chain pallet by its ID.\n description: Returns information about a specific dispatchable from the specified relay chain pallet.\n operationId: getRcPalletsDispatchablesItem\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read the dispatchable from.\n required: true\n schema:\n type: string\n - name: dispatchableItemId\n in: path\n description: Name of the dispatchable to retrieve.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet dispatchable.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Include metadata for the dispatchable.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletDispatchablesItem'\n \"400\":\n description: invalid palletId or dispatchableItemId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/errors:\n get:\n tags:\n - rc pallets\n summary: Get a list of errors for a relay chain pallet.\n description: Returns a list of error metadata for the specified relay chain pallet.\n operationId: getRcPalletsErrors\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read errors from.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet errors.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: onlyIds\n in: query\n description: Only return error IDs, not values and metadata.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletErrors'\n \"400\":\n description: invalid palletId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/errors/{errorItemId}:\n get:\n tags:\n - rc pallets\n summary: Get an error from a relay chain pallet by its ID.\n description: Returns information about a specific error from the specified relay chain pallet.\n operationId: getRcPalletsErrorsItem\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read the error from.\n required: true\n schema:\n type: string\n - name: errorItemId\n in: path\n description: Name of the error to retrieve.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet error.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Include metadata for the error.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletErrorsItem'\n \"400\":\n description: invalid palletId or errorItemId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/events:\n get:\n tags:\n - rc pallets\n summary: Get a list of events for a relay chain pallet.\n description: Returns a list of event metadata for the specified relay chain pallet.\n operationId: getRcPalletsEvents\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read events from.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet events.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: onlyIds\n in: query\n description: Only return event IDs, not values and metadata.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletEvents'\n \"400\":\n description: invalid palletId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/events/{eventItemId}:\n get:\n tags:\n - rc pallets\n summary: Get an event from a relay chain pallet by its ID.\n description: Returns information about a specific event from the specified relay chain pallet.\n operationId: getRcPalletsEventsItem\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read the event from.\n required: true\n schema:\n type: string\n - name: eventItemId\n in: path\n description: Name of the event to retrieve.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet event.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Include metadata for the event.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletEventsItem'\n \"400\":\n description: invalid palletId or eventItemId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/storage:\n get:\n tags:\n - rc pallets\n summary: Get a list of storage items for a relay chain pallet.\n description: Returns a list of storage item metadata for the specified relay chain pallet.\n operationId: getRcPalletsStorage\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read storage items from.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet storage items.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: onlyIds\n in: query\n description: Only return storage item IDs, not values and metadata.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletStorage'\n \"400\":\n description: invalid palletId supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/{palletId}/storage/{storageItemId}:\n get:\n tags:\n - rc pallets\n summary: Get a storage item from a relay chain pallet by its ID.\n description: Returns the value stored under the specified storage item ID from the relay chain pallet. For maps, query parameter keys are required.\n operationId: getRcPalletsStorageItem\n parameters:\n - name: palletId\n in: path\n description: Name or index of the pallet to read the storage item from.\n required: true\n schema:\n type: string\n - name: storageItemId\n in: path\n description: Name of the storage item to retrieve.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve relay chain pallet storage item.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: keys\n in: query\n description: Storage map keys for map-type storage items. Required for map and double map storage items.\n required: false\n schema:\n type: array\n items:\n type: string\n - name: metadata\n in: query\n description: Include metadata for the storage item.\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletStorageItem'\n \"400\":\n description: invalid palletId, storageItemId, or keys supplied\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/staking/progress:\n get:\n tags:\n - rc pallets\n - rc staking\n summary: Get progress on the general Staking pallet system on Relay Chain.\n description: Returns information on the progress of key components of the\n staking system and estimates of future points of interest. If you are querying\n from Asset Hub for staking progress, this endpoint requires multi chain connections\n between the relay chain, and asset hub itself. Set the asset hub rpc to SAS_SUBSTRATE_URL,\n and add the relay chain to the SAS_SUBSTRATE_MULTI_CHAIN_URL env var. Refer to the README for the structure\n of the env vars. The `useRcBlock` parameter allows querying Asset Hub state using relay chain\n block numbers, enabling post-migration infrastructure to continue using relay chain\n block identifiers while accessing Asset Hub data.\n operationId: getRcStakingProgress\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve a staking progress report.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n oneOf:\n - $ref: '#/components/schemas/StakingProgress'\n - type: array\n items:\n $ref: '#/components/schemas/StakingProgress'\n description: Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\n \"400\":\n description: invalid blockId supplied for at query param, or invalid parameter combination\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/pallets/staking/validators:\n get:\n tags:\n - rc pallets\n - rc staking\n summary: Get all validators (active/waiting) of a specific chain.\n description: Returns a list of all validators addresses and their corresponding status which can be either\n active or waiting. For declared validators, it also includes their commission rate (as parts-per-billion)\n and nomination blocking status. It will also return a list of active validators that will not be part of\n the next era for staking. They will be under the key \"validatorsToBeChilled\". It's important to note,\n that addresses can be present in both the \"validators\" key, and \"validatorsToBeChilled\". Commission and\n blocked properties are not present for active validators that have been chilled.\n operationId: getRcStakingValidators\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the list of validators.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema: \n $ref: '#/components/schemas/StakingValidators'\n \"400\":\n description: invalid blockId supplied for at query param, or invalid parameter combination\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n\n /rc/transaction:\n post:\n tags:\n - rc transaction\n summary: Submit a transaction to the relay chain node's transaction pool.\n description: Accepts a valid signed extrinsic for the relay chain. Replaces `/tx` from versions\n < v1.0.0.\n operationId: submitRcTransaction\n requestBody:\n $ref: '#/components/requestBodies/Transaction'\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionSuccess'\n \"400\":\n description: failed to parse or submit transaction\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionFailure'\n /rc/transaction/dry-run:\n post:\n tags:\n - rc transaction\n summary: Dry run an extrinsic on the relay chain.\n description: Use the `dryRun` call to simulate the submission of a transaction\n to the relay chain without executing it so that you can check for potential errors and\n validate the expected outcome.\n operationId: dryrunRcTransaction\n requestBody:\n $ref: '#/components/requestBodies/TransactionDryRun'\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionDryRun'\n \"400\":\n description: failed to dry-run transaction\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionFailure'\n /rc/transaction/fee-estimate:\n post:\n tags:\n - rc transaction\n summary: Receive a fee estimate for a relay chain transaction.\n description: >-\n Send a serialized transaction and receive back a naive fee estimate for the relay chain.\n Note: `partialFee` does not include any tips that you may add to increase\n a transaction's priority. See the reference on `compute_fee`.\n Replaces `/tx/fee-estimate` from versions < v1.0.0.\n Substrate Reference:\n - `RuntimeDispatchInfo`: https://crates.parity.io/pallet_transaction_payment_rpc_runtime_api/struct.RuntimeDispatchInfo.html\n - `query_info`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.query_info\n - `compute_fee`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee\n operationId: feeEstimateRcTransaction\n requestBody:\n $ref: '#/components/requestBodies/Transaction'\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionFeeEstimate'\n \"400\":\n description: fee estimation failure\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionFeeEstimateFailure'\n /rc/transaction/material:\n get:\n tags:\n - rc transaction\n summary: Get all the relay chain network information needed to construct a transaction offline.\n description: Returns the material that is universal to constructing any\n signed transaction offline for the relay chain. Replaces `/tx/artifacts` from versions < v1.0.0.\n operationId: getRcTransactionMaterial\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the transaction construction\n material from the relay chain.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: noMeta\n in: query\n description: DEPRECATED! This is no longer supported\n schema:\n type: boolean\n default: false\n - name: metadata\n in: query\n description: Specifies the format of the metadata to be returned. Accepted values are\n 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata.\n When `metadata` is not inputted, the `metadata` field will be absent.\n schema:\n type: string\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionMaterial'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /rc/transaction/material/{metadataVersion}:\n get:\n tags:\n - rc transaction\n summary: Get all the relay chain network information needed to construct a transaction offline and\n the version of metadata specified in `metadataVersion`.\n description: Returns all the materials necessary for constructing any signed transactions\n offline for the relay chain.\n operationId: getRcTransactionMaterialwithVersionedMetadata\n parameters:\n - name: metadataVersion\n in: path\n description: The version of metadata. The input is expected in a `vX` format, where `X`\n represents the version number (e.g. `v14`, `v15`). By default, metadata is outputted\n in 'json' format, unless the `metadata` query parameter is provided, in which case it\n can be either in 'json' or 'scale' format.\n required: true\n schema:\n type: string\n - name: at\n in: query\n description: Block at which to retrieve the transaction construction\n material from the relay chain.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Specifies the format of the metadata to be returned. Accepted values are\n 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata.\n schema:\n type: string\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/TransactionMaterial'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n\n /pallets/{palletId}/storage:\n get:\n tags:\n - pallets\n summary: Get a list of storage items for a pallet.\n description: Returns a list of storage item metadata for storage items of the\n specified palletId.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to query the storage of. Note: the pallet name must match what is\n specified in the runtime metadata.'\n required: true\n schema:\n type: string\n - name: onlyIds\n in: query\n description: Only return the names (IDs) of the storage items instead of all of each storage\n item's metadata.\n required: false\n schema:\n type: boolean\n - name: at\n in: query\n description: Block at which to retrieve a list of\n the pallet's storage items.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet storage. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n description: Pallet info and Array of storageItemIds.\n $ref: '#/components/schemas/PalletStorage'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find pallet with palletId\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/{palletId}/storage/{storageItemId}:\n get:\n tags:\n - pallets\n summary: Get the value of a storage item.\n description: Returns the value stored under the storageItemId. If it is a\n map, query param key1 is required. If the storage item is double map\n query params key1 and key2 are required.\n parameters:\n - name: palletId\n in: path\n description: 'Name or index of the pallet to query the storage of. Note: pallet name aligns with\n pallet name as specified in runtime metadata.'\n required: true\n schema:\n type: string\n - name: storageItemId\n in: path\n description: Id of the storage item to query for.\n required: true\n schema:\n type: string\n - name: keys\n in: query\n description: Set of N keys used for querying a storage map. It should be queried using the \n following format - ?keys[]=key1&keys[]=key2. Order matters, as it will determine the \n order the keys are passed into the storage calls.\n required: false\n schema:\n type: array\n items:\n type: string\n description: An array of storage keys.\n - name: at\n in: query\n description: Block at which to query the storage item at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: metadata\n in: query\n description: Include the storage items metadata (including documentation)\n if set to true.\n required: false\n schema:\n default: false\n type: boolean\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet storage item. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/PalletStorageItem'\n \"400\":\n description: invalid blockId supplied for at query param\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n \"404\":\n description: could not find resource with id\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/pool-assets/{assetId}/asset-info:\n get:\n tags:\n - pallets\n summary: Get information and metadata associated with a pool asset.\n description: Returns information associated with a pool asset which includes\n the assets `AssetDetails` and `AssetMetadata`.\n operationId: getPoolAssetById\n parameters:\n - name: assetId\n in: path\n description: The unsignedInteger Id of a pool asset.\n required: true\n schema:\n type: string\n format: unsignedInteger\n - name: at\n in: query\n description: Block at which to retrieve the assetInfo.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pool asset info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n oneOf:\n - $ref: '#/components/schemas/PalletsPoolAssetsInfo'\n - type: array\n items:\n $ref: '#/components/schemas/PalletsPoolAssetsInfo'\n description: Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\n /pallets/staking/progress:\n get:\n tags:\n - staking\n - pallets\n summary: Get progress on the general Staking pallet system.\n description: Returns information on the progress of key components of the\n staking system and estimates of future points of interest. If you are querying\n from Asset Hub for staking progress, this endpoint requires multi chain connections\n between the relay chain, and asset hub itself. Set the asset hub rpc to SAS_SUBSTRATE_URL,\n and add the relay chain to the SAS_SUBSTRATE_MULTI_CHAIN_URL env var. Refer to the README for the structure\n of the env vars. The `useRcBlock` parameter allows querying Asset Hub state using relay chain\n block numbers, enabling post-migration infrastructure to continue using relay chain\n block identifiers while accessing Asset Hub data.\n operationId: getStakingProgress\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve a staking progress report.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving staking progress report. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n oneOf:\n - $ref: '#/components/schemas/StakingProgress'\n - type: array\n items:\n $ref: '#/components/schemas/StakingProgress'\n description: Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\n \"400\":\n description: invalid blockId supplied for at query param, or invalid parameter combination\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /pallets/staking/validators:\n get:\n tags:\n - staking\n - pallets\n summary: Get all validators (active/waiting) of a specific chain.\n description: Returns a list of all validators addresses and their corresponding status which can be either\n active or waiting. For declared validators, it also includes their commission rate and nomination blocking\n status. It will also return a list of active validators that will not be part of the next era for staking.\n They will be under the key \"validatorsToBeChilled\". It's important to note, that addresses can be present\n in both the \"validators\" key, and \"validatorsToBeChilled\". Commission and blocked properties are not present\n for active validators that have been chilled.\n operationId: getStakingValidators\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the list of validators.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: useRcBlock\n in: query\n description: When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving staking validators. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\n required: false\n schema:\n type: boolean\n description: When set to 'true', uses relay chain block mode with the 'at' parameter.\n - name: useRcBlockFormat\n in: query\n description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\n required: false\n schema:\n type: string\n enum: [array, object]\n description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema: \n $ref: '#/components/schemas/StakingValidators'\n \"400\":\n description: invalid blockId supplied for at query param, or invalid parameter combination\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n /paras:\n get:\n tags:\n - paras\n summary: |\n [DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all registered paras (parathreads & parachains).\n description: Returns all registered parachains and parathreads with lifecycle info.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve paras list at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Paras'\n /paras/leases/current:\n get:\n tags:\n - paras\n summary: |\n [DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get general information about the current lease period.\n description: |\n Returns an overview of the current lease period, including lease holders.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve current lease period info at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n - name: currentLeaseHolders\n in: query\n description: |\n Wether or not to include the `currentLeaseHolders` property. Inclusion\n of the property will likely result in a larger payload and increased\n response time.\n required: false\n schema:\n type: boolean\n default: true\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ParasLeasesCurrent'\n /paras/auctions/current:\n get:\n tags:\n - paras\n summary: |\n [DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the status of the current auction.\n description: |\n Returns an overview of the current auction. There is only one auction\n at a time. If there is no auction most fields will be `null`. If the current\n auction phase is in `vrfDelay` and you are looking to retrieve the latest winning\n bids, it is advised to query one block before `finishEnd` in the `endingPeriod` phase\n for that auction as there technically are no winners during the `vrfDelay` and thus\n the field is `null`.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve auction progress at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ParasAuctionsCurrent'\n /paras/crowdloans:\n get:\n tags:\n - paras\n summary: |\n [DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all stored crowdloans.\n description: |\n Returns a list of all the crowdloans and their associated paraIds.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve the list of paraIds that have crowdloans at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ParasCrowdloans'\n /paras/{paraId}/crowdloan-info:\n get:\n tags:\n - paras\n summary: |\n [DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get crowdloan information for a `paraId`.\n description: |\n Returns crowdloan's `fundInfo` and the set of `leasePeriods` the crowdloan`\n covers.\n parameters:\n - name: paraId\n in: path\n description: paraId to query the crowdloan information of.\n required: true\n schema:\n type: number\n - name: at\n in: query\n description: Block at which to retrieve info at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ParasCrowdloanInfo'\n /paras/{paraId}/lease-info:\n get:\n tags:\n - paras\n summary: |\n [DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get current and future leases as well as the lifecycle stage for a given `paraId`.\n description: |\n Returns a list of leases that belong to the `paraId` as well as the\n `paraId`'s current lifecycle stage.\n parameters:\n - name: paraId\n in: path\n description: paraId to query the crowdloan information of.\n required: true\n schema:\n type: number\n - name: at\n in: query\n description: Block at which to retrieve para's leases at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ParasLeaseInfo'\n /paras/head/included-candidates:\n get:\n tags:\n - paras\n summary: |\n [DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the included (backed and considered available) parachain candidates at the\n specified block height or at the most recent finalized head otherwise.\n description: |\n Returns an object with all the parachain id's as keys, and their headers as values.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve para's heads at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ParasHeaders'\n /paras/head/backed-candidates:\n get:\n tags:\n - paras\n summary: |\n [DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the backed parachain candidates at the specified block height or at the most recent finalized head otherwise.\n description: |\n Returns an object with all the parachain id's as keys, and their headers as values.\n parameters:\n - name: at\n in: query\n description: Block at which to retrieve para's heads at.\n required: false\n schema:\n type: string\n description: Block identifier, as the block height or block hash.\n format: unsignedInteger or $hex\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ParasHeaders'\n /paras/{number}/inclusion:\n get:\n tags:\n - paras\n summary: Get relay chain inclusion information for a specific parachain block.\n description: |\n Returns the relay chain block number where a parachain block was included,\n along with the relay parent number used during production. This endpoint helps\n track the lifecycle of parachain blocks from production to inclusion.\n\n **Note**: This endpoint requires a multi-chain connection (both parachain and relay chain APIs).\n parameters:\n - name: number\n in: path\n description: Parachain block number to find inclusion information for.\n required: true\n schema:\n type: string\n format: unsignedInteger\n - name: depth\n in: query\n description: Maximum number of relay chain blocks to search for inclusion (must be divisible by 5, max 100).\n required: false\n schema:\n type: integer\n minimum: 5\n maximum: 100\n multipleOf: 5\n default: 10\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ParachainInclusion'\n \"400\":\n description: Invalid depth parameter\n content:\n application/json:\n schema:\n type: object\n properties:\n error:\n type: string\n example: \"Depth parameter must be divisible by 5 for optimal performance.\"\n /experimental/blocks/head/traces:\n get:\n tags:\n - trace\n summary: |\n [Experimental - subject to breaking change.] Get traces for the most\n recently finalized block.\n description: |\n Returns traces (spans and events) of the most recently finalized block from\n RPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140)\n for conceptual info.\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/BlocksTrace'\n /experimental/blocks/{blockId}/traces:\n get:\n tags:\n - trace\n summary: |\n [Experimental - subject to breaking change.] Get traces for the given `blockId`.\n description: |\n Returns traces (spans and events) of the specified block from\n RPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140) for conceptual info.\n parameters:\n - name: blockId\n in: path\n description: Block identifier, as the block height or block hash.\n required: true\n schema:\n pattern: '^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}'\n type: string\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/BlocksTrace'\n /experimental/blocks/head/traces/operations:\n get:\n tags:\n - trace\n summary: |\n [Experimental - subject to breaking change.] Get the operations from the\n most recently finalized block.\n description: |\n Returns the operations from the most recently finalized block. Operations\n represent one side of a balance change. For example if Alice transfers\n 100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\n\n Given account A and A's balance at block k0 (Ak0), if we sum all the\n operations for A from block k1 through kn against Ak0, we will end up\n with A's balance at block kn (Akn). Thus, operations can be used to audit\n that balances change as expected.\n\n This is useful for Substrate based chains because the advanced business\n logic can make it difficult to ensure auditable balance reconciliation\n based purely on events. Instead of using events one can use the\n operations given from this endpoint.\n\n Note - each operation corresponds to a delta of a single field of the\n `system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\n and `fee_frozen`).\n Note - operations are assigned a block execution phase (and extrinsic index\n for those in the apply extrinsic phase) based on an \"action group\". For\n example all the operations for 1 extrinsic will be in the same action group.\n The action groups can optionally be fetched with the `action` query param\n for closer auditing.\n Note - There are no 0 value operations (e.g. a transfer of 0, or a\n transfer to itself)\n\n To learn more about operation and action group creation please consult\n [this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\n parameters:\n - name: actions\n in: query\n description: Whether or not to include action groups.\n required: false\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/BlocksTraceOperations'\n /experimental/blocks/{blockId}/traces/operations:\n get:\n tags:\n - trace\n summary: |\n [Experimental - subject to breaking change.] Get the operations from the\n specified block.\n description: |\n Returns the operations from the most recently finalized block. Operations\n represent one side of a balance change. For example if Alice transfers\n 100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\n\n Given account A and A's balance at block k0 (Ak0), if we sum all the\n operations for A from block k1 through kn against Ak0, we will end up\n with A's balance at block kn (Akn). Thus, operations can be used to audit\n that balances change as expected.\n\n This is useful for Substrate based chains because the advanced business\n logic can make it difficult to ensure auditable balance reconciliation\n based purely on events. Instead of using events one can use the\n operations given from this endpoint.\n\n Note - each operation corresponds to a delta of a single field of the\n `system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\n and `fee_frozen`).\n Note - operations are assigned a block execution phase (and extrinsic index\n for those in the apply extrinsic phase) based on an \"action group\". For\n example all the operations for 1 extrinsic will be in the same action group.\n The action groups can optionally be fetched with the `action` query param\n for closer auditing.\n Note - There are no 0 value operations (e.g. a transfer of 0, or a\n transfer to itself)\n\n To learn more about operation and action group creation please consult\n [this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\n parameters:\n - name: blockId\n in: path\n description: Block identifier, as the block height or block hash.\n required: true\n schema:\n pattern: '^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}'\n type: string\n - name: actions\n in: query\n description: Whether or not to include action groups.\n required: false\n schema:\n type: boolean\n default: false\n responses:\n \"200\":\n description: successful operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/BlocksTraceOperations'\ncomponents:\n schemas:\n RcBlockInfo:\n type: object\n description: Relay chain block information used when useRcBlockFormat=object.\n properties:\n hash:\n type: string\n description: The relay chain block hash.\n format: hex\n parentHash:\n type: string\n description: The parent block hash of the relay chain block.\n format: hex\n number:\n type: string\n description: The relay chain block number.\n format: unsignedInteger\n RcBlockObjectResponse:\n type: object\n description: Response wrapper when using useRcBlockFormat=object. Contains relay chain block info and an array of parachain data.\n properties:\n rcBlock:\n $ref: '#/components/schemas/RcBlockInfo'\n parachainDataPerBlock:\n type: array\n description: Array of response objects, one for each Asset Hub block found in the relay chain block. Empty array if no Asset Hub blocks found.\n items:\n type: object\n description: The endpoint-specific response data for each Asset Hub block.\n AccountAssetsApproval:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n amount:\n type: string\n description: The amount of funds approved for the balance transfer from the owner\n to some delegated target.\n format: unsignedInteger\n deposit:\n type: string\n description: The amount reserved on the owner's account to hold this item in storage.\n format: unsignedInteger\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n AhmInfo:\n type: object\n description: Asset Hub Migration information including migration boundaries for both relay chain and Asset Hub.\n properties:\n relay:\n type: object\n description: Relay chain migration information\n properties:\n startBlock:\n type: integer\n nullable: true\n description: Block number when relay chain migration started, or null if not available\n format: unsignedInteger\n endBlock:\n type: integer\n nullable: true\n description: Block number when relay chain migration ended, or null if not available\n format: unsignedInteger\n assetHub:\n type: object\n description: Asset Hub migration information\n properties:\n startBlock:\n type: integer\n nullable: true\n description: Block number when Asset Hub migration started, or null if not available\n format: unsignedInteger\n endBlock:\n type: integer\n nullable: true\n description: Block number when Asset Hub migration ended, or null if not available\n format: unsignedInteger\n example:\n relay:\n startBlock: 26041702\n endBlock: 26071771\n assetHub:\n startBlock: 11716733\n endBlock: 11736597\n AccountAssetsBalances:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n assets:\n type: array\n description: An array of queried assets.\n items:\n $ref: '#/components/schemas/AssetsBalance'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n AccountBalanceInfo:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n nonce:\n type: string\n description: Account nonce.\n format: unsignedInteger\n tokenSymbol:\n type: string\n description: Token symbol of the balances displayed in this response.\n format: unsignedInteger\n free:\n type: string\n description: Free balance of the account. Not equivalent to _spendable_\n balance. This is the only balance that matters in terms of most operations\n on tokens.\n format: unsignedInteger\n reserved:\n type: string\n description: Reserved balance of the account.\n format: unsignedInteger\n miscFrozen:\n type: string\n description: The amount that `free` may not drop below when withdrawing\n for anything except transaction fee payment. Note, that some runtimes may not have\n support for miscFrozen and if so the following will be returned `miscFrozen does not exist for this runtime`\n format: unsignedInteger\n feeFrozen:\n type: string\n description: The amount that `free` may not drop below when withdrawing\n specifically for transaction fee payment. Note, that some runtimes may not have\n support for feeFrozen and if so the following will be returned `feeFrozen does not exist for this runtime`\n format: unsignedInteger\n frozen:\n type: string\n description: The amount that `free` may not drop below when reducing the balance, except for actions\n where the account owner cannot reasonably benefit from the balance reduction, such as slashing.\n Note, that some runtimes may not have support for frozen and if so the following \n will be returned `frozen does not exist for this runtime`\n format: unsignedInteger\n transferable:\n type: string\n description: The amount that can be transferred from this account. This is calculated using the formula\n `free - max(maybeEd, frozen - reserve)` where `maybeEd` is the existential deposit if there are frozen\n funds or reserves, otherwise it is zero. This represents the actual spendable balance.\n Note, that some historical runtimes may not have support for the current formula used and if so the following\n will be returned `transferable not supported for this runtime`.\n format: unsignedInteger\n locks:\n type: array\n description: Array of locks on a balance. There can be many of these on\n an account and they \"overlap\", so the same balance is frozen by multiple\n locks\n items:\n $ref: '#/components/schemas/BalanceLock'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n AccountCompare:\n type: object\n properties:\n areEqual:\n type: boolean\n description: Whether the given SS58 addresses are equal or not. Equality is determined by comparing\n the accountId/publicKey of each address.\n addresses:\n type: array\n description: An array that contains detailed information for each of the queried SS58 addresses.\n items:\n $ref: '#/components/schemas/AddressDetails'\n AccountConvert:\n type: object\n properties:\n ss58Prefix:\n type: string\n description: SS58 prefix based on which the account ID or Public Key (hex) is converted to an SS58 address.\n format: unsignedInteger\n network:\n type: string\n description: The network based on which the returned address is encoded. It depends on the prefix\n that was given as a query param.\n address:\n type: string\n description: The returned SS58 address which is the result of the conversion\n of the account ID or Public Key (hex).\n accountId:\n type: string\n description: The given account ID or Public Key (hex) that is converted to an SS58 address.\n scheme:\n type: string\n description: The cryptographic scheme/algorithm used to encode the given account ID or Public Key (hex).\n publicKey:\n type: boolean\n description: Whether the given path parameter is a Public Key (hex) or not.\n AccountPoolAssetsBalances:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n poolAssets:\n type: array\n description: An array of queried assets.\n items:\n $ref: '#/components/schemas/AssetsBalance'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n AccountForeignAssetsBalances:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n foreignAssets:\n type: array\n description: An array of queried foreign assets.\n items:\n $ref: '#/components/schemas/ForeignAssetBalance'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ForeignAssetBalance:\n type: object\n properties:\n multiLocation:\n type: object\n description: The multilocation identifier of the foreign asset. This is an XCM multilocation\n object that uniquely identifies an asset across different parachains.\n balance:\n type: string\n description: The balance of the foreign asset.\n format: unsignedInteger\n isFrozen:\n type: boolean\n description: Whether the asset is frozen for non-admin transfers. Returns false if the\n runtime does not support isFrozen.\n isSufficient:\n type: boolean\n description: Whether a non-zero balance of this asset is a deposit of sufficient\n value to account for the state bloat associated with its balance storage. If set to\n `true`, then non-zero balances may be stored without a `consumer` reference (and thus\n an ED in the Balances pallet or whatever else is used to control user-account state\n growth).\n AccountProxyInfo:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n delegatedAccounts:\n type: array\n items:\n type: object\n properties:\n delegate:\n type: string\n description: Delegate address for the given proxy.\n format: ss58\n delay:\n type: string\n description: The announcement period required of the initial proxy. Will generally be zero.\n format: unsignedInteger\n proxyType:\n type: string\n description: The permissions allowed for this proxy account.\n depositHeld:\n type: string\n format: unsignedInteger\n description: The held deposit.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n AccountStakingInfo:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n rewardDestination:\n type: string\n description: The account to which rewards will be paid. Can be 'Staked' (Stash\n account, adding to the amount at stake), 'Stash' (Stash address, not\n adding to the amount at stake), or 'Controller' (Controller address).\n format: ss58\n enum:\n - Staked\n - Stash\n - Controller\n controller:\n type: string\n description: Controller address for the given Stash.\n format: ss58\n numSlashingSpans:\n type: string\n description: Number of slashing spans on Stash account; `null` if provided address\n is not a Controller.\n format: unsignedInteger\n nominations:\n $ref: '#/components/schemas/Nominations'\n staking:\n $ref: '#/components/schemas/StakingLedger'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n description: >-\n Note: For Sidecar versions prior to v.20.0.0, in field `claimedRewards` under `staking`, we return whatever we would find under `StakingLedger` with no further calculations.\n From v.20.0.0 onwards, `claimedRewards` is calculated based on different calls: `lastReward`, `claimedRewards` or `legacyClaimedRewards`.\n Note on lastReward: Runtime versions of Kusama less than 1062 will either have `lastReward` in place of\n `claimedRewards`, or no field at all. This is related to changes in reward distribution.\n See: [Lazy Payouts](https://github.com/paritytech/substrate/pull/4474),\n [Simple Payouts](https://github.com/paritytech/substrate/pull/5406)\n AccountStakingPayouts:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n erasPayouts:\n type: array\n items:\n type: object\n properties:\n era:\n type: string\n format: unsignedInteger\n description: Era this information is associated with.\n totalEraRewardPoints:\n type: string\n format: unsignedInteger\n description: Total reward points for the era. Equals the sum of\n reward points for all the validators in the set.\n totalEraPayout:\n type: string\n format: unsignedInteger\n description: Total payout for the era. Validators split the payout\n based on the portion of `totalEraRewardPoints` they have.\n payouts:\n $ref: '#/components/schemas/Payouts'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n AccountValidation:\n type: object\n properties:\n isValid:\n type: boolean\n description: Whether the given address is valid ss58 formatted.\n ss58Prefix:\n type: string\n description: SS58 prefix of the given address. If the address is a valid\n base58 format, but incorrect ss58, a prefix for the given address will still be returned.\n format: unsignedInteger\n network:\n type: string\n description: The network based on which the given address is encoded.\n accountId:\n type: string\n description: The account id of the given address.\n AccountVestingInfo:\n type: object\n description: Sidecar version's <= v10.0.0 have a`vesting` return value that defaults to an object for\n when there is no available vesting-info data. It also returns a `VestingInfo` as an object.\n For Sidecar >=11.0.0, that value will now default as an array when there is no value, and `Vec`\n is returned when there is.\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n vesting:\n type: array\n items:\n $ref: '#/components/schemas/VestingSchedule'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n vestedBalance:\n type: string\n description: Total vested amount across all schedules based on time elapsed. Only present when `includeClaimable` parameter is used.\n format: unsignedInteger\n vestingTotal:\n type: string\n description: Total locked amount across all vesting schedules. Only present when `includeClaimable` parameter is used.\n format: unsignedInteger\n vestedClaimable:\n type: string\n description: Actual amount that can be claimed now (vestedBalance minus already claimed). Only present when `includeClaimable` parameter is used.\n format: unsignedInteger\n blockNumberForCalculation:\n type: string\n description: The block number used for vesting calculations. Only present when `includeClaimable` parameter is used.\n format: unsignedInteger\n blockNumberSource:\n type: string\n description: Which chain's block number was used for calculations ('relay' or 'self'). Only present when `includeClaimable` parameter is used.\n enum:\n - relay\n - self\n AddressDetails:\n type: object\n properties:\n ss58Format:\n type: string\n description: The queried SS58 address.\n ss58Prefix:\n type: string\n description: SS58 prefix of the given address.\n format: unsignedInteger\n network:\n type: string\n description: The network based on which the given address is encoded.\n publicKey:\n type: string\n description: The account ID/Public Key (hex) of the queried SS58 address.\n AssetsBalance:\n type: object\n properties:\n assetId:\n type: string\n description: The identifier of the asset.\n format: unsignedInteger\n balance:\n type: string\n description: The balance of the asset.\n format: unsignedInteger\n isFrozen:\n type: boolean\n description: Whether the asset is frozen for non-admin transfers. Note, that some runtimes may not have\n support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\n isSufficient:\n type: boolean\n description: Whether a non-zero balance of this asset is a deposit of sufficient\n value to account for the state bloat associated with its balance storage. If set to\n `true`, then non-zero balances may be stored without a `consumer` reference (and thus\n an ED in the Balances pallet or whatever else is used to control user-account state\n growth).\n AssetInfo:\n type: object\n properties:\n owner:\n type: string\n description: Owner of the assets privileges.\n format: SS58\n issuer:\n type: string\n description: The `AccountId` able to mint tokens.\n format: SS58\n admin:\n type: string\n description: The `AccountId` that can thaw tokens, force transfers and burn token from\n any account.\n format: SS58\n freezer:\n type: string\n description: The `AccountId` that can freeze tokens.\n format: SS58\n supply:\n type: string\n description: The total supply across accounts.\n format: unsignedInteger\n deposit:\n type: string\n description: The balance deposited for this. This pays for the data stored.\n format: unsignedInteger\n minBalance:\n type: string\n description: The ED for virtual accounts.\n format: unsignedInteger\n isSufficient:\n type: boolean\n description: If `true`, then any account with this asset is given a provider reference. Otherwise, it\n requires a consumer reference.\n accounts:\n type: string\n description: The total number of accounts.\n format: unsignedInteger\n sufficients:\n type: string\n description: The total number of accounts for which is placed a self-sufficient reference.\n approvals:\n type: string\n description: The total number of approvals.\n format: unsignedInteger\n status:\n type: string\n description: The status of the asset.\n AssetMetadata:\n type: object\n properties:\n deposit:\n type: string\n description: The balance deposited for this metadata. This pays for the data\n stored in this struct.\n format: unsignedInteger\n name:\n type: string\n description: The user friendly name of this asset.\n format: $hex\n symbol:\n type: string\n description: The ticker symbol for this asset.\n format: $hex\n decimals:\n type: string\n description: The number of decimals this asset uses to represent one unit.\n format: unsignedInteger\n isFrozen:\n type: boolean\n description: Whether the asset metadata may be changed by a non Force origin. Note, that some runtimes may not have\n support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\n AssetMultiLocation:\n oneOf:\n - $ref: '#/components/schemas/AssetMultiLocationObject'\n - $ref: '#/components/schemas/AssetMultiLocationHex'\n AssetMultiLocationObject:\n type: object\n properties:\n parents:\n type: string\n format: unsignedInteger\n interior:\n type: object\n description: The multiLocation of the foreign asset as an object.\n example: \"{\\\"parents\\\":\\\"2\\\",\\\"interior\\\":{\\\"X1\\\":{\\\"GlobalConsensus\\\":\\\"Polkadot\\\"}}}\"\n AssetMultiLocationHex:\n type: string\n pattern: '^0x[0-9a-fA-F]+$'\n description: The multiLocation of the foreign asset given as a hexadecimal value.\n BalanceLock:\n type: object\n properties:\n id:\n type: string\n description: An identifier for this lock. Only one lock may be in existence\n for each identifier.\n amount:\n type: string\n description: The amount below which the free balance may not drop with this\n lock in effect.\n format: unsignedInteger\n reasons:\n type: string\n description: Reasons for withdrawing balance.\n enum:\n - Fee = 0\n - Misc = 1\n - All = 2\n Block:\n type: object\n properties:\n number:\n type: string\n description: The block's height.\n format: unsignedInteger\n hash:\n type: string\n description: The block's hash.\n format: hex\n parentHash:\n type: string\n description: The hash of the parent block.\n format: hex\n stateRoot:\n type: string\n description: The state root after executing this block.\n format: hex\n extrinsicRoot:\n type: string\n description: The Merkle root of the extrinsics.\n format: hex\n authorId:\n type: string\n description: The account ID of the block author (may be undefined for some\n chains).\n format: ss58\n logs:\n type: array\n items:\n $ref: '#/components/schemas/DigestItem'\n description: Array of `DigestItem`s associated with the block.\n onInitialize:\n $ref: '#/components/schemas/BlockInitialize'\n extrinsics:\n type: array\n description: Array of extrinsics (inherents and transactions) within the\n block.\n items:\n $ref: '#/components/schemas/Extrinsic'\n onFinalize:\n $ref: '#/components/schemas/BlockFinalize'\n finalized:\n type: boolean\n description: >-\n A boolean identifying whether the block is finalized or not.\n Note: on chains that do not have deterministic finality this field is omitted.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n description: >-\n Note: Block finalization does not correspond to consensus, i.e. whether\n the block is in the canonical chain. It denotes the finalization of block\n _construction._\n BlockRaw:\n type: object\n properties:\n number:\n type: string\n description: The block's height.\n format: unsignedInteger\n parentHash:\n type: string\n description: The hash of the parent block.\n format: hex\n stateRoot:\n type: string\n description: The state root after executing this block.\n format: hex\n extrinsicRoot:\n type: string\n description: The Merkle root of the extrinsics.\n format: hex\n digest:\n type: object\n properties:\n logs:\n type: array\n items:\n $ref: '#/components/schemas/DigestItem'\n description: Array of `DigestItem`s associated with the block.\n extrinsics:\n type: array\n description: Array of raw extrinsics (inherents and transactions) within the\n block.\n items:\n type: string\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n Blocks:\n type: array\n items: \n $ref: '#/components/schemas/Block'\n BlockFinalize:\n type: object\n properties:\n events:\n type: array\n items:\n $ref: '#/components/schemas/SanitizedEvent'\n description: Object with an array of `SanitizedEvent`s that occurred during\n block construction finalization with the `method` and `data` for each.\n BlockHeader:\n type: object\n properties:\n parentHash:\n type: string\n description: The hash of the parent block.\n format: hex\n number:\n type: string\n description: The block's height.\n format: unsignedInteger\n stateRoot:\n type: string\n description: The state root after executing this block.\n format: hex\n extrinsicRoot:\n type: string\n description: The Merkle root of the extrinsics.\n format: hex\n digest:\n type: object\n properties:\n logs:\n type: array\n items:\n $ref: '#/components/schemas/DigestItem'\n description: Array of `DigestItem`s associated with the block.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n BlockIdentifiers:\n type: object\n properties:\n hash:\n type: string\n description: The block's hash.\n format: hex\n height:\n type: string\n description: The block's height.\n format: unsignedInteger\n BlockParaInclusions:\n type: object\n description: Contains all decoded parachain inclusion information for a relay chain block\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n inclusions:\n type: array\n description: Array of parachain inclusions in this relay chain block, sorted by paraId\n items:\n $ref: '#/components/schemas/ParaInclusion'\n ParaInclusion:\n type: object\n description: Information about a single parachain inclusion event\n properties:\n paraId:\n type: string\n description: The parachain ID\n format: unsignedInteger\n paraBlockNumber:\n type: number\n description: The parachain block number that was included (decoded from HeadData)\n format: unsignedInteger\n paraBlockHash:\n type: string\n description: The parachain block hash that was included (decoded from HeadData)\n format: hex\n descriptor:\n $ref: '#/components/schemas/ParaInclusionDescriptor'\n commitmentsHash:\n type: string\n description: Hash of the candidate commitments\n format: hex\n coreIndex:\n type: string\n description: Core index assigned to this parachain block\n format: unsignedInteger\n groupIndex:\n type: string\n description: Validator group index that backed this parachain block\n format: unsignedInteger\n ParaInclusionDescriptor:\n type: object\n description: Candidate descriptor containing parachain inclusion metadata\n properties:\n relayParent:\n type: string\n description: The relay chain parent block hash\n format: hex\n persistedValidationDataHash:\n type: string\n description: Hash of the persisted validation data\n format: hex\n povHash:\n type: string\n description: Hash of the Proof of Validity (PoV)\n format: hex\n erasureRoot:\n type: string\n description: Root hash of the erasure encoding\n format: hex\n paraHead:\n type: string\n description: Hash of the parachain head data\n format: hex\n validationCodeHash:\n type: string\n description: Hash of the validation code\n format: hex\n BlockInitialize:\n type: object\n properties:\n events:\n type: array\n items:\n $ref: '#/components/schemas/SanitizedEvent'\n description: Object with an array of `SanitizedEvent`s that occurred during\n block initialization with the `method` and `data` for each.\n BlocksTrace:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n blockHash:\n type: string\n events:\n type: array\n items:\n $ref: '#/components/schemas/TraceEvent'\n parentHash:\n type: string\n spans:\n type: array\n items:\n $ref: '#/components/schemas/TraceSpan'\n storageKeys:\n type: string\n description: Hex encoded storage keys used to filter events.\n tracingTargets:\n type: string\n description: Targets used to filter spans and events.\n BlocksTraceOperations:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n operations:\n type: array\n items:\n $ref: '#/components/schemas/Operation'\n CoretimeRegionsResponse: \n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n regions:\n type: array\n items:\n $ref: '#/components/schemas/CoretimeRegion'\n CoretimeLeasesResponse: \n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n leases:\n type: array\n items:\n $ref: '#/components/schemas/CoretimeLease'\n CoretimeReservationsResponse: \n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n reservations:\n type: array\n items:\n $ref: '#/components/schemas/CoretimeReservation'\n CoretimeRenewalsResponse: \n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n renewals:\n type: array\n items:\n $ref: '#/components/schemas/CoretimeRenewal'\n CoretimeChainInfoResponse:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n configuration:\n $ref: '#/components/schemas/CoretimeConfig'\n currentRegion:\n type: object\n properties: \n start: \n type: string\n description: The start time.\n end: \n type: string\n description: The end time.\n cores:\n type: object\n properties: \n total: \n type: string\n description: The total number of cores.\n available: \n type: string\n description: The number of free cores.\n sold: \n type: string\n description: The number of reserved cores.\n currentCorePrice: \n type: string\n description: The current core price.\n selloutPrice: \n type: string\n description: The sellout price.\n firstCore:\n type: string\n description: The first core id.\n CoretimeRelayInfoResponse:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n brokerId:\n type: string\n description: The broker parachain id.\n palletVersion:\n type: string\n description: The pallet version.\n maxHistoricalRevenue:\n type: string\n description: The maximum historical revenue.\n CoretimeChainCoresResponse:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n cores:\n type: array\n items:\n $ref: '#/components/schemas/CoretimeCore'\n CoretimeRelayCoresResponse:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n cores:\n type: array\n items:\n $ref: '#/components/schemas/CoretimeRelayCoreDescriptor'\n CoretimeRelayCoreDescriptor:\n type: object\n properties:\n paraId:\n type: string\n description: The parachain id.\n type: \n type: string\n description: The parachain type.\n info:\n type: object\n properties: \n currentWork: \n type: object\n properties:\n assignments:\n type: array\n items:\n type: object\n properties:\n isPool:\n type: boolean\n description: Whether the workload is a pool.\n isTask:\n type: boolean\n description: Whether the workload is a task.\n ratio: \n type: string\n description: The ratio of the workload.\n remaining:\n type: string\n description: The remaining workload.\n task:\n type: string\n description: The parachain id.\n endHint:\n type: string\n description: The end hint.\n pos: \n type: string\n description: The position.\n step: \n type: string\n description: The step.\n queue: \n type: object\n properties:\n first: \n type: string\n description: The first assignment in queue.\n last:\n type: string\n description: The last assignment in queue.\n CoretimeCore:\n type: object\n properties:\n coreId:\n type: string\n description: The core id.\n paraId:\n type: string\n description: The parachain core.\n workload:\n type: object\n $ref: '#/components/schemas/CoretimeWorkload'\n workplan:\n type: array\n items: \n $ref: '#/components/schemas/CoretimeWorkplan'\n type:\n description: The paid price.\n type: object\n properties:\n condition: \n type: string\n description: Type of assignment.\n details:\n type: object\n oneOf: \n - $ref: '#/components/schemas/CoretimeUntil'\n - $ref: '#/components/schemas/CoretimeMask'\n regions:\n type: array\n items:\n $ref: '#/components/schemas/CoretimeRegion'\n CoretimeConfig:\n type: object\n properties:\n interludeLength:\n type: string\n description: The interlude length.\n leadinLength:\n type: string\n description: The leadin length.\n regionLength:\n type: string\n description: The region length.\n relayBlocksPerTimeslice:\n type: string\n description: The number of relay chain blocks per timeslice.\n CoretimeSaleInfo:\n type: object\n properties:\n phase:\n type: string\n description: The phase of the sale.\n saleStart:\n type: string\n description: The sale start.\n leadinLength:\n type: string\n description: The leading length.\n endPrice:\n type: string\n description: The end price.\n regionBegin:\n type: string\n description: The region start time.\n regionEnd:\n type: string\n description: The region end time.\n idealCoresSold:\n type: string\n description: The ideal number of cores sold.\n coresOffered:\n type: string\n description: The number of cores on sale.\n firstCore:\n type: string\n description: The first core id.\n selloutPrice:\n type: string\n description: The sellout price.\n coresSold:\n type: string\n description: The number of cores sold.\n CoretimeMask:\n type: string\n description: The mask.\n CoretimeUntil:\n type: string\n description: The lease expiry time.\n CoretimeWorkplan: \n type: object\n properties:\n core: \n type: string\n description: The core id.\n timeslice: \n type: string\n description: The timeslice.\n info:\n type: array\n items:\n $ref: '#/components/schemas/CoretimeWorkplanInfo'\n CoretimeWorkplanInfo:\n type: object\n properties: \n isPool:\n type: boolean\n description: Whether the workload is a pool.\n isTask:\n type: boolean\n description: Whether the workload is a task.\n mask:\n type: string\n description: The mask.\n task:\n type: string\n description: The parachain id.\n CoretimeWorkload:\n type: object\n properties:\n isPool: \n type: boolean\n description: Whether the workload is a pool.\n isTask:\n type: boolean\n description: Whether the workload is a task.\n mask:\n type: string\n description: The mask.\n task:\n type: string\n description: The parachain id.\n CoretimeRegion:\n type: object\n properties:\n core: \n type: string\n description: The core id.\n begin:\n type: string\n description: The begin time.\n end:\n type: string\n description: The end time.\n owner: \n type: string\n description: The owner of the region.\n paid:\n type: string\n description: The paid price.\n mask: \n type: string\n description: The mask.\n CoretimeLease:\n type: object\n properties:\n task:\n type: string\n description: The parachain id.\n until: \n type: string\n description: The lease expiry time.\n core:\n type: string\n description: The core id.\n CoretimeReservation:\n type: object\n properties:\n task:\n type: string\n description: The parachain id.\n mask: \n type: string\n description: The mask.\n CoretimeRenewal:\n type: object\n properties:\n completion:\n type: string\n description: The completion status.\n core: \n type: string\n description: The core id.\n mask:\n type: string\n description: The mask.\n price: \n type: string\n description: The renewal price.\n task: \n type: string\n description: The parachain id.\n when: \n type: string\n description: The renewal time.\n BlockWithDecodedXcmMsgs:\n allOf:\n - $ref: \"#/components/schemas/Block\"\n - $ref: \"#/components/schemas/DecodedXcmMsgs\"\n description: Block information that includes the decoded XCM messages if any are found in the queried block.\n If not, the decodedXcmMsgs object will be returned with three empty arrays corresponding to each direction,\n horizontalMessages, downwardMessages, upwardMessages.\n BondedPool:\n type: object\n properties:\n points:\n type: number\n state:\n type: string\n memberCounter:\n type: number\n roles:\n type: object\n properties:\n depositor:\n type: string\n root:\n type: string\n nominator:\n type: string\n stateToggler:\n type: string\n ChainType:\n type: object\n description: Type of the chain. It will return one of the following enum variants as a key. Live, Development, Local, or Custom. Each variant will have a value as null except when the ChainType is Custom, it will return a string.\n properties:\n live:\n type: string\n nullable: true\n default: null\n development:\n type: string\n nullable: true\n default: null\n local:\n type: string\n nullable: true\n default: null\n custom:\n type: string\n example: \"{\\\"live\\\": null}\"\n ContractsInkQuery:\n type: object\n description: Result from calling a query to a Ink contract.\n properties:\n debugMessage:\n type: string\n gasConsumed:\n type: string\n gasRequired:\n type: string\n output:\n type: boolean\n result:\n type: object\n description: Will result in an Ok or Err object depending on the result of the query.\n storageDeposit:\n type: object\n ContractMetadata:\n type: object\n description: Metadata used to instantiate a ContractPromise. This metadata can be generated\n by compiling the contract you are querying.\n DecodedXcmMsgs:\n type: object\n properties:\n decodedXcmMsgs:\n type: object\n properties:\n horizontalMessages:\n type: object\n oneOf:\n - $ref: \"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInRelay\"\n - $ref: \"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInParachain\"\n downwardMessages:\n type: array\n items:\n type: object\n properties:\n sentAt:\n type: string\n format: unsignedInteger\n description: Represents the block number that the XCM message was sent at on the relay chain.\n msg:\n type: string\n description: Represents the XCM message.\n data:\n type: object\n description: The decoded instructions included in the XCM message and their respective fields.\n upwardMessages:\n type: array\n items:\n type: object\n properties:\n originParaId:\n type: string\n format: unsignedInteger\n description: The Parachain id that the specific XCM message was sent from.\n data:\n type: object\n description: The decoded instructions included in the XCM message and their respective fields.\n description: \n Object with three arrays, one for every XCM direction. The arrays are populated or left empty based on the direction \n of the current XCM message that is being decoded. The XCM messages can be Upward and/or Horizontal (`in transit`) messages when\n connected to a Relay chain. When connected to a Parachain, the messages can be Downward and/or Horizontal. One or more messages\n can be present in a single block. In case of multiple messages from the same paraIds (originParaId and/or destinationParaId),\n the messages will be shown under the field `data`. \n DecodedXcmMsgsHorizontalMessagesInRelay:\n type: array\n items:\n type: object\n properties:\n originParaId:\n type: string\n format: unsignedInteger\n description: The Parachain id that the specific XCM message was sent from.\n destinationParaId:\n type: string\n format: unsignedInteger\n description: The Parachain id that the specific XCM message was sent to.\n data:\n type: object\n description: The decoded instructions included in the XCM message and their respective fields.\n description: Array that includes the Horizontal (`in transit`) messages when we are connected to a Relay Chain.\n Each block can contain one or more messages. If multiple messages share the same origin and destination paraId,\n they will be displayed within the data field.\n DecodedXcmMsgsHorizontalMessagesInParachain:\n type: array\n items:\n type: object\n properties:\n sentAt:\n type: string\n format: unsignedInteger\n description: Represents the block number that the XCM message was sent at on the relay chain.\n originParaId:\n type: string\n format: unsignedInteger\n description: The Parachain id that the specific XCM message was sent from.\n data:\n type: object\n description: The decoded instructions included in the XCM message and their respective fields.\n description: Array that includes the Horizontal Messages when we are connected to a Parachain.\n Each block can contain one or more messages. If multiple messages originate from the same parachain (originParaId),\n they will be displayed within the data field.\n DigestItem:\n type: object\n properties:\n type:\n type: string\n index:\n type: string\n format: unsignedInteger\n value:\n type: array\n items:\n type: string\n ElectionStatus:\n type: object\n properties:\n status:\n type: object\n description: >-\n [Deprecated](Works for polkadot runtimes before v0.8.30).\n\n Era election status: either `Close: null` or `Open: `.\n A status of `Close` indicates that the submission window for solutions\n from off-chain Phragmen is not open. A status of `Open` indicates that the\n submission window for off-chain Phragmen solutions has been open since\n BlockNumber. N.B. when the submission window is open, certain\n extrinsics are not allowed because they would mutate the state that the\n off-chain Phragmen calculation relies on for calculating results.\n toggleEstimate:\n type: string\n description: Upper bound estimate of the block height at which the `status`\n will switch.\n format: unsignedInteger\n description: Information about the off-chain election. Not included in response when\n `forceEra.isForceNone`.\n Error:\n type: object\n properties:\n code:\n type: number\n message:\n type: string\n stack:\n type: string\n level:\n type: string\n ExtrinsicMethod:\n type: object\n properties:\n pallet:\n type: string\n method:\n type: string\n description: Extrinsic method\n Extrinsic:\n type: object\n properties:\n method:\n $ref: '#/components/schemas/ExtrinsicMethod'\n signature:\n $ref: '#/components/schemas/Signature'\n nonce:\n type: string\n description: Account nonce, if applicable.\n format: unsignedInteger\n args:\n type: object\n description: >-\n Object of arguments keyed by parameter name. Note: if you are expecting an [`OpaqueCall`](https://substrate.dev/rustdocs/v2.0.0/pallet_multisig/type.OpaqueCall.html)\n and it is not decoded in the response (i.e. it is just a hex string), then Sidecar was\n not able to decode it and likely that it is not a valid call for the runtime.\n tip:\n type: string\n description: Any tip added to the transaction.\n format: unsignedInteger\n hash:\n type: string\n description: The transaction's hash.\n format: hex\n info:\n $ref: '#/components/schemas/RuntimeDispatchInfo'\n era:\n $ref: '#/components/schemas/GenericExtrinsicEra'\n events:\n type: array\n description: An array of `SanitizedEvent`s that occurred during extrinsic\n execution.\n items:\n $ref: '#/components/schemas/SanitizedEvent'\n success:\n type: boolean\n description: Whether or not the extrinsic succeeded.\n paysFee:\n type: boolean\n description: Whether the extrinsic requires a fee. Careful! This field relates\n to whether or not the extrinsic requires a fee if called as a transaction.\n Block authors could insert the extrinsic as an inherent in the block\n and not pay a fee. Always check that `paysFee` is `true` and that the\n extrinsic is signed when reconciling old blocks.\n ExtrinsicIndex:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n extrinsic:\n $ref: '#/components/schemas/Extrinsic'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n description: A single extrinsic at a given block.\n FundInfo:\n type: object\n properties:\n depositor:\n type: string\n verifier:\n type: string\n deposit:\n type: string\n format: unsignedInteger\n raised:\n type: string\n format: unsignedInteger\n end:\n type: string\n format: unsignedInteger\n cap:\n type: string\n format: unsignedInteger\n lastConstribution:\n type: string\n enum:\n - preEnding\n - ending\n firstPeriod:\n type: string\n format: unsignedInteger\n lastPeriod:\n type: string\n format: unsignedInteger\n trieIndex:\n type: string\n format: unsignedInteger\n GenericExtrinsicEra:\n type: object\n description: |\n The return value for era can either be `mortalEra`, or `immortalEra` and is represented as an enum in substrate. `immortalEra` meaning\n the transaction is valid forever. `mortalEra` consists of a tuple containing a period and phase.\n ex: `\"{\"mortalEra\": [\"64\", \"11\"]}\"`. The Period is the period of validity from the block hash found in the signing material.\n The Phase is the period that this transaction's lifetime begins (and, importantly,\n implies which block hash is included in the signature material).\n properties:\n mortalEra:\n type: array\n items:\n type: string\n description: Tuple of a Phase, and Period. Each item in the array will be a string formatted as an integer.\n immortalEra:\n type: string\n description: Hardcoded constant '0x00'.\n format: hex\n example: \"{\\\"mortalEra\\\":[\\\"64\\\", \\\"11\\\"]}\"\n LiquidityPools:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n pools:\n type: array\n description: Array containing existent liquidity pool's token id.\n items:\n $ref: '#/components/schemas/LiquidityPool'\n example: \"[{\\\"reserves\\\":[{\\\"parents\\\":\\\"1\\\",\\\"interior\\\":{\\\"here\\\":\n null}},{\\\"parents\\\":\\\"0\\\",\\\"interior\\\":{\\\"x2\\\":[{\\\"palletInstance\\\":\n \\\"50\\\"},{\\\"generalIndex\\\":\\\"2\\\"}]}}],\\\"lpToken\\\":{\\\"lpToken\\\":\\\"1\\\"}\n },{\\\"lpToken\\\":{\\\"lpToken\\\":\\\"0\\\"}}]\"\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n LiquidityPool:\n type: object\n properties:\n reserves:\n type: array\n items:\n type: object\n properties:\n parents:\n type: string\n format: unsignedInteger\n interior:\n type: object\n lpToken:\n type: string\n format: unsignedInteger\n description: Liquidity pool token ID.\n NextAvailableId:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n id:\n type: string\n description: Next availabe liquidity pool's id.\n example: \"4\"\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n NodeNetwork:\n type: object\n properties:\n nodeRoles:\n $ref: '#/components/schemas/NodeRole'\n numPeers:\n type: string\n description: Number of peers the node is connected to.\n format: unsignedInteger\n isSyncing:\n type: boolean\n description: Whether or not the node is syncing. `False` indicates that the node is in sync.\n shouldHavePeers:\n type: boolean\n description: Whether or not the node should be connected to peers. Might be false\n for local chains or when running without discovery.\n localPeerId:\n type: string\n description: Local copy of the `PeerId`.\n localListenAddresses:\n type: array\n description: Multiaddresses that the local node is listening on. The addresses\n include a trailing `/p2p/` with the local PeerId, and are thus suitable\n to be passed to `system_addReservedPeer` or as a bootnode address for\n example.\n items:\n type: string\n peersInfo:\n type: array\n items:\n $ref: '#/components/schemas/PeerInfo'\n NodeRole:\n type: string\n description: Role of this node. (N.B. Sentry nodes are being deprecated.)\n enum:\n - Full\n - LightClient\n - Authority\n - Sentry\n NodeVersion:\n type: object\n properties:\n clientVersion:\n type: string\n description: Node's binary version.\n clientImplName:\n type: string\n description: Node's implementation name.\n chain:\n type: string\n description: Node's chain name.\n description: Version information of the node.\n Nominations:\n type: object\n properties:\n targets:\n type: array\n items:\n type: string\n description: The targets of the nomination.\n submittedIn:\n type: string\n format: unsignedInteger\n description: >-\n The era the nominations were submitted. (Except for initial\n nominations which are considered submitted at era 0.)\n suppressed:\n type: boolean\n description: Whether the nominations have been suppressed.\n OnboardingAs:\n type: string\n enum:\n - parachain\n - parathread\n description: |\n This property only shows up when `paraLifecycle=onboarding`. It\n describes if a particular para is onboarding as a `parachain` or a\n `parathread`.\n Operation:\n type: object\n properties:\n phase:\n $ref: '#/components/schemas/OperationPhase'\n parentSpanId:\n $ref: '#/components/schemas/SpanId'\n primarySpanId:\n $ref: '#/components/schemas/SpanId'\n eventIndex:\n type: string\n format: unsignedInteger\n description: Index of the underlying trace event.\n address:\n type: string\n description: |\n Account this operation affects. Note - this will be an object like\n `{ id: address }` if the network uses `MultiAddress`\n storage:\n type: object\n properties:\n pallet:\n type: string\n item:\n type: string\n field1:\n type: string\n description: |\n A field of the storage item. (i.e `system::Account::get(address).data`)\n field2:\n type: string\n description: |\n A field of the struct described by field1 (i.e\n `system::Account::get(address).data.free`)\n amount:\n $ref: '#/components/schemas/OperationAmount'\n OperationAmount:\n type: object\n properties:\n values:\n type: string\n format: unsignedInteger\n currency:\n $ref: '#/components/schemas/OperationAmountCurrency'\n OperationAmountCurrency:\n type: object\n properties:\n symbol:\n type: string\n example: KSM\n OperationPhase:\n type: object\n properties:\n variant:\n type: string\n enum:\n - onInitialize\n - initialChecks\n - applyExtrinsic\n - onFinalize\n - finalChecks\n description: Phase of block execution pipeline.\n extrinsicIndex:\n type: string\n format: unsignedInteger\n description: |\n If phase variant is `applyExtrinsic` this will be the index of\n the extrinsic. Otherwise this field will not be present.\n PalletsAssetsInfo:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n assetInfo:\n $ref: '#/components/schemas/AssetInfo'\n assetMetadata:\n $ref: '#/components/schemas/AssetMetadata'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n PalletConstants:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up constants.\n example: \"14\"\n items:\n type: array\n items:\n $ref: '#/components/schemas/PalletConstantsItemMetadata'\n description: Array containing metadata for each constant entry of the pallet.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletConstantsItem:\n type: object\n properties:\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up constants.\n example: \"14\"\n errorItem:\n type: string\n description: Name of the constant item.\n example: \"EnactmentPeriod\"\n metadata:\n $ref: '#/components/schemas/PalletConstantsItemMetadata'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletConstantsItemMetadata:\n type: object\n properties:\n name:\n type: string\n example: \"VotingPeriod\"\n description: The constant item's name (which is the same as the constant item's ID).\n type:\n type: string\n example: \"4\"\n value:\n type: string\n example: \"0x00270600\"\n description: The hex value of the constant\n docs:\n type: string\n example: \"Information concerning any given constant.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"\n description: Metadata of an constant item from a FRAME pallet.\n PalletDispatchables:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up dispatchables.\n example: \"14\"\n items:\n type: array\n items:\n $ref: '#/components/schemas/PalletDispatchablesItemMetadata'\n description: Array containing metadata for each dispatchable entry of the pallet.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n PalletDispatchablesItem:\n type: object\n properties:\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up dispatchables.\n example: \"14\"\n dispatchableItem:\n type: string\n description: Name of the dispatchable item.\n example: \"vote\"\n metadata:\n $ref: '#/components/schemas/PalletDispatchablesItemMetadata'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n PalletDispatchablesItemMetadata:\n type: object\n properties:\n name:\n type: string\n example: \"propose\"\n description: The dispatchable item's name (which is the same as the dispatchable item's ID).\n fields:\n type: array\n items:\n type: string\n index:\n type: string\n example: \"0\"\n description: The index of the dispatchable item in the lists of pallet dispatchables.\n docs:\n type: string\n example: \"Information concerning any given dispatchable.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"\n args:\n type: array\n items:\n type: string\n description: Metadata of a dispatchable item from a FRAME pallet.\n PalletErrors:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up errors.\n example: \"14\"\n items:\n type: array\n items:\n $ref: '#/components/schemas/PalletErrorsItemMetadata'\n description: Array containing metadata for each error entry of the pallet.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletErrorsItem:\n type: object\n properties:\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up errors.\n example: \"14\"\n errorItem:\n type: string\n description: Name of the error item.\n example: \"ValueLow\"\n metadata:\n $ref: '#/components/schemas/PalletErrorsItemMetadata'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletErrorsItemMetadata:\n type: object\n properties:\n name:\n type: string\n example: \"InsufficientFunds\"\n description: The error item's name (which is the same as the error item's ID).\n fields:\n type: array\n items:\n type: string\n index:\n type: string\n example: \"0\"\n description: The index of the error item in the lists of pallet errors\n docs:\n type: string\n example: \" Information concerning any given error.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"\n args:\n type: array\n items:\n type: string\n description: Metadata of an error item from a FRAME pallet.\n PalletEvents:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up events.\n example: \"14\"\n items:\n type: array\n items:\n $ref: '#/components/schemas/PalletEventsItemMetadata'\n description: Array containing metadata for each event entry of the pallet.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletEventsItem:\n type: object\n properties:\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up events.\n example: \"14\"\n eventItem:\n type: string\n description: Name of the events item.\n example: \"Proposed\"\n metadata:\n $ref: '#/components/schemas/PalletEventsItemMetadata'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletEventsItemMetadata:\n type: object\n properties:\n name:\n type: string\n example: \"Tabled\"\n description: The event item's name (which is the same as the event item's ID).\n fields:\n type: array\n items:\n type: string\n index:\n type: string\n example: \"0\"\n description: The index of the error item in the lists of pallet events\n docs:\n type: string\n example: \" Information concerning any given event.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"\n args:\n type: array\n items:\n type: string\n description: Metadata of an event item from a FRAME pallet.\n PalletsForeignAssets:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n items:\n type: array\n items:\n $ref: '#/components/schemas/PalletsForeignAssetsInfo'\n description: Array containing the `AssetDetails` and `AssetMetadata` of every foreign asset.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n PalletsForeignAssetsInfo:\n type: object\n properties:\n multiLocation:\n $ref: '#/components/schemas/AssetMultiLocation'\n foreignAssetInfo:\n $ref: '#/components/schemas/AssetInfo'\n foreignAssetMetadata:\n $ref: '#/components/schemas/AssetMetadata'\n PalletsNominationPool:\n type: object\n properties:\n bondedPool:\n $ref: '#/components/schemas/BondedPool'\n rewardPool:\n $ref: '#/components/schemas/RewardPool'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletsNominationPoolsInfo:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n counterForBondedPools: \n type: number\n counterForMetadata:\n type: number\n counterForPoolMembers:\n type: number\n counterForReversePoolIdLookup:\n type: number\n counterForRewardPools:\n type: number\n counterForSubPoolsStorage:\n type: number\n lastPoolId:\n type: number\n maxPoolMembers:\n type: number\n maxPoolMembersPerPool:\n type: number\n nullable: true\n maxPools:\n type: number\n minCreateBond:\n type: number\n minJoinBond:\n type: number\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletsOnGoingReferenda:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n referenda:\n type: array\n items:\n type: object\n properties:\n id:\n type: string\n description: Referendum's id.\n decisionDeposit:\n type: object\n properties:\n who:\n type: string\n description: The account who placed the referendum's decision deposit.\n amount:\n type: string\n format: unsignedInteger\n description: The amount of the decision deposit.\n description: A deposit which is required for a referendum to progress to the decision phase.\n enactment:\n type: string\n enum:\n - at\n - after\n description: The enactment period of the referendum. It can be defined using either the `at` option,\n which specifies the exact block height when the referendum will be enacted, or the `after` option,\n which indicates the number of blocks after which the enactment will occur.\n submitted:\n type: string\n format: unsignedInteger\n description: The block number at which the referendum was submitted.\n deciding:\n type: object\n properties:\n since:\n type: string\n format: unsignedInteger\n description: The block number at which the referendum started being `decided`.\n confirming:\n type: string\n format: unsignedInteger\n description: The block number at which the referendum's confirmation stage will end at as long as\n it doesn't lose its approval in the meantime.\n description: A list of ongoing referenda and their details.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletsPoolAssetsInfo:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n poolAssetInfo:\n $ref: '#/components/schemas/AssetInfo'\n poolAssetMetadata:\n $ref: '#/components/schemas/AssetMetadata'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletStorage:\n type: object\n properties:\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up storage.\n example: \"15\"\n items:\n type: array\n items:\n $ref: '#/components/schemas/PalletStorageItemMetadata'\n description: Array containing metadata for each storage entry of the pallet.\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletStorageItem:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n pallet:\n type: string\n description: Name of the pallet.\n example: \"democracy\"\n palletIndex:\n type: string\n description: Index of the pallet for looking up storage.\n example: \"15\"\n storageItem:\n type: string\n description: Name of the storage item.\n example: \"referendumInfoOf\"\n keys:\n type: array\n items:\n type: string\n description: N Storage keys passed in as the `keys` query param. \n example: [\"0x00\", \"0x01\"]\n value:\n type: object\n description: Value returned by this storage query.\n example:\n Ongoing:\n end: \"1612800\"\n proposalHash: \"0x7de70fc8be782076d0b5772be77153d172a5381c72dd56d3385e25f62abf507e\"\n threshold: \"Supermajorityapproval\"\n delay: \"403200\"\n tally:\n ayes: \"41925212461400000\"\n nays: \"214535586500000\"\n turnout: \"34485320658000000\"\n metadata:\n $ref: '#/components/schemas/PalletStorageItemMetadata'\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n PalletStorageItemMetadata:\n type: object\n properties:\n name:\n type: string\n example: \"ReferendumInfoOf\"\n description: The storage item's name (which is the same as the storage item's ID).\n modifier:\n type: string\n example: \"Optional\"\n type:\n $ref: '#/components/schemas/PalletStorageType'\n fallback:\n type: string\n example: \"0x00\"\n docs:\n type: string\n example: \" Information concerning any given referendum.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"\n description: Metadata of a storage item from a FRAME pallet.\n PalletStorageType:\n type: object\n description: This is going to be formatted to the type of StorageEntryTypeV14.\n Para:\n type: object\n properties:\n paraId:\n type: string\n format: unsignedInteger\n paraLifecycle:\n $ref: '#/components/schemas/ParaLifecycle'\n onboardingAs:\n $ref: '#/components/schemas/OnboardingAs'\n Paras:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n paras:\n type: array\n items:\n $ref: '#/components/schemas/Para'\n ParasAuctionsCurrent:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n beginEnd:\n type: string\n format: unisgnedInteger or $null\n description: |\n Fist block (number) of the auction ending phase. `null` if there is no ongoing\n auction.\n finishEnd:\n type: string\n format: unisgnedInteger or $null\n description: |\n Last block (number) of the auction ending phase. `null` if there is no ongoing\n auction.\n phase:\n type: string\n enum:\n - startPeriod\n - endPeriod\n - vrfDelay\n description: |\n An auction can be in one of 4 phases. Both `startingPeriod` () and `endingPeriod` indicate\n an ongoing auction, while `vrfDelay` lines up with the `AuctionStatus::VrfDelay` . Finally, a value of `null`\n indicates there is no ongoing auction. Keep in mind the that the `finishEnd` field is the block number the\n `endingPeriod` finishes and the `vrfDelay` period begins. The `vrfDelay` period is typically about an\n epoch long and no crowdloan contributions are accepted.\n auctionIndex:\n type: string\n format: unsignedInteger\n description: |\n The auction number. If there is no current auction this will be the number\n of the previous auction.\n leasePeriods:\n type: array\n items:\n type: string\n format: unsignedInteger\n description: |\n Lease period indexes that may be bid on in this auction. `null` if\n there is no ongoing auction.\n winning:\n type: array\n items:\n $ref: '#/components/schemas/WinningData'\n ParasCrowdloans:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n funds:\n type: array\n items:\n type: object\n properties:\n paraId:\n type: string\n format: unsignedInteger\n fundInfo:\n $ref: '#/components/schemas/FundInfo'\n description: |\n List of paras that have crowdloans.\n ParasCrowdloanInfo:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n fundInfo:\n $ref: '#/components/schemas/FundInfo'\n leasePeriods:\n type: array\n items:\n type: string\n format: unsignedInteger\n description: Lease periods the crowdloan can bid on.\n ParasHeaders:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n paraId:\n type: object\n description: |\n The key is not named `paraId` and will be the number of the parachain. There is technically no limit to the number of paraId keys there can be. \n properties:\n hash:\n type: string\n description: The block's hash.\n format: hex\n number:\n type: string\n description: The block's height.\n format: unsignedInteger\n parentHash:\n type: string\n description: The hash of the parent block.\n format: hex\n stateRoot:\n type: string\n description: The state root after executing this block.\n format: hex\n extrinsicsRoot:\n type: string\n description: The Merkle root of the extrinsics.\n format: hex\n digest:\n type: object\n properties:\n logs:\n type: array\n items:\n $ref: '#/components/schemas/DigestItem'\n description: Array of `DigestItem`s associated with the block.\n ParachainInclusion:\n type: object\n properties:\n parachainBlock:\n type: integer\n description: The parachain block number that was searched for.\n parachainBlockHash:\n type: string\n format: hex\n description: The hash of the parachain block.\n parachainId:\n type: integer\n description: The parachain ID.\n relayParentNumber:\n type: integer\n description: The relay chain block number used as parent during parachain block production.\n inclusionNumber:\n type: integer\n nullable: true\n description: The relay chain block number where the parachain block was included (null if not found).\n found:\n type: boolean\n description: Whether the inclusion was found within the search depth.\n required:\n - parachainBlock\n - parachainBlockHash\n - parachainId\n - relayParentNumber\n - inclusionNumber\n - found\n ParasLeasesCurrent:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n leasePeriodIndex:\n type: string\n format: unsignedInteger\n description: Current lease period index. This value may be null when the current block now,\n substracted by the leaseOffset is less then zero.\n endOfLeasePeriod:\n type: string\n format: unsignedInteger\n description: Last block (number) of the current lease period. This value may be null when\n `leasePeriodIndex` is null.\n currentLeaseHolders:\n type: array\n items:\n type: string\n format: unsignedInteger\n description: List of `paraId`s that currently hold a lease.\n ParasLeaseInfo:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n paraLifecycle:\n $ref: '#/components/schemas/ParaLifecycle'\n onboardingAs:\n $ref: '#/components/schemas/OnboardingAs'\n leases:\n type: array\n items:\n type: object\n properties:\n leasePeriodIndex:\n type: string\n format: unsignedInteger\n account:\n type: string\n deposit:\n type: string\n format: unsignedInteger\n description: |\n List of lease periods for which the `paraId` holds a lease along with\n the deposit held and the associated `accountId`.\n ParaLifecycle:\n type: string\n enum:\n - onboarding\n - parathread\n - parachain\n - upgradingParathread\n - downgradingParachain\n - offboardingParathread\n - offboardingParachain\n description: |\n The possible states of a para, to take into account delayed lifecycle\n changes.\n Payouts:\n type: array\n items:\n type: object\n properties:\n validatorId:\n type: string\n description: AccountId of the validator the payout is coming from.\n nominatorStakingPayout:\n type: string\n format: unsignedInteger\n description: Payout for the reward destination associated with the\n accountId the query was made for.\n claimed:\n type: boolean\n description: Whether or not the reward has been claimed.\n totalValidatorRewardPoints:\n type: string\n format: unsignedInteger\n description: Number of reward points earned by the validator.\n validatorCommission:\n type: string\n format: unsignedInteger\n description: The percentage of the total payout that the validator takes as commission,\n expressed as a Perbill.\n totalValidatorExposure:\n type: string\n format: unsignedInteger\n description: The sum of the validator's and its nominators' stake.\n nominatorExposure:\n type: string\n format: unsignedInteger\n description: The amount of stake the nominator has behind the validator.\n description: Payout for a nominating _Stash_ address and\n information about the validator they were nominating.\n PeerInfo:\n type: object\n properties:\n peerId:\n type: string\n description: Peer ID.\n roles:\n type: string\n description: Roles the peer is running\n protocolVersion:\n type: string\n description: Peer's protocol version.\n format: unsignedInteger\n bestHash:\n type: string\n description: Hash of the best block on the peer's canon chain.\n format: hex\n bestNumber:\n type: string\n description: Height of the best block on the peer's canon chain.\n format: unsignedInteger\n RewardPool:\n type: object\n properties:\n lastRecordedRewardCounter: \n type: number\n lastRecordedTotalPayouts:\n type: number\n totalRewardsClaimed:\n type: number\n RuntimeCode:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n code:\n type: string\n format: hex\n RuntimeDispatchInfo:\n type: object\n properties:\n weight:\n $ref: '#/components/schemas/WeightsV2'\n description: Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\n class:\n type: string\n description: Extrinsic class.\n enum:\n - Normal\n - Operational\n - Mandatory\n partialFee:\n type: string\n description: The _inclusion fee_ of a transaction, i.e. the minimum fee required for a transaction. Includes weight and encoded length fees, but does not have access to any signed extensions, e.g. the `tip`.\n format: unsignedInteger\n kind:\n type: string\n description: Information on the partialFee that is collected. Can be either `preDispatch`, `postDispatch` or `fromEvent`.\n `preDispatch` means the information used to collect the fee was from `payment_queryInfo`, `postDispatch` means\n the information used to calculate the fee was from finalized weights for the extrinsic, and `fromEvent` means that the partialFee was\n abstracted from the `TransactionPayment::TransactionPaidFee` event. \n description: RuntimeDispatchInfo for the transaction. Includes the `partialFee`.\n RuntimeMetadata:\n type: object\n description: |\n Substrate runtime metadata containing pallet information, types registry, and API specifications.\n The structure varies significantly between different runtime versions (V9-V16) and different chains.\n This is a generic container that preserves the actual metadata structure as returned by the runtime.\n properties:\n magicNumber:\n type: string\n description: The magic number identifying this as Substrate metadata (typically \"1635018093\")\n example: \"1635018093\"\n metadata:\n type: object\n description: |\n Version-specific metadata content. The structure depends entirely on the runtime metadata version\n and can include various combinations of pallets, lookup registries, extrinsics, APIs, and other\n runtime-specific information.\n required:\n - magicNumber\n - metadata\n RuntimeSpec:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n authoringVersion:\n type: string\n description: The version of the authorship interface. An authoring node\n will not attempt to author blocks unless this is equal to its native runtime.\n chainType:\n $ref: '#/components/schemas/ChainType'\n implVersion:\n type: string\n description: Version of the implementation specification. Non-consensus-breaking\n optimizations are about the only changes that could be made which would\n result in only the `impl_version` changing. The `impl_version` is set to 0\n when `spec_version` is incremented.\n specName:\n type: string\n description: Identifies the different Substrate runtimes.\n specVersion:\n type: string\n description: Version of the runtime specification.\n transactionVersion:\n type: string\n description: All existing dispatches are fully compatible when this number\n doesn't change. This number must change when an existing dispatchable\n (module ID, dispatch ID) is changed, either through an alteration in its\n user-level semantics, a parameter added/removed/changed, a dispatchable\n being removed, a module being removed, or a dispatchable/module changing\n its index.\n properties:\n type: object\n description: Arbitrary properties defined in the chain spec.\n description: Version information related to the runtime.\n SanitizedEvent:\n type: object\n properties:\n method:\n type: string\n data:\n type: array\n items:\n type: string\n Signature:\n type: object\n properties:\n signature:\n type: string\n format: hex\n signer:\n type: string\n format: ss58\n description: Object with `signature` and `signer`, or `null` if unsigned.\n SpanId:\n type: object\n properties:\n name:\n type: string\n target:\n type: string\n id:\n type: string\n format: unsignedInteger\n StakingLedger:\n type: object\n properties:\n stash:\n type: string\n description: The _Stash_ account whose balance is actually locked and at stake.\n format: ss58\n total:\n type: string\n description: The total amount of the _Stash_'s balance that we are currently accounting\n for. Simply `active + unlocking`.\n format: unsignedInteger\n active:\n type: string\n description: The total amount of the _Stash_'s balance that will be at stake\n in any forthcoming eras.\n format: unsignedInteger\n unlocking:\n type: string\n description: Any balance that is becoming free, which may eventually be\n transferred out of the _Stash_ (assuming it doesn't get slashed first).\n Represented as an array of objects, each with an `era` at which `value`\n will be unlocked.\n format: unsignedInteger\n claimedRewards:\n type: array\n description: Array of objects, each containing an `era` and its corresponding `status`,\n which represents the rewards status of the queried Stash account. The queried account can either be\n a validator or nominator account. This array is populated with values from `stakingLedger.lastReward`,\n `stakingLedger.legacyClaimedRewards` or `stakingLedger.claimedRewards`, as well as the\n `query.staking.claimedRewards` call, depending on whether the queried block is before or after the migration.\n For more details on the implementation and the migration, refer to the related PR\n (https://github.com/paritytech/substrate-api-sidecar/pull/1445) and linked issue\n (https://github.com/paritytech/substrate-api-sidecar/issues/1433#issuecomment-2075914389).\n items:\n type: object\n properties:\n era:\n type: string\n description: The era for which we check the rewards status.\n format: unsignedInteger\n status:\n type: string\n description: The rewards status of the stakers backing a validator.\n enum:\n - claimed\n - unclaimed\n - partially claimed\n description: The staking ledger.\n StakingProgress:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n activeEra:\n type: string\n description: |\n `EraIndex` of the era being rewarded.\n format: unsignedInteger\n forceEra:\n type: string\n description: Current status of era forcing.\n enum:\n - ForceNone\n - NotForcing\n - ForceAlways\n - ForceNew\n nextActiveEraEstimate:\n type: string\n description: Upper bound estimate of the block height at which the next\n active era will start. Not included in response when `forceEra.isForceNone`.\n format: unsignedInteger\n nextSessionEstimate:\n type: string\n description: Upper bound estimate of the block height at which the next\n session will start.\n format: unsignedInteger\n unappliedSlashes:\n type: array\n items:\n $ref: '#/components/schemas/UnappliedSlash'\n description: Array of upcoming `UnappliedSlash` indexed by era.\n electionStatus:\n $ref: '#/components/schemas/ElectionStatus'\n idealValidatorCount:\n type: string\n description: Upper bound of validator set size; considered the ideal size.\n Not included in response when `forceEra.isForceNone`.\n format: unsignedInteger\n validatorSet:\n type: array\n description: Stash account IDs of the validators for the current session.\n Not included in response when `forceEra.isForceNone`.\n items:\n type: string\n format: ss58\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n StakingValidators:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n validators:\n type: array\n items:\n type: object\n properties:\n address:\n type: string\n description: Address of validator.\n status:\n type: string\n description: Status of individual validator (active/waiting).\n commission:\n type: string\n description: The validator's commission rate as parts-per-billion (e.g., \"100000000\" = 10%). Not present for chilled validators.\n blocked:\n type: boolean\n description: Whether the validator is blocked from receiving new nominations. Not present for chilled validators.\n validatorsToBeChilled:\n description: Validators that will not be participating in the next era.\n type: array\n items:\n type: object\n properties:\n address:\n type: string\n description: Address of validator.\n status:\n type: string\n description: Status of individual validator (active/waiting).\n rcBlockHash:\n type: string\n description: The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\n rcBlockNumber:\n type: string\n description: The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n ahTimestamp:\n type: string\n description: The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\n format: unsignedInteger\n StorageEntryTypeV13:\n type: object\n properties:\n hasher:\n type: string\n description: Returns a string deonting the storage hasher.\n key:\n type: string\n description: Key of the queried pallet storageId.\n value:\n type: string\n description: Value of the queried pallet storageId.\n linked:\n type: boolean\n StorageEntryTypeV14:\n type: object\n properties:\n hasher:\n type: array\n items:\n type: string\n description: Returns a string denoting the storage\n hasher inside of an array.\n key:\n type: string\n description: The SiLookupTypeId to identify the type.\n value:\n type: string\n description: The SiLookupTypeId to identify the type.\n TraceEvent:\n type: object\n properties:\n data:\n type: object\n properties:\n stringValues:\n $ref: '#/components/schemas/TraceEventDataStringValues'\n parentId:\n type: string\n format: unsignedInteger\n target:\n type: string\n TraceEventDataStringValues:\n type: object\n properties:\n key:\n type: string\n format: hex\n description: The complete storage key for the entry.\n method:\n type: string\n description: Normally one of Put or Get.\n result:\n type: string\n format: hex\n description: Hex scale encoded storage value.\n description: Note these exact values will only be present for storage events.\n TraceSpan:\n type: object\n properties:\n id:\n type: string\n format: unsignedInteger\n name:\n type: string\n parentId:\n type: string\n format: unsignedInteger\n target:\n type: string\n wasm:\n type: boolean\n Transaction:\n type: object\n properties:\n tx:\n type: string\n format: hex\n TransactionDispatchOutcome:\n type: object\n description: The result of a valid transaction submitted via the `dry-run` endpoint.\n properties:\n actualWeight:\n type: string\n format: unsignedInteger\n description: The actual weight of the transaction.\n paysFee:\n type: string\n format: boolean\n description: Whether the transaction pays a fee.\n TransactionDispatchError:\n type: object\n description: The reason why the dispatch call failed.\n properties:\n errorType:\n type: string\n enum:\n - Other\n - CannotLookup\n - BadOrigin\n - ModuleError\n - ConsumerRemaining\n - NoProviders\n - TooManyConsumers\n - TokenError\n - ArithmeticError\n - TransactionalError\n - Exhausted\n - Corruption\n - Unavailable\n - RootNotAllowed\n description: The type of transaction error.\n TransactionValidityError:\n type: object\n description: The error result from an invalid transaction submitted via the `dry-run` endpoint.\n properties:\n errorType:\n type: string\n enum:\n - Unimplemented\n - VersionedConversionFailed\n description: The type of transaction error, either `Unimplemented` or `VersionedConversionFailed`.\n DryRunBody:\n type: object\n properties: \n at: \n type: string\n format: unsignedInteger\n tx: \n type: string\n format: hex\n senderAddress:\n type: string\n format: ss58\n TransactionDryRun:\n type: object\n properties:\n resultType:\n type: string\n enum:\n - DispatchOutcome\n - DispatchError\n - TransactionValidityError\n description: The result will be either a `DispatchOutcome` if the transaction is valid, a `DispatchError`\n if the transaction failed, or a `TransactionValidityError` if the transaction is invalid.\n result:\n oneOf:\n - $ref: '#/components/schemas/TransactionDispatchOutcome'\n - $ref: '#/components/schemas/TransactionDispatchError'\n - $ref: '#/components/schemas/TransactionValidityError'\n description: >-\n References:\n - `PostDispatchInfo`: https://docs.rs/frame-support/38.0.0/frame_support/dispatch/struct.PostDispatchInfo.html\n - `DispatchError`: https://docs.rs/sp-runtime/39.0.1/sp_runtime/enum.DispatchError.html\n - `Error Type`: https://paritytech.github.io/polkadot-sdk/master/xcm_runtime_apis/dry_run/enum.Error.html\n TransactionFailedToParse:\n type: object\n properties:\n code:\n type: number\n error:\n type: string\n description: >-\n `Failed to parse a tx.`\n transaction:\n type: string\n format: hex\n cause:\n type: string\n stack:\n type: string\n description: Error message when Sidecar fails to parse the transaction.\n TransactionFailedToSubmit:\n type: object\n properties:\n code:\n type: number\n error:\n type: string\n description: Failed to submit transaction.\n transaction:\n type: string\n format: hex\n cause:\n type: string\n stack:\n type: string\n description: >-\n Error message when the node rejects the submitted transaction.\n TransactionFailure:\n oneOf:\n - $ref: '#/components/schemas/TransactionFailedToSubmit'\n - $ref: '#/components/schemas/TransactionFailedToParse'\n TransactionFeeEstimate:\n type: object\n properties:\n weight:\n $ref: '#/components/schemas/WeightsV2'\n description: Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\n class:\n type: string\n description: Extrinsic class.\n enum:\n - Normal\n - Operational\n - Mandatory\n partialFee:\n type: string\n description: Expected inclusion fee for the transaction. Note that the fee\n rate changes up to 30% in a 24 hour period and this will not be the exact\n fee.\n format: unsignedInteger\n description: >-\n Note: `partialFee` does not include any tips that you may add to increase a transaction's\n priority. See [compute_fee](https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee).\n TransactionFeeEstimateFailure:\n type: object\n properties:\n code:\n type: number\n at:\n type: object\n properties:\n hash:\n type: string\n error:\n type: string\n description: Error description.\n transaction:\n type: string\n format: hex\n block:\n type: string\n description: Block hash of the block fee estimation was attempted at.\n cause:\n type: string\n description: Error message from the client.\n stack:\n type: string\n TransactionMaterial:\n type: object\n properties:\n at:\n $ref: '#/components/schemas/BlockIdentifiers'\n genesisHash:\n type: string\n description: The hash of the chain's genesis block.\n format: blockHash\n chainName:\n type: string\n description: The chain's name.\n specName:\n type: string\n description: The chain's spec.\n specVersion:\n type: string\n description: The spec version. Always increased in a runtime upgrade.\n txVersion:\n type: string\n description: The transaction version. Common `txVersion` numbers indicate\n that the transaction encoding format and method indices are the same.\n Needed for decoding in an offline environment. Adding new transactions\n does not change `txVersion`.\n metadata:\n type: string\n description: The chain's metadata. It will only be present when the metadata query param is used.\n description: >-\n Note: `chainName`, `specName`, and `specVersion` are used to define a type registry with a set\n of signed extensions and types. For Polkadot and Kusama, `chainName` is not used in defining\n this registry, but in other Substrate-based chains that re-launch their network without\n changing the `specName`, the `chainName` would be needed to create the correct registry.\n Substrate Reference:\n - `RuntimeVersion`: https://crates.parity.io/sp_version/struct.RuntimeVersion.html\n - `SignedExtension`: https://crates.parity.io/sp_runtime/traits/trait.SignedExtension.html\n - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html\n TransactionPool:\n type: object\n properties:\n pool:\n type: array\n items:\n type: object\n properties:\n hash:\n type: string\n format: hex\n description: H256 hash of the extrinsic.\n encodedExtrinsic:\n type: string\n format: hex\n description: Scale encoded extrinsic.\n tip:\n type: string\n format: unsignedInteger\n description: The tip included in the extrinsic. Only included if the query param `includeFee` is set to true.\n priority:\n type: string\n format: unsignedInteger\n description: Computed priority of an extrinsic. Only included if the query param `includeFee` is set to true.\n partialFee:\n type: string\n format: unsignedInteger\n description: Provided `partialFee` of an extrinsic. Only included if the query param `includeFee` is set to true.\n TransactionSuccess:\n type: object\n properties:\n hash:\n type: string\n description: The hash of the encoded transaction.\n UnappliedSlash:\n type: object\n properties:\n validator:\n type: string\n description: Stash account ID of the offending validator.\n format: ss58\n own:\n type: string\n description: The amount the validator will be slashed.\n format: unsignedInteger\n others:\n type: array\n description: Array of tuples(`[accountId, amount]`) representing all the\n stashes of other slashed stakers and the amount they will be slashed.\n items:\n type: string\n format: tuple[ss58, unsignedInteger]\n reporters:\n type: array\n description: Array of account IDs of the reporters of the offense.\n items:\n type: string\n format: ss58\n payout:\n type: string\n description: Amount of bounty payout to reporters.\n format: unsignedInteger\n VestingSchedule:\n type: object\n properties:\n locked:\n type: string\n description: Number of tokens locked at start.\n format: unsignedInteger\n perBlock:\n type: string\n description: Number of tokens that gets unlocked every block after `startingBlock`.\n format: unsignedInteger\n startingBlock:\n type: string\n description: Starting block for unlocking (vesting).\n format: unsignedInteger\n vested:\n type: string\n description: Amount that has vested based on time elapsed for this schedule. Only present when `includeClaimable` parameter is used.\n format: unsignedInteger\n description: Vesting schedule for an account.\n WeightsV2:\n type: object\n properties:\n refTime:\n type: string\n description: The weight of computational time used based on some reference hardware.\n proofSize:\n type: string\n description: The weight of storage space used by proof of validity.\n WinningData:\n type: object\n properties:\n bid:\n type: object\n properties:\n accountId:\n type: string\n paraId:\n type: string\n format: unsignedInteger\n amount:\n type: string\n format: unsignedInteger\n leaseSet:\n type: array\n items:\n type: string\n format: unsignedInteger\n description: |\n A currently winning bid and the set of lease periods the bid is for. The\n `amount` of the bid is per lease period. The `bid` property will be `null`\n if no bid has been made for the corresponding `leaseSet`.\n requestBodies:\n Transaction:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Transaction'\n required: true\n TransactionDryRun:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/DryRunBody'\n required: true\n ContractMetadata:\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ContractMetadata'\n\n"),this.processSpec(),console.log("OpenAPI specification loaded successfully"),n.a(2,this.spec);case 1:throw n.p=1,e=n.v,console.error("Error loading OpenAPI specification:",e),e;case 2:return n.a(2)}},n,this,[[0,1]])}),r=function(){var n=this,e=arguments;return new Promise(function(r,a){var o=t.apply(n,e);function s(n){A(o,r,a,s,i,"next",n)}function i(n){A(o,r,a,s,i,"throw",n)}s(void 0)})},function(){return r.apply(this,arguments)})},{key:"processSpec",value:function(){if(!this.spec)throw new Error("No specification loaded");this.processTags(),this.processEndpoints(),this.processSchemas()}},{key:"processTags",value:function(){var n=this;this.spec.tags&&this.spec.tags.forEach(function(e){n.tags.set(e.name,{name:e.name,description:e.description||"",endpoints:[]})})}},{key:"processEndpoints",value:function(){var n=this;this.spec.paths&&Object.entries(this.spec.paths).forEach(function(e){var t=R(e,2),r=t[0],a=t[1];Object.entries(a).forEach(function(e){var t=R(e,2),a=t[0],o=t[1];if("parameters"!==a){var s="".concat(a.toUpperCase(),"_").concat(r.replace(/[{}\/]/g,"_")),i={id:s,path:r,method:a.toUpperCase(),summary:o.summary||"",description:o.description||"",operationId:o.operationId||"",tags:o.tags||[],parameters:n.processParameters(o.parameters||[]),responses:n.processResponses(o.responses||{}),requestBody:o.requestBody?n.processRequestBody(o.requestBody):null};n.endpoints.set(s,i),i.tags.forEach(function(e){var t=n.tags.get(e);t&&t.endpoints.push(i)})}})})}},{key:"processParameters",value:function(n){var e=this;return n.map(function(n){return{name:n.name,in:n.in,description:n.description||"",required:n.required||!1,schema:n.schema?e.processSchema(n.schema):null,example:n.example}})}},{key:"processResponses",value:function(n){var e=this,t={};return Object.entries(n).forEach(function(n){var r=R(n,2),a=r[0],o=r[1];t[a]={description:o.description||"",content:o.content?e.processContent(o.content):null,headers:o.headers||{}}}),t}},{key:"processRequestBody",value:function(n){return{description:n.description||"",required:n.required||!1,content:n.content?this.processContent(n.content):null}}},{key:"processContent",value:function(n){var e=this,t={};return Object.entries(n).forEach(function(n){var r=R(n,2),a=r[0],o=r[1];t[a]={schema:o.schema?e.processSchema(o.schema):null,example:o.example,examples:o.examples}}),t}},{key:"processSchemas",value:function(){var n=this;this.spec.components&&this.spec.components.schemas&&Object.entries(this.spec.components.schemas).forEach(function(e){var t=R(e,2),r=t[0],a=t[1];n.schemas.set(r,function(n){for(var e=1;e0}).sort(function(n,e){return n.name.localeCompare(e.name)})}},{key:"getAllSchemas",value:function(){return Array.from(this.schemas.values()).sort(function(n,e){return n.name.localeCompare(e.name)})}},{key:"search",value:function(n){if(!n||n.length<2)return{endpoints:[],schemas:[]};var e=n.toLowerCase(),t={endpoints:[],schemas:[]};return this.endpoints.forEach(function(n){"".concat(n.path," ").concat(n.summary," ").concat(n.description," ").concat(n.tags.join(" ")).toLowerCase().includes(e)&&t.endpoints.push(n)}),this.schemas.forEach(function(n){"".concat(n.name," ").concat(n.description||"").toLowerCase().includes(e)&&t.schemas.push(n)}),t.endpoints.sort(function(n,t){return(n.path.toLowerCase().includes(e)?0:1)-(t.path.toLowerCase().includes(e)?0:1)}),t.schemas.sort(function(n,t){return(n.name.toLowerCase().includes(e)?0:1)-(t.name.toLowerCase().includes(e)?0:1)}),t}},{key:"getApiInfo",value:function(){var n,e,t,r,a;return this.spec?{title:(null===(n=this.spec.info)||void 0===n?void 0:n.title)||"API Documentation",description:(null===(e=this.spec.info)||void 0===e?void 0:e.description)||"",version:(null===(t=this.spec.info)||void 0===t?void 0:t.version)||"1.0.0",contact:(null===(r=this.spec.info)||void 0===r?void 0:r.contact)||{},license:(null===(a=this.spec.info)||void 0===a?void 0:a.license)||{},servers:this.spec.servers||[]}:null}},{key:"getServers",value:function(){var n;return(null===(n=this.spec)||void 0===n?void 0:n.servers)||[]}},{key:"formatEndpointPath",value:function(n){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"")+n.path}},{key:"generateExampleRequest",value:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",t=this.formatEndpointPath(n,e),r=n.method,a="curl -X ".concat(r,' "').concat(t,'"');if("GET"!==r&&(a+=' \\\n -H "Content-Type: application/json"'),n.requestBody){var o,s=null===(o=n.requestBody.content)||void 0===o?void 0:o["application/json"];null!=s&&s.example&&(a+=" \\\n -d '".concat(JSON.stringify(s.example,null,2),"'"))}return a}},{key:"getMethodColorClass",value:function(n){return{GET:"method-get",POST:"method-post",PUT:"method-put",DELETE:"method-delete",PATCH:"method-patch",HEAD:"method-head",OPTIONS:"method-options"}[n]||"method-default"}},{key:"generateExampleFromSchema",value:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new Set;if(e>10)return"...";if(!n)return null;if(0===e){var r=JSON.stringify(n);if(this.exampleCache.has(r))return this.exampleCache.get(r);var a=this._generateExampleFromSchemaInternal(n,e,t);return this.exampleCache.set(r,a),a}return this._generateExampleFromSchemaInternal(n,e,t)}},{key:"_generateExampleFromSchemaInternal",value:function(n){var e=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:new Set;if(t>10)return"...";if(!n)return null;if(n.$ref){var a=this.resolveRef(n.$ref);if(!a||r.has(a))return"[Reference to ".concat(a,"]");r.add(a);var o=this.schemas.get(a);if(o){var s=this._generateExampleFromSchemaInternal(o,t+1,r);return r.delete(a),s}return"[".concat(a," schema not found]")}if(n.oneOf&&n.oneOf.length>0)return this._generateExampleFromSchemaInternal(n.oneOf[0],t+1,r);if(n.anyOf&&n.anyOf.length>0)return this._generateExampleFromSchemaInternal(n.anyOf[0],t+1,r);if(n.allOf&&n.allOf.length>0){var i,c={},l=function(n){var e="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(!e){if(Array.isArray(n)||(e=S(n))){e&&(n=e);var t=0,r=function(){};return{s:r,n:function(){return t>=n.length?{done:!0}:{done:!1,value:n[t++]}},e:function(n){throw n},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){e=e.call(n)},n:function(){var n=e.next();return o=n.done,n},e:function(n){s=!0,a=n},f:function(){try{o||null==e.return||e.return()}finally{if(s)throw a}}}}(n.allOf);try{for(l.s();!(i=l.n()).done;){var p=i.value,d=this._generateExampleFromSchemaInternal(p,t+1,r);d&&"object"===x(d)&&Object.assign(c,d)}}catch(n){l.e(n)}finally{l.f()}return Object.keys(c).length>0?c:null}if("array"===n.type&&n.items)return[this._generateExampleFromSchemaInternal(n.items,t+1,r)];if("object"===n.type){var h={};return n.properties&&Object.entries(n.properties).forEach(function(n){var a=R(n,2),o=a[0],s=a[1];h[o]=e._generateExampleFromSchemaInternal(s,t+1,r)}),h}return this.generateExampleForPrimitive(n)}},{key:"generateExampleForPrimitive",value:function(n){var e=n.type,t=n.format;if(void 0!==n.example)return n.example;if(n.enum&&n.enum.length>0)return n.enum[0];if(t)switch(t){case"SS58":return"15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5";case"unsignedInteger":return"1000000000000";case"$hex":return"0x1234567890abcdef";case"date-time":return"2023-01-01T12:00:00.000Z";case"uuid":return"123e4567-e89b-12d3-a456-426614174000";case"email":return"example@email.com";case"uri":return"https://example.com";case"binary":return"base64EncodedData"}switch(e){case"string":return n.description&&n.description.toLowerCase().includes("hash")?"0x1234567890abcdef1234567890abcdef12345678":n.description&&n.description.toLowerCase().includes("address")?"15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5":"example_string";case"number":case"integer":return 123;case"boolean":return!0;default:return null}}},{key:"generateExampleResponse",value:function(n){var e,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"200";if(!n.responses||!n.responses[t])return null;var r=null===(e=n.responses[t].content)||void 0===e?void 0:e["application/json"];return r&&r.schema?this.generateExampleFromSchema(r.schema):null}},{key:"getAllExampleResponses",value:function(n){var e=this;if(!n.responses)return{};var t={};return Object.entries(n.responses).forEach(function(r){var a=R(r,2),o=a[0],s=a[1],i=e.generateExampleResponse(n,o);null!==i&&(t[o]={description:s.description,example:i})}),t}}],e&&E(n.prototype,e),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,e,t,r}();function C(n){return C="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},C(n)}function O(n,e){return function(n){if(Array.isArray(n))return n}(n)||function(n,e){var t=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=t){var r,a,o,s,i=[],c=!0,l=!1;try{if(o=(t=t.call(n)).next,0===e){if(Object(t)!==t)return;c=!1}else for(;!(c=(r=o.call(t)).done)&&(i.push(r.value),i.length!==e);c=!0);}catch(n){l=!0,a=n}finally{try{if(!c&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(l)throw a}}return i}}(n,e)||function(n,e){if(n){if("string"==typeof n)return H(n,e);var t={}.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?H(n,e):void 0}}(n,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function H(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t\n ').concat(n.capitalizeFirst(t.name),'\n ').concat(t.endpoints.length,'\n \n \n \n \n \n "),e.appendChild(r)}),this.parser.getAllSchemas().slice(0,20).forEach(function(n){var e=document.createElement("li");e.className="nav-item",e.innerHTML='\n \n 📋\n ').concat(n.name,"\n \n "),t.appendChild(e)}))}},{key:"renderEndpoint",value:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(!n)return"";var t=this.parser.generateExampleRequest(n,e);return'\n
    \n
    \n
    \n ').concat(n.method,'\n

    ').concat(n.path,'

    \n
    \n
    \n ').concat(n.tags.map(function(n){return''.concat(n,"")}).join(""),'\n
    \n
    \n\n
    \n ').concat(n.summary?'

    '.concat(n.summary,"

    "):"","\n ").concat(n.description?'
    '.concat(this.formatDescription(n.description),"
    "):"","\n\n ").concat(this.renderParameters(n.parameters),"\n ").concat(this.renderRequestBody(n.requestBody),"\n ").concat(this.renderResponses(n.responses),"\n ").concat(this.renderExampleRequest(t,n),"\n
    \n
    \n ")}},{key:"renderParameters",value:function(n){var e=this;if(!n||0===n.length)return"";var t=this.groupParametersByLocation(n);return'\n
    \n

    Parameters

    \n '.concat(Object.entries(t).map(function(n){var t=O(n,2),r=t[0],a=t[1];return'\n
    \n

    '.concat(e.capitalizeFirst(r),' Parameters

    \n
    \n ').concat(a.map(function(n){return e.renderParameter(n)}).join(""),"\n
    \n
    \n ")}).join(""),"\n
    \n ")}},{key:"groupParametersByLocation",value:function(n){return n.reduce(function(n,e){var t=e.in||"query";return n[t]||(n[t]=[]),n[t].push(e),n},{})}},{key:"renderParameter",value:function(n){var e=this.getTypeInfo(n.schema);return'\n
    \n
    \n
    \n '.concat(n.name,"\n ").concat(n.required?'required':'optional','\n
    \n
    ').concat(e,"
    \n ").concat(n.description?'
    '.concat(n.description,"
    "):"","\n
    \n
    \n ")}},{key:"renderRequestBody",value:function(n){return n?'\n
    \n

    Request Body

    \n '.concat(n.required?'required':"","\n ").concat(n.description?'

    '.concat(n.description,"

    "):"","\n ").concat(this.renderContent(n.content),"\n
    \n "):""}},{key:"renderResponses",value:function(n){var e=this;return n&&0!==Object.keys(n).length?'\n
    \n

    Responses

    \n
    \n '.concat(Object.entries(n).map(function(n){var t=O(n,2),r=t[0],a=t[1];return e.renderResponse(r,a)}).join(""),"\n
    \n
    \n "):""}},{key:"renderResponse",value:function(n,e){var t=this.getStatusClass(n);return'\n
    \n
    \n ').concat(n,'\n ').concat(e.description,"\n
    \n ").concat(e.content?this.renderContent(e.content):"","\n
    \n ")}},{key:"renderContent",value:function(n){var e=this;return n?'\n
    \n '.concat(Object.entries(n).map(function(n){var t=O(n,2),r=t[0],a=t[1];return'\n
    \n

    '.concat(r,"

    \n ").concat(a.schema?e.renderSchema(a.schema):"","\n ").concat(a.example?e.renderExample(a.example,r):"","\n ").concat(a.schema?e.renderSchemaExample(a.schema,r):"","\n
    \n ")}).join(""),"\n
    \n "):""}},{key:"renderSchema",value:function(n){var e=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(!n)return"";if(t>3)return'
    Schema too deep...
    ';if(n.$ref){var r=n.resolvedRef;return'\n \n ")}return"object"===n.type&&n.properties?'\n
    \n
    object
    \n
    \n ').concat(Object.entries(n.properties).map(function(r){var a,o=O(r,2),s=o[0],i=o[1];return'\n
    \n
    \n '.concat(s,"\n ").concat(null!==(a=n.required)&&void 0!==a&&a.includes(s)?'required':"",'\n ').concat(e.getTypeInfo(i),"\n
    \n ").concat(i.description?'
    '.concat(i.description,"
    "):"","\n ").concat(e.renderSchema(i,t+1),"\n
    \n ")}).join(""),"\n
    \n
    \n "):"array"===n.type&&n.items?'\n
    \n
    array of:
    \n ').concat(this.renderSchema(n.items,t+1),"\n
    \n "):'\n
    \n ').concat(this.getTypeInfo(n),"\n ").concat(n.description?''.concat(n.description,""):"","\n
    \n ")}},{key:"renderExample",value:function(n,e){var t=this.formatExample(n,e),r=this.getLanguageFromMediaType(e);return'\n
    \n
    \n Example\n \n
    \n
    \n
    ').concat(this.escapeHtml(t),"
    \n
    \n
    \n ")}},{key:"renderSchemaExample",value:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"application/json";if(!n)return"";try{var t=this.parser.generateExampleFromSchema(n);if(!t)return'\n
    \n
    \n Generated Example Response\n
    \n
    Unable to generate example from this schema
    \n
    \n ';var r=this.formatExample(t,e);return'\n
    \n
    \n Generated Example Response\n \n
    \n
    \n
    ').concat(this.escapeHtml(r),'
    \n
    \n
    \n 💡 This example was automatically generated from the API schema\n
    \n ').concat(this.renderDataSchemaSection(n),"\n
    \n ")}catch(e){return console.error("Error generating example from schema:",e,n),'\n
    \n
    \n Generated Example Response\n
    \n
    \n ⚠️ Error generating example\n Schema processing failed: '.concat(e.message,"\n
    \n
    \n ")}}},{key:"renderDataSchemaSection",value:function(n){if(!n)return"";var e=this.extractSchemaReferences(n);return 0===e.length?"":'\n
    \n
    \n 📋 Data Schema\n
    \n \n \n
    \n ')}},{key:"extractSchemaReferences",value:function(n){var e=this,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set,r=new Set;if(!n||"object"!==C(n))return Array.from(r);if(n.$ref){var a=this.parser.resolveRef(n.$ref);if(a&&!t.has(a)){r.add(a),t.add(a);var o=this.parser.getSchema(a);o&&this.extractSchemaReferences(o,t).forEach(function(n){return r.add(n)})}}return n.oneOf&&n.oneOf.forEach(function(n){e.extractSchemaReferences(n,t).forEach(function(n){return r.add(n)})}),n.anyOf&&n.anyOf.forEach(function(n){e.extractSchemaReferences(n,t).forEach(function(n){return r.add(n)})}),n.allOf&&n.allOf.forEach(function(n){e.extractSchemaReferences(n,t).forEach(function(n){return r.add(n)})}),n.items&&this.extractSchemaReferences(n.items,t).forEach(function(n){return r.add(n)}),n.properties&&Object.values(n.properties).forEach(function(n){e.extractSchemaReferences(n,t).forEach(function(n){return r.add(n)})}),Array.from(r)}},{key:"renderExampleRequest",value:function(n,e){return'\n
    \n

    Try this endpoint

    \n '.concat(this.renderParameterInputs(e),"\n ").concat(this.renderGeneratedCurl(e),"\n
    \n ")}},{key:"renderParameterInputs",value:function(n){var e=this;if(!n.parameters||0===n.parameters.length)return this.renderSimpleEndpoint(n);var t=n.parameters.filter(function(n){return"path"===n.in}),r=n.parameters.filter(function(n){return"query"===n.in});return'\n
    \n ').concat(t.length>0?'\n
    \n

    Required Parameters

    \n '.concat(t.map(function(t){return e.renderParameterInput(t,n.id,!0)}).join(""),"\n
    \n "):"","\n \n ").concat(r.length>0?'\n
    \n

    Optional Parameters

    \n '.concat(r.map(function(t){return e.renderParameterInput(t,n.id,!1)}).join(""),"\n
    \n "):"",'\n\n
    \n \n
    \n
    \n ')}},{key:"renderParameterInput",value:function(n,e,t){var r=this.getParameterPlaceholder(n),a=t?"required":"";return'\n
    \n \n \n
    \n ")}},{key:"renderSimpleEndpoint",value:function(n){var e="curl -X ".concat(n.method.toUpperCase(),' "http://localhost:8080').concat(n.path,'"');return'\n
    \n

    This endpoint requires no parameters.

    \n
    \n
    \n cURL\n \n
    \n
    ').concat(this.escapeHtml(e),"
    \n
    \n
    \n ")}},{key:"renderGeneratedCurl",value:function(n){return'\n \n ')}},{key:"getParameterPlaceholder",value:function(n){var e,t=n.name.toLowerCase();if("usercblock"===t)return"true";if(t.includes("address")||t.includes("account"))return"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";if(t.includes("hash")||t.includes("blockhash"))return"0x1234...abcdef";if(t.includes("block")||t.includes("number")||t.includes("height"))return"1000000";if(t.includes("limit"))return"10";if(t.includes("page"))return"1";switch((null===(e=n.schema)||void 0===e?void 0:e.type)||n.type||"string"){case"integer":case"number":return"123";case"boolean":return"true";default:return"Enter ".concat(n.name)}}},{key:"generateEnhancedCurl",value:function(n,e){var t=this;if(!n)return"";var r=e+n.path,a=n.method.toUpperCase();if(n.parameters&&n.parameters.filter(function(n){return"path"===n.in}).forEach(function(n){var e=t.getParameterExample(n);r=r.replace("{".concat(n.name,"}"),e)}),n.parameters){var o=n.parameters.filter(function(n){return"query"===n.in});if(o.length>0){var s=o.map(function(n){var e=t.getParameterExample(n);return"".concat(n.name,"=").concat(e)}).join("&");r+="?".concat(s)}}var i="curl -X ".concat(a);if("GET"!==a&&(i+=' -H "Content-Type: application/json"'),n.requestBody&&("POST"===a||"PUT"===a||"PATCH"===a)){var c=this.generateExampleRequestBody(n.requestBody);c&&(i+=" \\\\\n -d '".concat(c,"'"))}return i+' \\\\\n "'.concat(r,'"')}},{key:"getParameterExample",value:function(n){var e,t;if(void 0!==n.example)return n.example;if(void 0!==(null===(e=n.schema)||void 0===e?void 0:e.example))return n.schema.example;var r=(null===(t=n.schema)||void 0===t?void 0:t.type)||n.type||"string",a=n.name.toLowerCase();if(a.includes("id"))return"12345";if(a.includes("hash")||a.includes("blockhash"))return"0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef";if(a.includes("address")||a.includes("account"))return"5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";if(a.includes("block"))return"1000000";if(a.includes("number")||a.includes("height"))return"1000";if(a.includes("limit"))return"10";if(a.includes("page"))return"1";if(a.includes("at"))return"1000000";if(a.includes("from"))return"0";if(a.includes("to"))return"100";switch(r){case"integer":case"number":return"123";case"boolean":return"true";default:return"example"}}},{key:"generateExampleRequestBody",value:function(n){if(!n||!n.content)return null;var e=n.content["application/json"];return e&&e.schema?JSON.stringify({example:"request body - replace with actual data"}):null}},{key:"renderSchemaPage",value:function(n){return n?'\n
    \n
    \n

    ').concat(n.name,'

    \n
    \n ').concat(n.type||"object",'\n
    \n
    \n\n
    \n ').concat(n.description?'

    '.concat(n.description,"

    "):"",'\n \n
    \n

    Schema Definition

    \n ').concat(this.renderSchema(n),"\n
    \n
    \n
    \n "):""}},{key:"capitalizeFirst",value:function(n){return n.charAt(0).toUpperCase()+n.slice(1)}},{key:"truncatePath",value:function(n){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:30;return n.length>e?n.substring(0,e)+"...":n}},{key:"getTypeInfo",value:function(n){if(!n)return"unknown";var e=n.type||"object";return n.format&&(e+=" (".concat(n.format,")")),n.$ref&&(e=n.resolvedRef||"reference"),e}},{key:"getStatusClass",value:function(n){var e=parseInt(n);return e>=200&&e<300?"status-success":e>=300&&e<400?"status-redirect":e>=400&&e<500?"status-client-error":e>=500?"status-server-error":"status-default"}},{key:"formatDescription",value:function(n){return n.replace(/\*\*(.*?)\*\*/g,"$1").replace(/\*(.*?)\*/g,"$1").replace(/`(.*?)`/g,"$1").replace(/\n/g,"
    ")}},{key:"formatExample",value:function(n,e){return"application/json"===e?"string"==typeof n?n:JSON.stringify(n,null,2):"string"==typeof n?n:JSON.stringify(n)}},{key:"getLanguageFromMediaType",value:function(n){return{"application/json":"json","application/xml":"xml","text/plain":"text","text/html":"html","application/x-www-form-urlencoded":"text"}[n]||"text"}},{key:"escapeHtml",value:function(n){var e=document.createElement("div");return e.textContent=n,e.innerHTML}}],e&&$(n.prototype,e),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,e}();function N(n){return N="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},N(n)}function L(n,e){for(var t=0;t0||n.schemas.length>0){var e='\n
    \n '.concat(n.endpoints.length>0?this.renderEndpointResults(n.endpoints):"","\n ").concat(n.schemas.length>0?this.renderSchemaResults(n.schemas):"","\n
    \n ");this.searchResults.innerHTML=e,this.showResults()}else this.renderNoResults()}},{key:"renderEndpointResults",value:function(n){var e=this,t=n.slice(0,8);return'\n
    \n
    \n

    Endpoints

    \n '.concat(n.length,'\n
    \n
    \n ').concat(t.map(function(n){return e.renderEndpointResult(n)}).join(""),"\n ").concat(n.length>8?'\n
    \n +'.concat(n.length-8," more endpoints\n
    \n "):"","\n
    \n
    \n ")}},{key:"renderEndpointResult",value:function(n){return'\n
    \n
    \n ').concat(n.method,'\n ').concat(n.path,'\n
    \n
    \n ').concat(n.summary||n.description||"No description available","\n
    \n ").concat(n.tags.length>0?'\n
    \n '.concat(n.tags.map(function(n){return''.concat(n,"")}).join(""),"\n
    \n "):"","\n
    \n ")}},{key:"renderSchemaResults",value:function(n){var e=this,t=n.slice(0,6);return'\n
    \n
    \n

    Schemas

    \n '.concat(n.length,'\n
    \n
    \n ').concat(t.map(function(n){return e.renderSchemaResult(n)}).join(""),"\n ").concat(n.length>6?'\n
    \n +'.concat(n.length-6," more schemas\n
    \n "):"","\n
    \n
    \n ")}},{key:"renderSchemaResult",value:function(n){return'\n
    \n
    \n 📋\n ').concat(n.name,'\n ').concat(n.type||"object","\n
    \n ").concat(n.description?'\n
    \n '.concat(this.truncateText(n.description,100),"\n
    \n "):"","\n
    \n ")}},{key:"renderNoResults",value:function(){this.searchResults.innerHTML='\n
    \n
    🔍
    \n
    \n

    No results found

    \n Try different keywords or check your spelling\n
    \n
    \n ',this.showResults()}},{key:"showResults",value:function(){this.searchResults&&(this.searchResults.style.display="block")}},{key:"hideResults",value:function(){this.searchResults&&(this.searchResults.style.display="none")}},{key:"clear",value:function(){this.searchResults&&(this.searchResults.innerHTML="",this.hideResults())}},{key:"highlightText",value:function(n,e){if(!e||!n)return n;var t=new RegExp("(".concat(this.escapeRegExp(e),")"),"gi");return n.replace(t,"$1")}},{key:"escapeRegExp",value:function(n){return n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}},{key:"truncateText",value:function(n,e){return n.length<=e?n:n.substring(0,e).trim()+"..."}},{key:"filterByTag",value:function(n){var e=this.parser.tags.get(n);return e?e.endpoints:[]}},{key:"getSuggestions",value:function(n){if(!n||n.length<2)return[];var e=new Set,t=n.toLowerCase();return this.parser.endpoints.forEach(function(n){n.path.toLowerCase().includes(t)&&e.add(n.path)}),this.parser.schemas.forEach(function(n){n.name.toLowerCase().includes(t)&&e.add(n.name)}),this.parser.tags.forEach(function(n){n.name.toLowerCase().includes(t)&&e.add(n.name)}),Array.from(e).slice(0,5)}},{key:"advancedSearch",value:function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=n.query,t=void 0===e?"":e,r=n.tags,a=void 0===r?[]:r,o=n.methods,s=void 0===o?[]:o,i=n.responseStatus,c=void 0===i?[]:i,l=n.hasParameters,p=void 0===l?null:l,d={endpoints:[],schemas:[]};return d=t?this.search(t):{endpoints:Array.from(this.parser.endpoints.values()),schemas:Array.from(this.parser.schemas.values())},a.length>0&&(d.endpoints=d.endpoints.filter(function(n){return n.tags.some(function(n){return a.includes(n)})})),s.length>0&&(d.endpoints=d.endpoints.filter(function(n){return s.includes(n.method)})),c.length>0&&(d.endpoints=d.endpoints.filter(function(n){return Object.keys(n.responses).some(function(n){return c.includes(n)})})),null!==p&&(d.endpoints=d.endpoints.filter(function(n){var e=n.parameters&&n.parameters.length>0;return p?e:!e})),d}},{key:"getSearchStats",value:function(){return{totalEndpoints:this.parser.endpoints.size,totalSchemas:this.parser.schemas.size,totalTags:this.parser.tags.size,endpointsByMethod:this.getEndpointsByMethod(),endpointsByTag:this.getEndpointsByTag()}}},{key:"getEndpointsByMethod",value:function(){var n={};return this.parser.endpoints.forEach(function(e){n[e.method]||(n[e.method]=0),n[e.method]++}),n}},{key:"getEndpointsByTag",value:function(){var n={};return this.parser.tags.forEach(function(e){n[e.name]=e.endpoints.length}),n}}],e&&L(n.prototype,e),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,e}();function W(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t
    ').concat(G(a.trim()),"
    "),r++,o}),o=[],s=function(n,e){var t="undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(!t){if(Array.isArray(n)||(t=function(n,e){if(n){if("string"==typeof n)return W(n,e);var t={}.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?W(n,e):void 0}}(n))||e&&n&&"number"==typeof n.length){t&&(n=t);var r=0,a=function(){};return{s:a,n:function(){return r>=n.length?{done:!0}:{done:!1,value:n[r++]}},e:function(n){throw n},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,s=!0,i=!1;return{s:function(){t=t.call(n)},n:function(){var n=t.next();return s=n.done,n},e:function(n){i=!0,o=n},f:function(){try{s||null==t.return||t.return()}finally{if(i)throw o}}}}((a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=(a=function(n){return n.replace(/^(\|[^|\n]+(?:\|[^|\n]*)*\|)\s*\n(\|[\s\-:|]+\|)\s*\n((?:^\|[^|\n]+(?:\|[^|\n]*)*\|\s*$\n?)+)/gm,function(n,e,t,r){var a=e.split("|").map(function(n){return n.trim()}).filter(function(n){return n}).map(function(n){return n.replace(/`([^`]+)`/g,"$1")}).map(function(n){return"".concat(n,"")}).join(""),o=r.trim().split("\n").filter(function(n){return n.trim()&&n.includes("|")}).map(function(n){var e=n.split("|").map(function(n){return n.trim()}).filter(function(n){return n}).map(function(n){return n.replace(/`([^`]+)`/g,"$1")}).map(function(n){return"".concat(n,"")}).join("");return"".concat(e,"")}).join("\n");return'
    \n\n\n'.concat(a,"\n\n\n").concat(o,"\n\n
    \n
    ")})}(a=a.replace(/## ⚠️ Important: (.*$)/gm,'
    ⚠️ Important: $1
    '))).replace(/^> \*\*Note\*\*: (.*$)/gm,'
    Note: $1
    ')).replace(/^> \*\*Important\*\*: (.*$)/gm,'
    Important: $1
    ')).replace(/^> (.*$)/gm,"
    $1
    ")).replace(/^# (.*$)/gm,function(n,e){var t=e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");return'

    ').concat(e,"

    ")})).replace(/^## (.*$)/gm,function(n,e){var t=e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");return'

    ').concat(e,"

    ")})).replace(/^### (.*$)/gm,function(n,e){var t=e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");return'

    ').concat(e,"

    ")})).replace(/^#### (.*$)/gm,function(n,e){var t=e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"");return'

    ').concat(e,"

    ")})).replace(/\*\*(.*?)\*\*/g,"$1")).replace(/\*(.*?)\*/g,"$1")).replace(/`([^`]+)`/g,"$1")).replace(/\[([^\]]+)\]\(([^)]+)\)/g,function(n,e,t){return t.startsWith("#")?'').concat(e,""):'').concat(e,"")})).replace(/^- (.*$)/gm,"
  • $1
  • ")).replace(/^\d+\. (.*$)/gm,"
  • $1
  • ")).split(/\n\s*\n/));try{for(s.s();!(e=s.n()).done;){var i=e.value;if(i=i.trim())if(i.startsWith("")){var c=/^\d+\./.test(i.split("\n")[0])?"ol":"ul";o.push("<".concat(c,">").concat(i,""))}else o.push("

    ".concat(i.replace(/\n/g," "),"

    "))}}catch(n){s.e(n)}finally{s.f()}a=(a=o.join("\n\n")).replace(/<\/(ul|ol)>\s*<\1>/g,"");for(var l=0;l":">",'"':""","'":"'"};return n.replace(/[&<>"']/g,function(n){return e[n]})}var U={"asset-hub-migration":F('# Asset Hub Migration & Elastic Scaling Guide\n\nThis comprehensive guide explains how to configure Asset Hub migration in Substrate API Sidecar and understand the related elastic scaling changes that prepare the API for future multi-block scenarios.\n\n## ⚠️ Important: Niche Feature Notice\n\n**The `useRcBlock` parameter and elastic scaling functionality is a specialized feature designed for stakeholders who specifically need to track Asset Hub blocks using relay chain block references.** \n\n**If you are not planning to use the relay chain as a way to track Asset Hub state, you can safely ignore everything related to `useRcBlock` and elastic scaling in this guide.** Standard Asset Hub queries will continue to work exactly as before without any configuration changes.\n\n## Environment Variables\n\n### Required Configuration\n\nTo properly handle Asset Hub migration, you need to configure two environment variables:\n\n1. `SAS_SUBSTRATE_URL`: The primary WebSocket URL for your Asset Hub node\n2. `SAS_SUBSTRATE_MULTI_CHAIN_URL`: A JSON array containing additional chain configurations\n\n### Important Note on Node Requirements\n\nIf you need to use any of the endpoints that require multi-chain configuration (like `/pallets/staking/progress`), you will need to run two separate nodes:\n- One node for the Asset Hub chain\n- One node for the relay chain\n\nBoth nodes must be running and accessible for these endpoints to function properly.\n\n### Multi-Chain Configuration\n\nThe `SAS_SUBSTRATE_MULTI_CHAIN_URL` environment variable accepts a JSON array of chain configurations. Each configuration object should contain:\n\n- `url`: The WebSocket URL for the additional node\n- `type`: The type of chain (can be \'relay\', \'assethub\', \'parachain\', or undefined)\n\nCurrently, this configuration is primarily used for:\n- Querying staking information\n- Retrieving additional session/babe information from the relay chain\n\nIn future releases, this configuration will also be used to improve performance by allowing Sidecar to retrieve information from multiple nodes.\n\n## Example Configuration\n\nHere\'s an example configuration for Westend network:\n\n```bash\n# Primary Asset Hub node\nSAS_SUBSTRATE_URL=wss://westend-asset-hub-rpc.polkadot.io\n\n# Additional chain configuration (relay chain in this case)\nSAS_SUBSTRATE_MULTI_CHAIN_URL=\'[{"url":"wss://westend-rpc.polkadot.io","type":"relay"}]\'\n```\n\n## Affected Endpoints\n\nCurrently, only the following endpoint requires the multi-chain configuration:\n- `/pallets/staking/progress`\n\nThe `/pallets/staking/progress` endpoint requires two chains because it needs to combine information from both chains:\n- The Asset Hub chain provides era information from the staking pallet\n- The relay chain provides additional storage information from the babe pallet\n\nThis dual-chain requirement is specific to this endpoint, as it needs to gather information from both sources to provide complete staking progress data.\n\n## Elastic Scaling & Response Structure Changes\n\n> **Note**: This section only applies if you are using the `useRcBlock` parameter. If you\'re not using relay chain block tracking, you can skip this entire section.\n\n**Important**: All endpoints that support the `useRcBlock` parameter return array responses instead of single enhanced objects (when used). This prepares the API for Polkadot/Kusama elastic scaling where multiple Asset Hub blocks could exist per relay chain block.\n\n### What Changed\n\n#### New Array Response Behavior\n\nWhen using `useRcBlock` parameter, endpoints now return an array of response objects:\n\n```json\n[\n {\n "at": {\n "hash": "0x...",\n "height": "1234567"\n },\n "data": "...",\n "rcBlockNumber": "5678901",\n "ahTimestamp": "1234567890"\n }\n]\n```\n\nIf no Asset Hub blocks are found for the specified relay chain block, an empty array is returned:\n\n```json\n[]\n```\n\n#### Affected Parameters\n\n- **`useRcBlock`**: When set to \'true\', uses the relay chain block specified in the \'at\' parameter to determine corresponding Asset Hub block(s)\n\n#### Response Format Summary\n\n- **With `useRcBlock=true`**: Returns `[{...result, rcBlockNumber, ahTimestamp}]` or `[]`\n- **Without `useRcBlock`**: Returns single response object (unchanged)\n\n### Affected Endpoints\n\n> **Note**: These endpoints only change behavior when using `useRcBlock=true`. Without this parameter, they work exactly as before.\n\nAll the following endpoints support the `useRcBlock` parameter and return array responses when it\'s used:\n\n#### Account Endpoints\n- `/accounts/{accountId}/asset-balances`\n- `/accounts/{accountId}/asset-approvals`\n- `/accounts/{accountId}/pool-asset-balances`\n- `/accounts/{accountId}/pool-asset-approvals`\n- `/accounts/{accountId}/balance-info`\n- `/accounts/{accountId}/staking-info`\n- `/accounts/{accountId}/staking-payouts`\n- `/accounts/{accountId}/vesting-info`\n- `/accounts/{accountId}/proxy-info`\n\n#### Block Endpoints (useRcBlock)\n- `/blocks/head`\n- `/blocks/{blockId}`\n- `/blocks/{blockId}/header`\n- `/blocks/head/header`\n- `/blocks/{blockId}/extrinsics/{extrinsicIndex}`\n- `/blocks/{blockId}/extrinsics-raw`\n- `/blocks`\n\n#### Pallets Endpoints\n- `/pallets/asset-conversion/next-available-id`\n- `/pallets/asset-conversion/liquidity-pools`\n- `/pallets/assets/{assetId}/asset-info`\n- `/pallets/{palletId}/consts`\n- `/pallets/{palletId}/consts/{constantItemId}`\n- `/pallets/{palletId}/dispatchables`\n- `/pallets/{palletId}/dispatchables/{dispatchableItemId}`\n- `/pallets/{palletId}/errors`\n- `/pallets/{palletId}/errors/{errorItemId}`\n- `/pallets/{palletId}/events`\n- `/pallets/{palletId}/events/{eventItemId}`\n- `/pallets/foreign-assets`\n- `/pallets/nomination-pools/info`\n- `/pallets/nomination-pools/{poolId}`\n- `/pallets/ongoing-referenda`\n- `/pallets/pool-assets/{assetId}/asset-info`\n- `/pallets/staking/progress`\n- `/pallets/staking/validators`\n- `/pallets/{palletId}/storage`\n- `/pallets/{palletId}/storage/{storageItemId}`\n\n## Migration Steps\n\n> **Important Reminder**: These migration steps are only necessary if you plan to use the `useRcBlock` parameter for relay chain block tracking. Standard Asset Hub functionality requires no migration.\n\n### 1. Complete Environment Setup\n\nEnsure your Substrate API Sidecar instance is configured with both Asset Hub and relay chain nodes:\n\n```bash\n# Asset Hub node (primary)\nSAS_SUBSTRATE_URL=wss://westend-asset-hub-rpc.polkadot.io\n\n# Relay chain node (secondary, required for useRcBlock functionality)\nSAS_SUBSTRATE_MULTI_CHAIN_URL=\'[{"url":"wss://westend-rpc.polkadot.io","type":"relay"}]\'\n```\n\n### 2. Update Response Handling\n\nIf you\'re using `useRcBlock` parameter, update your code to handle array responses:\n\n```javascript\nconst response = await fetch(\'/accounts/123/balance-info?at=5000000&useRcBlock=true\');\nconst data = await response.json();\n\n// Handle array response\nif (data.length === 0) {\n console.log(\'No Asset Hub blocks found for this relay chain block\');\n} else {\n // Process each Asset Hub block (currently will be 0 or 1, but prepared for multiple)\n data.forEach(item => {\n console.log(item.free);\n console.log(item.rcBlockNumber);\n });\n}\n```\n\n### 3. Check for Empty Results\n\nThe new behavior returns empty arrays when no Asset Hub blocks are found:\n\n```javascript\nconst response = await fetch(\'/accounts/123/balance-info?at=5000000&useRcBlock=true\');\nconst data = await response.json();\n\nif (data.length === 0) {\n // No Asset Hub blocks found for this relay chain block\n console.log(\'No data available for this relay chain block\');\n return;\n}\n\n// Process results\nconst result = data[0]; // Get first (and currently only) result\n```\n\n### 4. Prepare for Future Elastic Scaling\n\nWhile current implementation returns 0 or 1 results, elastic scaling will enable multiple Asset Hub blocks per relay chain block:\n\n```javascript\nconst response = await fetch(\'/accounts/123/balance-info?at=5000000&useRcBlock=true\');\nconst data = await response.json();\n\n// Handle multiple Asset Hub blocks (future-ready)\ndata.forEach((block, index) => {\n console.log(`Asset Hub block ${index + 1}:`);\n console.log(`Block number: ${block.at.height}`);\n console.log(`RC block: ${block.rcBlockNumber}`);\n console.log(`Timestamp: ${block.ahTimestamp}`);\n});\n```\n\n## Backward Compatibility\n\n- **Regular queries** (without `useRcBlock`) continue to return single objects unchanged\n- **All existing functionality** remains the same for standard queries\n- **Only array structure** changes affect `useRcBlock` queries\n\n## Benefits\n\n1. **Asset Hub Migration Support**: Enables querying Asset Hub data using relay chain block references\n2. **Elastic Scaling Ready**: Prepared for multiple Asset Hub blocks per relay chain block\n3. **Consistent API**: All endpoints follow the same array response pattern\n4. **Predictable**: Empty arrays instead of errors when no blocks found\n\n## Examples\n\n### Single Result (Current Behavior)\n```bash\ncurl "https://polkadot-asset-hub-public-sidecar.parity-chains.parity.io/accounts/123/balance-info?at=20000000&useRcBlock=true"\n```\n\nResponse:\n```json\n[\n {\n "at": {\n "hash": "0x...",\n "height": "1234567"\n },\n "free": "1000000000000",\n "reserved": "0",\n "miscFrozen": "0",\n "feeFrozen": "0",\n "rcBlockNumber": "20000000",\n "ahTimestamp": "1705123456789"\n }\n]\n```\n\n### Empty Result (No Asset Hub Block Found)\n```bash\ncurl "https://polkadot-asset-hub-public-sidecar.parity-chains.parity.io/accounts/123/balance-info?at=999999999&useRcBlock=true"\n```\n\nResponse:\n```json\n[]\n```\n\n### Regular Query (Unchanged)\n```bash\ncurl "https://polkadot-asset-hub-public-sidecar.parity-chains.parity.io/accounts/123/balance-info"\n```\n\nResponse (unchanged):\n```json\n{\n "at": {\n "hash": "0x...",\n "height": "1234567"\n },\n "free": "1000000000000",\n "reserved": "0",\n "miscFrozen": "0",\n "feeFrozen": "0"\n}\n```\n\n## Historic Data Limitations\n\nThe `/pallets/staking/progress` endpoint currently does not support historic queries. This means you can only query the current staking progress state, and cannot retrieve historical staking progress data from past blocks.\n\nAll other endpoints will continue to work with just the primary node configuration (`SAS_SUBSTRATE_URL`).\n\n## Need Help?\n\nIf you encounter issues during migration, please:\n\n1. **First, verify multi-chain setup**: Ensure both Asset Hub and relay chain nodes are running and accessible\n2. **Check environment variables**: Verify `SAS_SUBSTRATE_URL` and `SAS_SUBSTRATE_MULTI_CHAIN_URL` are correctly configured\n3. **Test connectivity**: Ensure both WebSocket URLs are reachable from your Sidecar instance\n4. **Review array handling**: Update your client code to handle array responses when using `useRcBlock`\n5. **Check this guide**: Review the migration steps and examples above\n6. **Open an issue**: For persistent issues, create an issue on [GitHub](https://github.com/paritytech/substrate-api-sidecar/issues)\n\n**Remember**: The `useRcBlock` parameter requires both Asset Hub and relay chain APIs to be available and properly configured. Without proper multi-chain setup, these features will not work.\n\nThe changes enable Asset Hub migration support while preparing the API for future elastic scaling scenarios where multiple Asset Hub blocks could exist per relay chain block.\n'),"useRcBlock-spec":F('# Substrate API Sidecar: useRcBlock Query Parameters Specification\n\n## Prerequisites\nThe `useRcBlock` functionality requires two connection configurations:\n\n**Primary Connection (Asset Hub):**\n- `SAS_SUBSTRATE_URL`: Connection to Asset Hub node\n\n**Multi-Chain Connection (Relay Chain):**\n- `SAS_SUBSTRATE_MULTI_CHAIN_URL`: JSON array of chain configurations, each containing a `url` and `type` property. The `type` can be \'relay\', \'assethub\', \'parachain\', or undefined. Currently used for Asset Hub migration to query staking information and additional session/babe information from the relay chain. In future releases, this will also be used to improve performance by allowing Sidecar to retrieve information from multiple nodes. This environment variable should be used in combination with the `SAS_SUBSTRATE_URL` variable.\n\n**Example Configuration:**\n```\nSAS_SUBSTRATE_URL=wss://westend-asset-hub-rpc.polkadot.io\nSAS_SUBSTRATE_MULTI_CHAIN_URL=\'[{"url":"wss://westend-rpc.polkadot.io","type":"relay"}]\'\n```\n\n## Query Parameters Overview\n\n### useRcBlock Parameter\nThe `useRcBlock` parameter is a boolean parameter that works in conjunction with the existing `at` parameter. When `useRcBlock=true`, the API queries relay chain data at the block specified by the `at` parameter, treating the `at` value as a relay chain block identifier instead of an Asset Hub block identifier.\n\n**Special Behavior**: When `useRcBlock=true` is used without an `at` parameter, the API will use the finalizedHead of the relay chain to get the associated Asset Hub block.\n\n**Block Finalization Note**: The `useRcBlock` parameter does not make any assumptions about whether the block you pass is finalized or a best block. It is recommended to ensure the block you are passing is finalized if block finalization is important for your use case.\n\n### useRcBlockFormat Parameter\nThe `useRcBlockFormat` parameter controls the response format when using `useRcBlock=true`. This parameter is only valid when `useRcBlock=true` is specified.\n\n**Values:**\n- `array` (default): Returns the standard array format with enhanced metadata\n- `object`: Wraps the response in an object containing relay chain block info and the parachain data array\n\n**Validation**: Using `useRcBlockFormat` without `useRcBlock=true` will return a `400 Bad Request` error.\n\n## Implementation: useRcBlock Query Parameter\n\n### Core Functionality\nThe `useRcBlock` parameter can be added to existing sidecar endpoints to query Asset Hub state using relay chain block identifiers.\n\n**Parameter Format:**\n```\nat=&useRcBlock=true\n```\n\n**Example Usage:**\n```\nGET /pallets/staking/progress?at=1000000&useRcBlock=true\nGET /accounts/{accountId}/balance-info?at=0x123abc&useRcBlock=true\nGET /blocks/head?useRcBlock=true\nGET /blocks/12345?at=12345&useRcBlock=true\n\n# With useRcBlockFormat=object for wrapped response format\nGET /pallets/staking/progress?at=1000000&useRcBlock=true&useRcBlockFormat=object\nGET /accounts/{accountId}/balance-info?at=0x123abc&useRcBlock=true&useRcBlockFormat=object\n```\n\n### Response Format Changes\n\n**Without useRcBlock (Traditional Behavior):**\nReturns single response object (unchanged):\n```json\n{\n // ... existing endpoint response data\n}\n```\n\n**With useRcBlock=true (default array format):**\nReturns array format with additional metadata:\n```json\n[{\n // ... existing endpoint response data\n "rcBlockHash": "0x1234567890abcdef...",\n "rcBlockNumber": "1000000",\n "ahTimestamp": "1642694400"\n}]\n```\n\nOr empty array `[]` if no corresponding Asset Hub block exists.\n\n**With useRcBlock=true&useRcBlockFormat=object:**\nReturns object format wrapping the data with relay chain block info:\n```json\n{\n "rcBlock": {\n "hash": "0x1234567890abcdef...",\n "parentHash": "0xabcdef1234567890...",\n "number": "1000000"\n },\n "parachainDataPerBlock": [\n {\n // ... existing endpoint response data\n "rcBlockHash": "0x1234567890abcdef...",\n "rcBlockNumber": "1000000",\n "ahTimestamp": "1642694400"\n }\n ]\n}\n```\n\nOr with empty `parachainDataPerBlock` array if no corresponding Asset Hub block exists:\n```json\n{\n "rcBlock": {\n "hash": "0x1234567890abcdef...",\n "parentHash": "0xabcdef1234567890...",\n "number": "1000000"\n },\n "parachainDataPerBlock": []\n}\n```\n\n## Supported Endpoints\n\n### Block Endpoints Supporting useRcBlock:\n\n1. **`/blocks/head`** - Get latest block using RC head block\n2. **`/blocks/head/header`** - Get latest block header using RC head block\n3. **`/blocks/{blockId}`** - Get single block by RC block identifier\n4. **`/blocks/{blockId}/header`** - Get block header by RC block identifier\n5. **`/blocks`** - Get block range where range represents RC block numbers (skips RC blocks without corresponding AH blocks)\n6. **`/blocks/{blockId}/extrinsics-raw`** - Get raw extrinsics by RC block identifier\n7. **`/blocks/{blockId}/extrinsics/{extrinsicIndex}`** - Get specific extrinsic by RC block identifier\n\n### Non-Block Endpoints Supporting useRcBlock:\nMost existing sidecar endpoints support the `useRcBlock` parameter, including:\n- `/pallets/*` endpoints\n- `/accounts/*` endpoints\n- Other state query endpoints\n\n## Key Features and Behavior\n\n### Enhanced Response Format\nWhen `useRcBlock=true` is used, responses include additional context fields:\n- `rcBlockHash`: The relay chain block hash\n- `rcBlockNumber`: The relay chain block number\n- `ahTimestamp`: The Asset Hub block timestamp\n- Array format (default) prepares for future elastic scaling scenarios\n- Object format (`useRcBlockFormat=object`) provides relay chain block metadata wrapper with `rcBlock` info (hash, parentHash, number) and `parachainDataPerBlock` array\n\n### Backward Compatibility\n- Defaults to `false`, maintaining existing functionality when not specified\n- Existing endpoints remain unchanged when `useRcBlock` is not used\n- No breaking changes to current API behavior\n\n### Graceful Handling\n- Range endpoints skip RC blocks without corresponding AH blocks\n- Returns empty array `[]` when no corresponding Asset Hub block exists\n- Multi-block scenarios are handled when Asset Hub produces multiple blocks within a single relay chain block period\n\n### Validation Logic\nThe `validateUseRcBlock` middleware ensures:\n1. **Boolean validation**: `useRcBlock` must be "true" or "false" string\n2. **Asset Hub requirement**: Only works when connected to Asset Hub\n3. **Relay chain availability**: Requires relay chain API configuration via `SAS_SUBSTRATE_MULTI_CHAIN_URL`\n4. **useRcBlockFormat dependency**: `useRcBlockFormat` requires `useRcBlock=true` to be specified\n5. **useRcBlockFormat values**: Must be either "array" or "object" string\n\n## Multi-Block and Elastic Scaling Scenarios\n\n### Multi-Block Scenarios\nWhen Asset Hub produces multiple blocks within a single relay chain block period (due to faster block times), the array response format accommodates multiple blocks. The array structure prepares the API for future elastic scaling requirements.\n\n### Elastic Scaling Preparation\nThe array response format is designed to support future elastic scaling scenarios where multiple Asset Hub blocks may be produced for a single relay chain block reference.\n\n---\n\n## Potential Future Enhancements\n\n### `enforceFinalizedBlockOnAt` Parameter (Suggested Safeguard)\n\nAn optional safeguard parameter `enforceFinalizedBlockOnAt` could be implemented to enforce that blocks passed via the at parameter are finalized. When `enforceFinalizedBlockOnAt=true`, the endpoint will error if the specified block is not finalized, providing additional safety for applications that require finalized block guarantees.\n'),"advanced-config":F('# Advanced Configuration Guide\n\nThis comprehensive guide covers all configuration options available in Substrate API Sidecar. All environment variables use the `SAS_` prefix (Substrate API Sidecar).\n\n## Table of Contents\n\n- [Express Server Configuration](#express-server-configuration)\n- [Substrate Node Connection](#substrate-node-connection)\n- [Custom Type Definitions](#custom-type-definitions)\n- [Logging Configuration](#logging-configuration)\n- [Metrics & Monitoring](#metrics--monitoring)\n- [Development & Debugging](#development--debugging)\n- [Environment Profiles](#environment-profiles)\n- [Docker Configuration](#docker-configuration)\n\n## Express Server Configuration\n\nConfigure the HTTP server that serves the REST API.\n\n### Basic Server Settings\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `SAS_EXPRESS_BIND_HOST` | `127.0.0.1` | Network interface to bind to. **Use `0.0.0.0` for Docker** |\n| `SAS_EXPRESS_PORT` | `8080` | Port number (2-6 digits) |\n| `SAS_EXPRESS_KEEP_ALIVE_TIMEOUT` | `5000` | Keep-alive timeout in milliseconds |\n| `SAS_EXPRESS_MAX_BODY` | `100kb` | Maximum request body size |\n\n### Controller Management\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `SAS_EXPRESS_INJECTED_CONTROLLERS` | `false` | Auto-detect pallets and inject controllers vs. using chain config |\n\n**Example:**\n```bash\nexport SAS_EXPRESS_BIND_HOST=0.0.0.0\nexport SAS_EXPRESS_PORT=3000\nexport SAS_EXPRESS_KEEP_ALIVE_TIMEOUT=10000\nexport SAS_EXPRESS_MAX_BODY=1mb\nexport SAS_EXPRESS_INJECTED_CONTROLLERS=true\n```\n\n## Substrate Node Connection\n\nConfigure connections to Substrate-based blockchain nodes.\n\n### Primary Node Connection\n\n| Variable | Required | Default | Description |\n|----------|----------|---------|-------------|\n| `SAS_SUBSTRATE_URL` | ✅ | `ws://127.0.0.1:9944` | WebSocket or HTTP URL to node |\n\n**Supported protocols:** `ws://`, `wss://`, `http://`, `https://`\n\n### Multi-Chain Configuration\n\nFor Asset Hub migration and multi-chain queries:\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `SAS_SUBSTRATE_MULTI_CHAIN_URL` | ❌ | JSON array of chain configurations |\n\n**Format:**\n```json\n[{"url":"wss://relay-chain.com","type":"relay"}]\n```\n\n**Chain types:**\n- `relay` - Relay chain (Polkadot/Kusama)\n- `assethub` - Asset Hub parachain\n- `parachain` - Other parachains\n- `undefined` - Generic chain\n\n**Example configurations:**\n\n```bash\n# Single node (basic)\nexport SAS_SUBSTRATE_URL=wss://polkadot-rpc.polkadot.io\n\n# Asset Hub with relay chain\nexport SAS_SUBSTRATE_URL=wss://polkadot-asset-hub-rpc.polkadot.io\nexport SAS_SUBSTRATE_MULTI_CHAIN_URL=\'[{"url":"wss://polkadot-rpc.polkadot.io","type":"relay"}]\'\n\n# Local development\nexport SAS_SUBSTRATE_URL=ws://127.0.0.1:9944\nexport SAS_SUBSTRATE_MULTI_CHAIN_URL=\'[{"url":"ws://127.0.0.1:9945","type":"relay"}]\'\n```\n\n### Caching\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `SAS_SUBSTRATE_CACHE_CAPACITY` | `0` | Max cache size for @polkadot/api (0 = no cache) |\n\n## Custom Type Definitions\n\nFor chains with custom types not recognized by polkadot-js/api.\n\n### Type Definition Files\n\n| Variable | Format | Description |\n|----------|--------|-------------|\n| `SAS_SUBSTRATE_TYPES_BUNDLE` | `OverrideBundleType` | Bundle with versioning, aliases, derives, RPC |\n| `SAS_SUBSTRATE_TYPES_CHAIN` | `Record` | Types keyed by chain name |\n| `SAS_SUBSTRATE_TYPES_SPEC` | `Record` | Types keyed by spec name |\n| `SAS_SUBSTRATE_TYPES` | `RegistryTypes` | Basic type definitions |\n\n**Example for custom node template:**\n\n1. Create types file:\n```json\n{\n "Address": "AccountId",\n "LookupSource": "AccountId"\n}\n```\n\n2. Set environment variable:\n```bash\nexport SAS_SUBSTRATE_TYPES=/path/to/my-custom-types.json\n```\n\n### Type Bundle Generation\n\nUse the [generate-type-bundle](https://github.com/paritytech/generate-type-bundle) tool:\n\n```bash\nnpx @polkadot/typegen-cli generate --package @my-org/my-chain-types --endpoint ws://127.0.0.1:9944\nexport SAS_SUBSTRATE_TYPES_BUNDLE=/path/to/generated-bundle.json\n```\n\n## Logging Configuration\n\nControl logging behavior and output formatting.\n\n### Log Levels\n\n| Variable | Default | Options | Description |\n|----------|---------|---------|-------------|\n| `SAS_LOG_LEVEL` | `info` | `error`, `warn`, `info`, `http`, `verbose`, `debug`, `silly` | Minimum log level |\n\n**HTTP Status Code Mapping:**\n- `< 400` → `http` level\n- `400-499` → `warn` level \n- `≥ 500` → `error` level\n\n### Log Formatting\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `SAS_LOG_JSON` | `false` | Output logs in JSON format |\n| `SAS_LOG_FILTER_RPC` | `false` | Filter polkadot-js API-WS RPC logs |\n| `SAS_LOG_STRIP_ANSI` | `false` | Remove ANSI color codes |\n\n### File Logging\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `SAS_LOG_WRITE` | `false` | Write logs to file |\n| `SAS_LOG_WRITE_PATH` | `./logs` | Directory for log files |\n| `SAS_LOG_WRITE_MAX_FILE_SIZE` | `5242880` | Max file size (5MB) |\n| `SAS_LOG_WRITE_MAX_FILES` | `5` | Max number of log files |\n\n**Example configurations:**\n\n```bash\n# Development logging\nexport SAS_LOG_LEVEL=debug\nexport SAS_LOG_JSON=false\n\n# Production logging\nexport SAS_LOG_LEVEL=info\nexport SAS_LOG_JSON=true\nexport SAS_LOG_WRITE=true\nexport SAS_LOG_WRITE_PATH=/var/log/sidecar\n\n# RPC debugging\nexport SAS_LOG_LEVEL=http\nexport SAS_LOG_FILTER_RPC=false\nexport SAS_LOG_STRIP_ANSI=true\n```\n\n## Metrics & Monitoring\n\nEnable Prometheus metrics and Loki logging integration.\n\n### Metrics Server\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `SAS_METRICS_ENABLED` | `false` | Enable metrics collection |\n| `SAS_METRICS_PROM_HOST` | `127.0.0.1` | Prometheus server host |\n| `SAS_METRICS_PROM_PORT` | `9100` | Prometheus server port |\n| `SAS_METRICS_INCLUDE_QUERYPARAMS` | `false` | Include query params in metrics labels |\n\n### Loki Integration\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `SAS_METRICS_LOKI_HOST` | `127.0.0.1` | Loki server host |\n| `SAS_METRICS_LOKI_PORT` | `3100` | Loki server port |\n\n### Available Metrics\n\n**HTTP Metrics:**\n- `sas_http_requests` - Total HTTP requests\n- `sas_http_request_success` - Successful requests\n- `sas_http_request_error` - Failed requests\n- `sas_request_duration_seconds` - Request latency\n- `sas_response_size_bytes_seconds` - Response size\n- `sas_response_size_latency_ratio_seconds` - Bytes per second\n\n**Block Controller Metrics:**\n- `sas_extrinsics_in_request` - Extrinsics in block range requests\n- `sas_extrinsics_per_second` - Extrinsics processing rate\n- `sas_extrinsics_per_block` - Extrinsics per block\n- `sas_seconds_per_block` - Processing time per block\n\n**Endpoints:**\n- Prometheus: `http://host:port/metrics`\n- JSON format: `http://host:port/metrics.json`\n\n**Example setup:**\n\n```bash\n# Enable metrics\nexport SAS_METRICS_ENABLED=true\nexport SAS_METRICS_PROM_PORT=9090\nexport SAS_METRICS_INCLUDE_QUERYPARAMS=true\n\n# With external monitoring stack\nexport SAS_METRICS_PROM_HOST=prometheus.internal.com\nexport SAS_METRICS_LOKI_HOST=loki.internal.com\n```\n\n## Development & Debugging\n\n### Fee Calculation Debugging\n\nEnable detailed logging for fee and staking calculations:\n\n```bash\nCALC_DEBUG=1 sh calc/build.sh\n```\n\n### RPC Request Logging\n\nLog all RPC requests/responses:\n\n```bash\nyarn start:log-rpc\n# or\nNODE_ENV=test SAS_LOG_STRIP_ANSI=true yarn start\n```\n\n### Trace Endpoints\n\nEnable experimental tracing endpoints:\n\n1. **Run node with:** `--unsafe-rpc-external`\n2. **Verify chain support:** Check if `BlocksTrace` controller is active\n3. **Available for:** Polkadot, Kusama\n\n**Trace endpoints:**\n- `/experimental/blocks/{blockId}/traces/operations`\n- `/experimental/blocks/head/traces/operations`\n- `/experimental/blocks/{blockId}/traces`\n- `/experimental/blocks/head/traces`\n\n## Environment Profiles\n\nUse different configuration profiles for various environments.\n\n### Profile Structure\n\nCreate environment-specific files:\n```\n.env.local # Local development\n.env.staging # Staging environment\n.env.production # Production settings\n.env.test # Testing configuration\n```\n\n### Loading Profiles\n\n```bash\n# Use specific profile\nNODE_ENV=staging yarn start\n\n# Development with custom profile\nNODE_ENV=myprofile yarn dev\n```\n\n### Example Profiles\n\n**.env.local (Development):**\n```bash\nSAS_SUBSTRATE_URL=ws://127.0.0.1:9944\nSAS_EXPRESS_BIND_HOST=127.0.0.1\nSAS_EXPRESS_PORT=8080\nSAS_LOG_LEVEL=debug\nSAS_METRICS_ENABLED=false\n```\n\n**.env.production (Production):**\n```bash\nSAS_SUBSTRATE_URL=wss://polkadot-rpc.polkadot.io\nSAS_EXPRESS_BIND_HOST=0.0.0.0\nSAS_EXPRESS_PORT=8080\nSAS_LOG_LEVEL=info\nSAS_LOG_JSON=true\nSAS_LOG_WRITE=true\nSAS_METRICS_ENABLED=true\nSAS_EXPRESS_KEEP_ALIVE_TIMEOUT=30000\n```\n\n**.env.docker (Docker):**\n```bash\nSAS_SUBSTRATE_URL=ws://host.docker.internal:9944\nSAS_EXPRESS_BIND_HOST=0.0.0.0\nSAS_EXPRESS_PORT=8080\nSAS_LOG_JSON=true\n```\n\n## Docker Configuration\n\n### Environment File\n\nUse `.env.docker` with Docker:\n\n```bash\ndocker run --rm -it --env-file .env.docker -p 8080:8080 parity/substrate-api-sidecar\n```\n\n### Docker Compose\n\n```yaml\nversion: \'3.8\'\nservices:\n sidecar:\n image: parity/substrate-api-sidecar:latest\n ports:\n - "8080:8080"\n environment:\n - SAS_SUBSTRATE_URL=ws://substrate-node:9944\n - SAS_EXPRESS_BIND_HOST=0.0.0.0\n - SAS_LOG_LEVEL=info\n - SAS_LOG_JSON=true\n depends_on:\n - substrate-node\n```\n\n### Networking Notes\n\n- **Always use `SAS_EXPRESS_BIND_HOST=0.0.0.0`** in Docker\n- Use service names for internal communication\n- Use `host.docker.internal` to access host services\n\n## Configuration Validation\n\n### Testing Configuration\n\n```bash\n# Test connection\ncurl http://localhost:8080/blocks/head\n\n# Check metrics (if enabled)\ncurl http://localhost:8080/metrics\n\n# Verify node connection\ncurl http://localhost:8080/node/version\n```\n\n### Common Issues\n\n**Connection refused:**\n- Check `SAS_SUBSTRATE_URL` is reachable\n- Verify WebSocket/HTTP protocol matches node\n\n**Docker networking:**\n- Ensure `SAS_EXPRESS_BIND_HOST=0.0.0.0`\n- Check port mapping: `-p host_port:container_port`\n\n**Type errors:**\n- Add custom types with `SAS_SUBSTRATE_TYPES*` variables\n- Use type bundle generator for complex chains\n\n**Performance:**\n- Enable caching: `SAS_SUBSTRATE_CACHE_CAPACITY=1000`\n- Tune keep-alive: `SAS_EXPRESS_KEEP_ALIVE_TIMEOUT=30000`\n- Monitor metrics for bottlenecks\n\n## Complete Example\n\nFull production configuration:\n\n```bash\n#!/bin/bash\n# Production Sidecar Configuration\n\n# Server\nexport SAS_EXPRESS_BIND_HOST=0.0.0.0\nexport SAS_EXPRESS_PORT=8080\nexport SAS_EXPRESS_KEEP_ALIVE_TIMEOUT=30000\nexport SAS_EXPRESS_MAX_BODY=500kb\n\n# Blockchain connection\nexport SAS_SUBSTRATE_URL=wss://polkadot-rpc.polkadot.io\nexport SAS_SUBSTRATE_CACHE_CAPACITY=2000\n\n# Asset Hub multi-chain setup\nexport SAS_SUBSTRATE_MULTI_CHAIN_URL=\'[\n {"url":"wss://polkadot-asset-hub-rpc.polkadot.io","type":"assethub"},\n {"url":"wss://polkadot-rpc.polkadot.io","type":"relay"}\n]\'\n\n# Logging\nexport SAS_LOG_LEVEL=info\nexport SAS_LOG_JSON=true\nexport SAS_LOG_WRITE=true\nexport SAS_LOG_WRITE_PATH=/var/log/sidecar\nexport SAS_LOG_WRITE_MAX_FILE_SIZE=10485760 # 10MB\nexport SAS_LOG_FILTER_RPC=true\n\n# Metrics\nexport SAS_METRICS_ENABLED=true\nexport SAS_METRICS_PROM_HOST=0.0.0.0\nexport SAS_METRICS_PROM_PORT=9100\nexport SAS_METRICS_LOKI_HOST=loki.monitoring.svc\nexport SAS_METRICS_LOKI_PORT=3100\n\n# Start sidecar\nsubstrate-api-sidecar\n```\n\n---\n\nFor more specific chain integration, see the [Chain Integration Guide](https://github.com/paritytech/substrate-api-sidecar/blob/master/guides/CHAIN_INTEGRATION.md).')};function V(n){return V="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(n){return typeof n}:function(n){return n&&"function"==typeof Symbol&&n.constructor===Symbol&&n!==Symbol.prototype?"symbol":typeof n},V(n)}function X(n,e){return function(n){if(Array.isArray(n))return n}(n)||function(n,e){var t=null==n?null:"undefined"!=typeof Symbol&&n[Symbol.iterator]||n["@@iterator"];if(null!=t){var r,a,o,s,i=[],c=!0,l=!1;try{if(o=(t=t.call(n)).next,0===e){if(Object(t)!==t)return;c=!1}else for(;!(c=(r=o.call(t)).done)&&(i.push(r.value),i.length!==e);c=!0);}catch(n){l=!0,a=n}finally{try{if(!c&&null!=t.return&&(s=t.return(),Object(s)!==s))return}finally{if(l)throw a}}return i}}(n,e)||function(n,e){if(n){if("string"==typeof n)return K(n,e);var t={}.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?K(n,e):void 0}}(n,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function K(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=Array(e);t3?(a=m===r)&&(c=o[(i=o[4])?5:(i=3,3)],o[4]=o[5]=n):o[0]<=u&&((a=t<2&&ur||r>m)&&(o[4]=t,o[5]=r,h.n=m,i=0))}if(a||t>1)return s;throw d=!0,r}return function(a,p,m){if(l>1)throw TypeError("Generator is already running");for(d&&1===p&&u(p,m),i=p,c=m;(e=i<2?n:c)||!d;){o||(i?i<3?(i>1&&(h.n=-1),u(i,c)):h.n=c:h.v=c);try{if(l=2,o){if(i||(a="next"),e=o[a]){if(!(e=e.call(o,c)))throw TypeError("iterator result is not an object");if(!e.done)return e;c=e.value,i<2&&(i=0)}else 1===i&&(e=o.return)&&e.call(o),i<2&&(c=TypeError("The iterator does not provide a '"+a+"' method"),i=1);o=n}else if((e=(d=h.n<0)?c:t.call(r,h))!==s)break}catch(e){o=n,i=1,c=e}finally{l=1}}return{value:e,done:d}}}(t,a,o),!0),l}var s={};function i(){}function c(){}function l(){}e=Object.getPrototypeOf;var p=[][r]?e(e([][r]())):(Y(e={},r,function(){return this}),e),d=l.prototype=i.prototype=Object.create(p);function h(n){return Object.setPrototypeOf?Object.setPrototypeOf(n,l):(n.__proto__=l,Y(n,a,"GeneratorFunction")),n.prototype=Object.create(d),n}return c.prototype=l,Y(d,"constructor",l),Y(l,"constructor",c),c.displayName="GeneratorFunction",Y(l,a,"GeneratorFunction"),Y(d),Y(d,a,"Generator"),Y(d,r,function(){return this}),Y(d,"toString",function(){return"[object Generator]"}),(J=function(){return{w:o,m:h}})()}function Y(n,e,t,r){var a=Object.defineProperty;try{a({},"",{})}catch(n){a=0}Y=function(n,e,t,r){function o(e,t){Y(n,e,function(n){return this._invoke(e,t,n)})}e?a?a(n,e,{value:t,enumerable:!r,configurable:!r,writable:!r}):n[e]=t:(o("next",0),o("throw",1),o("return",2))},Y(n,e,t,r)}function Q(n,e,t,r,a,o,s){try{var i=n[o](s),c=i.value}catch(n){return void t(n)}i.done?e(c):Promise.resolve(c).then(r,a)}function Z(n){return function(){var e=this,t=arguments;return new Promise(function(r,a){var o=n.apply(e,t);function s(n){Q(o,r,a,s,i,"next",n)}function i(n){Q(o,r,a,s,i,"throw",n)}s(void 0)})}}function nn(n,e){for(var t=0;t1))try{var r=this.getSpecContentKey(n),a=U[r];if(!a)throw new Error("Specification content not found for: ".concat(n));t&&(t.innerHTML=a,this.setupCodeCopyButtons(t))}catch(e){console.error("Error loading specification content:",e),t&&(t.innerHTML='\n
    \n
    \n Error Loading Specification: Could not load the "'.concat(this.getSpecDisplayName(n),'" specification content.\n
    \n
    \n '))}}},{key:"getSpecContentKey",value:function(n){return{useRcBlock:"useRcBlock-spec"}[n]||n}},{key:"getSpecDisplayName",value:function(n){return{useRcBlock:"useRcBlock Specification"}[n]||n.replace(/-/g," ").replace(/\b\w/g,function(n){return n.toUpperCase()})}},{key:"loadGuideContent",value:function(n,e){var t=e.querySelector(".guide-content");if(!(t&&t.children.length>1))try{var r=U[n];if(!r)throw new Error("Guide content not found for: ".concat(n));t&&(t.innerHTML=r,this.setupCodeCopyButtons(t))}catch(e){console.error("Error loading guide content:",e),t&&(t.innerHTML='\n
    \n
    \n Error Loading Guide: Could not load the "'.concat(this.getGuideDisplayName(n),'" guide content.\n
    \n
    \n '))}}},{key:"setupCodeCopyButtons",value:function(n){n.querySelectorAll(".copy-button[data-copy]").forEach(function(n){n.addEventListener("click",function(e){e.preventDefault();var t=n.dataset.copy;navigator.clipboard&&navigator.clipboard.writeText(t).then(function(){var e=n.innerHTML;n.innerHTML='',setTimeout(function(){n.innerHTML=e},1e3)})})})}},{key:"getGuideDisplayName",value:function(n){return{"asset-hub-migration":"Asset Hub Migration","useRcBlock-spec":"useRcBlock Specification"}[n]||n.replace(/-/g," ").replace(/\b\w/g,function(n){return n.toUpperCase()})}},{key:"setupSearch",value:function(){var n,e=this,t=document.getElementById("search-input"),r=document.getElementById("search-clear"),a=document.getElementById("search-results");t&&this.searchHandler&&(t.addEventListener("input",function(t){var a=t.target.value.trim();r.style.display=a?"flex":"none",clearTimeout(n),n=setTimeout(function(){e.performSearch(a)},300)}),r.addEventListener("click",function(){t.value="",r.style.display="none",e.clearSearch()}),a.addEventListener("click",function(n){if(n.target.matches("[data-search-endpoint]")){n.preventDefault();var r=n.target.dataset.searchEndpoint;e.navigateToEndpoint(r),e.clearSearch(),t.blur()}else if(n.target.matches("[data-search-schema]")){n.preventDefault();var a=n.target.dataset.searchSchema;e.navigateToSchema(a),e.clearSearch(),t.blur()}}),t.addEventListener("keydown",function(n){"Escape"===n.key&&(e.clearSearch(),t.blur())}),document.addEventListener("click",function(n){n.target.closest(".search-container")||(a.style.display="none")}))}},{key:"setupServerSelection",value:function(){var n=this,e=document.getElementById("server-select");if(e){var t=this.parser.getServers();e.innerHTML="",t.forEach(function(n,t){var r=document.createElement("option");r.value=t,r.textContent=n.description||n.url,"http://localhost:8080"===n.url&&(r.selected=!0),e.appendChild(r)}),e.addEventListener("change",function(e){var r=parseInt(e.target.value),a=t[r];a&&(n.currentServer=a.url,n.updateExampleRequests())})}}},{key:"setupThemeToggle",value:function(){var n=document.getElementById("theme-toggle");if(n){var e=localStorage.getItem("theme")||"dark";document.documentElement.setAttribute("data-theme",e),n.addEventListener("click",function(){var n="dark"===document.documentElement.getAttribute("data-theme")?"light":"dark";document.documentElement.setAttribute("data-theme",n),localStorage.setItem("theme",n)})}}},{key:"setupMobileMenu",value:function(){var n=document.getElementById("menu-toggle"),e=document.getElementById("sidebar");n&&e&&(n.addEventListener("click",function(){e.classList.toggle("mobile-open"),n.classList.toggle("active")}),document.addEventListener("click",function(t){e.contains(t.target)||n.contains(t.target)||(e.classList.remove("mobile-open"),n.classList.remove("active"))}))}},{key:"setupCopyToClipboard",value:function(){var n=this;document.addEventListener("click",function(){var e=Z(J().m(function e(t){var r,a,o;return J().w(function(e){for(;;)switch(e.p=e.n){case 0:if(!t.target.matches(".copy-button")&&!t.target.closest(".copy-button")){e.n=4;break}if(t.preventDefault(),r=t.target.matches(".copy-button")?t.target:t.target.closest(".copy-button"),a=r.dataset.copy){e.n=1;break}return e.a(2);case 1:return e.p=1,e.n=2,navigator.clipboard.writeText(a);case 2:n.showCopyFeedback(r),e.n=4;break;case 3:e.p=3,o=e.v,console.error("Failed to copy text:",o),n.fallbackCopy(a,r);case 4:return e.a(2)}},e,null,[[1,3]])}));return function(n){return e.apply(this,arguments)}}())}},{key:"setupScrollSpy",value:function(){var n=new IntersectionObserver(function(n){n.forEach(function(n){var e=n.target.id,t=document.querySelector('[href="#'.concat(e,'"]'));t&&n.isIntersecting&&(document.querySelectorAll(".nav-link.active").forEach(function(n){n.classList.remove("active")}),t.classList.add("active"))})},{root:null,rootMargin:"-10% 0px -80% 0px",threshold:0});document.querySelectorAll(".content-section").forEach(function(e){n.observe(e)})}},{key:"setupCollapsibleSections",value:function(){document.addEventListener("click",function(n){if(n.target.matches(".section-toggle")||n.target.closest(".section-toggle")){n.preventDefault(),n.stopPropagation();var e=n.target.matches(".section-toggle")?n.target:n.target.closest(".section-toggle"),t=e.dataset.target,r=document.getElementById(t);r&&(r.classList.toggle("collapsed"),e.classList.toggle("collapsed"))}if(n.target.matches(".nav-section-header")||n.target.closest(".nav-section-header")){var a=(n.target.matches(".nav-section-header")?n.target:n.target.closest(".nav-section-header")).querySelector(".section-toggle");if(a){var o=a.dataset.target,s=document.getElementById(o);s&&(s.classList.toggle("collapsed"),a.classList.toggle("collapsed"))}}})}},{key:"setupCurlGenerator",value:function(){var n=this;document.addEventListener("click",function(e){if(e.target.matches(".generate-curl-btn")||e.target.closest(".generate-curl-btn")){e.preventDefault();var t=(e.target.matches(".generate-curl-btn")?e.target:e.target.closest(".generate-curl-btn")).dataset.endpointId;n.generateCurlCommand(t)}}),document.addEventListener("click",function(){var e=Z(J().m(function e(t){var r,a,o;return J().w(function(e){for(;;)switch(e.p=e.n){case 0:if(!t.target.id||!t.target.id.startsWith("copy-curl-")){e.n=4;break}if(t.preventDefault(),r=t.target.id.replace("copy-curl-",""),!(a=document.getElementById("curl-command-".concat(r)))||!a.textContent){e.n=4;break}return e.p=1,e.n=2,navigator.clipboard.writeText(a.textContent);case 2:n.showCopyFeedback(t.target),e.n=4;break;case 3:e.p=3,o=e.v,console.error("Failed to copy:",o);case 4:return e.a(2)}},e,null,[[1,3]])}));return function(n){return e.apply(this,arguments)}}())}},{key:"setupApiExplorerListeners",value:function(){var n=this;document.addEventListener("input",function(e){if(e.target.matches(".param-input")||e.target.matches(".json-input")){var t=e.target.dataset.endpoint;t&&n.updateApiExplorerPreview(t)}})}},{key:"updateApiExplorerPreview",value:function(n){var e=this.parser.getEndpoint(n);if(e){var t=this.buildApiExplorerRequestConfig(e,n),r=document.getElementById("curl-preview-".concat(n));r&&(r.textContent=this.generateCurl(t))}}},{key:"buildApiExplorerRequestConfig",value:function(n,e){var t=this.currentServer+n.path,r={method:n.method,headers:{"Content-Type":"application/json"}},a=new URLSearchParams,o={};document.querySelectorAll('input[data-endpoint="'.concat(e,'"]')).forEach(function(n){var e=n.name,t=n.value.trim(),s=n.dataset.location;if(t)switch(s){case"path":o[e]=t;break;case"query":a.append(e,t);break;case"header":r.headers[e]=t}}),Object.entries(o).forEach(function(n){var e=X(n,2),r=e[0],a=e[1];t=t.replace("{".concat(r,"}"),encodeURIComponent(a))});var s=a.toString();s&&(t+=(t.includes("?")?"&":"?")+s);var i=document.getElementById("request-body-".concat(e));if(i&&i.value.trim())try{r.body=JSON.stringify(JSON.parse(i.value))}catch(n){r.body=i.value}return{url:t,options:r}}},{key:"generateCurl",value:function(n){var e="curl -X ".concat(n.options.method,' "').concat(n.url,'"');return Object.entries(n.options.headers||{}).forEach(function(n){var t=X(n,2),r=t[0],a=t[1];e+=' \\\n -H "'.concat(r,": ").concat(a,'"')}),n.options.body&&(e+=" \\\n -d '".concat(n.options.body,"'")),e}},{key:"generateCurlCommand",value:function(n){var e=this.parser.getEndpoint(n);if(e){var t=document.querySelectorAll('[data-endpoint-id="'.concat(n,'"] .param-input')),r={},a=!1;if(t.forEach(function(n){var e=n.dataset.paramName,t=n.dataset.paramLocation,o=n.value.trim();n.hasAttribute("required")&&!o?(a=!0,n.classList.add("error")):n.classList.remove("error"),o&&(r[t]||(r[t]={}),r[t][e]=o)}),a)this.showParameterError(n,"Please fill in all required parameters");else{var o=this.currentServer+e.path,s=e.method.toUpperCase();if(r.path&&Object.entries(r.path).forEach(function(n){var e=X(n,2),t=e[0],r=e[1];o=o.replace("{".concat(t,"}"),encodeURIComponent(r))}),r.query&&Object.keys(r.query).length>0){var i=Object.entries(r.query).map(function(n){var e=X(n,2),t=e[0],r=e[1];return"".concat(encodeURIComponent(t),"=").concat(encodeURIComponent(r))}).join("&");o+="?".concat(i)}var c="curl -X ".concat(s);"GET"!==s&&(c+=' -H "Content-Type: application/json"'),!e.requestBody||"POST"!==s&&"PUT"!==s&&"PATCH"!==s||(c+=' \\\n -d \'{"example": "data"}\' \\'),c+=' \\\n "'.concat(o,'"'),this.displayGeneratedCurl(n,c)}}}},{key:"displayGeneratedCurl",value:function(n,e){var t=document.getElementById("curl-output-".concat(n)),r=document.getElementById("curl-command-".concat(n)),a=document.getElementById("copy-curl-".concat(n));t&&r&&(r.textContent=e,t.style.display="block",a&&(a.dataset.copy=e),t.scrollIntoView({behavior:"smooth",block:"nearest"}))}},{key:"showParameterError",value:function(n,e){var t=document.querySelector('[data-endpoint-id="'.concat(n,'"] .param-error'));t&&t.remove();var r=document.querySelector('[data-endpoint-id="'.concat(n,'"] .generate-curl-section'));if(r){var a=document.createElement("div");a.className="param-error",a.textContent=e,r.insertBefore(a,r.firstChild),setTimeout(function(){a.parentNode&&a.remove()},5e3)}}},{key:"render",value:function(){this.components.renderNavigation(),this.updateApiInfo(),setTimeout(function(){var n=document.getElementById("endpoints-nav"),e=document.querySelector('[data-target="endpoints-nav"]');n&&e&&(n.classList.remove("collapsed"),e.classList.remove("collapsed"))},100)}},{key:"updateApiInfo",value:function(){var n=this.parser.getApiInfo();document.querySelectorAll("#api-version, #version-display").forEach(function(e){e.textContent="v".concat(n.version)}),document.title="".concat(n.title," Documentation")}},{key:"navigateToEndpoint",value:function(n){console.log("Navigating to endpoint:",n);var e=this.parser.getEndpoint(n);if(e)try{var t=this.components.renderEndpoint(e,this.currentServer);this.showContent(t),this.updateBreadcrumb([{name:"API",href:"#overview"},{name:e.tags[0]||"Endpoints",href:"#"},{name:"".concat(e.method," ").concat(e.path),href:"#endpoint-".concat(n)}]),window.scrollTo(0,0),console.log("Successfully navigated to endpoint:",n)}catch(n){console.error("Error navigating to endpoint:",n)}else console.error("Endpoint not found:",n)}},{key:"navigateToSchema",value:function(n){var e=this.parser.getSchema(n);if(e){var t=this.components.renderSchemaPage(e);this.showContent(t),this.updateBreadcrumb([{name:"API",href:"#overview"},{name:"Schemas",href:"#"},{name:n,href:"#schema-".concat(n)}]),window.scrollTo(0,0)}}},{key:"showContent",value:function(n){var e=document.getElementById("dynamic-content"),t=document.getElementById("overview"),r=document.getElementById("getting-started");e&&t&&(t.style.display="none",r&&(r.style.display="none"),e.innerHTML=n,document.querySelectorAll('[id^="guide-"], [id^="spec-"]').forEach(function(n){n.style.display="none"}))}},{key:"showOverview",value:function(){var n=document.getElementById("dynamic-content"),e=document.getElementById("overview"),t=document.getElementById("getting-started");n&&e&&(e.style.display="block",t&&(t.style.display="none"),n.innerHTML="",document.querySelectorAll('[id^="guide-"], [id^="spec-"]').forEach(function(n){n.style.display="none"})),window.scrollTo(0,0),this.hideBreadcrumb()}},{key:"showGettingStarted",value:function(){var n=document.getElementById("dynamic-content"),e=document.getElementById("overview"),t=document.getElementById("getting-started");n&&t&&e&&(e.style.display="none",t.style.display="block",n.innerHTML="",document.querySelectorAll('[id^="guide-"], [id^="spec-"]').forEach(function(n){n.style.display="none"})),window.scrollTo(0,0),this.hideBreadcrumb()}},{key:"performSearch",value:function(n){var e=this.searchHandler.search(n);this.searchHandler.renderResults(e)}},{key:"clearSearch",value:function(){var n=document.getElementById("search-input"),e=document.getElementById("search-clear"),t=document.getElementById("search-results");n&&(n.value=""),e&&(e.style.display="none"),t&&(t.style.display="none")}},{key:"updateBreadcrumb",value:function(n){var e=document.getElementById("breadcrumb"),t=e.querySelector(".breadcrumb-list");t&&(t.innerHTML=n.map(function(e,t){return'\n \n ")}).join(""),e.style.display="block")}},{key:"hideBreadcrumb",value:function(){var n=document.getElementById("breadcrumb");n&&(n.style.display="none")}},{key:"updateExampleRequests",value:function(){var n=this;console.log("Server changed to:",this.currentServer),document.querySelectorAll(".request-url").forEach(function(e){var t=e.dataset.endpoint,r=n.parser.getEndpoint(t);r&&(e.value=n.currentServer+r.path)}),document.querySelectorAll('[id^="curl-preview-"]').forEach(function(n){n.textContent="# Enter parameters to generate request"}),document.querySelectorAll('[id^="curl-command-"]').forEach(function(n){n.textContent=""})}},{key:"showCopyFeedback",value:function(n){var e=n.innerHTML;n.innerHTML="✓",n.classList.add("copied"),setTimeout(function(){n.innerHTML=e,n.classList.remove("copied")},2e3)}},{key:"copyToClipboard",value:(t=Z(J().m(function n(e){var t;return J().w(function(n){for(;;)switch(n.p=n.n){case 0:return n.p=0,n.n=1,navigator.clipboard.writeText(e);case 1:n.n=3;break;case 2:n.p=2,t=n.v,console.error("Failed to copy text:",t),this.fallbackCopy(e);case 3:return n.a(2)}},n,this,[[0,2]])})),function(n){return t.apply(this,arguments)})},{key:"fallbackCopy",value:function(n,e){var t=document.createElement("textarea");t.value=n,t.style.position="fixed",t.style.opacity="0",document.body.appendChild(t),t.select();try{document.execCommand("copy"),this.showCopyFeedback(e)}catch(n){console.error("Fallback copy failed:",n)}document.body.removeChild(t)}},{key:"showLoading",value:function(){var n=document.getElementById("loading-screen"),e=document.getElementById("app");n&&(n.style.display="flex"),e&&(e.style.display="none")}},{key:"hideLoading",value:function(){var n=document.getElementById("loading-screen"),e=document.getElementById("app");n&&(n.style.display="none"),e&&(e.style.display="block")}},{key:"showError",value:function(n){var e=document.getElementById("loading-screen");e&&(e.innerHTML='\n
    \n
    ⚠️
    \n

    '.concat(n,'

    \n \n
    \n '))}}],e&&nn(n.prototype,e),Object.defineProperty(n,"prototype",{writable:!1}),n;var n,e,t,r}();document.addEventListener("DOMContentLoaded",function(){var n=new tn;window.docAppInstance=n,n.init()}),window.addEventListener("hashchange",function(){var n=window.location.hash.slice(1);if(n.startsWith("endpoint-")){var e=n.replace("endpoint-",""),t=window.docAppInstance;t&&t.navigateToEndpoint(e)}else if(n.startsWith("schema-")){var r=n.replace("schema-",""),a=window.docAppInstance;a&&a.navigateToSchema(r)}else if("getting-started"===n){var o=window.docAppInstance;if(o){o.showGettingStarted(),document.querySelectorAll("[data-page]").forEach(function(n){n.classList.remove("active")});var s=document.querySelector('[data-page="getting-started"]');s&&s.classList.add("active")}}else if(n.startsWith("guide-")){var i=n.replace("guide-",""),c=window.docAppInstance;if(c){c.showGuide(i),document.querySelectorAll("[data-guide]").forEach(function(n){n.classList.remove("active")});var l=document.querySelector('[data-guide="'.concat(i,'"]'));l&&l.classList.add("active")}}else if(n.startsWith("spec-")){var p=n.replace("spec-",""),d=window.docAppInstance;if(d){d.showSpecification(p),document.querySelectorAll("[data-spec]").forEach(function(n){n.classList.remove("active")});var h=document.querySelector('[data-spec="'.concat(p,'"]'));h&&h.classList.add("active")}}else if(!n||"overview"===n){var u=window.docAppInstance;if(u){u.showOverview(),document.querySelectorAll("[data-page]").forEach(function(n){n.classList.remove("active")});var m=document.querySelector('[data-page="overview"]');m&&m.classList.add("active")}}}),window.addEventListener("load",function(){var n=window.location.hash.slice(1);n&&"overview"!==n&&setTimeout(function(){console.log("Triggering initial navigation for hash:",n),window.dispatchEvent(new HashChangeEvent("hashchange"))},1e3)}),window.DocApp=tn})(); \ No newline at end of file diff --git a/docs-v2/guides/USE_RC_BLOCK_SPEC.md b/docs-v2/guides/USE_RC_BLOCK_SPEC.md index 4b8961fb3..f73da60c4 100644 --- a/docs-v2/guides/USE_RC_BLOCK_SPEC.md +++ b/docs-v2/guides/USE_RC_BLOCK_SPEC.md @@ -24,6 +24,15 @@ The `useRcBlock` parameter is a boolean parameter that works in conjunction with **Block Finalization Note**: The `useRcBlock` parameter does not make any assumptions about whether the block you pass is finalized or a best block. It is recommended to ensure the block you are passing is finalized if block finalization is important for your use case. +### useRcBlockFormat Parameter +The `useRcBlockFormat` parameter controls the response format when using `useRcBlock=true`. This parameter is only valid when `useRcBlock=true` is specified. + +**Values:** +- `array` (default): Returns the standard array format with enhanced metadata +- `object`: Wraps the response in an object containing relay chain block info and the parachain data array + +**Validation**: Using `useRcBlockFormat` without `useRcBlock=true` will return a `400 Bad Request` error. + ## Implementation: useRcBlock Query Parameter ### Core Functionality @@ -40,6 +49,10 @@ GET /pallets/staking/progress?at=1000000&useRcBlock=true GET /accounts/{accountId}/balance-info?at=0x123abc&useRcBlock=true GET /blocks/head?useRcBlock=true GET /blocks/12345?at=12345&useRcBlock=true + +# With useRcBlockFormat=object for wrapped response format +GET /pallets/staking/progress?at=1000000&useRcBlock=true&useRcBlockFormat=object +GET /accounts/{accountId}/balance-info?at=0x123abc&useRcBlock=true&useRcBlockFormat=object ``` ### Response Format Changes @@ -52,7 +65,7 @@ Returns single response object (unchanged): } ``` -**With useRcBlock=true:** +**With useRcBlock=true (default array format):** Returns array format with additional metadata: ```json [{ @@ -65,6 +78,38 @@ Returns array format with additional metadata: Or empty array `[]` if no corresponding Asset Hub block exists. +**With useRcBlock=true&useRcBlockFormat=object:** +Returns object format wrapping the data with relay chain block info: +```json +{ + "rcBlock": { + "hash": "0x1234567890abcdef...", + "parentHash": "0xabcdef1234567890...", + "number": "1000000" + }, + "parachainDataPerBlock": [ + { + // ... existing endpoint response data + "rcBlockHash": "0x1234567890abcdef...", + "rcBlockNumber": "1000000", + "ahTimestamp": "1642694400" + } + ] +} +``` + +Or with empty `parachainDataPerBlock` array if no corresponding Asset Hub block exists: +```json +{ + "rcBlock": { + "hash": "0x1234567890abcdef...", + "parentHash": "0xabcdef1234567890...", + "number": "1000000" + }, + "parachainDataPerBlock": [] +} +``` + ## Supported Endpoints ### Block Endpoints Supporting useRcBlock: @@ -90,7 +135,8 @@ When `useRcBlock=true` is used, responses include additional context fields: - `rcBlockHash`: The relay chain block hash - `rcBlockNumber`: The relay chain block number - `ahTimestamp`: The Asset Hub block timestamp -- Array format prepares for future elastic scaling scenarios +- Array format (default) prepares for future elastic scaling scenarios +- Object format (`useRcBlockFormat=object`) provides relay chain block metadata wrapper with `rcBlock` info (hash, parentHash, number) and `parachainDataPerBlock` array ### Backward Compatibility - Defaults to `false`, maintaining existing functionality when not specified @@ -104,9 +150,11 @@ When `useRcBlock=true` is used, responses include additional context fields: ### Validation Logic The `validateUseRcBlock` middleware ensures: -1. **Boolean validation**: Must be "true" or "false" string +1. **Boolean validation**: `useRcBlock` must be "true" or "false" string 2. **Asset Hub requirement**: Only works when connected to Asset Hub 3. **Relay chain availability**: Requires relay chain API configuration via `SAS_SUBSTRATE_MULTI_CHAIN_URL` +4. **useRcBlockFormat dependency**: `useRcBlockFormat` requires `useRcBlock=true` to be specified +5. **useRcBlockFormat values**: Must be either "array" or "object" string ## Multi-Block and Elastic Scaling Scenarios diff --git a/docs-v2/openapi-v1.yaml b/docs-v2/openapi-v1.yaml index 379862092..688d82b4c 100755 --- a/docs-v2/openapi-v1.yaml +++ b/docs-v2/openapi-v1.yaml @@ -72,6 +72,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: assets in: query description: An array of AssetId's to be queried. If not supplied, defaults to providing @@ -135,6 +143,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: assetId in: query description: The `assetId` associated with the asset-approval. @@ -201,6 +217,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: token in: query description: 'Token to query the balance of. If not specified it will query @@ -338,6 +362,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: assets in: query description: An array of AssetId's to be queried. If not supplied, defaults to providing @@ -401,6 +433,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: assetId in: query description: The `assetId` associated with the asset-approval. @@ -468,6 +508,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: foreignAssets in: query description: An array of multilocation JSON strings to be queried. If not supplied, all @@ -531,6 +579,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successfull operation @@ -582,6 +638,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: includeClaimedRewards in: query description: When set to `false`, the `claimedRewards` field is not included @@ -655,6 +719,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: depth in: query description: The number of eras to query for payouts of. Must be less @@ -742,6 +814,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: includeClaimable in: query description: When set to 'true', calculates and includes vested amounts for each vesting schedule plus the claimable amount. For Asset Hub post-migration queries, this requires a relay chain connection since vesting schedules use relay chain block numbers. @@ -1672,6 +1752,14 @@ paths: schema: type: boolean default: false + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -1751,12 +1839,20 @@ paths: type: string - name: useRcBlock in: query - description: When set to `true`, it will use the relay chain block identifier to determine + description: When set to `true`, it will use the relay chain block identifier to determine the corresponding Asset Hub block. Only supported for Asset Hub endpoints with relay chain API available. When used, returns an array of response objects or empty array if no Asset Hub block found. required: false schema: type: boolean default: false + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: useEvmFormat in: query description: When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM. @@ -1807,6 +1903,14 @@ paths: schema: type: boolean default: false + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -1873,12 +1977,20 @@ paths: default: false - name: useRcBlock in: query - description: When set to `true`, it will use the relay chain block identifier to determine + description: When set to `true`, it will use the relay chain block identifier to determine the corresponding Asset Hub block. Only supported for Asset Hub endpoints with relay chain API available. When used, returns an array of response objects or empty array if no Asset Hub block found. required: false schema: type: boolean default: false + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: useEvmFormat in: query description: When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM. @@ -1964,13 +2076,21 @@ paths: type: string - name: useRcBlock in: query - description: When set to `true`, it will use the latest relay chain block to determine the + description: When set to `true`, it will use the latest relay chain block to determine the corresponding Asset Hub block. Only supported for Asset Hub endpoints with relay chain API available. Respects the `finalized` parameter when determining which relay chain block to use. When used, returns an array of response objects or empty array if no Asset Hub block found. required: false schema: type: boolean default: false + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: useEvmFormat in: query description: When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM. @@ -2017,6 +2137,14 @@ paths: schema: type: boolean default: false + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2060,6 +2188,14 @@ paths: schema: type: boolean default: false + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2562,6 +2698,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2598,6 +2742,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2640,6 +2792,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2682,6 +2842,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2713,6 +2881,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2751,6 +2927,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2783,6 +2967,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2827,6 +3019,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2890,6 +3090,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2945,6 +3153,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -3008,6 +3224,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -3064,6 +3288,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -3127,6 +3359,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -3183,6 +3423,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -3246,6 +3494,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -4284,6 +4540,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -4360,6 +4624,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -4410,6 +4682,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -4453,6 +4733,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -4500,6 +4788,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -4931,6 +5227,34 @@ paths: $ref: '#/components/schemas/BlocksTraceOperations' components: schemas: + RcBlockInfo: + type: object + description: Relay chain block information used when useRcBlockFormat=object. + properties: + hash: + type: string + description: The relay chain block hash. + format: hex + parentHash: + type: string + description: The parent block hash of the relay chain block. + format: hex + number: + type: string + description: The relay chain block number. + format: unsignedInteger + RcBlockObjectResponse: + type: object + description: Response wrapper when using useRcBlockFormat=object. Contains relay chain block info and an array of parachain data. + properties: + rcBlock: + $ref: '#/components/schemas/RcBlockInfo' + parachainDataPerBlock: + type: array + description: Array of response objects, one for each Asset Hub block found in the relay chain block. Empty array if no Asset Hub blocks found. + items: + type: object + description: The endpoint-specific response data for each Asset Hub block. AccountAssetsApproval: type: object properties: diff --git a/docs/dist/app.bundle.js b/docs/dist/app.bundle.js index dd7bf8b6a..82e04f3e6 100644 --- a/docs/dist/app.bundle.js +++ b/docs/dist/app.bundle.js @@ -14226,7 +14226,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var swag \*****************************/ /***/ ((module) => { -eval("module.exports = {\"openapi\":\"3.0.0\",\"info\":{\"title\":\"Substrate API Sidecar\",\"description\":\"Substrate API Sidecar is a REST service that makes it easy to interact with blockchain nodes built using Substrate's FRAME framework.\",\"contact\":{\"url\":\"https://github.com/paritytech/substrate-api-sidecar\"},\"license\":{\"name\":\"GPL-3.0-or-later\",\"url\":\"https://github.com/paritytech/substrate-api-sidecar/blob/master/LICENSE\"},\"version\":\"20.13.3\"},\"servers\":[{\"url\":\"https://polkadot-public-sidecar.parity-chains.parity.io/\",\"description\":\"Polkadot Parity public sidecar\"},{\"url\":\"https://kusama-public-sidecar.parity-chains.parity.io/\",\"description\":\"Kusama Parity public sidecar\"},{\"url\":\"https://polkadot-asset-hub-public-sidecar.parity-chains.parity.io/\",\"description\":\"Polkadot Asset Hub Parity public sidecar\"},{\"url\":\"https://kusama-asset-hub-public-sidecar.parity-chains.parity.io/\",\"description\":\"Kusama Asset Hub Parity public sidecar\"},{\"url\":\"http://localhost:8080\",\"description\":\"Localhost\"}],\"tags\":[{\"name\":\"accounts\"},{\"name\":\"ahm\",\"description\":\"Asset Hub Migration information\"},{\"name\":\"blocks\"},{\"name\":\"contracts\"},{\"name\":\"coretime\"},{\"name\":\"node\",\"description\":\"node connected to sidecar\"},{\"name\":\"pallets\",\"description\":\"pallets employed in the runtime\"},{\"name\":\"runtime\"},{\"name\":\"transaction\"},{\"name\":\"paras\"},{\"name\":\"trace\"},{\"name\":\"rc\",\"description\":\"relay chain specific endpoints for asset hub\"}],\"paths\":{\"/accounts/{accountId}/asset-balances\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an array of asset-balances for an account.\",\"description\":\"Returns information about an account's asset-balances. This is specific to the assets pallet for parachains. If no `assets` query parameter is provided, all asset-balances for the given account will be returned.\",\"operationId\":\"getAssetBalances\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset-balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a positive integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s). Only supported for Asset Hub endpoints. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"assets\",\"in\":\"query\",\"description\":\"An array of AssetId's to be queried. If not supplied, defaults to providing all asset balances associated with the `accountId` will be returned. The array query param format follows Express 4.x API. ex:`?assets[]=1&assets[]=2&assets[]=3`.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of assetId numbers represented as strings\",\"format\":\"Array of unsignedInteger's\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountAssetsBalances\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountAssetsBalances\"}}],\"description\":\"Returns a single object when using 'at' parameter or no query params. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"Invalid Address, invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/asset-approvals\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an asset approval for an account.\",\"description\":\"Returns information about an account's asset approval transaction. It is required to pass in a delegate and an assetId as query parameters.\",\"operationId\":\"getAssetApprovals\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset approval info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s). Only supported for Asset Hub endpoints. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"assetId\",\"in\":\"query\",\"description\":\"The `assetId` associated with the asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"description\":\"An assetId represented as an unsignedInteger.\",\"format\":\"unsignedInteger\"}},{\"name\":\"delegate\",\"in\":\"query\",\"description\":\"The delegate's `accountId` associated with an asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"Invalid Address, invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/balance-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get balance information for an account.\",\"description\":\"Returns information about an account's balance. Replaces `/balance/{address}` from versions < v1.0.0.\",\"operationId\":\"getAccountBalanceInfo\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving balance info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"token\",\"in\":\"query\",\"description\":\"Token to query the balance of. If not specified it will query the chains native token (e.g. DOT for Polkadot). Note: this is only relevant for chains that support multiple tokens through the ORML tokens pallet.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Token symbol\"}},{\"name\":\"denominated\",\"in\":\"query\",\"description\":\"When set to `true` it will denominate any balance's given atomic value using the chains given decimal value.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountBalanceInfo\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountBalanceInfo\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"Invalid Address, invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/convert\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Convert a given AccountId to an SS58 address.\",\"description\":\"Returns the SS58 prefix, the network address format, the SS58 address, and the AccountId that was given as input parameter, the scheme that was used and if it is a public key or not (boolean).\",\"operationId\":\"accountConvert\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"AccountId or Public Key (hex).\",\"required\":true,\"schema\":{\"format\":\"AccountId or Hex\",\"type\":\"string\"}},{\"name\":\"scheme\",\"in\":\"query\",\"description\":\"The cryptographic scheme to be used in order to convert the AccountId to an SS58 address. It can take one of three values [sr25519, ed25519, ecdsa]. The default scheme that is used is `sr25519` (if it is not set in the query parameter).\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"string\",\"default\":\"sr25519\"}},{\"name\":\"prefix\",\"in\":\"query\",\"description\":\"The address prefix which can be one of the values found in the SS58-registry.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"number\",\"default\":42}},{\"name\":\"publicKey\",\"in\":\"query\",\"description\":\"Defines if the given value in the path parameter is a Public Key (hex) or not (hence AccountId).\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successfully converted the AccountId and retrieved the address info.\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountConvert\"}}}},\"400\":{\"description\":\"Invalid AccountId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"AccountId not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/pool-asset-balances\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an array of pool-asset-balances for an account.\",\"description\":\"Returns information about an account's pool-asset-balances. This is specific to the pool assets pallet for parachains. If no `assets` query parameter is provided, all pool-asset-balances for the given account will be returned.\",\"operationId\":\"getPoolAssetBalances\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query pool-asset-balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a positive integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pool-asset-balance info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"assets\",\"in\":\"query\",\"description\":\"An array of AssetId's to be queried. If not supplied, defaults to providing all asset balances associated with the `accountId` will be returned. The array query param format follows Express 4.x API. ex:`?assets[]=1&assets[]=2&assets[]=3`.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"A list of assetId numbers represented as strings\",\"format\":\"Array of unsignedInteger's\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountPoolAssetsBalances\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountPoolAssetsBalances\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"Invalid Address, invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/pool-asset-approvals\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an asset approval for an account.\",\"description\":\"Returns information about an account's asset approval transaction. It is required to pass in a delegate and an assetId as query parameters.\",\"operationId\":\"getPoolAssetApprovals\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset approval info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pool-asset-approval info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"assetId\",\"in\":\"query\",\"description\":\"The `assetId` associated with the asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"description\":\"An assetId represented as an unsignedInteger.\",\"format\":\"unsignedInteger\"}},{\"name\":\"delegate\",\"in\":\"query\",\"description\":\"The delegate's `accountId` associated with an asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"Invalid Address, invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/foreign-asset-balances\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an array of foreign-asset-balances for an account.\",\"description\":\"Returns information about an account's foreign-asset-balances. This is specific to the foreignAssets pallet for parachains. If no `foreignAssets` query parameter is provided, all foreign-asset-balances for the given account will be returned.\",\"operationId\":\"getForeignAssetBalances\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query foreign-asset-balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a positive integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving foreign-asset-balance info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"foreignAssets\",\"in\":\"query\",\"description\":\"An array of multilocation JSON strings to be queried. If not supplied, all foreign asset balances associated with the `accountId` will be returned. The array query param format follows Express 4.x API. ex:`?foreignAssets[]={\\\"parents\\\":\\\"1\\\",\\\"interior\\\":{\\\"X1\\\":{\\\"Parachain\\\":\\\"2125\\\"}}}&foreignAssets[]={\\\"parents\\\":\\\"2\\\",\\\"interior\\\":{\\\"X1\\\":{\\\"GlobalConsensus\\\":\\\"Polkadot\\\"}}}`.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of multilocation objects represented as JSON strings.\",\"format\":\"Array of JSON strings\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountForeignAssetsBalances\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountForeignAssetsBalances\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"Invalid Address, invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/proxy-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get proxy account information.\",\"description\":\"Returns information about a proxy account. This will include delegated accounts and deposits held.\",\"operationId\":\"getProxyInfo\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query proxy info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving proxy info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountProxyInfo\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountProxyInfo\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"Invalid Address, invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/staking-info\":{\"get\":{\"tags\":[\"staking\"],\"summary\":\"Get staking information for a _Stash_ account.\",\"description\":\"Returns information about a _Stash_ account's staking activity. Replaces `/staking/{address}` from versions < v1.0.0. The _Stash_ account can be either a validator or nominator account.\",\"operationId\":\"getStakingSummaryByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the staking info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving staking info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"includeClaimedRewards\",\"in\":\"query\",\"description\":\"When set to `false`, the `claimedRewards` field is not included in the response.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountStakingInfo\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountStakingInfo\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/staking-payouts\":{\"get\":{\"tags\":[\"staking\"],\"summary\":\"Get payout information for a _Stash_ account.\",\"description\":\"Returns payout information for the last specified eras. If specifying both the depth and era query params, this endpoint will return information for (era - depth) through era. (i.e. if depth=5 and era=20 information will be returned for eras 16 through 20).\\n\\n**Asset Hub Migration Support:**\\nFor Asset Hub chains that have migrated staking from the relay chain, this endpoint automatically handles era query routing:\\n- **Pre-migration eras**: Queries historical data from the relay chain\\n- **Post-migration eras**: Queries current data from Asset Hub\\n- **Cross-migration queries**: Automatically splits the era range and combines results from both chains\\n\\n**Note:** The `nominator*` fields correspond to the address being queried, even if it is a validator's _Stash_ address. This is because a validator is technically nominating itself.\\n\",\"operationId\":\"getStakingPayoutsByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query staking payouts.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving staking payouts. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"depth\",\"in\":\"query\",\"description\":\"The number of eras to query for payouts of. Must be less than or equal to `HISTORY_DEPTH`. In cases where `era - (depth -1)` is less than 0, the first era queried will be 0.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"default\":1}},{\"name\":\"era\",\"in\":\"query\",\"description\":\"The era to query at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"default\":\"`active_era - 1`\"}},{\"name\":\"unclaimedOnly\",\"in\":\"query\",\"description\":\"Only return unclaimed rewards.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountStakingPayouts\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountStakingPayouts\"}}],\"description\":\"**Standard Mode**: Returns a single object when using standard parameters (without useRcBlock). \\n\\n**Relay Chain Block Mode**: Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\\n\\n**Asset Hub Migration**: For both modes, when querying eras that span the Asset Hub migration boundary, the endpoint automatically fetches and combines data from both relay chain (pre-migration eras) and Asset Hub (post-migration eras). The migration handling is transparent to the user - you get complete payout information regardless of which chain originally held the data.\\n\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/vesting-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get vesting information for an account.\",\"description\":\"Returns the vesting schedule for an account. Replaces `/vesting/{address}` from versions < v1.0.0.\",\"operationId\":\"getVestingSummaryByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the vesting info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving vesting info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"includeClaimable\",\"in\":\"query\",\"description\":\"When set to 'true', calculates and includes vested amounts for each vesting schedule plus the claimable amount. For Asset Hub post-migration queries, this requires a relay chain connection since vesting schedules use relay chain block numbers.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountVestingInfo\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountVestingInfo\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"Invalid Address, invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{address}/validate\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Validate a given address.\",\"description\":\"Returns whether the given address is valid ss58 format, the ss58 prefix if the address has one, the network address format, and what the account ID is for this address.\",\"operationId\":\"getValidationByAccountId\",\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 or Hex address of the account.\",\"required\":true,\"schema\":{\"format\":\"SS58 or Hex\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successfully retrieved address info\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountValidation\"}}}}}}},\"/accounts/compare\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Compares up to 30 SS58 addresses.\",\"description\":\"Returns if the given addresses are equal or not, along with details of each address. Equality is determined by comparing the accountId/publicKey of each address.\",\"operationId\":\"accountCompare\",\"parameters\":[{\"name\":\"addresses\",\"in\":\"query\",\"description\":\"An array or a comma separated string of SS58 addresses. Provide up to 30 addresses using one of these formats `?addresses=...&addresses=...` or `?addresses[]=...&addresses[]=...` or `?addresses=...,...`.\",\"required\":true,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of SS58 addresses.\"}}],\"responses\":{\"200\":{\"description\":\"successfully compared at least two SS58 addresses.\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountCompare\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/ahm-info\":{\"get\":{\"tags\":[\"ahm\"],\"summary\":\"Get Asset Hub Migration information.\",\"description\":\"Returns information about Asset Hub Migration (AHM) including migration start and end blocks for both relay chain and Asset Hub. The endpoint automatically detects whether you're connected to a relay chain or Asset Hub and provides relevant migration data. Returns static migration boundaries for known networks or queries on-chain migration pallets for dynamic information.\",\"operationId\":\"getAhmInfo\",\"responses\":{\"200\":{\"description\":\"Successfully retrieved Asset Hub Migration information\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AhmInfo\"}}}},\"400\":{\"description\":\"Invalid chain specName or missing migration pallets\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"500\":{\"description\":\"Internal server error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/accounts/{address}/balance-info\":{\"get\":{\"tags\":[\"rc accounts\"],\"summary\":\"Get balance information for an account on the relay chain.\",\"description\":\"Returns information about an account's balance on the relay chain. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for balance information.\",\"operationId\":\"getRcAccountBalanceInfo\",\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"token\",\"in\":\"query\",\"description\":\"Token to query the balance of. If not specified it will query the chains native token (e.g. DOT for Polkadot). Note: this is only relevant for chains that support multiple tokens through the ORML tokens pallet.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Token symbol\"}},{\"name\":\"denominated\",\"in\":\"query\",\"description\":\"When set to `true` it will denominate any balance's given atomic value using the chains given decimal value.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountBalanceInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/accounts/{address}/proxy-info\":{\"get\":{\"tags\":[\"rc accounts\"],\"summary\":\"Get proxy information for an account on the relay chain.\",\"description\":\"Returns information about an account's proxy configuration on the relay chain. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for proxy information.\",\"operationId\":\"getRcAccountProxyInfo\",\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query proxy info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountProxyInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/accounts/{address}/vesting-info\":{\"get\":{\"tags\":[\"rc accounts\"],\"summary\":\"Get vesting information for an account on the relay chain.\",\"description\":\"Returns the vesting schedule for an account on the relay chain. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for vesting information.\",\"operationId\":\"getRcAccountVestingInfo\",\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the vesting info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"includeClaimable\",\"in\":\"query\",\"description\":\"When set to 'true', calculates and includes vested amounts for each vesting schedule plus the claimable amount. For relay chain pre-migration queries, vested amounts are calculated using the relay chain's own block number.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountVestingInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/accounts/{address}/staking-info\":{\"get\":{\"tags\":[\"rc accounts\",\"rc staking\"],\"summary\":\"Get staking information for a _Stash_ account on the relay chain.\",\"description\":\"Returns information about a _Stash_ account's staking activity on the relay chain. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for staking information. The _Stash_ account can be either a validator or nominator account.\",\"operationId\":\"getRcAccountStakingInfo\",\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the staking info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"includeClaimedRewards\",\"in\":\"query\",\"description\":\"When set to `false`, the `claimedRewards` field is not included in the response.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountStakingInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/accounts/{address}/staking-payouts\":{\"get\":{\"tags\":[\"rc accounts\",\"rc staking\"],\"summary\":\"Get payout information for a _Stash_ account on the relay chain.\",\"description\":\"Returns payout information for the last specified eras on the relay chain. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for staking payout information. If specifying both the depth and era query params, this endpoint will return information for (era - depth) through era. (i.e. if depth=5 and era=20 information will be returned for eras 16 through 20). The _Stash_ account can be either a validator or nominator account.\",\"operationId\":\"getRcAccountStakingPayouts\",\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query staking payouts.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"depth\",\"in\":\"query\",\"description\":\"The number of eras to query for payouts of. Must be less than or equal to `HISTORY_DEPTH`. In cases where `era - (depth -1)` is less than 0, the first era queried will be 0.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"default\":1}},{\"name\":\"era\",\"in\":\"query\",\"description\":\"The era to query at. Max era payout info is available for is the latest finished era (active_era - 1).\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"unclaimedOnly\",\"in\":\"query\",\"description\":\"Only return unclaimed rewards.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountStakingPayouts\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/node/network\":{\"get\":{\"tags\":[\"rc node\"],\"summary\":\"Get relay chain node network information from Asset Hub.\",\"description\":\"Returns network related information of the relay chain node. This endpoint is specifically for Asset Hub instances to query relay chain node networking details.\",\"operationId\":\"getRcNodeNetworking\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeNetwork\"}}}}}}},\"/rc/node/transaction-pool\":{\"get\":{\"tags\":[\"rc node\"],\"summary\":\"Get relay chain pending extrinsics from Asset Hub.\",\"description\":\"Returns pending extrinsics from the relay chain transaction pool. This endpoint is specifically for Asset Hub instances to query relay chain pending transactions.\",\"operationId\":\"getRcNodeTransactionPool\",\"parameters\":[{\"name\":\"includeFee\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to include tips, partialFee, and priority in each extrinsic.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionPool\"}}}}}}},\"/rc/node/version\":{\"get\":{\"tags\":[\"rc node\"],\"summary\":\"Get relay chain node version information from Asset Hub.\",\"description\":\"Returns versioning information of the relay chain node. This endpoint is specifically for Asset Hub instances to query relay chain node version details.\",\"operationId\":\"getRcNodeVersion\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeVersion\"}}}}}}},\"/rc/blocks\":{\"get\":{\"tags\":[\"rc blocks\"],\"summary\":\"Get a range of relay chain blocks by their height.\",\"description\":\"Given a range query parameter return an array of all the relay chain blocks within that range.\",\"operationId\":\"getRcBlocks\",\"parameters\":[{\"name\":\"range\",\"in\":\"query\",\"description\":\"A range of integers. There is a max limit of 500 blocks per request.\",\"required\":true,\"example\":\"0-499\",\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, no fee information is calculated.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useEvmFormat\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Block\"}}}}},\"400\":{\"description\":\"invalid blockId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/blocks/{blockId}\":{\"get\":{\"tags\":[\"rc blocks\"],\"summary\":\"Get a relay chain block by its height or hash.\",\"description\":\"Returns a relay chain block. Can be identified by either its height or hash.\",\"operationId\":\"getRcBlock\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, no fee information is calculated.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useEvmFormat\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Block\"}}}},\"400\":{\"description\":\"invalid blockId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/blocks/{blockId}/header\":{\"get\":{\"tags\":[\"rc blocks\"],\"summary\":\"Get a relay chain block's header by its height or hash.\",\"description\":\"Returns a relay chain block's header. Can be identified by either its height or hash.\",\"operationId\":\"getRcBlockHeader\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}}},\"400\":{\"description\":\"invalid blockId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/blocks/{blockId}/extrinsics/{extrinsicIndex}\":{\"get\":{\"tags\":[\"rc blocks\"],\"summary\":\"Get a relay chain block's extrinsic by its block height or hash and the extrinsic index.\",\"description\":\"Returns an extrinsic from a relay chain block. Can be identified by either its height or hash and the extrinsic index.\",\"operationId\":\"getRcBlockExtrinsic\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"extrinsicIndex\",\"in\":\"path\",\"description\":\"Extrinsic index within the block.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, no fee information is calculated.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useEvmFormat\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Extrinsic\"}}}},\"400\":{\"description\":\"invalid blockId or extrinsicIndex supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/blocks/head\":{\"get\":{\"tags\":[\"rc blocks\"],\"summary\":\"Get the latest relay chain block.\",\"description\":\"Returns the latest relay chain block.\",\"operationId\":\"getRcBlockHead\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"When set to `false`, it will fetch the head of the node's canon chain, which might not be finalized.\",\"schema\":{\"type\":\"boolean\",\"default\":true}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, no fee information is calculated.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useEvmFormat\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Block\"}}}},\"400\":{\"description\":\"invalid request\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/blocks/head/header\":{\"get\":{\"tags\":[\"rc blocks\"],\"summary\":\"Get the latest relay chain block's header.\",\"description\":\"Returns the latest relay chain block's header.\",\"operationId\":\"getRcBlockHeadHeader\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"When set to `false`, it will fetch the head of the node's canon chain, which might not be finalized.\",\"schema\":{\"type\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}}},\"400\":{\"description\":\"invalid request\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/blocks/{blockId}/extrinsics-raw\":{\"get\":{\"tags\":[\"rc blocks\"],\"summary\":\"Get a relay chain block's raw extrinsics by its height or hash.\",\"description\":\"Returns a relay chain block's raw extrinsics. Can be identified by either its height or hash.\",\"operationId\":\"getRcBlockRawExtrinsics\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockRaw\"}}}},\"400\":{\"description\":\"invalid blockId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/blocks/{blockId}/para-inclusions\":{\"get\":{\"tags\":[\"rc blocks\"],\"summary\":\"Get all parachain inclusion information for a relay chain block.\",\"description\":\"Returns all decoded parachain inclusion events (CandidateIncluded) for a relay chain block from the relay chain API. BlockId can either be a block hash or a block height. This endpoint extracts and decodes the candidate descriptor, commitments hash, and parachain header information for each included parachain block.\",\"operationId\":\"getRcBlockParaInclusions\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Relay chain block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"Optional parachain ID to filter results. When provided, only the inclusion information for the specified parachain will be returned.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockParaInclusions\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied or block does not contain paraInclusion events\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/experimental/rc/blocks/head/traces\":{\"get\":{\"tags\":[\"rc\"],\"summary\":\"Get the latest relay chain block's traces.\",\"description\":\"Returns the latest relay chain block's traces.\",\"operationId\":\"getRcBlockHeadTraces\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}}}}},\"/experimental/rc/blocks/{blockId}/traces\":{\"get\":{\"tags\":[\"rc\"],\"summary\":\"Get a relay chain block's traces by its height or hash.\",\"description\":\"Returns a relay chain block's traces. Can be identified by either its height or hash.\",\"operationId\":\"getRcBlockTraces\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}},\"400\":{\"description\":\"invalid blockId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/experimental/rc/blocks/head/traces/operations\":{\"get\":{\"tags\":[\"rc\"],\"summary\":\"Get the latest relay chain block's trace operations.\",\"description\":\"Returns the latest relay chain block's trace operations.\",\"operationId\":\"getRcBlockHeadTraceOperations\",\"parameters\":[{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Include action traces.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}}}}},\"/experimental/rc/blocks/{blockId}/traces/operations\":{\"get\":{\"tags\":[\"rc\"],\"summary\":\"Get a relay chain block's trace operations by its height or hash.\",\"description\":\"Returns a relay chain block's trace operations. Can be identified by either its height or hash.\",\"operationId\":\"getRcBlockTraceOperations\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Include action traces.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}},\"400\":{\"description\":\"invalid blockId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a range of blocks by their height.\",\"description\":\"Given a range query parameter return an array of all the blocks within that range. When `useRcBlock` parameter is used, the range represents relay chain block numbers and the response includes additional fields `rcBlockHash`, `rcBlockNumber`, and `ahTimestamp` for each block. Relay chain blocks without corresponding Asset Hub blocks are skipped.\",\"operationId\":\"getBlock\",\"parameters\":[{\"name\":\"range\",\"in\":\"query\",\"description\":\"A range of integers. There is a max limit of 500 blocks per request.\",\"required\":true,\"example\":\"0-499\",\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useEvmFormat\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to `true`, the range parameter represents relay chain block numbers and the response includes additional fields for each block. Only supported for Asset Hub endpoints with relay chain API available. When used, returns an array of response objects or empty array if no Asset Hub block found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Blocks\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a block by its height or hash.\",\"description\":\"Returns a single block. BlockId can either be a block hash or a block height. Replaces `/block/{number}` from versions < v1.0.0. When `useRcBlock` parameter is used, the response includes additional fields `rcBlockHash`, `rcBlockNumber`, and `ahTimestamp`.\",\"operationId\":\"getBlockById\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"finalizedKey\",\"in\":\"query\",\"description\":\"When set to false, this will override the chain-config, and omit the finalized key in the response. This can increase performance slightly by avoiding an additional RPC call to the node.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"decodedXcmMsgs\",\"in\":\"query\",\"description\":\"When set to `true`, this will show the decoded XCM messages within the extrinsics of the requested block.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"When it is set, this will return only the decoded XCM messages for the specified origin Parachain Id (originParaId). To activate this functionality, ensure that the `decodedXcmMsgs` parameter is set to true.\",\"required\":false,\"schema\":{\"type\":\"string\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to `true`, it will use the relay chain block identifier to determine the corresponding Asset Hub block. Only supported for Asset Hub endpoints with relay chain API available. When used, returns an array of response objects or empty array if no Asset Hub block found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useEvmFormat\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/header\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a block's header by its height or hash.\",\"description\":\"Returns a single block's header. BlockId can either be a block hash or a block height. When `useRcBlock` parameter is used, the response includes additional fields `rcBlockHash`, `rcBlockNumber`, and `ahTimestamp`.\",\"operationId\":\"getBlockHeaderById\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to `true`, it will use the relay chain block identifier to determine the corresponding Asset Hub block. Only supported for Asset Hub endpoints with relay chain API available. When used, returns an array of response objects or empty array if no Asset Hub block found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/BlockHeader\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/extrinsics/{extrinsicIndex}\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get an extrinsic by its extrinsicIndex and block height or hash. The pair blockId, extrinsicIndex is sometimes referred to as a Timepoint.\",\"description\":\"Returns a single extrinsic. When `useRcBlock` parameter is used, the response includes additional fields `rcBlockHash`, `rcBlockNumber`, and `ahTimestamp`.\",\"operationId\":\"getExtrinsicByTimepoint\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"extrinsicIndex\",\"in\":\"path\",\"description\":\"The extrinsic's index within the block's body.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsic.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to `true`, it will use the relay chain block identifier to determine the corresponding Asset Hub block. Only supported for Asset Hub endpoints with relay chain API available. When used, returns an array of response objects or empty array if no Asset Hub block found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useEvmFormat\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/ExtrinsicIndex\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/ExtrinsicIndex\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"Requested `extrinsicIndex` does not exist\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/head\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get the most recently finalized block.\",\"description\":\"Returns the most recently finalized block. Replaces `/block` from versions < v1.0.0. When `useRcBlock` parameter is used, the response includes additional fields `rcBlockHash`, `rcBlockNumber`, and `ahTimestamp`.\",\"operationId\":\"getHeadBlock\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to get the finalized head. If it is not set the value defaults to true. When set to false it will attempt to get the newest known block, which may not be finalized.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"decodedXcmMsgs\",\"in\":\"query\",\"description\":\"When set to `true`, this will show the decoded XCM messages within the extrinsics of the requested block.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"When it is set, this will return only the decoded XCM messages for the specified origin Parachain Id (originParaId). To activate this functionality, ensure that the `decodedXcmMsgs` parameter is set to true.\",\"required\":false,\"schema\":{\"type\":\"string\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to `true`, it will use the latest relay chain block to determine the corresponding Asset Hub block. Only supported for Asset Hub endpoints with relay chain API available. Respects the `finalized` parameter when determining which relay chain block to use. When used, returns an array of response objects or empty array if no Asset Hub block found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useEvmFormat\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}}}}},\"/blocks/head/header\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get information about the header of the most recent finalized block.\",\"description\":\"Returns the most recently finalized block's header. When `useRcBlock` parameter is used, the response includes additional fields `rcBlockHash`, `rcBlockNumber`, and `ahTimestamp`.\",\"operationId\":\"getLatestBlockHeader\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to get the finalized head. If it is not set the value defaults to true. When set to false it will attempt to get the newest known block, which may not be finalized.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to `true`, it will use the latest relay chain block to determine the corresponding Asset Hub block header. Only supported for Asset Hub endpoints with relay chain API available. Respects the `finalized` parameter when determining which relay chain block to use. When used, returns an array of response objects or empty array if no Asset Hub block found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/BlockHeader\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/extrinsics-raw\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a blocks header & its extrinsics as hex values.\",\"description\":\"Returns a block & its extrinsics as hex values. BlockId can either be a block hash or a block height. When `useRcBlock` parameter is used, the response includes additional fields `rcBlockHash`, `rcBlockNumber`, and `ahTimestamp`.\",\"operationId\":\"getBlockRawExtrinsics\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to `true`, it will use the relay chain block identifier to determine the corresponding Asset Hub block. Only supported for Asset Hub endpoints with relay chain API available. When used, returns an array of response objects or empty array if no Asset Hub block found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/BlockRaw\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/BlockRaw\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/para-inclusions\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get all parachain inclusion information for a relay chain block.\",\"description\":\"Returns all decoded parachain inclusion events (CandidateIncluded) for a relay chain block. BlockId can either be a block hash or a block height. This endpoint extracts and decodes the candidate descriptor, commitments hash, and parachain header information for each included parachain block.\",\"operationId\":\"getBlockParaInclusions\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Relay chain block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"Optional parachain ID to filter results. When provided, only the inclusion information for the specified parachain will be returned.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockParaInclusions\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied or block does not contain paraInclusion events\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/contracts/ink/{address}/query\":{\"post\":{\"tags\":[\"contracts\"],\"summary\":\"Query an !Ink contract with a given message (method).\",\"description\":\"Will return a valid or invalid result.\",\"operationId\":\"callContractQuery\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/ContractMetadata\"},\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 or Hex address of the account associated with the contract.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"method\",\"in\":\"query\",\"description\":\"The message or method used to query.\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"get\"}},{\"name\":\"gasLimit\",\"in\":\"query\",\"description\":\"The gas limit to be used as an option for the queried message.\",\"required\":false,\"schema\":{\"default\":-1,\"type\":\"number\"}},{\"name\":\"storageDepositLimit\",\"in\":\"query\",\"description\":\"The storage deposit limit to be used as an option for the queried message.\",\"required\":false,\"schema\":{\"default\":null,\"type\":\"number\"}},{\"name\":\"args\",\"in\":\"query\",\"description\":\"Abi params used as args specified in the metadata to be passed into a query. The format to use this query param is ?args[]=1&args[]=2&args[]=3.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of Abi params.\"}}],\"responses\":{\"200\":{\"description\":\"succesful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ContractsInkQuery\"}}}},\"400\":{\"description\":\"Invalid Method\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/coretime/leases\":{\"get\":{\"tags\":[\"coretime\"],\"summary\":\"Get all the leases currently registered on coretime chain.\",\"description\":\"\",\"operationId\":\"getCoretimeLeases\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"query\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":false,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CoretimeLeasesResponse\"}}}}}}},\"/coretime/regions\":{\"get\":{\"tags\":[\"coretime\"],\"summary\":\"Get all the regions currently registered on coretime chain.\",\"description\":\"\",\"operationId\":\"getCoretimeRegions\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"query\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":false,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CoretimeRegionsResponse\"}}}}}}},\"/coretime/renewals\":{\"get\":{\"tags\":[\"coretime\"],\"summary\":\"Get all the potential renewals currently registered on coretime chain.\",\"description\":\"\",\"operationId\":\"getCoretimeRenewals\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"query\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":false,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CoretimeRenewalsResponse\"}}}}}}},\"/coretime/reservations\":{\"get\":{\"tags\":[\"coretime\"],\"summary\":\"Get all the reservations currently registered on coretime chain.\",\"description\":\"\",\"operationId\":\"getCoretimeReservations\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"query\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":false,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CoretimeReservationsResponse\"}}}}}}},\"/coretime/info\":{\"get\":{\"tags\":[\"coretime\"],\"summary\":\"Get the generic information about coretime, either on coretime chain or relay chain.\",\"description\":\"\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"query\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":false,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"operationId\":\"getCoretimeInfo\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/CoretimeChainInfoResponse\"},{\"$ref\":\"#/components/schemas/CoretimeRelayInfoResponse\"}]}}}}}}},\"/coretime/overview\":{\"get\":{\"tags\":[\"coretime\"],\"summary\":\"Get all the cores information either on coretime chain or relay chain.\",\"description\":\"\",\"operationId\":\"getCoretimeCores\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"query\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":false,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/CoretimeChainCoresResponse\"},{\"$ref\":\"#/components/schemas/CoretimeRelayCoresResponse\"}]}}}}}}},\"/node/network\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get information about the Substrate node's activity in the peer-to-peer network.\",\"description\":\"Returns network related information of the node.\",\"operationId\":\"getNodeNetworking\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeNetwork\"}}}}}}},\"/node/transaction-pool\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get pending extrinsics from the Substrate node.\",\"description\":\"Returns the extrinsics that the node knows of that have not been included in a block.\",\"operationId\":\"getNodeTransactionPool\",\"parameters\":[{\"name\":\"includeFee\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to include tips, partialFee, and priority in each extrinsic.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionPool\"}}}}}}},\"/node/version\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get information about the Substrates node's implementation and versioning.\",\"description\":\"Returns versioning information of the node.\",\"operationId\":\"getNodeVersion\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeVersion\"}}}}}}},\"/transaction\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Submit a transaction to the node's transaction pool.\",\"description\":\"Accepts a valid signed extrinsic. Replaces `/tx` from versions < v1.0.0.\",\"operationId\":\"submitTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionSuccess\"}}}},\"400\":{\"description\":\"failed to parse or submit transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/transaction/dry-run\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Dry run an extrinsic.\",\"description\":\"Use the `dryRun` call to simulate the submission of a transaction without executing it so that you can check for potential errors and validate the expected outcome.\",\"operationId\":\"dryrunTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/TransactionDryRun\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionDryRun\"}}}},\"400\":{\"description\":\"failed to dry-run transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/transaction/fee-estimate\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Receive a fee estimate for a transaction.\",\"description\":\"Send a serialized transaction and receive back a naive fee estimate. Note: `partialFee` does not include any tips that you may add to increase a transaction's priority. See the reference on `compute_fee`. Replaces `/tx/fee-estimate` from versions < v1.0.0. Substrate Reference: - `RuntimeDispatchInfo`: https://crates.parity.io/pallet_transaction_payment_rpc_runtime_api/struct.RuntimeDispatchInfo.html - `query_info`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.query_info - `compute_fee`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee\",\"operationId\":\"feeEstimateTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimate\"}}}},\"400\":{\"description\":\"fee estimation failure\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimateFailure\"}}}}}}},\"/transaction/material\":{\"get\":{\"tags\":[\"transaction\"],\"summary\":\"Get all the network information needed to construct a transaction offline.\",\"description\":\"Returns the material that is universal to constructing any signed transaction offline. Replaces `/tx/artifacts` from versions < v1.0.0.\",\"operationId\":\"getTransactionMaterial\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"noMeta\",\"in\":\"query\",\"description\":\"DEPRECATED! This is no longer supported\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata. When `metadata` is not inputted, the `metadata` field will be absent.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/transaction/material/{metadataVersion}\":{\"get\":{\"tags\":[\"transaction\"],\"summary\":\"Get all the network information needed to construct a transaction offline and the version of metadata specified in `metadataVersion`.\",\"description\":\"Returns all the materials necessary for constructing any signed transactions offline.\",\"operationId\":\"getTransactionMaterialwithVersionedMetadata\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The version of metadata. The input is expected in a `vX` format, where `X` represents the version number (e.g. `v14`, `v15`). By default, metadata is outputted in 'json' format, unless the `metadata` query parameter is provided, in which case it can be either in 'json' or 'scale' format.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/assets/{assetId}/asset-info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with an asset.\",\"description\":\"Returns information associated with an asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getAssetById\",\"parameters\":[{\"name\":\"assetId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of an asset.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the assetInfo.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving asset info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/PalletsAssetsInfo\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletsAssetsInfo\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}}}}},\"/pallets/asset-conversion/liquidity-pools\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information related to existing liquidity pools.\",\"description\":\"Returns a list of the existing liquidity pools and its corresponding tokens at a given block height. If no block is specified, it returns the latest list available.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the liquidity pools information.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving liquidity pools info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/LiquidityPools\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/LiquidityPools\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/asset-conversion/next-available-id\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the next available liquidity pool id.\",\"description\":\"Returns the next available liquidity pool's id at a given block height. If no block is specified, it returns the latest list available.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the next liquidity pool's id.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving next available id. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/NextAvailableId\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/NextAvailableId\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/foreign-assets\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with foreign assets.\",\"description\":\"Returns information associated with every foreign asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getForeignAssets\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the foreign assets.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving foreign assets info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"An array of foreign assets.\",\"$ref\":\"#/components/schemas/PalletsForeignAssets\"}}}}}}},\"/pallets/nomination-pools/info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information associated with nomination pools.\",\"description\":\"Returns information and metadata for nomination pools including pool counters and limits.\",\"operationId\":\"getNominationPoolInfo\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the nomination pool info.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving nomination pools info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsNominationPoolsInfo\"}}}}}}},\"/pallets/nomination-pools/{poolId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with a nomination pool.\",\"description\":\"Returns information associated with a nomination pool which includes the nomination pools' `bondedPool`, `rewardPool` and `metadata`.\",\"operationId\":\"getNominationPoolById\",\"parameters\":[{\"name\":\"poolId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of a nomination pool.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the nomination pool.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving nomination pool info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsNominationPool\"}}}}}}},\"/pallets/on-going-referenda\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of all on-going referenda that have track `root (0)` and `whitelisted (1)`, along with their associated information.\",\"description\":\"Returns information associated with on-going referenda which includes the referendum's `enactment`, `submitted` and `deciding` fields.\",\"operationId\":\"getPalletOnGoingReferenda\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the on-going referenda.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving on-going referenda info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsOnGoingReferenda\"}}}}}}},\"/pallets/{palletId}/consts\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of constants for a pallet.\",\"description\":\"Returns a list of const item metadata for constant items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the const items instead of every constant's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's constant items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet constants. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of constantItemIds.\",\"$ref\":\"#/components/schemas/PalletConstants\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/consts/{constantItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a constant item.\",\"description\":\"Returns the value stored under the constantItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"constantItemId\",\"in\":\"path\",\"description\":\"Id of the const item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the const item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the const items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet constant item. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletConstantsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/dispatchables\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of dispatchables for a pallet.\",\"description\":\"Returns a list of dispatchable item metadata for distpachable items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the dispatchable items instead of every dispatchable's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve dispatchable metadata.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving dispatchable metadata. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of dispatchableItemIds.\",\"$ref\":\"#/components/schemas/PalletDispatchables\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/dispatchables/{dispatchableItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a dispatchable item.\",\"description\":\"Returns the value stored under the dispatchableItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"dispatchableItemId\",\"in\":\"path\",\"description\":\"Id of the dispatchable item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the dispatchable items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve dispatchable metadata.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving dispatchable metadata. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/errors\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of errors for a pallet.\",\"description\":\"Returns a list of error item metadata for error items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read error metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the error items instead of every error's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's error items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet errors. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of errorItemIds.\",\"$ref\":\"#/components/schemas/PalletErrors\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/errors/{errorItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of an error item.\",\"description\":\"Returns the value stored under the errorItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read error metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"errorItemId\",\"in\":\"path\",\"description\":\"Id of the error item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the error item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the error items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet error item. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletErrorsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/events\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of events for a pallet.\",\"description\":\"Returns a list of event item metadata for event items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read event metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the event items instead of every event's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's event items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet events. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of eventItemIds.\",\"$ref\":\"#/components/schemas/PalletEvents\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/events/{eventItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of an event item.\",\"description\":\"Returns the value stored under the eventItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read event metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventItemId\",\"in\":\"path\",\"description\":\"Id of the event item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the event item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the event items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet event item. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletEventsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/runtime/metadata\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the runtime metadata in decoded, JSON form.\",\"description\":\"Returns the runtime metadata as a JSON object. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeMetadata\"}}}}}}},\"/runtime/metadata/{metadataVersion}\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the requested version of runtime metadata in decoded, JSON form.\",\"description\":\"Returns the requested version of runtime metadata as a JSON object. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The version of metadata. The input is expected in a `vX` format, where `X` represents the version number (e.g. `v14`, `v15`).\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeMetadata\"}}}}}}},\"/runtime/metadata/versions\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the available versions of runtime metadata.\",\"description\":\"Returns the available versions of runtime metadata. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata versions at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array with the available metadata versions.\"}}}}}}},\"/runtime/code\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the runtime wasm blob.\",\"description\":\"Returns the runtime Wasm blob in hex format.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the runtime wasm blob at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeCode\"}}}}}}},\"/runtime/spec\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get version information of the Substrate runtime.\",\"description\":\"Returns version information related to the runtime.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve runtime version information at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeSpec\"}}}}}}},\"/rc/runtime/spec\":{\"get\":{\"tags\":[\"rc runtime\"],\"summary\":\"Get version information of the relay chain Substrate runtime.\",\"description\":\"Returns version information related to the relay chain runtime. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for runtime specification.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve runtime version information at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeSpec\"}}}}}}},\"/rc/runtime/metadata\":{\"get\":{\"tags\":[\"rc runtime\"],\"summary\":\"Get the relay chain's metadata.\",\"description\":\"Returns the relay chain's runtime metadata in decoded JSON format. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for metadata.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block hash or height at which to query. If not provided, queries finalized head.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeMetadata\"}}}}}}},\"/rc/runtime/metadata/versions\":{\"get\":{\"tags\":[\"rc runtime\"],\"summary\":\"Get the available versions of relay chain's metadata.\",\"description\":\"Returns the available versions of the relay chain's metadata. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for metadata versions.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block hash or height at which to query. If not provided, queries finalized head.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}}}}}},\"/rc/runtime/metadata/{metadataVersion}\":{\"get\":{\"tags\":[\"rc runtime\"],\"summary\":\"Get the relay chain's metadata at a specific version.\",\"description\":\"Returns the relay chain's runtime metadata at a specific version in decoded JSON format. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for versioned metadata.\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The specific version of the Metadata to query. The input must conform to the 'vX' format, where 'X' represents the version number (examples 'v14', 'v15').\",\"required\":true,\"schema\":{\"type\":\"string\",\"pattern\":\"^v[0-9]+$\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block hash or height at which to query. If not provided, queries finalized head.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeMetadata\"}}}},\"400\":{\"description\":\"Invalid version format or version not available\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/runtime/code\":{\"get\":{\"tags\":[\"rc runtime\"],\"summary\":\"Get the Wasm code blob of the relay chain Substrate runtime.\",\"description\":\"Returns the relay chain's runtime code in Wasm format. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for runtime code.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve runtime code information at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeCode\"}}}}}}},\"/rc/pallets/on-going-referenda\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get relay chain ongoing referenda.\",\"description\":\"Returns information about ongoing referenda in the relay chain.\",\"operationId\":\"getRcPalletsOnGoingReferenda\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain referenda information.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsOnGoingReferenda\"}}}},\"400\":{\"description\":\"invalid blockId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/consts\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get a list of constants for a relay chain pallet.\",\"description\":\"Returns a list of constant metadata for the specified relay chain pallet.\",\"operationId\":\"getRcPalletsConsts\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read constants from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet constants.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return constant IDs, not values and metadata.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletConstants\"}}}},\"400\":{\"description\":\"invalid palletId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/consts/{constantItemId}\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get a constant from a relay chain pallet by its ID.\",\"description\":\"Returns information about a specific constant from the specified relay chain pallet.\",\"operationId\":\"getRcPalletsConstsItem\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read the constant from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"constantItemId\",\"in\":\"path\",\"description\":\"Name of the constant to retrieve.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet constant.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include metadata for the constant.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletConstantsItem\"}}}},\"400\":{\"description\":\"invalid palletId or constantItemId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/dispatchables\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get a list of dispatchables for a relay chain pallet.\",\"description\":\"Returns a list of dispatchable metadata for the specified relay chain pallet.\",\"operationId\":\"getRcPalletsDispatchables\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read dispatchables from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet dispatchables.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return dispatchable IDs, not values and metadata.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletDispatchables\"}}}},\"400\":{\"description\":\"invalid palletId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/dispatchables/{dispatchableItemId}\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get a dispatchable from a relay chain pallet by its ID.\",\"description\":\"Returns information about a specific dispatchable from the specified relay chain pallet.\",\"operationId\":\"getRcPalletsDispatchablesItem\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read the dispatchable from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"dispatchableItemId\",\"in\":\"path\",\"description\":\"Name of the dispatchable to retrieve.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet dispatchable.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include metadata for the dispatchable.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItem\"}}}},\"400\":{\"description\":\"invalid palletId or dispatchableItemId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/errors\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get a list of errors for a relay chain pallet.\",\"description\":\"Returns a list of error metadata for the specified relay chain pallet.\",\"operationId\":\"getRcPalletsErrors\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read errors from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet errors.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return error IDs, not values and metadata.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletErrors\"}}}},\"400\":{\"description\":\"invalid palletId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/errors/{errorItemId}\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get an error from a relay chain pallet by its ID.\",\"description\":\"Returns information about a specific error from the specified relay chain pallet.\",\"operationId\":\"getRcPalletsErrorsItem\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read the error from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"errorItemId\",\"in\":\"path\",\"description\":\"Name of the error to retrieve.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet error.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include metadata for the error.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletErrorsItem\"}}}},\"400\":{\"description\":\"invalid palletId or errorItemId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/events\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get a list of events for a relay chain pallet.\",\"description\":\"Returns a list of event metadata for the specified relay chain pallet.\",\"operationId\":\"getRcPalletsEvents\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read events from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet events.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return event IDs, not values and metadata.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletEvents\"}}}},\"400\":{\"description\":\"invalid palletId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/events/{eventItemId}\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get an event from a relay chain pallet by its ID.\",\"description\":\"Returns information about a specific event from the specified relay chain pallet.\",\"operationId\":\"getRcPalletsEventsItem\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read the event from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventItemId\",\"in\":\"path\",\"description\":\"Name of the event to retrieve.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet event.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include metadata for the event.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletEventsItem\"}}}},\"400\":{\"description\":\"invalid palletId or eventItemId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/storage\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get a list of storage items for a relay chain pallet.\",\"description\":\"Returns a list of storage item metadata for the specified relay chain pallet.\",\"operationId\":\"getRcPalletsStorage\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read storage items from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet storage items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return storage item IDs, not values and metadata.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletStorage\"}}}},\"400\":{\"description\":\"invalid palletId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/storage/{storageItemId}\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get a storage item from a relay chain pallet by its ID.\",\"description\":\"Returns the value stored under the specified storage item ID from the relay chain pallet. For maps, query parameter keys are required.\",\"operationId\":\"getRcPalletsStorageItem\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read the storage item from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"storageItemId\",\"in\":\"path\",\"description\":\"Name of the storage item to retrieve.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet storage item.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"keys\",\"in\":\"query\",\"description\":\"Storage map keys for map-type storage items. Required for map and double map storage items.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include metadata for the storage item.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletStorageItem\"}}}},\"400\":{\"description\":\"invalid palletId, storageItemId, or keys supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/staking/progress\":{\"get\":{\"tags\":[\"rc pallets\",\"rc staking\"],\"summary\":\"Get progress on the general Staking pallet system on Relay Chain.\",\"description\":\"Returns information on the progress of key components of the staking system and estimates of future points of interest. If you are querying from Asset Hub for staking progress, this endpoint requires multi chain connections between the relay chain, and asset hub itself. Set the asset hub rpc to SAS_SUBSTRATE_URL, and add the relay chain to the SAS_SUBSTRATE_MULTI_CHAIN_URL env var. Refer to the README for the structure of the env vars. The `useRcBlock` parameter allows querying Asset Hub state using relay chain block numbers, enabling post-migration infrastructure to continue using relay chain block identifiers while accessing Asset Hub data.\",\"operationId\":\"getRcStakingProgress\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a staking progress report.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/StakingProgress\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/StakingProgress\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/staking/validators\":{\"get\":{\"tags\":[\"rc pallets\",\"rc staking\"],\"summary\":\"Get all validators (active/waiting) of a specific chain.\",\"description\":\"Returns a list of all validators addresses and their corresponding status which can be either active or waiting. For declared validators, it also includes their commission rate (as parts-per-billion) and nomination blocking status. It will also return a list of active validators that will not be part of the next era for staking. They will be under the key \\\"validatorsToBeChilled\\\". It's important to note, that addresses can be present in both the \\\"validators\\\" key, and \\\"validatorsToBeChilled\\\". Commission and blocked properties are not present for active validators that have been chilled.\",\"operationId\":\"getRcStakingValidators\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the list of validators.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/StakingValidators\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/transaction\":{\"post\":{\"tags\":[\"rc transaction\"],\"summary\":\"Submit a transaction to the relay chain node's transaction pool.\",\"description\":\"Accepts a valid signed extrinsic for the relay chain. Replaces `/tx` from versions < v1.0.0.\",\"operationId\":\"submitRcTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionSuccess\"}}}},\"400\":{\"description\":\"failed to parse or submit transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/rc/transaction/dry-run\":{\"post\":{\"tags\":[\"rc transaction\"],\"summary\":\"Dry run an extrinsic on the relay chain.\",\"description\":\"Use the `dryRun` call to simulate the submission of a transaction to the relay chain without executing it so that you can check for potential errors and validate the expected outcome.\",\"operationId\":\"dryrunRcTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/TransactionDryRun\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionDryRun\"}}}},\"400\":{\"description\":\"failed to dry-run transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/rc/transaction/fee-estimate\":{\"post\":{\"tags\":[\"rc transaction\"],\"summary\":\"Receive a fee estimate for a relay chain transaction.\",\"description\":\"Send a serialized transaction and receive back a naive fee estimate for the relay chain. Note: `partialFee` does not include any tips that you may add to increase a transaction's priority. See the reference on `compute_fee`. Replaces `/tx/fee-estimate` from versions < v1.0.0. Substrate Reference: - `RuntimeDispatchInfo`: https://crates.parity.io/pallet_transaction_payment_rpc_runtime_api/struct.RuntimeDispatchInfo.html - `query_info`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.query_info - `compute_fee`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee\",\"operationId\":\"feeEstimateRcTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimate\"}}}},\"400\":{\"description\":\"fee estimation failure\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimateFailure\"}}}}}}},\"/rc/transaction/material\":{\"get\":{\"tags\":[\"rc transaction\"],\"summary\":\"Get all the relay chain network information needed to construct a transaction offline.\",\"description\":\"Returns the material that is universal to constructing any signed transaction offline for the relay chain. Replaces `/tx/artifacts` from versions < v1.0.0.\",\"operationId\":\"getRcTransactionMaterial\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material from the relay chain.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"noMeta\",\"in\":\"query\",\"description\":\"DEPRECATED! This is no longer supported\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata. When `metadata` is not inputted, the `metadata` field will be absent.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/transaction/material/{metadataVersion}\":{\"get\":{\"tags\":[\"rc transaction\"],\"summary\":\"Get all the relay chain network information needed to construct a transaction offline and the version of metadata specified in `metadataVersion`.\",\"description\":\"Returns all the materials necessary for constructing any signed transactions offline for the relay chain.\",\"operationId\":\"getRcTransactionMaterialwithVersionedMetadata\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The version of metadata. The input is expected in a `vX` format, where `X` represents the version number (e.g. `v14`, `v15`). By default, metadata is outputted in 'json' format, unless the `metadata` query parameter is provided, in which case it can be either in 'json' or 'scale' format.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material from the relay chain.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/storage\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of storage items for a pallet.\",\"description\":\"Returns a list of storage item metadata for storage items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to query the storage of. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the storage items instead of all of each storage item's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's storage items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet storage. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of storageItemIds.\",\"$ref\":\"#/components/schemas/PalletStorage\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/storage/{storageItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a storage item.\",\"description\":\"Returns the value stored under the storageItemId. If it is a map, query param key1 is required. If the storage item is double map query params key1 and key2 are required.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to query the storage of. Note: pallet name aligns with pallet name as specified in runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"storageItemId\",\"in\":\"path\",\"description\":\"Id of the storage item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"keys\",\"in\":\"query\",\"description\":\"Set of N keys used for querying a storage map. It should be queried using the following format - ?keys[]=key1&keys[]=key2. Order matters, as it will determine the order the keys are passed into the storage calls.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of storage keys.\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the storage item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the storage items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet storage item. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletStorageItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/pool-assets/{assetId}/asset-info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with a pool asset.\",\"description\":\"Returns information associated with a pool asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getPoolAssetById\",\"parameters\":[{\"name\":\"assetId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of a pool asset.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the assetInfo.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pool asset info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/PalletsPoolAssetsInfo\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletsPoolAssetsInfo\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}}}}},\"/pallets/staking/progress\":{\"get\":{\"tags\":[\"staking\",\"pallets\"],\"summary\":\"Get progress on the general Staking pallet system.\",\"description\":\"Returns information on the progress of key components of the staking system and estimates of future points of interest. If you are querying from Asset Hub for staking progress, this endpoint requires multi chain connections between the relay chain, and asset hub itself. Set the asset hub rpc to SAS_SUBSTRATE_URL, and add the relay chain to the SAS_SUBSTRATE_MULTI_CHAIN_URL env var. Refer to the README for the structure of the env vars. The `useRcBlock` parameter allows querying Asset Hub state using relay chain block numbers, enabling post-migration infrastructure to continue using relay chain block identifiers while accessing Asset Hub data.\",\"operationId\":\"getStakingProgress\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a staking progress report.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving staking progress report. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/StakingProgress\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/StakingProgress\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/staking/validators\":{\"get\":{\"tags\":[\"staking\",\"pallets\"],\"summary\":\"Get all validators (active/waiting) of a specific chain.\",\"description\":\"Returns a list of all validators addresses and their corresponding status which can be either active or waiting. For declared validators, it also includes their commission rate and nomination blocking status. It will also return a list of active validators that will not be part of the next era for staking. They will be under the key \\\"validatorsToBeChilled\\\". It's important to note, that addresses can be present in both the \\\"validators\\\" key, and \\\"validatorsToBeChilled\\\". Commission and blocked properties are not present for active validators that have been chilled.\",\"operationId\":\"getStakingValidators\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the list of validators.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving staking validators. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/StakingValidators\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/paras\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all registered paras (parathreads & parachains).\\n\",\"description\":\"Returns all registered parachains and parathreads with lifecycle info.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve paras list at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Paras\"}}}}}}},\"/paras/leases/current\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get general information about the current lease period.\\n\",\"description\":\"Returns an overview of the current lease period, including lease holders.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve current lease period info at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"currentLeaseHolders\",\"in\":\"query\",\"description\":\"Wether or not to include the `currentLeaseHolders` property. Inclusion\\nof the property will likely result in a larger payload and increased\\nresponse time.\\n\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasLeasesCurrent\"}}}}}}},\"/paras/auctions/current\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the status of the current auction.\\n\",\"description\":\"Returns an overview of the current auction. There is only one auction\\nat a time. If there is no auction most fields will be `null`. If the current\\nauction phase is in `vrfDelay` and you are looking to retrieve the latest winning\\nbids, it is advised to query one block before `finishEnd` in the `endingPeriod` phase\\nfor that auction as there technically are no winners during the `vrfDelay` and thus\\nthe field is `null`.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve auction progress at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasAuctionsCurrent\"}}}}}}},\"/paras/crowdloans\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all stored crowdloans.\\n\",\"description\":\"Returns a list of all the crowdloans and their associated paraIds.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the list of paraIds that have crowdloans at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasCrowdloans\"}}}}}}},\"/paras/{paraId}/crowdloan-info\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get crowdloan information for a `paraId`.\\n\",\"description\":\"Returns crowdloan's `fundInfo` and the set of `leasePeriods` the crowdloan`\\ncovers.\\n\",\"parameters\":[{\"name\":\"paraId\",\"in\":\"path\",\"description\":\"paraId to query the crowdloan information of.\",\"required\":true,\"schema\":{\"type\":\"number\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve info at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasCrowdloanInfo\"}}}}}}},\"/paras/{paraId}/lease-info\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get current and future leases as well as the lifecycle stage for a given `paraId`.\\n\",\"description\":\"Returns a list of leases that belong to the `paraId` as well as the\\n`paraId`'s current lifecycle stage.\\n\",\"parameters\":[{\"name\":\"paraId\",\"in\":\"path\",\"description\":\"paraId to query the crowdloan information of.\",\"required\":true,\"schema\":{\"type\":\"number\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's leases at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasLeaseInfo\"}}}}}}},\"/paras/head/included-candidates\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the included (backed and considered available) parachain candidates at the\\nspecified block height or at the most recent finalized head otherwise.\\n\",\"description\":\"Returns an object with all the parachain id's as keys, and their headers as values.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's heads at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasHeaders\"}}}}}}},\"/paras/head/backed-candidates\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the backed parachain candidates at the specified block height or at the most recent finalized head otherwise.\\n\",\"description\":\"Returns an object with all the parachain id's as keys, and their headers as values.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's heads at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasHeaders\"}}}}}}},\"/paras/{number}/inclusion\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"Get relay chain inclusion information for a specific parachain block.\",\"description\":\"Returns the relay chain block number where a parachain block was included,\\nalong with the relay parent number used during production. This endpoint helps\\ntrack the lifecycle of parachain blocks from production to inclusion.\\n\\n**Note**: This endpoint requires a multi-chain connection (both parachain and relay chain APIs).\\n\",\"parameters\":[{\"name\":\"number\",\"in\":\"path\",\"description\":\"Parachain block number to find inclusion information for.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"depth\",\"in\":\"query\",\"description\":\"Maximum number of relay chain blocks to search for inclusion (must be divisible by 5, max 100).\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":5,\"maximum\":100,\"multipleOf\":5,\"default\":10}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParachainInclusion\"}}}},\"400\":{\"description\":\"Invalid depth parameter\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"properties\":{\"error\":{\"type\":\"string\",\"example\":\"Depth parameter must be divisible by 5 for optimal performance.\"}}}}}}}}},\"/experimental/blocks/head/traces\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get traces for the most\\nrecently finalized block.\\n\",\"description\":\"Returns traces (spans and events) of the most recently finalized block from\\nRPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140)\\nfor conceptual info.\\n\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}}}}},\"/experimental/blocks/{blockId}/traces\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get traces for the given `blockId`.\\n\",\"description\":\"Returns traces (spans and events) of the specified block from\\nRPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140) for conceptual info.\\n\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}}}}},\"/experimental/blocks/head/traces/operations\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get the operations from the\\nmost recently finalized block.\\n\",\"description\":\"Returns the operations from the most recently finalized block. Operations\\nrepresent one side of a balance change. For example if Alice transfers\\n100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\\n\\nGiven account A and A's balance at block k0 (Ak0), if we sum all the\\noperations for A from block k1 through kn against Ak0, we will end up\\nwith A's balance at block kn (Akn). Thus, operations can be used to audit\\nthat balances change as expected.\\n\\nThis is useful for Substrate based chains because the advanced business\\nlogic can make it difficult to ensure auditable balance reconciliation\\nbased purely on events. Instead of using events one can use the\\noperations given from this endpoint.\\n\\nNote - each operation corresponds to a delta of a single field of the\\n`system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\\nand `fee_frozen`).\\nNote - operations are assigned a block execution phase (and extrinsic index\\nfor those in the apply extrinsic phase) based on an \\\"action group\\\". For\\nexample all the operations for 1 extrinsic will be in the same action group.\\nThe action groups can optionally be fetched with the `action` query param\\nfor closer auditing.\\nNote - There are no 0 value operations (e.g. a transfer of 0, or a\\ntransfer to itself)\\n\\nTo learn more about operation and action group creation please consult\\n[this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\\n\",\"parameters\":[{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Whether or not to include action groups.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}}}}},\"/experimental/blocks/{blockId}/traces/operations\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get the operations from the\\nspecified block.\\n\",\"description\":\"Returns the operations from the most recently finalized block. Operations\\nrepresent one side of a balance change. For example if Alice transfers\\n100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\\n\\nGiven account A and A's balance at block k0 (Ak0), if we sum all the\\noperations for A from block k1 through kn against Ak0, we will end up\\nwith A's balance at block kn (Akn). Thus, operations can be used to audit\\nthat balances change as expected.\\n\\nThis is useful for Substrate based chains because the advanced business\\nlogic can make it difficult to ensure auditable balance reconciliation\\nbased purely on events. Instead of using events one can use the\\noperations given from this endpoint.\\n\\nNote - each operation corresponds to a delta of a single field of the\\n`system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\\nand `fee_frozen`).\\nNote - operations are assigned a block execution phase (and extrinsic index\\nfor those in the apply extrinsic phase) based on an \\\"action group\\\". For\\nexample all the operations for 1 extrinsic will be in the same action group.\\nThe action groups can optionally be fetched with the `action` query param\\nfor closer auditing.\\nNote - There are no 0 value operations (e.g. a transfer of 0, or a\\ntransfer to itself)\\n\\nTo learn more about operation and action group creation please consult\\n[this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\\n\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Whether or not to include action groups.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}}}}}},\"components\":{\"schemas\":{\"AccountAssetsApproval\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"amount\":{\"type\":\"string\",\"description\":\"The amount of funds approved for the balance transfer from the owner to some delegated target.\",\"format\":\"unsignedInteger\"},\"deposit\":{\"type\":\"string\",\"description\":\"The amount reserved on the owner's account to hold this item in storage.\",\"format\":\"unsignedInteger\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"AhmInfo\":{\"type\":\"object\",\"description\":\"Asset Hub Migration information including migration boundaries for both relay chain and Asset Hub.\",\"properties\":{\"relay\":{\"type\":\"object\",\"description\":\"Relay chain migration information\",\"properties\":{\"startBlock\":{\"type\":\"integer\",\"nullable\":true,\"description\":\"Block number when relay chain migration started, or null if not available\",\"format\":\"unsignedInteger\"},\"endBlock\":{\"type\":\"integer\",\"nullable\":true,\"description\":\"Block number when relay chain migration ended, or null if not available\",\"format\":\"unsignedInteger\"}}},\"assetHub\":{\"type\":\"object\",\"description\":\"Asset Hub migration information\",\"properties\":{\"startBlock\":{\"type\":\"integer\",\"nullable\":true,\"description\":\"Block number when Asset Hub migration started, or null if not available\",\"format\":\"unsignedInteger\"},\"endBlock\":{\"type\":\"integer\",\"nullable\":true,\"description\":\"Block number when Asset Hub migration ended, or null if not available\",\"format\":\"unsignedInteger\"}}}},\"example\":{\"relay\":{\"startBlock\":26041702,\"endBlock\":26071771},\"assetHub\":{\"startBlock\":11716733,\"endBlock\":11736597}}},\"AccountAssetsBalances\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"assets\":{\"type\":\"array\",\"description\":\"An array of queried assets.\",\"items\":{\"$ref\":\"#/components/schemas/AssetsBalance\"}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"AccountBalanceInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"nonce\":{\"type\":\"string\",\"description\":\"Account nonce.\",\"format\":\"unsignedInteger\"},\"tokenSymbol\":{\"type\":\"string\",\"description\":\"Token symbol of the balances displayed in this response.\",\"format\":\"unsignedInteger\"},\"free\":{\"type\":\"string\",\"description\":\"Free balance of the account. Not equivalent to _spendable_ balance. This is the only balance that matters in terms of most operations on tokens.\",\"format\":\"unsignedInteger\"},\"reserved\":{\"type\":\"string\",\"description\":\"Reserved balance of the account.\",\"format\":\"unsignedInteger\"},\"miscFrozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when withdrawing for anything except transaction fee payment. Note, that some runtimes may not have support for miscFrozen and if so the following will be returned `miscFrozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"feeFrozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when withdrawing specifically for transaction fee payment. Note, that some runtimes may not have support for feeFrozen and if so the following will be returned `feeFrozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"frozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when reducing the balance, except for actions where the account owner cannot reasonably benefit from the balance reduction, such as slashing. Note, that some runtimes may not have support for frozen and if so the following will be returned `frozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"transferable\":{\"type\":\"string\",\"description\":\"The amount that can be transferred from this account. This is calculated using the formula `free - max(maybeEd, frozen - reserve)` where `maybeEd` is the existential deposit if there are frozen funds or reserves, otherwise it is zero. This represents the actual spendable balance. Note, that some historical runtimes may not have support for the current formula used and if so the following will be returned `transferable not supported for this runtime`.\",\"format\":\"unsignedInteger\"},\"locks\":{\"type\":\"array\",\"description\":\"Array of locks on a balance. There can be many of these on an account and they \\\"overlap\\\", so the same balance is frozen by multiple locks\",\"items\":{\"$ref\":\"#/components/schemas/BalanceLock\"}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"AccountCompare\":{\"type\":\"object\",\"properties\":{\"areEqual\":{\"type\":\"boolean\",\"description\":\"Whether the given SS58 addresses are equal or not. Equality is determined by comparing the accountId/publicKey of each address.\"},\"addresses\":{\"type\":\"array\",\"description\":\"An array that contains detailed information for each of the queried SS58 addresses.\",\"items\":{\"$ref\":\"#/components/schemas/AddressDetails\"}}}},\"AccountConvert\":{\"type\":\"object\",\"properties\":{\"ss58Prefix\":{\"type\":\"string\",\"description\":\"SS58 prefix based on which the account ID or Public Key (hex) is converted to an SS58 address.\",\"format\":\"unsignedInteger\"},\"network\":{\"type\":\"string\",\"description\":\"The network based on which the returned address is encoded. It depends on the prefix that was given as a query param.\"},\"address\":{\"type\":\"string\",\"description\":\"The returned SS58 address which is the result of the conversion of the account ID or Public Key (hex).\"},\"accountId\":{\"type\":\"string\",\"description\":\"The given account ID or Public Key (hex) that is converted to an SS58 address.\"},\"scheme\":{\"type\":\"string\",\"description\":\"The cryptographic scheme/algorithm used to encode the given account ID or Public Key (hex).\"},\"publicKey\":{\"type\":\"boolean\",\"description\":\"Whether the given path parameter is a Public Key (hex) or not.\"}}},\"AccountPoolAssetsBalances\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"poolAssets\":{\"type\":\"array\",\"description\":\"An array of queried assets.\",\"items\":{\"$ref\":\"#/components/schemas/AssetsBalance\"}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"AccountForeignAssetsBalances\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"foreignAssets\":{\"type\":\"array\",\"description\":\"An array of queried foreign assets.\",\"items\":{\"$ref\":\"#/components/schemas/ForeignAssetBalance\"}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"ForeignAssetBalance\":{\"type\":\"object\",\"properties\":{\"multiLocation\":{\"type\":\"object\",\"description\":\"The multilocation identifier of the foreign asset. This is an XCM multilocation object that uniquely identifies an asset across different parachains.\"},\"balance\":{\"type\":\"string\",\"description\":\"The balance of the foreign asset.\",\"format\":\"unsignedInteger\"},\"isFrozen\":{\"type\":\"boolean\",\"description\":\"Whether the asset is frozen for non-admin transfers. Returns false if the runtime does not support isFrozen.\"},\"isSufficient\":{\"type\":\"boolean\",\"description\":\"Whether a non-zero balance of this asset is a deposit of sufficient value to account for the state bloat associated with its balance storage. If set to `true`, then non-zero balances may be stored without a `consumer` reference (and thus an ED in the Balances pallet or whatever else is used to control user-account state growth).\"}}},\"AccountProxyInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"delegatedAccounts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"delegate\":{\"type\":\"string\",\"description\":\"Delegate address for the given proxy.\",\"format\":\"ss58\"},\"delay\":{\"type\":\"string\",\"description\":\"The announcement period required of the initial proxy. Will generally be zero.\",\"format\":\"unsignedInteger\"},\"proxyType\":{\"type\":\"string\",\"description\":\"The permissions allowed for this proxy account.\"}}}},\"depositHeld\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The held deposit.\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"AccountStakingInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"rewardDestination\":{\"type\":\"string\",\"description\":\"The account to which rewards will be paid. Can be 'Staked' (Stash account, adding to the amount at stake), 'Stash' (Stash address, not adding to the amount at stake), or 'Controller' (Controller address).\",\"format\":\"ss58\",\"enum\":[\"Staked\",\"Stash\",\"Controller\"]},\"controller\":{\"type\":\"string\",\"description\":\"Controller address for the given Stash.\",\"format\":\"ss58\"},\"numSlashingSpans\":{\"type\":\"string\",\"description\":\"Number of slashing spans on Stash account; `null` if provided address is not a Controller.\",\"format\":\"unsignedInteger\"},\"nominations\":{\"$ref\":\"#/components/schemas/Nominations\"},\"staking\":{\"$ref\":\"#/components/schemas/StakingLedger\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}},\"description\":\"Note: For Sidecar versions prior to v.20.0.0, in field `claimedRewards` under `staking`, we return whatever we would find under `StakingLedger` with no further calculations. From v.20.0.0 onwards, `claimedRewards` is calculated based on different calls: `lastReward`, `claimedRewards` or `legacyClaimedRewards`. Note on lastReward: Runtime versions of Kusama less than 1062 will either have `lastReward` in place of `claimedRewards`, or no field at all. This is related to changes in reward distribution. See: [Lazy Payouts](https://github.com/paritytech/substrate/pull/4474), [Simple Payouts](https://github.com/paritytech/substrate/pull/5406)\"},\"AccountStakingPayouts\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"erasPayouts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"era\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Era this information is associated with.\"},\"totalEraRewardPoints\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Total reward points for the era. Equals the sum of reward points for all the validators in the set.\"},\"totalEraPayout\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Total payout for the era. Validators split the payout based on the portion of `totalEraRewardPoints` they have.\"},\"payouts\":{\"$ref\":\"#/components/schemas/Payouts\"}}}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"AccountValidation\":{\"type\":\"object\",\"properties\":{\"isValid\":{\"type\":\"boolean\",\"description\":\"Whether the given address is valid ss58 formatted.\"},\"ss58Prefix\":{\"type\":\"string\",\"description\":\"SS58 prefix of the given address. If the address is a valid base58 format, but incorrect ss58, a prefix for the given address will still be returned.\",\"format\":\"unsignedInteger\"},\"network\":{\"type\":\"string\",\"description\":\"The network based on which the given address is encoded.\"},\"accountId\":{\"type\":\"string\",\"description\":\"The account id of the given address.\"}}},\"AccountVestingInfo\":{\"type\":\"object\",\"description\":\"Sidecar version's <= v10.0.0 have a`vesting` return value that defaults to an object for when there is no available vesting-info data. It also returns a `VestingInfo` as an object. For Sidecar >=11.0.0, that value will now default as an array when there is no value, and `Vec` is returned when there is.\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"vesting\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/VestingSchedule\"}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"vestedBalance\":{\"type\":\"string\",\"description\":\"Total vested amount across all schedules based on time elapsed. Only present when `includeClaimable` parameter is used.\",\"format\":\"unsignedInteger\"},\"vestingTotal\":{\"type\":\"string\",\"description\":\"Total locked amount across all vesting schedules. Only present when `includeClaimable` parameter is used.\",\"format\":\"unsignedInteger\"},\"vestedClaimable\":{\"type\":\"string\",\"description\":\"Actual amount that can be claimed now (vestedBalance minus already claimed). Only present when `includeClaimable` parameter is used.\",\"format\":\"unsignedInteger\"},\"blockNumberForCalculation\":{\"type\":\"string\",\"description\":\"The block number used for vesting calculations. Only present when `includeClaimable` parameter is used.\",\"format\":\"unsignedInteger\"},\"blockNumberSource\":{\"type\":\"string\",\"description\":\"Which chain's block number was used for calculations ('relay' or 'self'). Only present when `includeClaimable` parameter is used.\",\"enum\":[\"relay\",\"self\"]}}},\"AddressDetails\":{\"type\":\"object\",\"properties\":{\"ss58Format\":{\"type\":\"string\",\"description\":\"The queried SS58 address.\"},\"ss58Prefix\":{\"type\":\"string\",\"description\":\"SS58 prefix of the given address.\",\"format\":\"unsignedInteger\"},\"network\":{\"type\":\"string\",\"description\":\"The network based on which the given address is encoded.\"},\"publicKey\":{\"type\":\"string\",\"description\":\"The account ID/Public Key (hex) of the queried SS58 address.\"}}},\"AssetsBalance\":{\"type\":\"object\",\"properties\":{\"assetId\":{\"type\":\"string\",\"description\":\"The identifier of the asset.\",\"format\":\"unsignedInteger\"},\"balance\":{\"type\":\"string\",\"description\":\"The balance of the asset.\",\"format\":\"unsignedInteger\"},\"isFrozen\":{\"type\":\"boolean\",\"description\":\"Whether the asset is frozen for non-admin transfers. Note, that some runtimes may not have support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\"},\"isSufficient\":{\"type\":\"boolean\",\"description\":\"Whether a non-zero balance of this asset is a deposit of sufficient value to account for the state bloat associated with its balance storage. If set to `true`, then non-zero balances may be stored without a `consumer` reference (and thus an ED in the Balances pallet or whatever else is used to control user-account state growth).\"}}},\"AssetInfo\":{\"type\":\"object\",\"properties\":{\"owner\":{\"type\":\"string\",\"description\":\"Owner of the assets privileges.\",\"format\":\"SS58\"},\"issuer\":{\"type\":\"string\",\"description\":\"The `AccountId` able to mint tokens.\",\"format\":\"SS58\"},\"admin\":{\"type\":\"string\",\"description\":\"The `AccountId` that can thaw tokens, force transfers and burn token from any account.\",\"format\":\"SS58\"},\"freezer\":{\"type\":\"string\",\"description\":\"The `AccountId` that can freeze tokens.\",\"format\":\"SS58\"},\"supply\":{\"type\":\"string\",\"description\":\"The total supply across accounts.\",\"format\":\"unsignedInteger\"},\"deposit\":{\"type\":\"string\",\"description\":\"The balance deposited for this. This pays for the data stored.\",\"format\":\"unsignedInteger\"},\"minBalance\":{\"type\":\"string\",\"description\":\"The ED for virtual accounts.\",\"format\":\"unsignedInteger\"},\"isSufficient\":{\"type\":\"boolean\",\"description\":\"If `true`, then any account with this asset is given a provider reference. Otherwise, it requires a consumer reference.\"},\"accounts\":{\"type\":\"string\",\"description\":\"The total number of accounts.\",\"format\":\"unsignedInteger\"},\"sufficients\":{\"type\":\"string\",\"description\":\"The total number of accounts for which is placed a self-sufficient reference.\"},\"approvals\":{\"type\":\"string\",\"description\":\"The total number of approvals.\",\"format\":\"unsignedInteger\"},\"status\":{\"type\":\"string\",\"description\":\"The status of the asset.\"}}},\"AssetMetadata\":{\"type\":\"object\",\"properties\":{\"deposit\":{\"type\":\"string\",\"description\":\"The balance deposited for this metadata. This pays for the data stored in this struct.\",\"format\":\"unsignedInteger\"},\"name\":{\"type\":\"string\",\"description\":\"The user friendly name of this asset.\",\"format\":\"$hex\"},\"symbol\":{\"type\":\"string\",\"description\":\"The ticker symbol for this asset.\",\"format\":\"$hex\"},\"decimals\":{\"type\":\"string\",\"description\":\"The number of decimals this asset uses to represent one unit.\",\"format\":\"unsignedInteger\"},\"isFrozen\":{\"type\":\"boolean\",\"description\":\"Whether the asset metadata may be changed by a non Force origin. Note, that some runtimes may not have support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\"}}},\"AssetMultiLocation\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AssetMultiLocationObject\"},{\"$ref\":\"#/components/schemas/AssetMultiLocationHex\"}]},\"AssetMultiLocationObject\":{\"type\":\"object\",\"properties\":{\"parents\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"interior\":{\"type\":\"object\"}},\"description\":\"The multiLocation of the foreign asset as an object.\",\"example\":\"{\\\"parents\\\":\\\"2\\\",\\\"interior\\\":{\\\"X1\\\":{\\\"GlobalConsensus\\\":\\\"Polkadot\\\"}}}\"},\"AssetMultiLocationHex\":{\"type\":\"string\",\"pattern\":\"^0x[0-9a-fA-F]+$\",\"description\":\"The multiLocation of the foreign asset given as a hexadecimal value.\"},\"BalanceLock\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"An identifier for this lock. Only one lock may be in existence for each identifier.\"},\"amount\":{\"type\":\"string\",\"description\":\"The amount below which the free balance may not drop with this lock in effect.\",\"format\":\"unsignedInteger\"},\"reasons\":{\"type\":\"string\",\"description\":\"Reasons for withdrawing balance.\",\"enum\":[\"Fee = 0\",\"Misc = 1\",\"All = 2\"]}}},\"Block\":{\"type\":\"object\",\"properties\":{\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"authorId\":{\"type\":\"string\",\"description\":\"The account ID of the block author (may be undefined for some chains).\",\"format\":\"ss58\"},\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"},\"onInitialize\":{\"$ref\":\"#/components/schemas/BlockInitialize\"},\"extrinsics\":{\"type\":\"array\",\"description\":\"Array of extrinsics (inherents and transactions) within the block.\",\"items\":{\"$ref\":\"#/components/schemas/Extrinsic\"}},\"onFinalize\":{\"$ref\":\"#/components/schemas/BlockFinalize\"},\"finalized\":{\"type\":\"boolean\",\"description\":\"A boolean identifying whether the block is finalized or not. Note: on chains that do not have deterministic finality this field is omitted.\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}},\"description\":\"Note: Block finalization does not correspond to consensus, i.e. whether the block is in the canonical chain. It denotes the finalization of block _construction._\"},\"BlockRaw\":{\"type\":\"object\",\"properties\":{\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}},\"extrinsics\":{\"type\":\"array\",\"description\":\"Array of raw extrinsics (inherents and transactions) within the block.\",\"items\":{\"type\":\"string\"}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"Blocks\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Block\"}},\"BlockFinalize\":{\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}}},\"description\":\"Object with an array of `SanitizedEvent`s that occurred during block construction finalization with the `method` and `data` for each.\"},\"BlockHeader\":{\"type\":\"object\",\"properties\":{\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"BlockIdentifiers\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"height\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"}}},\"BlockParaInclusions\":{\"type\":\"object\",\"description\":\"Contains all decoded parachain inclusion information for a relay chain block\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"inclusions\":{\"type\":\"array\",\"description\":\"Array of parachain inclusions in this relay chain block, sorted by paraId\",\"items\":{\"$ref\":\"#/components/schemas/ParaInclusion\"}}}},\"ParaInclusion\":{\"type\":\"object\",\"description\":\"Information about a single parachain inclusion event\",\"properties\":{\"paraId\":{\"type\":\"string\",\"description\":\"The parachain ID\",\"format\":\"unsignedInteger\"},\"paraBlockNumber\":{\"type\":\"number\",\"description\":\"The parachain block number that was included (decoded from HeadData)\",\"format\":\"unsignedInteger\"},\"paraBlockHash\":{\"type\":\"string\",\"description\":\"The parachain block hash that was included (decoded from HeadData)\",\"format\":\"hex\"},\"descriptor\":{\"$ref\":\"#/components/schemas/ParaInclusionDescriptor\"},\"commitmentsHash\":{\"type\":\"string\",\"description\":\"Hash of the candidate commitments\",\"format\":\"hex\"},\"coreIndex\":{\"type\":\"string\",\"description\":\"Core index assigned to this parachain block\",\"format\":\"unsignedInteger\"},\"groupIndex\":{\"type\":\"string\",\"description\":\"Validator group index that backed this parachain block\",\"format\":\"unsignedInteger\"}}},\"ParaInclusionDescriptor\":{\"type\":\"object\",\"description\":\"Candidate descriptor containing parachain inclusion metadata\",\"properties\":{\"relayParent\":{\"type\":\"string\",\"description\":\"The relay chain parent block hash\",\"format\":\"hex\"},\"persistedValidationDataHash\":{\"type\":\"string\",\"description\":\"Hash of the persisted validation data\",\"format\":\"hex\"},\"povHash\":{\"type\":\"string\",\"description\":\"Hash of the Proof of Validity (PoV)\",\"format\":\"hex\"},\"erasureRoot\":{\"type\":\"string\",\"description\":\"Root hash of the erasure encoding\",\"format\":\"hex\"},\"paraHead\":{\"type\":\"string\",\"description\":\"Hash of the parachain head data\",\"format\":\"hex\"},\"validationCodeHash\":{\"type\":\"string\",\"description\":\"Hash of the validation code\",\"format\":\"hex\"}}},\"BlockInitialize\":{\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}}},\"description\":\"Object with an array of `SanitizedEvent`s that occurred during block initialization with the `method` and `data` for each.\"},\"BlocksTrace\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"blockHash\":{\"type\":\"string\"},\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TraceEvent\"}},\"parentHash\":{\"type\":\"string\"},\"spans\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TraceSpan\"}},\"storageKeys\":{\"type\":\"string\",\"description\":\"Hex encoded storage keys used to filter events.\"},\"tracingTargets\":{\"type\":\"string\",\"description\":\"Targets used to filter spans and events.\"}}},\"BlocksTraceOperations\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"operations\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Operation\"}}}},\"CoretimeRegionsResponse\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"regions\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CoretimeRegion\"}}}},\"CoretimeLeasesResponse\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"leases\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CoretimeLease\"}}}},\"CoretimeReservationsResponse\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"reservations\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CoretimeReservation\"}}}},\"CoretimeRenewalsResponse\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"renewals\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CoretimeRenewal\"}}}},\"CoretimeChainInfoResponse\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"configuration\":{\"$ref\":\"#/components/schemas/CoretimeConfig\"},\"currentRegion\":{\"type\":\"object\",\"properties\":{\"start\":{\"type\":\"string\",\"description\":\"The start time.\"},\"end\":{\"type\":\"string\",\"description\":\"The end time.\"}}},\"cores\":{\"type\":\"object\",\"properties\":{\"total\":{\"type\":\"string\",\"description\":\"The total number of cores.\"},\"available\":{\"type\":\"string\",\"description\":\"The number of free cores.\"},\"sold\":{\"type\":\"string\",\"description\":\"The number of reserved cores.\"},\"currentCorePrice\":{\"type\":\"string\",\"description\":\"The current core price.\"},\"selloutPrice\":{\"type\":\"string\",\"description\":\"The sellout price.\"},\"firstCore\":{\"type\":\"string\",\"description\":\"The first core id.\"}}}}},\"CoretimeRelayInfoResponse\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"brokerId\":{\"type\":\"string\",\"description\":\"The broker parachain id.\"},\"palletVersion\":{\"type\":\"string\",\"description\":\"The pallet version.\"},\"maxHistoricalRevenue\":{\"type\":\"string\",\"description\":\"The maximum historical revenue.\"}}},\"CoretimeChainCoresResponse\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"cores\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CoretimeCore\"}}}},\"CoretimeRelayCoresResponse\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"cores\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CoretimeRelayCoreDescriptor\"}}}},\"CoretimeRelayCoreDescriptor\":{\"type\":\"object\",\"properties\":{\"paraId\":{\"type\":\"string\",\"description\":\"The parachain id.\"},\"type\":{\"type\":\"string\",\"description\":\"The parachain type.\"},\"info\":{\"type\":\"object\",\"properties\":{\"currentWork\":{\"type\":\"object\",\"properties\":{\"assignments\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"isPool\":{\"type\":\"boolean\",\"description\":\"Whether the workload is a pool.\"},\"isTask\":{\"type\":\"boolean\",\"description\":\"Whether the workload is a task.\"},\"ratio\":{\"type\":\"string\",\"description\":\"The ratio of the workload.\"},\"remaining\":{\"type\":\"string\",\"description\":\"The remaining workload.\"},\"task\":{\"type\":\"string\",\"description\":\"The parachain id.\"}}}},\"endHint\":{\"type\":\"string\",\"description\":\"The end hint.\"},\"pos\":{\"type\":\"string\",\"description\":\"The position.\"},\"step\":{\"type\":\"string\",\"description\":\"The step.\"}}},\"queue\":{\"type\":\"object\",\"properties\":{\"first\":{\"type\":\"string\",\"description\":\"The first assignment in queue.\"},\"last\":{\"type\":\"string\",\"description\":\"The last assignment in queue.\"}}}}}}},\"CoretimeCore\":{\"type\":\"object\",\"properties\":{\"coreId\":{\"type\":\"string\",\"description\":\"The core id.\"},\"paraId\":{\"type\":\"string\",\"description\":\"The parachain core.\"},\"workload\":{\"type\":\"object\",\"$ref\":\"#/components/schemas/CoretimeWorkload\"},\"workplan\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CoretimeWorkplan\"}},\"type\":{\"description\":\"The paid price.\",\"type\":\"object\",\"properties\":{\"condition\":{\"type\":\"string\",\"description\":\"Type of assignment.\"},\"details\":{\"type\":\"object\",\"oneOf\":[{\"$ref\":\"#/components/schemas/CoretimeUntil\"},{\"$ref\":\"#/components/schemas/CoretimeMask\"}]}}},\"regions\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CoretimeRegion\"}}}},\"CoretimeConfig\":{\"type\":\"object\",\"properties\":{\"interludeLength\":{\"type\":\"string\",\"description\":\"The interlude length.\"},\"leadinLength\":{\"type\":\"string\",\"description\":\"The leadin length.\"},\"regionLength\":{\"type\":\"string\",\"description\":\"The region length.\"},\"relayBlocksPerTimeslice\":{\"type\":\"string\",\"description\":\"The number of relay chain blocks per timeslice.\"}}},\"CoretimeSaleInfo\":{\"type\":\"object\",\"properties\":{\"phase\":{\"type\":\"string\",\"description\":\"The phase of the sale.\"},\"saleStart\":{\"type\":\"string\",\"description\":\"The sale start.\"},\"leadinLength\":{\"type\":\"string\",\"description\":\"The leading length.\"},\"endPrice\":{\"type\":\"string\",\"description\":\"The end price.\"},\"regionBegin\":{\"type\":\"string\",\"description\":\"The region start time.\"},\"regionEnd\":{\"type\":\"string\",\"description\":\"The region end time.\"},\"idealCoresSold\":{\"type\":\"string\",\"description\":\"The ideal number of cores sold.\"},\"coresOffered\":{\"type\":\"string\",\"description\":\"The number of cores on sale.\"},\"firstCore\":{\"type\":\"string\",\"description\":\"The first core id.\"},\"selloutPrice\":{\"type\":\"string\",\"description\":\"The sellout price.\"},\"coresSold\":{\"type\":\"string\",\"description\":\"The number of cores sold.\"}}},\"CoretimeMask\":{\"type\":\"string\",\"description\":\"The mask.\"},\"CoretimeUntil\":{\"type\":\"string\",\"description\":\"The lease expiry time.\"},\"CoretimeWorkplan\":{\"type\":\"object\",\"properties\":{\"core\":{\"type\":\"string\",\"description\":\"The core id.\"},\"timeslice\":{\"type\":\"string\",\"description\":\"The timeslice.\"},\"info\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CoretimeWorkplanInfo\"}}}},\"CoretimeWorkplanInfo\":{\"type\":\"object\",\"properties\":{\"isPool\":{\"type\":\"boolean\",\"description\":\"Whether the workload is a pool.\"},\"isTask\":{\"type\":\"boolean\",\"description\":\"Whether the workload is a task.\"},\"mask\":{\"type\":\"string\",\"description\":\"The mask.\"},\"task\":{\"type\":\"string\",\"description\":\"The parachain id.\"}}},\"CoretimeWorkload\":{\"type\":\"object\",\"properties\":{\"isPool\":{\"type\":\"boolean\",\"description\":\"Whether the workload is a pool.\"},\"isTask\":{\"type\":\"boolean\",\"description\":\"Whether the workload is a task.\"},\"mask\":{\"type\":\"string\",\"description\":\"The mask.\"},\"task\":{\"type\":\"string\",\"description\":\"The parachain id.\"}}},\"CoretimeRegion\":{\"type\":\"object\",\"properties\":{\"core\":{\"type\":\"string\",\"description\":\"The core id.\"},\"begin\":{\"type\":\"string\",\"description\":\"The begin time.\"},\"end\":{\"type\":\"string\",\"description\":\"The end time.\"},\"owner\":{\"type\":\"string\",\"description\":\"The owner of the region.\"},\"paid\":{\"type\":\"string\",\"description\":\"The paid price.\"},\"mask\":{\"type\":\"string\",\"description\":\"The mask.\"}}},\"CoretimeLease\":{\"type\":\"object\",\"properties\":{\"task\":{\"type\":\"string\",\"description\":\"The parachain id.\"},\"until\":{\"type\":\"string\",\"description\":\"The lease expiry time.\"},\"core\":{\"type\":\"string\",\"description\":\"The core id.\"}}},\"CoretimeReservation\":{\"type\":\"object\",\"properties\":{\"task\":{\"type\":\"string\",\"description\":\"The parachain id.\"},\"mask\":{\"type\":\"string\",\"description\":\"The mask.\"}}},\"CoretimeRenewal\":{\"type\":\"object\",\"properties\":{\"completion\":{\"type\":\"string\",\"description\":\"The completion status.\"},\"core\":{\"type\":\"string\",\"description\":\"The core id.\"},\"mask\":{\"type\":\"string\",\"description\":\"The mask.\"},\"price\":{\"type\":\"string\",\"description\":\"The renewal price.\"},\"task\":{\"type\":\"string\",\"description\":\"The parachain id.\"},\"when\":{\"type\":\"string\",\"description\":\"The renewal time.\"}}},\"BlockWithDecodedXcmMsgs\":{\"allOf\":[{\"$ref\":\"#/components/schemas/Block\"},{\"$ref\":\"#/components/schemas/DecodedXcmMsgs\"}],\"description\":\"Block information that includes the decoded XCM messages if any are found in the queried block. If not, the decodedXcmMsgs object will be returned with three empty arrays corresponding to each direction, horizontalMessages, downwardMessages, upwardMessages.\"},\"BondedPool\":{\"type\":\"object\",\"properties\":{\"points\":{\"type\":\"number\"},\"state\":{\"type\":\"string\"},\"memberCounter\":{\"type\":\"number\"},\"roles\":{\"type\":\"object\",\"properties\":{\"depositor\":{\"type\":\"string\"},\"root\":{\"type\":\"string\"},\"nominator\":{\"type\":\"string\"},\"stateToggler\":{\"type\":\"string\"}}}}},\"ChainType\":{\"type\":\"object\",\"description\":\"Type of the chain. It will return one of the following enum variants as a key. Live, Development, Local, or Custom. Each variant will have a value as null except when the ChainType is Custom, it will return a string.\",\"properties\":{\"live\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"development\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"local\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"custom\":{\"type\":\"string\"}},\"example\":\"{\\\"live\\\": null}\"},\"ContractsInkQuery\":{\"type\":\"object\",\"description\":\"Result from calling a query to a Ink contract.\",\"properties\":{\"debugMessage\":{\"type\":\"string\"},\"gasConsumed\":{\"type\":\"string\"},\"gasRequired\":{\"type\":\"string\"},\"output\":{\"type\":\"boolean\"},\"result\":{\"type\":\"object\",\"description\":\"Will result in an Ok or Err object depending on the result of the query.\"},\"storageDeposit\":{\"type\":\"object\"}}},\"ContractMetadata\":{\"type\":\"object\",\"description\":\"Metadata used to instantiate a ContractPromise. This metadata can be generated by compiling the contract you are querying.\"},\"DecodedXcmMsgs\":{\"type\":\"object\",\"properties\":{\"decodedXcmMsgs\":{\"type\":\"object\",\"properties\":{\"horizontalMessages\":{\"type\":\"object\",\"oneOf\":[{\"$ref\":\"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInRelay\"},{\"$ref\":\"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInParachain\"}]},\"downwardMessages\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"sentAt\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Represents the block number that the XCM message was sent at on the relay chain.\"},\"msg\":{\"type\":\"string\",\"description\":\"Represents the XCM message.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}}}},\"upwardMessages\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}}}}}}},\"description\":\"Object with three arrays, one for every XCM direction. The arrays are populated or left empty based on the direction of the current XCM message that is being decoded. The XCM messages can be Upward and/or Horizontal (`in transit`) messages when connected to a Relay chain. When connected to a Parachain, the messages can be Downward and/or Horizontal. One or more messages can be present in a single block. In case of multiple messages from the same paraIds (originParaId and/or destinationParaId), the messages will be shown under the field `data`.\"},\"DecodedXcmMsgsHorizontalMessagesInRelay\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"destinationParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent to.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}},\"description\":\"Array that includes the Horizontal (`in transit`) messages when we are connected to a Relay Chain. Each block can contain one or more messages. If multiple messages share the same origin and destination paraId, they will be displayed within the data field.\"}},\"DecodedXcmMsgsHorizontalMessagesInParachain\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"sentAt\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Represents the block number that the XCM message was sent at on the relay chain.\"},\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}},\"description\":\"Array that includes the Horizontal Messages when we are connected to a Parachain. Each block can contain one or more messages. If multiple messages originate from the same parachain (originParaId), they will be displayed within the data field.\"}},\"DigestItem\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"index\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"value\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"ElectionStatus\":{\"type\":\"object\",\"properties\":{\"status\":{\"type\":\"object\",\"description\":\"[Deprecated](Works for polkadot runtimes before v0.8.30).\\nEra election status: either `Close: null` or `Open: `. A status of `Close` indicates that the submission window for solutions from off-chain Phragmen is not open. A status of `Open` indicates that the submission window for off-chain Phragmen solutions has been open since BlockNumber. N.B. when the submission window is open, certain extrinsics are not allowed because they would mutate the state that the off-chain Phragmen calculation relies on for calculating results.\"},\"toggleEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the `status` will switch.\",\"format\":\"unsignedInteger\"}},\"description\":\"Information about the off-chain election. Not included in response when `forceEra.isForceNone`.\"},\"Error\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"message\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"},\"level\":{\"type\":\"string\"}}},\"ExtrinsicMethod\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\"},\"method\":{\"type\":\"string\"}},\"description\":\"Extrinsic method\"},\"Extrinsic\":{\"type\":\"object\",\"properties\":{\"method\":{\"$ref\":\"#/components/schemas/ExtrinsicMethod\"},\"signature\":{\"$ref\":\"#/components/schemas/Signature\"},\"nonce\":{\"type\":\"string\",\"description\":\"Account nonce, if applicable.\",\"format\":\"unsignedInteger\"},\"args\":{\"type\":\"object\",\"description\":\"Object of arguments keyed by parameter name. Note: if you are expecting an [`OpaqueCall`](https://substrate.dev/rustdocs/v2.0.0/pallet_multisig/type.OpaqueCall.html) and it is not decoded in the response (i.e. it is just a hex string), then Sidecar was not able to decode it and likely that it is not a valid call for the runtime.\"},\"tip\":{\"type\":\"string\",\"description\":\"Any tip added to the transaction.\",\"format\":\"unsignedInteger\"},\"hash\":{\"type\":\"string\",\"description\":\"The transaction's hash.\",\"format\":\"hex\"},\"info\":{\"$ref\":\"#/components/schemas/RuntimeDispatchInfo\"},\"era\":{\"$ref\":\"#/components/schemas/GenericExtrinsicEra\"},\"events\":{\"type\":\"array\",\"description\":\"An array of `SanitizedEvent`s that occurred during extrinsic execution.\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}},\"success\":{\"type\":\"boolean\",\"description\":\"Whether or not the extrinsic succeeded.\"},\"paysFee\":{\"type\":\"boolean\",\"description\":\"Whether the extrinsic requires a fee. Careful! This field relates to whether or not the extrinsic requires a fee if called as a transaction. Block authors could insert the extrinsic as an inherent in the block and not pay a fee. Always check that `paysFee` is `true` and that the extrinsic is signed when reconciling old blocks.\"}}},\"ExtrinsicIndex\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"extrinsic\":{\"$ref\":\"#/components/schemas/Extrinsic\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}},\"description\":\"A single extrinsic at a given block.\"},\"FundInfo\":{\"type\":\"object\",\"properties\":{\"depositor\":{\"type\":\"string\"},\"verifier\":{\"type\":\"string\"},\"deposit\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"raised\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"end\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"cap\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"lastConstribution\":{\"type\":\"string\",\"enum\":[\"preEnding\",\"ending\"]},\"firstPeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"lastPeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"trieIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"GenericExtrinsicEra\":{\"type\":\"object\",\"description\":\"The return value for era can either be `mortalEra`, or `immortalEra` and is represented as an enum in substrate. `immortalEra` meaning\\nthe transaction is valid forever. `mortalEra` consists of a tuple containing a period and phase.\\nex: `\\\"{\\\"mortalEra\\\": [\\\"64\\\", \\\"11\\\"]}\\\"`. The Period is the period of validity from the block hash found in the signing material.\\nThe Phase is the period that this transaction's lifetime begins (and, importantly,\\nimplies which block hash is included in the signature material).\\n\",\"properties\":{\"mortalEra\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Tuple of a Phase, and Period. Each item in the array will be a string formatted as an integer.\"},\"immortalEra\":{\"type\":\"string\",\"description\":\"Hardcoded constant '0x00'.\",\"format\":\"hex\"}},\"example\":\"{\\\"mortalEra\\\":[\\\"64\\\", \\\"11\\\"]}\"},\"LiquidityPools\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pools\":{\"type\":\"array\",\"description\":\"Array containing existent liquidity pool's token id.\",\"items\":{\"$ref\":\"#/components/schemas/LiquidityPool\"},\"example\":\"[{\\\"reserves\\\":[{\\\"parents\\\":\\\"1\\\",\\\"interior\\\":{\\\"here\\\": null}},{\\\"parents\\\":\\\"0\\\",\\\"interior\\\":{\\\"x2\\\":[{\\\"palletInstance\\\": \\\"50\\\"},{\\\"generalIndex\\\":\\\"2\\\"}]}}],\\\"lpToken\\\":{\\\"lpToken\\\":\\\"1\\\"} },{\\\"lpToken\\\":{\\\"lpToken\\\":\\\"0\\\"}}]\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"LiquidityPool\":{\"type\":\"object\",\"properties\":{\"reserves\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"parents\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"interior\":{\"type\":\"object\"}}}},\"lpToken\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Liquidity pool token ID.\"}}},\"NextAvailableId\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"id\":{\"type\":\"string\",\"description\":\"Next availabe liquidity pool's id.\",\"example\":\"4\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"NodeNetwork\":{\"type\":\"object\",\"properties\":{\"nodeRoles\":{\"$ref\":\"#/components/schemas/NodeRole\"},\"numPeers\":{\"type\":\"string\",\"description\":\"Number of peers the node is connected to.\",\"format\":\"unsignedInteger\"},\"isSyncing\":{\"type\":\"boolean\",\"description\":\"Whether or not the node is syncing. `False` indicates that the node is in sync.\"},\"shouldHavePeers\":{\"type\":\"boolean\",\"description\":\"Whether or not the node should be connected to peers. Might be false for local chains or when running without discovery.\"},\"localPeerId\":{\"type\":\"string\",\"description\":\"Local copy of the `PeerId`.\"},\"localListenAddresses\":{\"type\":\"array\",\"description\":\"Multiaddresses that the local node is listening on. The addresses include a trailing `/p2p/` with the local PeerId, and are thus suitable to be passed to `system_addReservedPeer` or as a bootnode address for example.\",\"items\":{\"type\":\"string\"}},\"peersInfo\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PeerInfo\"}}}},\"NodeRole\":{\"type\":\"string\",\"description\":\"Role of this node. (N.B. Sentry nodes are being deprecated.)\",\"enum\":[\"Full\",\"LightClient\",\"Authority\",\"Sentry\"]},\"NodeVersion\":{\"type\":\"object\",\"properties\":{\"clientVersion\":{\"type\":\"string\",\"description\":\"Node's binary version.\"},\"clientImplName\":{\"type\":\"string\",\"description\":\"Node's implementation name.\"},\"chain\":{\"type\":\"string\",\"description\":\"Node's chain name.\"}},\"description\":\"Version information of the node.\"},\"Nominations\":{\"type\":\"object\",\"properties\":{\"targets\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"The targets of the nomination.\"},\"submittedIn\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The era the nominations were submitted. (Except for initial nominations which are considered submitted at era 0.)\"},\"suppressed\":{\"type\":\"boolean\",\"description\":\"Whether the nominations have been suppressed.\"}}},\"OnboardingAs\":{\"type\":\"string\",\"enum\":[\"parachain\",\"parathread\"],\"description\":\"This property only shows up when `paraLifecycle=onboarding`. It\\ndescribes if a particular para is onboarding as a `parachain` or a\\n`parathread`.\\n\"},\"Operation\":{\"type\":\"object\",\"properties\":{\"phase\":{\"$ref\":\"#/components/schemas/OperationPhase\"},\"parentSpanId\":{\"$ref\":\"#/components/schemas/SpanId\"},\"primarySpanId\":{\"$ref\":\"#/components/schemas/SpanId\"},\"eventIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Index of the underlying trace event.\"},\"address\":{\"type\":\"string\",\"description\":\"Account this operation affects. Note - this will be an object like\\n`{ id: address }` if the network uses `MultiAddress`\\n\"},\"storage\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\"},\"item\":{\"type\":\"string\"},\"field1\":{\"type\":\"string\",\"description\":\"A field of the storage item. (i.e `system::Account::get(address).data`)\\n\"},\"field2\":{\"type\":\"string\",\"description\":\"A field of the struct described by field1 (i.e\\n`system::Account::get(address).data.free`)\\n\"}}},\"amount\":{\"$ref\":\"#/components/schemas/OperationAmount\"}}},\"OperationAmount\":{\"type\":\"object\",\"properties\":{\"values\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"currency\":{\"$ref\":\"#/components/schemas/OperationAmountCurrency\"}}},\"OperationAmountCurrency\":{\"type\":\"object\",\"properties\":{\"symbol\":{\"type\":\"string\",\"example\":\"KSM\"}}},\"OperationPhase\":{\"type\":\"object\",\"properties\":{\"variant\":{\"type\":\"string\",\"enum\":[\"onInitialize\",\"initialChecks\",\"applyExtrinsic\",\"onFinalize\",\"finalChecks\"],\"description\":\"Phase of block execution pipeline.\"},\"extrinsicIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"If phase variant is `applyExtrinsic` this will be the index of\\nthe extrinsic. Otherwise this field will not be present.\\n\"}}},\"PalletsAssetsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"assetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"assetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"PalletConstants\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up constants.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletConstantsItemMetadata\"},\"description\":\"Array containing metadata for each constant entry of the pallet.\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletConstantsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up constants.\",\"example\":\"14\"},\"errorItem\":{\"type\":\"string\",\"description\":\"Name of the constant item.\",\"example\":\"EnactmentPeriod\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletConstantsItemMetadata\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletConstantsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"VotingPeriod\",\"description\":\"The constant item's name (which is the same as the constant item's ID).\"},\"type\":{\"type\":\"string\",\"example\":\"4\"},\"value\":{\"type\":\"string\",\"example\":\"0x00270600\",\"description\":\"The hex value of the constant\"},\"docs\":{\"type\":\"string\",\"example\":\"Information concerning any given constant.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"}},\"description\":\"Metadata of an constant item from a FRAME pallet.\"},\"PalletDispatchables\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up dispatchables.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItemMetadata\"},\"description\":\"Array containing metadata for each dispatchable entry of the pallet.\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"PalletDispatchablesItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up dispatchables.\",\"example\":\"14\"},\"dispatchableItem\":{\"type\":\"string\",\"description\":\"Name of the dispatchable item.\",\"example\":\"vote\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItemMetadata\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"PalletDispatchablesItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"propose\",\"description\":\"The dispatchable item's name (which is the same as the dispatchable item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the dispatchable item in the lists of pallet dispatchables.\"},\"docs\":{\"type\":\"string\",\"example\":\"Information concerning any given dispatchable.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of a dispatchable item from a FRAME pallet.\"},\"PalletErrors\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up errors.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletErrorsItemMetadata\"},\"description\":\"Array containing metadata for each error entry of the pallet.\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletErrorsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up errors.\",\"example\":\"14\"},\"errorItem\":{\"type\":\"string\",\"description\":\"Name of the error item.\",\"example\":\"ValueLow\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletErrorsItemMetadata\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletErrorsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"InsufficientFunds\",\"description\":\"The error item's name (which is the same as the error item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the error item in the lists of pallet errors\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given error.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of an error item from a FRAME pallet.\"},\"PalletEvents\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up events.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletEventsItemMetadata\"},\"description\":\"Array containing metadata for each event entry of the pallet.\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletEventsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up events.\",\"example\":\"14\"},\"eventItem\":{\"type\":\"string\",\"description\":\"Name of the events item.\",\"example\":\"Proposed\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletEventsItemMetadata\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletEventsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"Tabled\",\"description\":\"The event item's name (which is the same as the event item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the error item in the lists of pallet events\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given event.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of an event item from a FRAME pallet.\"},\"PalletsForeignAssets\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletsForeignAssetsInfo\"},\"description\":\"Array containing the `AssetDetails` and `AssetMetadata` of every foreign asset.\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"PalletsForeignAssetsInfo\":{\"type\":\"object\",\"properties\":{\"multiLocation\":{\"$ref\":\"#/components/schemas/AssetMultiLocation\"},\"foreignAssetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"foreignAssetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletsNominationPool\":{\"type\":\"object\",\"properties\":{\"bondedPool\":{\"$ref\":\"#/components/schemas/BondedPool\"},\"rewardPool\":{\"$ref\":\"#/components/schemas/RewardPool\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletsNominationPoolsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"counterForBondedPools\":{\"type\":\"number\"},\"counterForMetadata\":{\"type\":\"number\"},\"counterForPoolMembers\":{\"type\":\"number\"},\"counterForReversePoolIdLookup\":{\"type\":\"number\"},\"counterForRewardPools\":{\"type\":\"number\"},\"counterForSubPoolsStorage\":{\"type\":\"number\"},\"lastPoolId\":{\"type\":\"number\"},\"maxPoolMembers\":{\"type\":\"number\"},\"maxPoolMembersPerPool\":{\"type\":\"number\",\"nullable\":true},\"maxPools\":{\"type\":\"number\"},\"minCreateBond\":{\"type\":\"number\"},\"minJoinBond\":{\"type\":\"number\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletsOnGoingReferenda\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"referenda\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Referendum's id.\"},\"decisionDeposit\":{\"type\":\"object\",\"properties\":{\"who\":{\"type\":\"string\",\"description\":\"The account who placed the referendum's decision deposit.\"},\"amount\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The amount of the decision deposit.\"}},\"description\":\"A deposit which is required for a referendum to progress to the decision phase.\"},\"enactment\":{\"type\":\"string\",\"enum\":[\"at\",\"after\"],\"description\":\"The enactment period of the referendum. It can be defined using either the `at` option, which specifies the exact block height when the referendum will be enacted, or the `after` option, which indicates the number of blocks after which the enactment will occur.\"},\"submitted\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The block number at which the referendum was submitted.\"},\"deciding\":{\"type\":\"object\",\"properties\":{\"since\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The block number at which the referendum started being `decided`.\"},\"confirming\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The block number at which the referendum's confirmation stage will end at as long as it doesn't lose its approval in the meantime.\"}}}}},\"description\":\"A list of ongoing referenda and their details.\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletsPoolAssetsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"poolAssetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"poolAssetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletStorage\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up storage.\",\"example\":\"15\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletStorageItemMetadata\"},\"description\":\"Array containing metadata for each storage entry of the pallet.\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletStorageItem\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up storage.\",\"example\":\"15\"},\"storageItem\":{\"type\":\"string\",\"description\":\"Name of the storage item.\",\"example\":\"referendumInfoOf\"},\"keys\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"N Storage keys passed in as the `keys` query param.\",\"example\":[\"0x00\",\"0x01\"]},\"value\":{\"type\":\"object\",\"description\":\"Value returned by this storage query.\",\"example\":{\"Ongoing\":{\"end\":\"1612800\",\"proposalHash\":\"0x7de70fc8be782076d0b5772be77153d172a5381c72dd56d3385e25f62abf507e\",\"threshold\":\"Supermajorityapproval\",\"delay\":\"403200\",\"tally\":{\"ayes\":\"41925212461400000\",\"nays\":\"214535586500000\",\"turnout\":\"34485320658000000\"}}}},\"metadata\":{\"$ref\":\"#/components/schemas/PalletStorageItemMetadata\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletStorageItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"ReferendumInfoOf\",\"description\":\"The storage item's name (which is the same as the storage item's ID).\"},\"modifier\":{\"type\":\"string\",\"example\":\"Optional\"},\"type\":{\"$ref\":\"#/components/schemas/PalletStorageType\"},\"fallback\":{\"type\":\"string\",\"example\":\"0x00\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given referendum.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"}},\"description\":\"Metadata of a storage item from a FRAME pallet.\"},\"PalletStorageType\":{\"type\":\"object\",\"description\":\"This is going to be formatted to the type of StorageEntryTypeV14.\"},\"Para\":{\"type\":\"object\",\"properties\":{\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"paraLifecycle\":{\"$ref\":\"#/components/schemas/ParaLifecycle\"},\"onboardingAs\":{\"$ref\":\"#/components/schemas/OnboardingAs\"}}},\"Paras\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paras\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Para\"}}}},\"ParasAuctionsCurrent\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"beginEnd\":{\"type\":\"string\",\"format\":\"unisgnedInteger or $null\",\"description\":\"Fist block (number) of the auction ending phase. `null` if there is no ongoing\\nauction.\\n\"},\"finishEnd\":{\"type\":\"string\",\"format\":\"unisgnedInteger or $null\",\"description\":\"Last block (number) of the auction ending phase. `null` if there is no ongoing\\nauction.\\n\"},\"phase\":{\"type\":\"string\",\"enum\":[\"startPeriod\",\"endPeriod\",\"vrfDelay\"],\"description\":\"An auction can be in one of 4 phases. Both `startingPeriod` () and `endingPeriod` indicate\\nan ongoing auction, while `vrfDelay` lines up with the `AuctionStatus::VrfDelay` . Finally, a value of `null`\\nindicates there is no ongoing auction. Keep in mind the that the `finishEnd` field is the block number the\\n`endingPeriod` finishes and the `vrfDelay` period begins. The `vrfDelay` period is typically about an\\nepoch long and no crowdloan contributions are accepted.\\n\"},\"auctionIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The auction number. If there is no current auction this will be the number\\nof the previous auction.\\n\"},\"leasePeriods\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"Lease period indexes that may be bid on in this auction. `null` if\\nthere is no ongoing auction.\\n\"},\"winning\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/WinningData\"}}}},\"ParasCrowdloans\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"funds\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"fundInfo\":{\"$ref\":\"#/components/schemas/FundInfo\"}}},\"description\":\"List of paras that have crowdloans.\\n\"}}},\"ParasCrowdloanInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"fundInfo\":{\"$ref\":\"#/components/schemas/FundInfo\"},\"leasePeriods\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"Lease periods the crowdloan can bid on.\"}}},\"ParasHeaders\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paraId\":{\"type\":\"object\",\"description\":\"The key is not named `paraId` and will be the number of the parachain. There is technically no limit to the number of paraId keys there can be. \\n\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicsRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}}}}}},\"ParachainInclusion\":{\"type\":\"object\",\"properties\":{\"parachainBlock\":{\"type\":\"integer\",\"description\":\"The parachain block number that was searched for.\"},\"parachainBlockHash\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"The hash of the parachain block.\"},\"parachainId\":{\"type\":\"integer\",\"description\":\"The parachain ID.\"},\"relayParentNumber\":{\"type\":\"integer\",\"description\":\"The relay chain block number used as parent during parachain block production.\"},\"inclusionNumber\":{\"type\":\"integer\",\"nullable\":true,\"description\":\"The relay chain block number where the parachain block was included (null if not found).\"},\"found\":{\"type\":\"boolean\",\"description\":\"Whether the inclusion was found within the search depth.\"}},\"required\":[\"parachainBlock\",\"parachainBlockHash\",\"parachainId\",\"relayParentNumber\",\"inclusionNumber\",\"found\"]},\"ParasLeasesCurrent\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"leasePeriodIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Current lease period index. This value may be null when the current block now, substracted by the leaseOffset is less then zero.\"},\"endOfLeasePeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Last block (number) of the current lease period. This value may be null when `leasePeriodIndex` is null.\"},\"currentLeaseHolders\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"List of `paraId`s that currently hold a lease.\"}}},\"ParasLeaseInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paraLifecycle\":{\"$ref\":\"#/components/schemas/ParaLifecycle\"},\"onboardingAs\":{\"$ref\":\"#/components/schemas/OnboardingAs\"},\"leases\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"leasePeriodIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"account\":{\"type\":\"string\"},\"deposit\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"List of lease periods for which the `paraId` holds a lease along with\\nthe deposit held and the associated `accountId`.\\n\"}}},\"ParaLifecycle\":{\"type\":\"string\",\"enum\":[\"onboarding\",\"parathread\",\"parachain\",\"upgradingParathread\",\"downgradingParachain\",\"offboardingParathread\",\"offboardingParachain\"],\"description\":\"The possible states of a para, to take into account delayed lifecycle\\nchanges.\\n\"},\"Payouts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"validatorId\":{\"type\":\"string\",\"description\":\"AccountId of the validator the payout is coming from.\"},\"nominatorStakingPayout\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Payout for the reward destination associated with the accountId the query was made for.\"},\"claimed\":{\"type\":\"boolean\",\"description\":\"Whether or not the reward has been claimed.\"},\"totalValidatorRewardPoints\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Number of reward points earned by the validator.\"},\"validatorCommission\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The percentage of the total payout that the validator takes as commission, expressed as a Perbill.\"},\"totalValidatorExposure\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The sum of the validator's and its nominators' stake.\"},\"nominatorExposure\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The amount of stake the nominator has behind the validator.\"}},\"description\":\"Payout for a nominating _Stash_ address and information about the validator they were nominating.\"}},\"PeerInfo\":{\"type\":\"object\",\"properties\":{\"peerId\":{\"type\":\"string\",\"description\":\"Peer ID.\"},\"roles\":{\"type\":\"string\",\"description\":\"Roles the peer is running\"},\"protocolVersion\":{\"type\":\"string\",\"description\":\"Peer's protocol version.\",\"format\":\"unsignedInteger\"},\"bestHash\":{\"type\":\"string\",\"description\":\"Hash of the best block on the peer's canon chain.\",\"format\":\"hex\"},\"bestNumber\":{\"type\":\"string\",\"description\":\"Height of the best block on the peer's canon chain.\",\"format\":\"unsignedInteger\"}}},\"RewardPool\":{\"type\":\"object\",\"properties\":{\"lastRecordedRewardCounter\":{\"type\":\"number\"},\"lastRecordedTotalPayouts\":{\"type\":\"number\"},\"totalRewardsClaimed\":{\"type\":\"number\"}}},\"RuntimeCode\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"code\":{\"type\":\"string\",\"format\":\"hex\"}}},\"RuntimeDispatchInfo\":{\"type\":\"object\",\"properties\":{\"weight\":{\"$ref\":\"#/components/schemas/WeightsV2\",\"description\":\"Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\"},\"class\":{\"type\":\"string\",\"description\":\"Extrinsic class.\",\"enum\":[\"Normal\",\"Operational\",\"Mandatory\"]},\"partialFee\":{\"type\":\"string\",\"description\":\"The _inclusion fee_ of a transaction, i.e. the minimum fee required for a transaction. Includes weight and encoded length fees, but does not have access to any signed extensions, e.g. the `tip`.\",\"format\":\"unsignedInteger\"},\"kind\":{\"type\":\"string\",\"description\":\"Information on the partialFee that is collected. Can be either `preDispatch`, `postDispatch` or `fromEvent`. `preDispatch` means the information used to collect the fee was from `payment_queryInfo`, `postDispatch` means the information used to calculate the fee was from finalized weights for the extrinsic, and `fromEvent` means that the partialFee was abstracted from the `TransactionPayment::TransactionPaidFee` event.\"}},\"description\":\"RuntimeDispatchInfo for the transaction. Includes the `partialFee`.\"},\"RuntimeMetadata\":{\"type\":\"object\",\"description\":\"Substrate runtime metadata containing pallet information, types registry, and API specifications.\\nThe structure varies significantly between different runtime versions (V9-V16) and different chains.\\nThis is a generic container that preserves the actual metadata structure as returned by the runtime.\\n\",\"properties\":{\"magicNumber\":{\"type\":\"string\",\"description\":\"The magic number identifying this as Substrate metadata (typically \\\"1635018093\\\")\",\"example\":\"1635018093\"},\"metadata\":{\"type\":\"object\",\"description\":\"Version-specific metadata content. The structure depends entirely on the runtime metadata version\\nand can include various combinations of pallets, lookup registries, extrinsics, APIs, and other\\nruntime-specific information.\\n\"}},\"required\":[\"magicNumber\",\"metadata\"]},\"RuntimeSpec\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"authoringVersion\":{\"type\":\"string\",\"description\":\"The version of the authorship interface. An authoring node will not attempt to author blocks unless this is equal to its native runtime.\"},\"chainType\":{\"$ref\":\"#/components/schemas/ChainType\"},\"implVersion\":{\"type\":\"string\",\"description\":\"Version of the implementation specification. Non-consensus-breaking optimizations are about the only changes that could be made which would result in only the `impl_version` changing. The `impl_version` is set to 0 when `spec_version` is incremented.\"},\"specName\":{\"type\":\"string\",\"description\":\"Identifies the different Substrate runtimes.\"},\"specVersion\":{\"type\":\"string\",\"description\":\"Version of the runtime specification.\"},\"transactionVersion\":{\"type\":\"string\",\"description\":\"All existing dispatches are fully compatible when this number doesn't change. This number must change when an existing dispatchable (module ID, dispatch ID) is changed, either through an alteration in its user-level semantics, a parameter added/removed/changed, a dispatchable being removed, a module being removed, or a dispatchable/module changing its index.\"},\"properties\":{\"type\":\"object\",\"description\":\"Arbitrary properties defined in the chain spec.\"}},\"description\":\"Version information related to the runtime.\"},\"SanitizedEvent\":{\"type\":\"object\",\"properties\":{\"method\":{\"type\":\"string\"},\"data\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"Signature\":{\"type\":\"object\",\"properties\":{\"signature\":{\"type\":\"string\",\"format\":\"hex\"},\"signer\":{\"type\":\"string\",\"format\":\"ss58\"}},\"description\":\"Object with `signature` and `signer`, or `null` if unsigned.\"},\"SpanId\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"target\":{\"type\":\"string\"},\"id\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"StakingLedger\":{\"type\":\"object\",\"properties\":{\"stash\":{\"type\":\"string\",\"description\":\"The _Stash_ account whose balance is actually locked and at stake.\",\"format\":\"ss58\"},\"total\":{\"type\":\"string\",\"description\":\"The total amount of the _Stash_'s balance that we are currently accounting for. Simply `active + unlocking`.\",\"format\":\"unsignedInteger\"},\"active\":{\"type\":\"string\",\"description\":\"The total amount of the _Stash_'s balance that will be at stake in any forthcoming eras.\",\"format\":\"unsignedInteger\"},\"unlocking\":{\"type\":\"string\",\"description\":\"Any balance that is becoming free, which may eventually be transferred out of the _Stash_ (assuming it doesn't get slashed first). Represented as an array of objects, each with an `era` at which `value` will be unlocked.\",\"format\":\"unsignedInteger\"},\"claimedRewards\":{\"type\":\"array\",\"description\":\"Array of objects, each containing an `era` and its corresponding `status`, which represents the rewards status of the queried Stash account. The queried account can either be a validator or nominator account. This array is populated with values from `stakingLedger.lastReward`, `stakingLedger.legacyClaimedRewards` or `stakingLedger.claimedRewards`, as well as the `query.staking.claimedRewards` call, depending on whether the queried block is before or after the migration. For more details on the implementation and the migration, refer to the related PR (https://github.com/paritytech/substrate-api-sidecar/pull/1445) and linked issue (https://github.com/paritytech/substrate-api-sidecar/issues/1433#issuecomment-2075914389).\",\"items\":{\"type\":\"object\",\"properties\":{\"era\":{\"type\":\"string\",\"description\":\"The era for which we check the rewards status.\",\"format\":\"unsignedInteger\"},\"status\":{\"type\":\"string\",\"description\":\"The rewards status of the stakers backing a validator.\",\"enum\":[\"claimed\",\"unclaimed\",\"partially claimed\"]}}}}},\"description\":\"The staking ledger.\"},\"StakingProgress\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"activeEra\":{\"type\":\"string\",\"description\":\"`EraIndex` of the era being rewarded.\\n\",\"format\":\"unsignedInteger\"},\"forceEra\":{\"type\":\"string\",\"description\":\"Current status of era forcing.\",\"enum\":[\"ForceNone\",\"NotForcing\",\"ForceAlways\",\"ForceNew\"]},\"nextActiveEraEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the next active era will start. Not included in response when `forceEra.isForceNone`.\",\"format\":\"unsignedInteger\"},\"nextSessionEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the next session will start.\",\"format\":\"unsignedInteger\"},\"unappliedSlashes\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/UnappliedSlash\"},\"description\":\"Array of upcoming `UnappliedSlash` indexed by era.\"},\"electionStatus\":{\"$ref\":\"#/components/schemas/ElectionStatus\"},\"idealValidatorCount\":{\"type\":\"string\",\"description\":\"Upper bound of validator set size; considered the ideal size. Not included in response when `forceEra.isForceNone`.\",\"format\":\"unsignedInteger\"},\"validatorSet\":{\"type\":\"array\",\"description\":\"Stash account IDs of the validators for the current session. Not included in response when `forceEra.isForceNone`.\",\"items\":{\"type\":\"string\",\"format\":\"ss58\"}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"StakingValidators\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"validators\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"address\":{\"type\":\"string\",\"description\":\"Address of validator.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of individual validator (active/waiting).\"},\"commission\":{\"type\":\"string\",\"description\":\"The validator's commission rate as parts-per-billion (e.g., \\\"100000000\\\" = 10%). Not present for chilled validators.\"},\"blocked\":{\"type\":\"boolean\",\"description\":\"Whether the validator is blocked from receiving new nominations. Not present for chilled validators.\"}}}},\"validatorsToBeChilled\":{\"description\":\"Validators that will not be participating in the next era.\",\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"address\":{\"type\":\"string\",\"description\":\"Address of validator.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of individual validator (active/waiting).\"}}}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"StorageEntryTypeV13\":{\"type\":\"object\",\"properties\":{\"hasher\":{\"type\":\"string\",\"description\":\"Returns a string deonting the storage hasher.\"},\"key\":{\"type\":\"string\",\"description\":\"Key of the queried pallet storageId.\"},\"value\":{\"type\":\"string\",\"description\":\"Value of the queried pallet storageId.\"},\"linked\":{\"type\":\"boolean\"}}},\"StorageEntryTypeV14\":{\"type\":\"object\",\"properties\":{\"hasher\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Returns a string denoting the storage hasher inside of an array.\"},\"key\":{\"type\":\"string\",\"description\":\"The SiLookupTypeId to identify the type.\"},\"value\":{\"type\":\"string\",\"description\":\"The SiLookupTypeId to identify the type.\"}}},\"TraceEvent\":{\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"object\",\"properties\":{\"stringValues\":{\"$ref\":\"#/components/schemas/TraceEventDataStringValues\"}}},\"parentId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"target\":{\"type\":\"string\"}}},\"TraceEventDataStringValues\":{\"type\":\"object\",\"properties\":{\"key\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"The complete storage key for the entry.\"},\"method\":{\"type\":\"string\",\"description\":\"Normally one of Put or Get.\"},\"result\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"Hex scale encoded storage value.\"}},\"description\":\"Note these exact values will only be present for storage events.\"},\"TraceSpan\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"name\":{\"type\":\"string\"},\"parentId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"target\":{\"type\":\"string\"},\"wasm\":{\"type\":\"boolean\"}}},\"Transaction\":{\"type\":\"object\",\"properties\":{\"tx\":{\"type\":\"string\",\"format\":\"hex\"}}},\"TransactionDispatchOutcome\":{\"type\":\"object\",\"description\":\"The result of a valid transaction submitted via the `dry-run` endpoint.\",\"properties\":{\"actualWeight\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The actual weight of the transaction.\"},\"paysFee\":{\"type\":\"string\",\"format\":\"boolean\",\"description\":\"Whether the transaction pays a fee.\"}}},\"TransactionDispatchError\":{\"type\":\"object\",\"description\":\"The reason why the dispatch call failed.\",\"properties\":{\"errorType\":{\"type\":\"string\",\"enum\":[\"Other\",\"CannotLookup\",\"BadOrigin\",\"ModuleError\",\"ConsumerRemaining\",\"NoProviders\",\"TooManyConsumers\",\"TokenError\",\"ArithmeticError\",\"TransactionalError\",\"Exhausted\",\"Corruption\",\"Unavailable\",\"RootNotAllowed\"],\"description\":\"The type of transaction error.\"}}},\"TransactionValidityError\":{\"type\":\"object\",\"description\":\"The error result from an invalid transaction submitted via the `dry-run` endpoint.\",\"properties\":{\"errorType\":{\"type\":\"string\",\"enum\":[\"Unimplemented\",\"VersionedConversionFailed\"],\"description\":\"The type of transaction error, either `Unimplemented` or `VersionedConversionFailed`.\"}}},\"DryRunBody\":{\"type\":\"object\",\"properties\":{\"at\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"tx\":{\"type\":\"string\",\"format\":\"hex\"},\"senderAddress\":{\"type\":\"string\",\"format\":\"ss58\"}}},\"TransactionDryRun\":{\"type\":\"object\",\"properties\":{\"resultType\":{\"type\":\"string\",\"enum\":[\"DispatchOutcome\",\"DispatchError\",\"TransactionValidityError\"],\"description\":\"The result will be either a `DispatchOutcome` if the transaction is valid, a `DispatchError` if the transaction failed, or a `TransactionValidityError` if the transaction is invalid.\"},\"result\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/TransactionDispatchOutcome\"},{\"$ref\":\"#/components/schemas/TransactionDispatchError\"},{\"$ref\":\"#/components/schemas/TransactionValidityError\"}]}},\"description\":\"References:\\n - `PostDispatchInfo`: https://docs.rs/frame-support/38.0.0/frame_support/dispatch/struct.PostDispatchInfo.html\\n - `DispatchError`: https://docs.rs/sp-runtime/39.0.1/sp_runtime/enum.DispatchError.html\\n - `Error Type`: https://paritytech.github.io/polkadot-sdk/master/xcm_runtime_apis/dry_run/enum.Error.html\"},\"TransactionFailedToParse\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"error\":{\"type\":\"string\",\"description\":\"`Failed to parse a tx.`\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"cause\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"}},\"description\":\"Error message when Sidecar fails to parse the transaction.\"},\"TransactionFailedToSubmit\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"error\":{\"type\":\"string\",\"description\":\"Failed to submit transaction.\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"cause\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"}},\"description\":\"Error message when the node rejects the submitted transaction.\"},\"TransactionFailure\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/TransactionFailedToSubmit\"},{\"$ref\":\"#/components/schemas/TransactionFailedToParse\"}]},\"TransactionFeeEstimate\":{\"type\":\"object\",\"properties\":{\"weight\":{\"$ref\":\"#/components/schemas/WeightsV2\",\"description\":\"Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\"},\"class\":{\"type\":\"string\",\"description\":\"Extrinsic class.\",\"enum\":[\"Normal\",\"Operational\",\"Mandatory\"]},\"partialFee\":{\"type\":\"string\",\"description\":\"Expected inclusion fee for the transaction. Note that the fee rate changes up to 30% in a 24 hour period and this will not be the exact fee.\",\"format\":\"unsignedInteger\"}},\"description\":\"Note: `partialFee` does not include any tips that you may add to increase a transaction's priority. See [compute_fee](https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee).\"},\"TransactionFeeEstimateFailure\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"at\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\"}}},\"error\":{\"type\":\"string\",\"description\":\"Error description.\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"block\":{\"type\":\"string\",\"description\":\"Block hash of the block fee estimation was attempted at.\"},\"cause\":{\"type\":\"string\",\"description\":\"Error message from the client.\"},\"stack\":{\"type\":\"string\"}}},\"TransactionMaterial\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"genesisHash\":{\"type\":\"string\",\"description\":\"The hash of the chain's genesis block.\",\"format\":\"blockHash\"},\"chainName\":{\"type\":\"string\",\"description\":\"The chain's name.\"},\"specName\":{\"type\":\"string\",\"description\":\"The chain's spec.\"},\"specVersion\":{\"type\":\"string\",\"description\":\"The spec version. Always increased in a runtime upgrade.\"},\"txVersion\":{\"type\":\"string\",\"description\":\"The transaction version. Common `txVersion` numbers indicate that the transaction encoding format and method indices are the same. Needed for decoding in an offline environment. Adding new transactions does not change `txVersion`.\"},\"metadata\":{\"type\":\"string\",\"description\":\"The chain's metadata. It will only be present when the metadata query param is used.\"}},\"description\":\"Note: `chainName`, `specName`, and `specVersion` are used to define a type registry with a set of signed extensions and types. For Polkadot and Kusama, `chainName` is not used in defining this registry, but in other Substrate-based chains that re-launch their network without changing the `specName`, the `chainName` would be needed to create the correct registry. Substrate Reference: - `RuntimeVersion`: https://crates.parity.io/sp_version/struct.RuntimeVersion.html - `SignedExtension`: https://crates.parity.io/sp_runtime/traits/trait.SignedExtension.html - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html\"},\"TransactionPool\":{\"type\":\"object\",\"properties\":{\"pool\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"H256 hash of the extrinsic.\"},\"encodedExtrinsic\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"Scale encoded extrinsic.\"},\"tip\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The tip included in the extrinsic. Only included if the query param `includeFee` is set to true.\"},\"priority\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Computed priority of an extrinsic. Only included if the query param `includeFee` is set to true.\"},\"partialFee\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Provided `partialFee` of an extrinsic. Only included if the query param `includeFee` is set to true.\"}}}}}},\"TransactionSuccess\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The hash of the encoded transaction.\"}}},\"UnappliedSlash\":{\"type\":\"object\",\"properties\":{\"validator\":{\"type\":\"string\",\"description\":\"Stash account ID of the offending validator.\",\"format\":\"ss58\"},\"own\":{\"type\":\"string\",\"description\":\"The amount the validator will be slashed.\",\"format\":\"unsignedInteger\"},\"others\":{\"type\":\"array\",\"description\":\"Array of tuples(`[accountId, amount]`) representing all the stashes of other slashed stakers and the amount they will be slashed.\",\"items\":{\"type\":\"string\",\"format\":\"tuple[ss58, unsignedInteger]\"}},\"reporters\":{\"type\":\"array\",\"description\":\"Array of account IDs of the reporters of the offense.\",\"items\":{\"type\":\"string\",\"format\":\"ss58\"}},\"payout\":{\"type\":\"string\",\"description\":\"Amount of bounty payout to reporters.\",\"format\":\"unsignedInteger\"}}},\"VestingSchedule\":{\"type\":\"object\",\"properties\":{\"locked\":{\"type\":\"string\",\"description\":\"Number of tokens locked at start.\",\"format\":\"unsignedInteger\"},\"perBlock\":{\"type\":\"string\",\"description\":\"Number of tokens that gets unlocked every block after `startingBlock`.\",\"format\":\"unsignedInteger\"},\"startingBlock\":{\"type\":\"string\",\"description\":\"Starting block for unlocking (vesting).\",\"format\":\"unsignedInteger\"},\"vested\":{\"type\":\"string\",\"description\":\"Amount that has vested based on time elapsed for this schedule. Only present when `includeClaimable` parameter is used.\",\"format\":\"unsignedInteger\"}},\"description\":\"Vesting schedule for an account.\"},\"WeightsV2\":{\"type\":\"object\",\"properties\":{\"refTime\":{\"type\":\"string\",\"description\":\"The weight of computational time used based on some reference hardware.\"},\"proofSize\":{\"type\":\"string\",\"description\":\"The weight of storage space used by proof of validity.\"}}},\"WinningData\":{\"type\":\"object\",\"properties\":{\"bid\":{\"type\":\"object\",\"properties\":{\"accountId\":{\"type\":\"string\"},\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"amount\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"leaseSet\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"A currently winning bid and the set of lease periods the bid is for. The\\n`amount` of the bid is per lease period. The `bid` property will be `null`\\nif no bid has been made for the corresponding `leaseSet`.\\n\"}},\"requestBodies\":{\"Transaction\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Transaction\"}}},\"required\":true},\"TransactionDryRun\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/DryRunBody\"}}},\"required\":true},\"ContractMetadata\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ContractMetadata\"}}}}}}}\n\n//# sourceURL=webpack://sidecar-swagger-ui/./src/openapi-v1.yaml?"); +eval("module.exports = {\"openapi\":\"3.0.0\",\"info\":{\"title\":\"Substrate API Sidecar\",\"description\":\"Substrate API Sidecar is a REST service that makes it easy to interact with blockchain nodes built using Substrate's FRAME framework.\",\"contact\":{\"url\":\"https://github.com/paritytech/substrate-api-sidecar\"},\"license\":{\"name\":\"GPL-3.0-or-later\",\"url\":\"https://github.com/paritytech/substrate-api-sidecar/blob/master/LICENSE\"},\"version\":\"20.13.3\"},\"servers\":[{\"url\":\"https://polkadot-public-sidecar.parity-chains.parity.io/\",\"description\":\"Polkadot Parity public sidecar\"},{\"url\":\"https://kusama-public-sidecar.parity-chains.parity.io/\",\"description\":\"Kusama Parity public sidecar\"},{\"url\":\"https://polkadot-asset-hub-public-sidecar.parity-chains.parity.io/\",\"description\":\"Polkadot Asset Hub Parity public sidecar\"},{\"url\":\"https://kusama-asset-hub-public-sidecar.parity-chains.parity.io/\",\"description\":\"Kusama Asset Hub Parity public sidecar\"},{\"url\":\"http://localhost:8080\",\"description\":\"Localhost\"}],\"tags\":[{\"name\":\"accounts\"},{\"name\":\"ahm\",\"description\":\"Asset Hub Migration information\"},{\"name\":\"blocks\"},{\"name\":\"contracts\"},{\"name\":\"coretime\"},{\"name\":\"node\",\"description\":\"node connected to sidecar\"},{\"name\":\"pallets\",\"description\":\"pallets employed in the runtime\"},{\"name\":\"runtime\"},{\"name\":\"transaction\"},{\"name\":\"paras\"},{\"name\":\"trace\"},{\"name\":\"rc\",\"description\":\"relay chain specific endpoints for asset hub\"}],\"paths\":{\"/accounts/{accountId}/asset-balances\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an array of asset-balances for an account.\",\"description\":\"Returns information about an account's asset-balances. This is specific to the assets pallet for parachains. If no `assets` query parameter is provided, all asset-balances for the given account will be returned.\",\"operationId\":\"getAssetBalances\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset-balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a positive integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s). Only supported for Asset Hub endpoints. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}},{\"name\":\"assets\",\"in\":\"query\",\"description\":\"An array of AssetId's to be queried. If not supplied, defaults to providing all asset balances associated with the `accountId` will be returned. The array query param format follows Express 4.x API. ex:`?assets[]=1&assets[]=2&assets[]=3`.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of assetId numbers represented as strings\",\"format\":\"Array of unsignedInteger's\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountAssetsBalances\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountAssetsBalances\"}}],\"description\":\"Returns a single object when using 'at' parameter or no query params. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"Invalid Address, invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/asset-approvals\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an asset approval for an account.\",\"description\":\"Returns information about an account's asset approval transaction. It is required to pass in a delegate and an assetId as query parameters.\",\"operationId\":\"getAssetApprovals\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset approval info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s). Only supported for Asset Hub endpoints. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}},{\"name\":\"assetId\",\"in\":\"query\",\"description\":\"The `assetId` associated with the asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"description\":\"An assetId represented as an unsignedInteger.\",\"format\":\"unsignedInteger\"}},{\"name\":\"delegate\",\"in\":\"query\",\"description\":\"The delegate's `accountId` associated with an asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"Invalid Address, invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/balance-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get balance information for an account.\",\"description\":\"Returns information about an account's balance. Replaces `/balance/{address}` from versions < v1.0.0.\",\"operationId\":\"getAccountBalanceInfo\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving balance info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}},{\"name\":\"token\",\"in\":\"query\",\"description\":\"Token to query the balance of. If not specified it will query the chains native token (e.g. DOT for Polkadot). Note: this is only relevant for chains that support multiple tokens through the ORML tokens pallet.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Token symbol\"}},{\"name\":\"denominated\",\"in\":\"query\",\"description\":\"When set to `true` it will denominate any balance's given atomic value using the chains given decimal value.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountBalanceInfo\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountBalanceInfo\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"Invalid Address, invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/convert\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Convert a given AccountId to an SS58 address.\",\"description\":\"Returns the SS58 prefix, the network address format, the SS58 address, and the AccountId that was given as input parameter, the scheme that was used and if it is a public key or not (boolean).\",\"operationId\":\"accountConvert\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"AccountId or Public Key (hex).\",\"required\":true,\"schema\":{\"format\":\"AccountId or Hex\",\"type\":\"string\"}},{\"name\":\"scheme\",\"in\":\"query\",\"description\":\"The cryptographic scheme to be used in order to convert the AccountId to an SS58 address. It can take one of three values [sr25519, ed25519, ecdsa]. The default scheme that is used is `sr25519` (if it is not set in the query parameter).\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"string\",\"default\":\"sr25519\"}},{\"name\":\"prefix\",\"in\":\"query\",\"description\":\"The address prefix which can be one of the values found in the SS58-registry.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"number\",\"default\":42}},{\"name\":\"publicKey\",\"in\":\"query\",\"description\":\"Defines if the given value in the path parameter is a Public Key (hex) or not (hence AccountId).\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successfully converted the AccountId and retrieved the address info.\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountConvert\"}}}},\"400\":{\"description\":\"Invalid AccountId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"AccountId not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/pool-asset-balances\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an array of pool-asset-balances for an account.\",\"description\":\"Returns information about an account's pool-asset-balances. This is specific to the pool assets pallet for parachains. If no `assets` query parameter is provided, all pool-asset-balances for the given account will be returned.\",\"operationId\":\"getPoolAssetBalances\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query pool-asset-balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a positive integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pool-asset-balance info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}},{\"name\":\"assets\",\"in\":\"query\",\"description\":\"An array of AssetId's to be queried. If not supplied, defaults to providing all asset balances associated with the `accountId` will be returned. The array query param format follows Express 4.x API. ex:`?assets[]=1&assets[]=2&assets[]=3`.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"A list of assetId numbers represented as strings\",\"format\":\"Array of unsignedInteger's\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountPoolAssetsBalances\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountPoolAssetsBalances\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"Invalid Address, invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/pool-asset-approvals\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an asset approval for an account.\",\"description\":\"Returns information about an account's asset approval transaction. It is required to pass in a delegate and an assetId as query parameters.\",\"operationId\":\"getPoolAssetApprovals\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query asset approval info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pool-asset-approval info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}},{\"name\":\"assetId\",\"in\":\"query\",\"description\":\"The `assetId` associated with the asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"description\":\"An assetId represented as an unsignedInteger.\",\"format\":\"unsignedInteger\"}},{\"name\":\"delegate\",\"in\":\"query\",\"description\":\"The delegate's `accountId` associated with an asset-approval.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountAssetsApproval\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"Invalid Address, invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/foreign-asset-balances\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get an array of foreign-asset-balances for an account.\",\"description\":\"Returns information about an account's foreign-asset-balances. This is specific to the foreignAssets pallet for parachains. If no `foreignAssets` query parameter is provided, all foreign-asset-balances for the given account will be returned.\",\"operationId\":\"getForeignAssetBalances\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query foreign-asset-balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a positive integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving foreign-asset-balance info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}},{\"name\":\"foreignAssets\",\"in\":\"query\",\"description\":\"An array of multilocation JSON strings to be queried. If not supplied, all foreign asset balances associated with the `accountId` will be returned. The array query param format follows Express 4.x API. ex:`?foreignAssets[]={\\\"parents\\\":\\\"1\\\",\\\"interior\\\":{\\\"X1\\\":{\\\"Parachain\\\":\\\"2125\\\"}}}&foreignAssets[]={\\\"parents\\\":\\\"2\\\",\\\"interior\\\":{\\\"X1\\\":{\\\"GlobalConsensus\\\":\\\"Polkadot\\\"}}}`.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of multilocation objects represented as JSON strings.\",\"format\":\"Array of JSON strings\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountForeignAssetsBalances\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountForeignAssetsBalances\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"Invalid Address, invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/proxy-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get proxy account information.\",\"description\":\"Returns information about a proxy account. This will include delegated accounts and deposits held.\",\"operationId\":\"getProxyInfo\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query proxy info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving proxy info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successfull operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountProxyInfo\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountProxyInfo\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"Invalid Address, invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/staking-info\":{\"get\":{\"tags\":[\"staking\"],\"summary\":\"Get staking information for a _Stash_ account.\",\"description\":\"Returns information about a _Stash_ account's staking activity. Replaces `/staking/{address}` from versions < v1.0.0. The _Stash_ account can be either a validator or nominator account.\",\"operationId\":\"getStakingSummaryByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the staking info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving staking info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}},{\"name\":\"includeClaimedRewards\",\"in\":\"query\",\"description\":\"When set to `false`, the `claimedRewards` field is not included in the response.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountStakingInfo\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountStakingInfo\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/staking-payouts\":{\"get\":{\"tags\":[\"staking\"],\"summary\":\"Get payout information for a _Stash_ account.\",\"description\":\"Returns payout information for the last specified eras. If specifying both the depth and era query params, this endpoint will return information for (era - depth) through era. (i.e. if depth=5 and era=20 information will be returned for eras 16 through 20).\\n\\n**Asset Hub Migration Support:**\\nFor Asset Hub chains that have migrated staking from the relay chain, this endpoint automatically handles era query routing:\\n- **Pre-migration eras**: Queries historical data from the relay chain\\n- **Post-migration eras**: Queries current data from Asset Hub\\n- **Cross-migration queries**: Automatically splits the era range and combines results from both chains\\n\\n**Note:** The `nominator*` fields correspond to the address being queried, even if it is a validator's _Stash_ address. This is because a validator is technically nominating itself.\\n\",\"operationId\":\"getStakingPayoutsByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query staking payouts.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving staking payouts. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}},{\"name\":\"depth\",\"in\":\"query\",\"description\":\"The number of eras to query for payouts of. Must be less than or equal to `HISTORY_DEPTH`. In cases where `era - (depth -1)` is less than 0, the first era queried will be 0.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"default\":1}},{\"name\":\"era\",\"in\":\"query\",\"description\":\"The era to query at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"default\":\"`active_era - 1`\"}},{\"name\":\"unclaimedOnly\",\"in\":\"query\",\"description\":\"Only return unclaimed rewards.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountStakingPayouts\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountStakingPayouts\"}}],\"description\":\"**Standard Mode**: Returns a single object when using standard parameters (without useRcBlock). \\n\\n**Relay Chain Block Mode**: Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\\n\\n**Asset Hub Migration**: For both modes, when querying eras that span the Asset Hub migration boundary, the endpoint automatically fetches and combines data from both relay chain (pre-migration eras) and Asset Hub (post-migration eras). The migration handling is transparent to the user - you get complete payout information regardless of which chain originally held the data.\\n\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{accountId}/vesting-info\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Get vesting information for an account.\",\"description\":\"Returns the vesting schedule for an account. Replaces `/vesting/{address}` from versions < v1.0.0.\",\"operationId\":\"getVestingSummaryByAccountId\",\"parameters\":[{\"name\":\"accountId\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"format\":\"SS58\",\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the vesting info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving vesting info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}},{\"name\":\"includeClaimable\",\"in\":\"query\",\"description\":\"When set to 'true', calculates and includes vested amounts for each vesting schedule plus the claimable amount. For Asset Hub post-migration queries, this requires a relay chain connection since vesting schedules use relay chain block numbers.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AccountVestingInfo\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/AccountVestingInfo\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"Invalid Address, invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/accounts/{address}/validate\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Validate a given address.\",\"description\":\"Returns whether the given address is valid ss58 format, the ss58 prefix if the address has one, the network address format, and what the account ID is for this address.\",\"operationId\":\"getValidationByAccountId\",\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 or Hex address of the account.\",\"required\":true,\"schema\":{\"format\":\"SS58 or Hex\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successfully retrieved address info\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountValidation\"}}}}}}},\"/accounts/compare\":{\"get\":{\"tags\":[\"accounts\"],\"summary\":\"Compares up to 30 SS58 addresses.\",\"description\":\"Returns if the given addresses are equal or not, along with details of each address. Equality is determined by comparing the accountId/publicKey of each address.\",\"operationId\":\"accountCompare\",\"parameters\":[{\"name\":\"addresses\",\"in\":\"query\",\"description\":\"An array or a comma separated string of SS58 addresses. Provide up to 30 addresses using one of these formats `?addresses=...&addresses=...` or `?addresses[]=...&addresses[]=...` or `?addresses=...,...`.\",\"required\":true,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of SS58 addresses.\"}}],\"responses\":{\"200\":{\"description\":\"successfully compared at least two SS58 addresses.\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountCompare\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/ahm-info\":{\"get\":{\"tags\":[\"ahm\"],\"summary\":\"Get Asset Hub Migration information.\",\"description\":\"Returns information about Asset Hub Migration (AHM) including migration start and end blocks for both relay chain and Asset Hub. The endpoint automatically detects whether you're connected to a relay chain or Asset Hub and provides relevant migration data. Returns static migration boundaries for known networks or queries on-chain migration pallets for dynamic information.\",\"operationId\":\"getAhmInfo\",\"responses\":{\"200\":{\"description\":\"Successfully retrieved Asset Hub Migration information\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AhmInfo\"}}}},\"400\":{\"description\":\"Invalid chain specName or missing migration pallets\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"500\":{\"description\":\"Internal server error\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/accounts/{address}/balance-info\":{\"get\":{\"tags\":[\"rc accounts\"],\"summary\":\"Get balance information for an account on the relay chain.\",\"description\":\"Returns information about an account's balance on the relay chain. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for balance information.\",\"operationId\":\"getRcAccountBalanceInfo\",\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query balance info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"token\",\"in\":\"query\",\"description\":\"Token to query the balance of. If not specified it will query the chains native token (e.g. DOT for Polkadot). Note: this is only relevant for chains that support multiple tokens through the ORML tokens pallet.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Token symbol\"}},{\"name\":\"denominated\",\"in\":\"query\",\"description\":\"When set to `true` it will denominate any balance's given atomic value using the chains given decimal value.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountBalanceInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/accounts/{address}/proxy-info\":{\"get\":{\"tags\":[\"rc accounts\"],\"summary\":\"Get proxy information for an account on the relay chain.\",\"description\":\"Returns information about an account's proxy configuration on the relay chain. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for proxy information.\",\"operationId\":\"getRcAccountProxyInfo\",\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query proxy info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountProxyInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/accounts/{address}/vesting-info\":{\"get\":{\"tags\":[\"rc accounts\"],\"summary\":\"Get vesting information for an account on the relay chain.\",\"description\":\"Returns the vesting schedule for an account on the relay chain. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for vesting information.\",\"operationId\":\"getRcAccountVestingInfo\",\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 address of the account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the vesting info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"includeClaimable\",\"in\":\"query\",\"description\":\"When set to 'true', calculates and includes vested amounts for each vesting schedule plus the claimable amount. For relay chain pre-migration queries, vested amounts are calculated using the relay chain's own block number.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountVestingInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/accounts/{address}/staking-info\":{\"get\":{\"tags\":[\"rc accounts\",\"rc staking\"],\"summary\":\"Get staking information for a _Stash_ account on the relay chain.\",\"description\":\"Returns information about a _Stash_ account's staking activity on the relay chain. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for staking information. The _Stash_ account can be either a validator or nominator account.\",\"operationId\":\"getRcAccountStakingInfo\",\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the staking info for the specified account.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"includeClaimedRewards\",\"in\":\"query\",\"description\":\"When set to `false`, the `claimedRewards` field is not included in the response.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountStakingInfo\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/accounts/{address}/staking-payouts\":{\"get\":{\"tags\":[\"rc accounts\",\"rc staking\"],\"summary\":\"Get payout information for a _Stash_ account on the relay chain.\",\"description\":\"Returns payout information for the last specified eras on the relay chain. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for staking payout information. If specifying both the depth and era query params, this endpoint will return information for (era - depth) through era. (i.e. if depth=5 and era=20 information will be returned for eras 16 through 20). The _Stash_ account can be either a validator or nominator account.\",\"operationId\":\"getRcAccountStakingPayouts\",\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 address of the account. Must be a _Stash_ account.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"SS58\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query staking payouts.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block height (as a non-negative integer) or hash (as a hex string).\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"depth\",\"in\":\"query\",\"description\":\"The number of eras to query for payouts of. Must be less than or equal to `HISTORY_DEPTH`. In cases where `era - (depth -1)` is less than 0, the first era queried will be 0.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"default\":1}},{\"name\":\"era\",\"in\":\"query\",\"description\":\"The era to query at. Max era payout info is available for is the latest finished era (active_era - 1).\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"unclaimedOnly\",\"in\":\"query\",\"description\":\"Only return unclaimed rewards.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/AccountStakingPayouts\"}}}},\"400\":{\"description\":\"Invalid Address\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"account not found\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/node/network\":{\"get\":{\"tags\":[\"rc node\"],\"summary\":\"Get relay chain node network information from Asset Hub.\",\"description\":\"Returns network related information of the relay chain node. This endpoint is specifically for Asset Hub instances to query relay chain node networking details.\",\"operationId\":\"getRcNodeNetworking\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeNetwork\"}}}}}}},\"/rc/node/transaction-pool\":{\"get\":{\"tags\":[\"rc node\"],\"summary\":\"Get relay chain pending extrinsics from Asset Hub.\",\"description\":\"Returns pending extrinsics from the relay chain transaction pool. This endpoint is specifically for Asset Hub instances to query relay chain pending transactions.\",\"operationId\":\"getRcNodeTransactionPool\",\"parameters\":[{\"name\":\"includeFee\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to include tips, partialFee, and priority in each extrinsic.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionPool\"}}}}}}},\"/rc/node/version\":{\"get\":{\"tags\":[\"rc node\"],\"summary\":\"Get relay chain node version information from Asset Hub.\",\"description\":\"Returns versioning information of the relay chain node. This endpoint is specifically for Asset Hub instances to query relay chain node version details.\",\"operationId\":\"getRcNodeVersion\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeVersion\"}}}}}}},\"/rc/blocks\":{\"get\":{\"tags\":[\"rc blocks\"],\"summary\":\"Get a range of relay chain blocks by their height.\",\"description\":\"Given a range query parameter return an array of all the relay chain blocks within that range.\",\"operationId\":\"getRcBlocks\",\"parameters\":[{\"name\":\"range\",\"in\":\"query\",\"description\":\"A range of integers. There is a max limit of 500 blocks per request.\",\"required\":true,\"example\":\"0-499\",\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, no fee information is calculated.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useEvmFormat\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Block\"}}}}},\"400\":{\"description\":\"invalid blockId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/blocks/{blockId}\":{\"get\":{\"tags\":[\"rc blocks\"],\"summary\":\"Get a relay chain block by its height or hash.\",\"description\":\"Returns a relay chain block. Can be identified by either its height or hash.\",\"operationId\":\"getRcBlock\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, no fee information is calculated.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useEvmFormat\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Block\"}}}},\"400\":{\"description\":\"invalid blockId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/blocks/{blockId}/header\":{\"get\":{\"tags\":[\"rc blocks\"],\"summary\":\"Get a relay chain block's header by its height or hash.\",\"description\":\"Returns a relay chain block's header. Can be identified by either its height or hash.\",\"operationId\":\"getRcBlockHeader\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}}},\"400\":{\"description\":\"invalid blockId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/blocks/{blockId}/extrinsics/{extrinsicIndex}\":{\"get\":{\"tags\":[\"rc blocks\"],\"summary\":\"Get a relay chain block's extrinsic by its block height or hash and the extrinsic index.\",\"description\":\"Returns an extrinsic from a relay chain block. Can be identified by either its height or hash and the extrinsic index.\",\"operationId\":\"getRcBlockExtrinsic\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"extrinsicIndex\",\"in\":\"path\",\"description\":\"Extrinsic index within the block.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, no fee information is calculated.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useEvmFormat\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Extrinsic\"}}}},\"400\":{\"description\":\"invalid blockId or extrinsicIndex supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/blocks/head\":{\"get\":{\"tags\":[\"rc blocks\"],\"summary\":\"Get the latest relay chain block.\",\"description\":\"Returns the latest relay chain block.\",\"operationId\":\"getRcBlockHead\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"When set to `false`, it will fetch the head of the node's canon chain, which might not be finalized.\",\"schema\":{\"type\":\"boolean\",\"default\":true}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, no fee information is calculated.\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useEvmFormat\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Block\"}}}},\"400\":{\"description\":\"invalid request\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/blocks/head/header\":{\"get\":{\"tags\":[\"rc blocks\"],\"summary\":\"Get the latest relay chain block's header.\",\"description\":\"Returns the latest relay chain block's header.\",\"operationId\":\"getRcBlockHeadHeader\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"When set to `false`, it will fetch the head of the node's canon chain, which might not be finalized.\",\"schema\":{\"type\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}}},\"400\":{\"description\":\"invalid request\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/blocks/{blockId}/extrinsics-raw\":{\"get\":{\"tags\":[\"rc blocks\"],\"summary\":\"Get a relay chain block's raw extrinsics by its height or hash.\",\"description\":\"Returns a relay chain block's raw extrinsics. Can be identified by either its height or hash.\",\"operationId\":\"getRcBlockRawExtrinsics\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockRaw\"}}}},\"400\":{\"description\":\"invalid blockId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/blocks/{blockId}/para-inclusions\":{\"get\":{\"tags\":[\"rc blocks\"],\"summary\":\"Get all parachain inclusion information for a relay chain block.\",\"description\":\"Returns all decoded parachain inclusion events (CandidateIncluded) for a relay chain block from the relay chain API. BlockId can either be a block hash or a block height. This endpoint extracts and decodes the candidate descriptor, commitments hash, and parachain header information for each included parachain block.\",\"operationId\":\"getRcBlockParaInclusions\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Relay chain block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"Optional parachain ID to filter results. When provided, only the inclusion information for the specified parachain will be returned.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockParaInclusions\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied or block does not contain paraInclusion events\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/experimental/rc/blocks/head/traces\":{\"get\":{\"tags\":[\"rc\"],\"summary\":\"Get the latest relay chain block's traces.\",\"description\":\"Returns the latest relay chain block's traces.\",\"operationId\":\"getRcBlockHeadTraces\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}}}}},\"/experimental/rc/blocks/{blockId}/traces\":{\"get\":{\"tags\":[\"rc\"],\"summary\":\"Get a relay chain block's traces by its height or hash.\",\"description\":\"Returns a relay chain block's traces. Can be identified by either its height or hash.\",\"operationId\":\"getRcBlockTraces\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}},\"400\":{\"description\":\"invalid blockId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/experimental/rc/blocks/head/traces/operations\":{\"get\":{\"tags\":[\"rc\"],\"summary\":\"Get the latest relay chain block's trace operations.\",\"description\":\"Returns the latest relay chain block's trace operations.\",\"operationId\":\"getRcBlockHeadTraceOperations\",\"parameters\":[{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Include action traces.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}}}}},\"/experimental/rc/blocks/{blockId}/traces/operations\":{\"get\":{\"tags\":[\"rc\"],\"summary\":\"Get a relay chain block's trace operations by its height or hash.\",\"description\":\"Returns a relay chain block's trace operations. Can be identified by either its height or hash.\",\"operationId\":\"getRcBlockTraceOperations\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Include action traces.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}},\"400\":{\"description\":\"invalid blockId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a range of blocks by their height.\",\"description\":\"Given a range query parameter return an array of all the blocks within that range. When `useRcBlock` parameter is used, the range represents relay chain block numbers and the response includes additional fields `rcBlockHash`, `rcBlockNumber`, and `ahTimestamp` for each block. Relay chain blocks without corresponding Asset Hub blocks are skipped.\",\"operationId\":\"getBlock\",\"parameters\":[{\"name\":\"range\",\"in\":\"query\",\"description\":\"A range of integers. There is a max limit of 500 blocks per request.\",\"required\":true,\"example\":\"0-499\",\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useEvmFormat\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to `true`, the range parameter represents relay chain block numbers and the response includes additional fields for each block. Only supported for Asset Hub endpoints with relay chain API available. When used, returns an array of response objects or empty array if no Asset Hub block found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Blocks\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a block by its height or hash.\",\"description\":\"Returns a single block. BlockId can either be a block hash or a block height. Replaces `/block/{number}` from versions < v1.0.0. When `useRcBlock` parameter is used, the response includes additional fields `rcBlockHash`, `rcBlockNumber`, and `ahTimestamp`.\",\"operationId\":\"getBlockById\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"finalizedKey\",\"in\":\"query\",\"description\":\"When set to false, this will override the chain-config, and omit the finalized key in the response. This can increase performance slightly by avoiding an additional RPC call to the node.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"decodedXcmMsgs\",\"in\":\"query\",\"description\":\"When set to `true`, this will show the decoded XCM messages within the extrinsics of the requested block.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"When it is set, this will return only the decoded XCM messages for the specified origin Parachain Id (originParaId). To activate this functionality, ensure that the `decodedXcmMsgs` parameter is set to true.\",\"required\":false,\"schema\":{\"type\":\"string\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to `true`, it will use the relay chain block identifier to determine the corresponding Asset Hub block. Only supported for Asset Hub endpoints with relay chain API available. When used, returns an array of response objects or empty array if no Asset Hub block found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}},{\"name\":\"useEvmFormat\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/header\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a block's header by its height or hash.\",\"description\":\"Returns a single block's header. BlockId can either be a block hash or a block height. When `useRcBlock` parameter is used, the response includes additional fields `rcBlockHash`, `rcBlockNumber`, and `ahTimestamp`.\",\"operationId\":\"getBlockHeaderById\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to `true`, it will use the relay chain block identifier to determine the corresponding Asset Hub block. Only supported for Asset Hub endpoints with relay chain API available. When used, returns an array of response objects or empty array if no Asset Hub block found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/BlockHeader\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/extrinsics/{extrinsicIndex}\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get an extrinsic by its extrinsicIndex and block height or hash. The pair blockId, extrinsicIndex is sometimes referred to as a Timepoint.\",\"description\":\"Returns a single extrinsic. When `useRcBlock` parameter is used, the response includes additional fields `rcBlockHash`, `rcBlockNumber`, and `ahTimestamp`.\",\"operationId\":\"getExtrinsicByTimepoint\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"extrinsicIndex\",\"in\":\"path\",\"description\":\"The extrinsic's index within the block's body.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsic.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to `true`, it will use the relay chain block identifier to determine the corresponding Asset Hub block. Only supported for Asset Hub endpoints with relay chain API available. When used, returns an array of response objects or empty array if no Asset Hub block found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}},{\"name\":\"useEvmFormat\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/ExtrinsicIndex\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/ExtrinsicIndex\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"Requested `extrinsicIndex` does not exist\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/head\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get the most recently finalized block.\",\"description\":\"Returns the most recently finalized block. Replaces `/block` from versions < v1.0.0. When `useRcBlock` parameter is used, the response includes additional fields `rcBlockHash`, `rcBlockNumber`, and `ahTimestamp`.\",\"operationId\":\"getHeadBlock\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to get the finalized head. If it is not set the value defaults to true. When set to false it will attempt to get the newest known block, which may not be finalized.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}},{\"name\":\"eventDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every event will have an extra `docs` property with a string of the events documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"extrinsicDocs\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic will have an extra `docs` property with a string of the extrinsics documentation.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"noFees\",\"in\":\"query\",\"description\":\"When set to `true`, the fee won't be calculated for the extrinsics.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"decodedXcmMsgs\",\"in\":\"query\",\"description\":\"When set to `true`, this will show the decoded XCM messages within the extrinsics of the requested block.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"When it is set, this will return only the decoded XCM messages for the specified origin Parachain Id (originParaId). To activate this functionality, ensure that the `decodedXcmMsgs` parameter is set to true.\",\"required\":false,\"schema\":{\"type\":\"string\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to `true`, it will use the latest relay chain block to determine the corresponding Asset Hub block. Only supported for Asset Hub endpoints with relay chain API available. Respects the `finalized` parameter when determining which relay chain block to use. When used, returns an array of response objects or empty array if no Asset Hub block found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}},{\"name\":\"useEvmFormat\",\"in\":\"query\",\"description\":\"When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/BlockWithDecodedXcmMsgs\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}}}}},\"/blocks/head/header\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get information about the header of the most recent finalized block.\",\"description\":\"Returns the most recently finalized block's header. When `useRcBlock` parameter is used, the response includes additional fields `rcBlockHash`, `rcBlockNumber`, and `ahTimestamp`.\",\"operationId\":\"getLatestBlockHeader\",\"parameters\":[{\"name\":\"finalized\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to get the finalized head. If it is not set the value defaults to true. When set to false it will attempt to get the newest known block, which may not be finalized.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to `true`, it will use the latest relay chain block to determine the corresponding Asset Hub block header. Only supported for Asset Hub endpoints with relay chain API available. Respects the `finalized` parameter when determining which relay chain block to use. When used, returns an array of response objects or empty array if no Asset Hub block found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/BlockHeader\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/BlockHeader\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/extrinsics-raw\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get a blocks header & its extrinsics as hex values.\",\"description\":\"Returns a block & its extrinsics as hex values. BlockId can either be a block hash or a block height. When `useRcBlock` parameter is used, the response includes additional fields `rcBlockHash`, `rcBlockNumber`, and `ahTimestamp`.\",\"operationId\":\"getBlockRawExtrinsics\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to `true`, it will use the relay chain block identifier to determine the corresponding Asset Hub block. Only supported for Asset Hub endpoints with relay chain API available. When used, returns an array of response objects or empty array if no Asset Hub block found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/BlockRaw\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/BlockRaw\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/blocks/{blockId}/para-inclusions\":{\"get\":{\"tags\":[\"blocks\"],\"summary\":\"Get all parachain inclusion information for a relay chain block.\",\"description\":\"Returns all decoded parachain inclusion events (CandidateIncluded) for a relay chain block. BlockId can either be a block hash or a block height. This endpoint extracts and decodes the candidate descriptor, commitments hash, and parachain header information for each included parachain block.\",\"operationId\":\"getBlockParaInclusions\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Relay chain block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"paraId\",\"in\":\"query\",\"description\":\"Optional parachain ID to filter results. When provided, only the inclusion information for the specified parachain will be returned.\",\"required\":false,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlockParaInclusions\"}}}},\"400\":{\"description\":\"invalid Block identifier supplied or block does not contain paraInclusion events\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/contracts/ink/{address}/query\":{\"post\":{\"tags\":[\"contracts\"],\"summary\":\"Query an !Ink contract with a given message (method).\",\"description\":\"Will return a valid or invalid result.\",\"operationId\":\"callContractQuery\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/ContractMetadata\"},\"parameters\":[{\"name\":\"address\",\"in\":\"path\",\"description\":\"SS58 or Hex address of the account associated with the contract.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"method\",\"in\":\"query\",\"description\":\"The message or method used to query.\",\"required\":false,\"schema\":{\"type\":\"string\",\"default\":\"get\"}},{\"name\":\"gasLimit\",\"in\":\"query\",\"description\":\"The gas limit to be used as an option for the queried message.\",\"required\":false,\"schema\":{\"default\":-1,\"type\":\"number\"}},{\"name\":\"storageDepositLimit\",\"in\":\"query\",\"description\":\"The storage deposit limit to be used as an option for the queried message.\",\"required\":false,\"schema\":{\"default\":null,\"type\":\"number\"}},{\"name\":\"args\",\"in\":\"query\",\"description\":\"Abi params used as args specified in the metadata to be passed into a query. The format to use this query param is ?args[]=1&args[]=2&args[]=3.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of Abi params.\"}}],\"responses\":{\"200\":{\"description\":\"succesful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ContractsInkQuery\"}}}},\"400\":{\"description\":\"Invalid Method\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/coretime/leases\":{\"get\":{\"tags\":[\"coretime\"],\"summary\":\"Get all the leases currently registered on coretime chain.\",\"description\":\"\",\"operationId\":\"getCoretimeLeases\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"query\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":false,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CoretimeLeasesResponse\"}}}}}}},\"/coretime/regions\":{\"get\":{\"tags\":[\"coretime\"],\"summary\":\"Get all the regions currently registered on coretime chain.\",\"description\":\"\",\"operationId\":\"getCoretimeRegions\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"query\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":false,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CoretimeRegionsResponse\"}}}}}}},\"/coretime/renewals\":{\"get\":{\"tags\":[\"coretime\"],\"summary\":\"Get all the potential renewals currently registered on coretime chain.\",\"description\":\"\",\"operationId\":\"getCoretimeRenewals\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"query\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":false,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CoretimeRenewalsResponse\"}}}}}}},\"/coretime/reservations\":{\"get\":{\"tags\":[\"coretime\"],\"summary\":\"Get all the reservations currently registered on coretime chain.\",\"description\":\"\",\"operationId\":\"getCoretimeReservations\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"query\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":false,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/CoretimeReservationsResponse\"}}}}}}},\"/coretime/info\":{\"get\":{\"tags\":[\"coretime\"],\"summary\":\"Get the generic information about coretime, either on coretime chain or relay chain.\",\"description\":\"\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"query\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":false,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"operationId\":\"getCoretimeInfo\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/CoretimeChainInfoResponse\"},{\"$ref\":\"#/components/schemas/CoretimeRelayInfoResponse\"}]}}}}}}},\"/coretime/overview\":{\"get\":{\"tags\":[\"coretime\"],\"summary\":\"Get all the cores information either on coretime chain or relay chain.\",\"description\":\"\",\"operationId\":\"getCoretimeCores\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"query\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":false,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/CoretimeChainCoresResponse\"},{\"$ref\":\"#/components/schemas/CoretimeRelayCoresResponse\"}]}}}}}}},\"/node/network\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get information about the Substrate node's activity in the peer-to-peer network.\",\"description\":\"Returns network related information of the node.\",\"operationId\":\"getNodeNetworking\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeNetwork\"}}}}}}},\"/node/transaction-pool\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get pending extrinsics from the Substrate node.\",\"description\":\"Returns the extrinsics that the node knows of that have not been included in a block.\",\"operationId\":\"getNodeTransactionPool\",\"parameters\":[{\"name\":\"includeFee\",\"in\":\"query\",\"description\":\"Boolean representing whether or not to include tips, partialFee, and priority in each extrinsic.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionPool\"}}}}}}},\"/node/version\":{\"get\":{\"tags\":[\"node\"],\"summary\":\"Get information about the Substrates node's implementation and versioning.\",\"description\":\"Returns versioning information of the node.\",\"operationId\":\"getNodeVersion\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/NodeVersion\"}}}}}}},\"/transaction\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Submit a transaction to the node's transaction pool.\",\"description\":\"Accepts a valid signed extrinsic. Replaces `/tx` from versions < v1.0.0.\",\"operationId\":\"submitTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionSuccess\"}}}},\"400\":{\"description\":\"failed to parse or submit transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/transaction/dry-run\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Dry run an extrinsic.\",\"description\":\"Use the `dryRun` call to simulate the submission of a transaction without executing it so that you can check for potential errors and validate the expected outcome.\",\"operationId\":\"dryrunTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/TransactionDryRun\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionDryRun\"}}}},\"400\":{\"description\":\"failed to dry-run transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/transaction/fee-estimate\":{\"post\":{\"tags\":[\"transaction\"],\"summary\":\"Receive a fee estimate for a transaction.\",\"description\":\"Send a serialized transaction and receive back a naive fee estimate. Note: `partialFee` does not include any tips that you may add to increase a transaction's priority. See the reference on `compute_fee`. Replaces `/tx/fee-estimate` from versions < v1.0.0. Substrate Reference: - `RuntimeDispatchInfo`: https://crates.parity.io/pallet_transaction_payment_rpc_runtime_api/struct.RuntimeDispatchInfo.html - `query_info`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.query_info - `compute_fee`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee\",\"operationId\":\"feeEstimateTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimate\"}}}},\"400\":{\"description\":\"fee estimation failure\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimateFailure\"}}}}}}},\"/transaction/material\":{\"get\":{\"tags\":[\"transaction\"],\"summary\":\"Get all the network information needed to construct a transaction offline.\",\"description\":\"Returns the material that is universal to constructing any signed transaction offline. Replaces `/tx/artifacts` from versions < v1.0.0.\",\"operationId\":\"getTransactionMaterial\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"noMeta\",\"in\":\"query\",\"description\":\"DEPRECATED! This is no longer supported\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata. When `metadata` is not inputted, the `metadata` field will be absent.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/transaction/material/{metadataVersion}\":{\"get\":{\"tags\":[\"transaction\"],\"summary\":\"Get all the network information needed to construct a transaction offline and the version of metadata specified in `metadataVersion`.\",\"description\":\"Returns all the materials necessary for constructing any signed transactions offline.\",\"operationId\":\"getTransactionMaterialwithVersionedMetadata\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The version of metadata. The input is expected in a `vX` format, where `X` represents the version number (e.g. `v14`, `v15`). By default, metadata is outputted in 'json' format, unless the `metadata` query parameter is provided, in which case it can be either in 'json' or 'scale' format.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/assets/{assetId}/asset-info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with an asset.\",\"description\":\"Returns information associated with an asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getAssetById\",\"parameters\":[{\"name\":\"assetId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of an asset.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the assetInfo.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving asset info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/PalletsAssetsInfo\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletsAssetsInfo\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}}}}},\"/pallets/asset-conversion/liquidity-pools\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information related to existing liquidity pools.\",\"description\":\"Returns a list of the existing liquidity pools and its corresponding tokens at a given block height. If no block is specified, it returns the latest list available.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the liquidity pools information.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving liquidity pools info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/LiquidityPools\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/LiquidityPools\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/asset-conversion/next-available-id\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the next available liquidity pool id.\",\"description\":\"Returns the next available liquidity pool's id at a given block height. If no block is specified, it returns the latest list available.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the next liquidity pool's id.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving next available id. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/NextAvailableId\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/NextAvailableId\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/foreign-assets\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with foreign assets.\",\"description\":\"Returns information associated with every foreign asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getForeignAssets\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the foreign assets.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving foreign assets info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"An array of foreign assets.\",\"$ref\":\"#/components/schemas/PalletsForeignAssets\"}}}}}}},\"/pallets/nomination-pools/info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information associated with nomination pools.\",\"description\":\"Returns information and metadata for nomination pools including pool counters and limits.\",\"operationId\":\"getNominationPoolInfo\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the nomination pool info.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving nomination pools info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsNominationPoolsInfo\"}}}}}}},\"/pallets/nomination-pools/{poolId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with a nomination pool.\",\"description\":\"Returns information associated with a nomination pool which includes the nomination pools' `bondedPool`, `rewardPool` and `metadata`.\",\"operationId\":\"getNominationPoolById\",\"parameters\":[{\"name\":\"poolId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of a nomination pool.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the nomination pool.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving nomination pool info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsNominationPool\"}}}}}}},\"/pallets/on-going-referenda\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of all on-going referenda that have track `root (0)` and `whitelisted (1)`, along with their associated information.\",\"description\":\"Returns information associated with on-going referenda which includes the referendum's `enactment`, `submitted` and `deciding` fields.\",\"operationId\":\"getPalletOnGoingReferenda\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the on-going referenda.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving on-going referenda info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsOnGoingReferenda\"}}}}}}},\"/pallets/{palletId}/consts\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of constants for a pallet.\",\"description\":\"Returns a list of const item metadata for constant items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the const items instead of every constant's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's constant items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet constants. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of constantItemIds.\",\"$ref\":\"#/components/schemas/PalletConstants\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/consts/{constantItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a constant item.\",\"description\":\"Returns the value stored under the constantItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read constant metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"constantItemId\",\"in\":\"path\",\"description\":\"Id of the const item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the const item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the const items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet constant item. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletConstantsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/dispatchables\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of dispatchables for a pallet.\",\"description\":\"Returns a list of dispatchable item metadata for distpachable items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the dispatchable items instead of every dispatchable's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve dispatchable metadata.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving dispatchable metadata. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of dispatchableItemIds.\",\"$ref\":\"#/components/schemas/PalletDispatchables\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/dispatchables/{dispatchableItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a dispatchable item.\",\"description\":\"Returns the value stored under the dispatchableItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read dispatchable metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"dispatchableItemId\",\"in\":\"path\",\"description\":\"Id of the dispatchable item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the dispatchable items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve dispatchable metadata.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving dispatchable metadata. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/errors\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of errors for a pallet.\",\"description\":\"Returns a list of error item metadata for error items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read error metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the error items instead of every error's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's error items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet errors. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of errorItemIds.\",\"$ref\":\"#/components/schemas/PalletErrors\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/errors/{errorItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of an error item.\",\"description\":\"Returns the value stored under the errorItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read error metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"errorItemId\",\"in\":\"path\",\"description\":\"Id of the error item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the error item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the error items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet error item. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletErrorsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/events\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of events for a pallet.\",\"description\":\"Returns a list of event item metadata for event items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read event metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the event items instead of every event's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's event items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet events. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of eventItemIds.\",\"$ref\":\"#/components/schemas/PalletEvents\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/events/{eventItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of an event item.\",\"description\":\"Returns the value stored under the eventItemId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read event metadata for. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventItemId\",\"in\":\"path\",\"description\":\"Id of the event item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the event item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the event items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet event item. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletEventsItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/runtime/metadata\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the runtime metadata in decoded, JSON form.\",\"description\":\"Returns the runtime metadata as a JSON object. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeMetadata\"}}}}}}},\"/runtime/metadata/{metadataVersion}\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the requested version of runtime metadata in decoded, JSON form.\",\"description\":\"Returns the requested version of runtime metadata as a JSON object. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The version of metadata. The input is expected in a `vX` format, where `X` represents the version number (e.g. `v14`, `v15`).\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeMetadata\"}}}}}}},\"/runtime/metadata/versions\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the available versions of runtime metadata.\",\"description\":\"Returns the available versions of runtime metadata. Substrate Reference: - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html - Knowledge Base: https://substrate.dev/docs/en/knowledgebase/runtime/metadata\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the metadata versions at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array with the available metadata versions.\"}}}}}}},\"/runtime/code\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get the runtime wasm blob.\",\"description\":\"Returns the runtime Wasm blob in hex format.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the runtime wasm blob at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeCode\"}}}}}}},\"/runtime/spec\":{\"get\":{\"tags\":[\"runtime\"],\"summary\":\"Get version information of the Substrate runtime.\",\"description\":\"Returns version information related to the runtime.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve runtime version information at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeSpec\"}}}}}}},\"/rc/runtime/spec\":{\"get\":{\"tags\":[\"rc runtime\"],\"summary\":\"Get version information of the relay chain Substrate runtime.\",\"description\":\"Returns version information related to the relay chain runtime. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for runtime specification.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve runtime version information at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeSpec\"}}}}}}},\"/rc/runtime/metadata\":{\"get\":{\"tags\":[\"rc runtime\"],\"summary\":\"Get the relay chain's metadata.\",\"description\":\"Returns the relay chain's runtime metadata in decoded JSON format. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for metadata.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block hash or height at which to query. If not provided, queries finalized head.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeMetadata\"}}}}}}},\"/rc/runtime/metadata/versions\":{\"get\":{\"tags\":[\"rc runtime\"],\"summary\":\"Get the available versions of relay chain's metadata.\",\"description\":\"Returns the available versions of the relay chain's metadata. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for metadata versions.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block hash or height at which to query. If not provided, queries finalized head.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}}}}}},\"/rc/runtime/metadata/{metadataVersion}\":{\"get\":{\"tags\":[\"rc runtime\"],\"summary\":\"Get the relay chain's metadata at a specific version.\",\"description\":\"Returns the relay chain's runtime metadata at a specific version in decoded JSON format. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for versioned metadata.\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The specific version of the Metadata to query. The input must conform to the 'vX' format, where 'X' represents the version number (examples 'v14', 'v15').\",\"required\":true,\"schema\":{\"type\":\"string\",\"pattern\":\"^v[0-9]+$\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block hash or height at which to query. If not provided, queries finalized head.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeMetadata\"}}}},\"400\":{\"description\":\"Invalid version format or version not available\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/runtime/code\":{\"get\":{\"tags\":[\"rc runtime\"],\"summary\":\"Get the Wasm code blob of the relay chain Substrate runtime.\",\"description\":\"Returns the relay chain's runtime code in Wasm format. This endpoint is specifically for Asset Hub and queries the relay chain (Polkadot/Kusama) for runtime code.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve runtime code information at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/RuntimeCode\"}}}}}}},\"/rc/pallets/on-going-referenda\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get relay chain ongoing referenda.\",\"description\":\"Returns information about ongoing referenda in the relay chain.\",\"operationId\":\"getRcPalletsOnGoingReferenda\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain referenda information.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletsOnGoingReferenda\"}}}},\"400\":{\"description\":\"invalid blockId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/consts\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get a list of constants for a relay chain pallet.\",\"description\":\"Returns a list of constant metadata for the specified relay chain pallet.\",\"operationId\":\"getRcPalletsConsts\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read constants from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet constants.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return constant IDs, not values and metadata.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletConstants\"}}}},\"400\":{\"description\":\"invalid palletId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/consts/{constantItemId}\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get a constant from a relay chain pallet by its ID.\",\"description\":\"Returns information about a specific constant from the specified relay chain pallet.\",\"operationId\":\"getRcPalletsConstsItem\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read the constant from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"constantItemId\",\"in\":\"path\",\"description\":\"Name of the constant to retrieve.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet constant.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include metadata for the constant.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletConstantsItem\"}}}},\"400\":{\"description\":\"invalid palletId or constantItemId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/dispatchables\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get a list of dispatchables for a relay chain pallet.\",\"description\":\"Returns a list of dispatchable metadata for the specified relay chain pallet.\",\"operationId\":\"getRcPalletsDispatchables\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read dispatchables from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet dispatchables.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return dispatchable IDs, not values and metadata.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletDispatchables\"}}}},\"400\":{\"description\":\"invalid palletId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/dispatchables/{dispatchableItemId}\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get a dispatchable from a relay chain pallet by its ID.\",\"description\":\"Returns information about a specific dispatchable from the specified relay chain pallet.\",\"operationId\":\"getRcPalletsDispatchablesItem\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read the dispatchable from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"dispatchableItemId\",\"in\":\"path\",\"description\":\"Name of the dispatchable to retrieve.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet dispatchable.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include metadata for the dispatchable.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItem\"}}}},\"400\":{\"description\":\"invalid palletId or dispatchableItemId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/errors\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get a list of errors for a relay chain pallet.\",\"description\":\"Returns a list of error metadata for the specified relay chain pallet.\",\"operationId\":\"getRcPalletsErrors\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read errors from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet errors.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return error IDs, not values and metadata.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletErrors\"}}}},\"400\":{\"description\":\"invalid palletId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/errors/{errorItemId}\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get an error from a relay chain pallet by its ID.\",\"description\":\"Returns information about a specific error from the specified relay chain pallet.\",\"operationId\":\"getRcPalletsErrorsItem\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read the error from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"errorItemId\",\"in\":\"path\",\"description\":\"Name of the error to retrieve.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet error.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include metadata for the error.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletErrorsItem\"}}}},\"400\":{\"description\":\"invalid palletId or errorItemId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/events\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get a list of events for a relay chain pallet.\",\"description\":\"Returns a list of event metadata for the specified relay chain pallet.\",\"operationId\":\"getRcPalletsEvents\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read events from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet events.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return event IDs, not values and metadata.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletEvents\"}}}},\"400\":{\"description\":\"invalid palletId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/events/{eventItemId}\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get an event from a relay chain pallet by its ID.\",\"description\":\"Returns information about a specific event from the specified relay chain pallet.\",\"operationId\":\"getRcPalletsEventsItem\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read the event from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"eventItemId\",\"in\":\"path\",\"description\":\"Name of the event to retrieve.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet event.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include metadata for the event.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletEventsItem\"}}}},\"400\":{\"description\":\"invalid palletId or eventItemId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/storage\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get a list of storage items for a relay chain pallet.\",\"description\":\"Returns a list of storage item metadata for the specified relay chain pallet.\",\"operationId\":\"getRcPalletsStorage\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read storage items from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet storage items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return storage item IDs, not values and metadata.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletStorage\"}}}},\"400\":{\"description\":\"invalid palletId supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/{palletId}/storage/{storageItemId}\":{\"get\":{\"tags\":[\"rc pallets\"],\"summary\":\"Get a storage item from a relay chain pallet by its ID.\",\"description\":\"Returns the value stored under the specified storage item ID from the relay chain pallet. For maps, query parameter keys are required.\",\"operationId\":\"getRcPalletsStorageItem\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to read the storage item from.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"storageItemId\",\"in\":\"path\",\"description\":\"Name of the storage item to retrieve.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve relay chain pallet storage item.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"keys\",\"in\":\"query\",\"description\":\"Storage map keys for map-type storage items. Required for map and double map storage items.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include metadata for the storage item.\",\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletStorageItem\"}}}},\"400\":{\"description\":\"invalid palletId, storageItemId, or keys supplied\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/staking/progress\":{\"get\":{\"tags\":[\"rc pallets\",\"rc staking\"],\"summary\":\"Get progress on the general Staking pallet system on Relay Chain.\",\"description\":\"Returns information on the progress of key components of the staking system and estimates of future points of interest. If you are querying from Asset Hub for staking progress, this endpoint requires multi chain connections between the relay chain, and asset hub itself. Set the asset hub rpc to SAS_SUBSTRATE_URL, and add the relay chain to the SAS_SUBSTRATE_MULTI_CHAIN_URL env var. Refer to the README for the structure of the env vars. The `useRcBlock` parameter allows querying Asset Hub state using relay chain block numbers, enabling post-migration infrastructure to continue using relay chain block identifiers while accessing Asset Hub data.\",\"operationId\":\"getRcStakingProgress\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a staking progress report.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/StakingProgress\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/StakingProgress\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/pallets/staking/validators\":{\"get\":{\"tags\":[\"rc pallets\",\"rc staking\"],\"summary\":\"Get all validators (active/waiting) of a specific chain.\",\"description\":\"Returns a list of all validators addresses and their corresponding status which can be either active or waiting. For declared validators, it also includes their commission rate (as parts-per-billion) and nomination blocking status. It will also return a list of active validators that will not be part of the next era for staking. They will be under the key \\\"validatorsToBeChilled\\\". It's important to note, that addresses can be present in both the \\\"validators\\\" key, and \\\"validatorsToBeChilled\\\". Commission and blocked properties are not present for active validators that have been chilled.\",\"operationId\":\"getRcStakingValidators\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the list of validators.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/StakingValidators\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/transaction\":{\"post\":{\"tags\":[\"rc transaction\"],\"summary\":\"Submit a transaction to the relay chain node's transaction pool.\",\"description\":\"Accepts a valid signed extrinsic for the relay chain. Replaces `/tx` from versions < v1.0.0.\",\"operationId\":\"submitRcTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionSuccess\"}}}},\"400\":{\"description\":\"failed to parse or submit transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/rc/transaction/dry-run\":{\"post\":{\"tags\":[\"rc transaction\"],\"summary\":\"Dry run an extrinsic on the relay chain.\",\"description\":\"Use the `dryRun` call to simulate the submission of a transaction to the relay chain without executing it so that you can check for potential errors and validate the expected outcome.\",\"operationId\":\"dryrunRcTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/TransactionDryRun\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionDryRun\"}}}},\"400\":{\"description\":\"failed to dry-run transaction\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFailure\"}}}}}}},\"/rc/transaction/fee-estimate\":{\"post\":{\"tags\":[\"rc transaction\"],\"summary\":\"Receive a fee estimate for a relay chain transaction.\",\"description\":\"Send a serialized transaction and receive back a naive fee estimate for the relay chain. Note: `partialFee` does not include any tips that you may add to increase a transaction's priority. See the reference on `compute_fee`. Replaces `/tx/fee-estimate` from versions < v1.0.0. Substrate Reference: - `RuntimeDispatchInfo`: https://crates.parity.io/pallet_transaction_payment_rpc_runtime_api/struct.RuntimeDispatchInfo.html - `query_info`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.query_info - `compute_fee`: https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee\",\"operationId\":\"feeEstimateRcTransaction\",\"requestBody\":{\"$ref\":\"#/components/requestBodies/Transaction\"},\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimate\"}}}},\"400\":{\"description\":\"fee estimation failure\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionFeeEstimateFailure\"}}}}}}},\"/rc/transaction/material\":{\"get\":{\"tags\":[\"rc transaction\"],\"summary\":\"Get all the relay chain network information needed to construct a transaction offline.\",\"description\":\"Returns the material that is universal to constructing any signed transaction offline for the relay chain. Replaces `/tx/artifacts` from versions < v1.0.0.\",\"operationId\":\"getRcTransactionMaterial\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material from the relay chain.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"noMeta\",\"in\":\"query\",\"description\":\"DEPRECATED! This is no longer supported\",\"schema\":{\"type\":\"boolean\",\"default\":false}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata. When `metadata` is not inputted, the `metadata` field will be absent.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/rc/transaction/material/{metadataVersion}\":{\"get\":{\"tags\":[\"rc transaction\"],\"summary\":\"Get all the relay chain network information needed to construct a transaction offline and the version of metadata specified in `metadataVersion`.\",\"description\":\"Returns all the materials necessary for constructing any signed transactions offline for the relay chain.\",\"operationId\":\"getRcTransactionMaterialwithVersionedMetadata\",\"parameters\":[{\"name\":\"metadataVersion\",\"in\":\"path\",\"description\":\"The version of metadata. The input is expected in a `vX` format, where `X` represents the version number (e.g. `v14`, `v15`). By default, metadata is outputted in 'json' format, unless the `metadata` query parameter is provided, in which case it can be either in 'json' or 'scale' format.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the transaction construction material from the relay chain.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Specifies the format of the metadata to be returned. Accepted values are 'json', and 'scale'. 'json' being the decoded metadata, and 'scale' being the SCALE encoded metadata.\",\"schema\":{\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/TransactionMaterial\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/storage\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get a list of storage items for a pallet.\",\"description\":\"Returns a list of storage item metadata for storage items of the specified palletId.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to query the storage of. Note: the pallet name must match what is specified in the runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"onlyIds\",\"in\":\"query\",\"description\":\"Only return the names (IDs) of the storage items instead of all of each storage item's metadata.\",\"required\":false,\"schema\":{\"type\":\"boolean\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a list of the pallet's storage items.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet storage. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"description\":\"Pallet info and Array of storageItemIds.\",\"$ref\":\"#/components/schemas/PalletStorage\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find pallet with palletId\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/{palletId}/storage/{storageItemId}\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get the value of a storage item.\",\"description\":\"Returns the value stored under the storageItemId. If it is a map, query param key1 is required. If the storage item is double map query params key1 and key2 are required.\",\"parameters\":[{\"name\":\"palletId\",\"in\":\"path\",\"description\":\"Name or index of the pallet to query the storage of. Note: pallet name aligns with pallet name as specified in runtime metadata.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"storageItemId\",\"in\":\"path\",\"description\":\"Id of the storage item to query for.\",\"required\":true,\"schema\":{\"type\":\"string\"}},{\"name\":\"keys\",\"in\":\"query\",\"description\":\"Set of N keys used for querying a storage map. It should be queried using the following format - ?keys[]=key1&keys[]=key2. Order matters, as it will determine the order the keys are passed into the storage calls.\",\"required\":false,\"schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"An array of storage keys.\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to query the storage item at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"metadata\",\"in\":\"query\",\"description\":\"Include the storage items metadata (including documentation) if set to true.\",\"required\":false,\"schema\":{\"default\":false,\"type\":\"boolean\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pallet storage item. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/PalletStorageItem\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}},\"404\":{\"description\":\"could not find resource with id\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/pool-assets/{assetId}/asset-info\":{\"get\":{\"tags\":[\"pallets\"],\"summary\":\"Get information and metadata associated with a pool asset.\",\"description\":\"Returns information associated with a pool asset which includes the assets `AssetDetails` and `AssetMetadata`.\",\"operationId\":\"getPoolAssetById\",\"parameters\":[{\"name\":\"assetId\",\"in\":\"path\",\"description\":\"The unsignedInteger Id of a pool asset.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the assetInfo.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving pool asset info. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/PalletsPoolAssetsInfo\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletsPoolAssetsInfo\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}}}}},\"/pallets/staking/progress\":{\"get\":{\"tags\":[\"staking\",\"pallets\"],\"summary\":\"Get progress on the general Staking pallet system.\",\"description\":\"Returns information on the progress of key components of the staking system and estimates of future points of interest. If you are querying from Asset Hub for staking progress, this endpoint requires multi chain connections between the relay chain, and asset hub itself. Set the asset hub rpc to SAS_SUBSTRATE_URL, and add the relay chain to the SAS_SUBSTRATE_MULTI_CHAIN_URL env var. Refer to the README for the structure of the env vars. The `useRcBlock` parameter allows querying Asset Hub state using relay chain block numbers, enabling post-migration infrastructure to continue using relay chain block identifiers while accessing Asset Hub data.\",\"operationId\":\"getStakingProgress\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve a staking progress report.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving staking progress report. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/StakingProgress\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/StakingProgress\"}}],\"description\":\"Returns a single object when using standard parameters. Returns an array when using 'useRcBlock' parameter (array contains one object per Asset Hub block found, or empty array if none found).\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/pallets/staking/validators\":{\"get\":{\"tags\":[\"staking\",\"pallets\"],\"summary\":\"Get all validators (active/waiting) of a specific chain.\",\"description\":\"Returns a list of all validators addresses and their corresponding status which can be either active or waiting. For declared validators, it also includes their commission rate and nomination blocking status. It will also return a list of active validators that will not be part of the next era for staking. They will be under the key \\\"validatorsToBeChilled\\\". It's important to note, that addresses can be present in both the \\\"validators\\\" key, and \\\"validatorsToBeChilled\\\". Commission and blocked properties are not present for active validators that have been chilled.\",\"operationId\":\"getStakingValidators\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the list of validators.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"useRcBlock\",\"in\":\"query\",\"description\":\"When set to 'true', uses the relay chain block specified in the 'at' parameter to determine corresponding Asset Hub block(s) for retrieving staking validators. Only supported for Asset Hub endpoints. Requires 'at' parameter to specify the relay chain block. When used, returns an array of response objects (one for each Asset Hub block found) or empty array if none found.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"description\":\"When set to 'true', uses relay chain block mode with the 'at' parameter.\"}},{\"name\":\"useRcBlockFormat\",\"in\":\"query\",\"description\":\"Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified.\",\"required\":false,\"schema\":{\"type\":\"string\",\"enum\":[\"array\",\"object\"],\"description\":\"Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info.\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/StakingValidators\"}}}},\"400\":{\"description\":\"invalid blockId supplied for at query param, or invalid parameter combination\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Error\"}}}}}}},\"/paras\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all registered paras (parathreads & parachains).\\n\",\"description\":\"Returns all registered parachains and parathreads with lifecycle info.\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve paras list at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Paras\"}}}}}}},\"/paras/leases/current\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get general information about the current lease period.\\n\",\"description\":\"Returns an overview of the current lease period, including lease holders.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve current lease period info at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}},{\"name\":\"currentLeaseHolders\",\"in\":\"query\",\"description\":\"Wether or not to include the `currentLeaseHolders` property. Inclusion\\nof the property will likely result in a larger payload and increased\\nresponse time.\\n\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":true}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasLeasesCurrent\"}}}}}}},\"/paras/auctions/current\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the status of the current auction.\\n\",\"description\":\"Returns an overview of the current auction. There is only one auction\\nat a time. If there is no auction most fields will be `null`. If the current\\nauction phase is in `vrfDelay` and you are looking to retrieve the latest winning\\nbids, it is advised to query one block before `finishEnd` in the `endingPeriod` phase\\nfor that auction as there technically are no winners during the `vrfDelay` and thus\\nthe field is `null`.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve auction progress at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasAuctionsCurrent\"}}}}}}},\"/paras/crowdloans\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] List all stored crowdloans.\\n\",\"description\":\"Returns a list of all the crowdloans and their associated paraIds.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve the list of paraIds that have crowdloans at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasCrowdloans\"}}}}}}},\"/paras/{paraId}/crowdloan-info\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get crowdloan information for a `paraId`.\\n\",\"description\":\"Returns crowdloan's `fundInfo` and the set of `leasePeriods` the crowdloan`\\ncovers.\\n\",\"parameters\":[{\"name\":\"paraId\",\"in\":\"path\",\"description\":\"paraId to query the crowdloan information of.\",\"required\":true,\"schema\":{\"type\":\"number\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve info at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasCrowdloanInfo\"}}}}}}},\"/paras/{paraId}/lease-info\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get current and future leases as well as the lifecycle stage for a given `paraId`.\\n\",\"description\":\"Returns a list of leases that belong to the `paraId` as well as the\\n`paraId`'s current lifecycle stage.\\n\",\"parameters\":[{\"name\":\"paraId\",\"in\":\"path\",\"description\":\"paraId to query the crowdloan information of.\",\"required\":true,\"schema\":{\"type\":\"number\"}},{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's leases at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasLeaseInfo\"}}}}}}},\"/paras/head/included-candidates\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the included (backed and considered available) parachain candidates at the\\nspecified block height or at the most recent finalized head otherwise.\\n\",\"description\":\"Returns an object with all the parachain id's as keys, and their headers as values.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's heads at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasHeaders\"}}}}}}},\"/paras/head/backed-candidates\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"[DEPRECATION NOTE: PHASED OUT ENDPOINT IN FAVOR OF CORETIME] Get the heads of the backed parachain candidates at the specified block height or at the most recent finalized head otherwise.\\n\",\"description\":\"Returns an object with all the parachain id's as keys, and their headers as values.\\n\",\"parameters\":[{\"name\":\"at\",\"in\":\"query\",\"description\":\"Block at which to retrieve para's heads at.\",\"required\":false,\"schema\":{\"type\":\"string\",\"description\":\"Block identifier, as the block height or block hash.\",\"format\":\"unsignedInteger or $hex\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParasHeaders\"}}}}}}},\"/paras/{number}/inclusion\":{\"get\":{\"tags\":[\"paras\"],\"summary\":\"Get relay chain inclusion information for a specific parachain block.\",\"description\":\"Returns the relay chain block number where a parachain block was included,\\nalong with the relay parent number used during production. This endpoint helps\\ntrack the lifecycle of parachain blocks from production to inclusion.\\n\\n**Note**: This endpoint requires a multi-chain connection (both parachain and relay chain APIs).\\n\",\"parameters\":[{\"name\":\"number\",\"in\":\"path\",\"description\":\"Parachain block number to find inclusion information for.\",\"required\":true,\"schema\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}},{\"name\":\"depth\",\"in\":\"query\",\"description\":\"Maximum number of relay chain blocks to search for inclusion (must be divisible by 5, max 100).\",\"required\":false,\"schema\":{\"type\":\"integer\",\"minimum\":5,\"maximum\":100,\"multipleOf\":5,\"default\":10}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ParachainInclusion\"}}}},\"400\":{\"description\":\"Invalid depth parameter\",\"content\":{\"application/json\":{\"schema\":{\"type\":\"object\",\"properties\":{\"error\":{\"type\":\"string\",\"example\":\"Depth parameter must be divisible by 5 for optimal performance.\"}}}}}}}}},\"/experimental/blocks/head/traces\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get traces for the most\\nrecently finalized block.\\n\",\"description\":\"Returns traces (spans and events) of the most recently finalized block from\\nRPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140)\\nfor conceptual info.\\n\",\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}}}}},\"/experimental/blocks/{blockId}/traces\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get traces for the given `blockId`.\\n\",\"description\":\"Returns traces (spans and events) of the specified block from\\nRPC `state_straceBlock`. Consult the [RPC docs](https://github.com/paritytech/substrate/blob/aba876001651506f85c14baf26e006b36092e1a0/client/rpc-api/src/state/mod.rs#L140) for conceptual info.\\n\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTrace\"}}}}}}},\"/experimental/blocks/head/traces/operations\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get the operations from the\\nmost recently finalized block.\\n\",\"description\":\"Returns the operations from the most recently finalized block. Operations\\nrepresent one side of a balance change. For example if Alice transfers\\n100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\\n\\nGiven account A and A's balance at block k0 (Ak0), if we sum all the\\noperations for A from block k1 through kn against Ak0, we will end up\\nwith A's balance at block kn (Akn). Thus, operations can be used to audit\\nthat balances change as expected.\\n\\nThis is useful for Substrate based chains because the advanced business\\nlogic can make it difficult to ensure auditable balance reconciliation\\nbased purely on events. Instead of using events one can use the\\noperations given from this endpoint.\\n\\nNote - each operation corresponds to a delta of a single field of the\\n`system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\\nand `fee_frozen`).\\nNote - operations are assigned a block execution phase (and extrinsic index\\nfor those in the apply extrinsic phase) based on an \\\"action group\\\". For\\nexample all the operations for 1 extrinsic will be in the same action group.\\nThe action groups can optionally be fetched with the `action` query param\\nfor closer auditing.\\nNote - There are no 0 value operations (e.g. a transfer of 0, or a\\ntransfer to itself)\\n\\nTo learn more about operation and action group creation please consult\\n[this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\\n\",\"parameters\":[{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Whether or not to include action groups.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}}}}},\"/experimental/blocks/{blockId}/traces/operations\":{\"get\":{\"tags\":[\"trace\"],\"summary\":\"[Experimental - subject to breaking change.] Get the operations from the\\nspecified block.\\n\",\"description\":\"Returns the operations from the most recently finalized block. Operations\\nrepresent one side of a balance change. For example if Alice transfers\\n100unit to Bob there will be two operations; 1) Alice - 100 2) Bob + 100.\\n\\nGiven account A and A's balance at block k0 (Ak0), if we sum all the\\noperations for A from block k1 through kn against Ak0, we will end up\\nwith A's balance at block kn (Akn). Thus, operations can be used to audit\\nthat balances change as expected.\\n\\nThis is useful for Substrate based chains because the advanced business\\nlogic can make it difficult to ensure auditable balance reconciliation\\nbased purely on events. Instead of using events one can use the\\noperations given from this endpoint.\\n\\nNote - each operation corresponds to a delta of a single field of the\\n`system::AccountData` storage item (i.e `free`, `reserved`, `misc_frozen`\\nand `fee_frozen`).\\nNote - operations are assigned a block execution phase (and extrinsic index\\nfor those in the apply extrinsic phase) based on an \\\"action group\\\". For\\nexample all the operations for 1 extrinsic will be in the same action group.\\nThe action groups can optionally be fetched with the `action` query param\\nfor closer auditing.\\nNote - There are no 0 value operations (e.g. a transfer of 0, or a\\ntransfer to itself)\\n\\nTo learn more about operation and action group creation please consult\\n[this diagram](https://docs.google.com/drawings/d/1vZoJo9jaXlz0LmrdTOgHck9_1LsfuQPRmTr-5g1tOis/edit?usp=sharing)\\n\",\"parameters\":[{\"name\":\"blockId\",\"in\":\"path\",\"description\":\"Block identifier, as the block height or block hash.\",\"required\":true,\"schema\":{\"pattern\":\"^0[xX][0-9a-fA-F]{1,64}$|[0-9]{1,12}\",\"type\":\"string\"}},{\"name\":\"actions\",\"in\":\"query\",\"description\":\"Whether or not to include action groups.\",\"required\":false,\"schema\":{\"type\":\"boolean\",\"default\":false}}],\"responses\":{\"200\":{\"description\":\"successful operation\",\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/BlocksTraceOperations\"}}}}}}}},\"components\":{\"schemas\":{\"RcBlockInfo\":{\"type\":\"object\",\"description\":\"Relay chain block information used when useRcBlockFormat=object.\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The relay chain block hash.\",\"format\":\"hex\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The parent block hash of the relay chain block.\",\"format\":\"hex\"},\"number\":{\"type\":\"string\",\"description\":\"The relay chain block number.\",\"format\":\"unsignedInteger\"}}},\"RcBlockObjectResponse\":{\"type\":\"object\",\"description\":\"Response wrapper when using useRcBlockFormat=object. Contains relay chain block info and an array of parachain data.\",\"properties\":{\"rcBlock\":{\"$ref\":\"#/components/schemas/RcBlockInfo\"},\"parachainDataPerBlock\":{\"type\":\"array\",\"description\":\"Array of response objects, one for each Asset Hub block found in the relay chain block. Empty array if no Asset Hub blocks found.\",\"items\":{\"type\":\"object\",\"description\":\"The endpoint-specific response data for each Asset Hub block.\"}}}},\"AccountAssetsApproval\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"amount\":{\"type\":\"string\",\"description\":\"The amount of funds approved for the balance transfer from the owner to some delegated target.\",\"format\":\"unsignedInteger\"},\"deposit\":{\"type\":\"string\",\"description\":\"The amount reserved on the owner's account to hold this item in storage.\",\"format\":\"unsignedInteger\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"AhmInfo\":{\"type\":\"object\",\"description\":\"Asset Hub Migration information including migration boundaries for both relay chain and Asset Hub.\",\"properties\":{\"relay\":{\"type\":\"object\",\"description\":\"Relay chain migration information\",\"properties\":{\"startBlock\":{\"type\":\"integer\",\"nullable\":true,\"description\":\"Block number when relay chain migration started, or null if not available\",\"format\":\"unsignedInteger\"},\"endBlock\":{\"type\":\"integer\",\"nullable\":true,\"description\":\"Block number when relay chain migration ended, or null if not available\",\"format\":\"unsignedInteger\"}}},\"assetHub\":{\"type\":\"object\",\"description\":\"Asset Hub migration information\",\"properties\":{\"startBlock\":{\"type\":\"integer\",\"nullable\":true,\"description\":\"Block number when Asset Hub migration started, or null if not available\",\"format\":\"unsignedInteger\"},\"endBlock\":{\"type\":\"integer\",\"nullable\":true,\"description\":\"Block number when Asset Hub migration ended, or null if not available\",\"format\":\"unsignedInteger\"}}}},\"example\":{\"relay\":{\"startBlock\":26041702,\"endBlock\":26071771},\"assetHub\":{\"startBlock\":11716733,\"endBlock\":11736597}}},\"AccountAssetsBalances\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"assets\":{\"type\":\"array\",\"description\":\"An array of queried assets.\",\"items\":{\"$ref\":\"#/components/schemas/AssetsBalance\"}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"AccountBalanceInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"nonce\":{\"type\":\"string\",\"description\":\"Account nonce.\",\"format\":\"unsignedInteger\"},\"tokenSymbol\":{\"type\":\"string\",\"description\":\"Token symbol of the balances displayed in this response.\",\"format\":\"unsignedInteger\"},\"free\":{\"type\":\"string\",\"description\":\"Free balance of the account. Not equivalent to _spendable_ balance. This is the only balance that matters in terms of most operations on tokens.\",\"format\":\"unsignedInteger\"},\"reserved\":{\"type\":\"string\",\"description\":\"Reserved balance of the account.\",\"format\":\"unsignedInteger\"},\"miscFrozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when withdrawing for anything except transaction fee payment. Note, that some runtimes may not have support for miscFrozen and if so the following will be returned `miscFrozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"feeFrozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when withdrawing specifically for transaction fee payment. Note, that some runtimes may not have support for feeFrozen and if so the following will be returned `feeFrozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"frozen\":{\"type\":\"string\",\"description\":\"The amount that `free` may not drop below when reducing the balance, except for actions where the account owner cannot reasonably benefit from the balance reduction, such as slashing. Note, that some runtimes may not have support for frozen and if so the following will be returned `frozen does not exist for this runtime`\",\"format\":\"unsignedInteger\"},\"transferable\":{\"type\":\"string\",\"description\":\"The amount that can be transferred from this account. This is calculated using the formula `free - max(maybeEd, frozen - reserve)` where `maybeEd` is the existential deposit if there are frozen funds or reserves, otherwise it is zero. This represents the actual spendable balance. Note, that some historical runtimes may not have support for the current formula used and if so the following will be returned `transferable not supported for this runtime`.\",\"format\":\"unsignedInteger\"},\"locks\":{\"type\":\"array\",\"description\":\"Array of locks on a balance. There can be many of these on an account and they \\\"overlap\\\", so the same balance is frozen by multiple locks\",\"items\":{\"$ref\":\"#/components/schemas/BalanceLock\"}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"AccountCompare\":{\"type\":\"object\",\"properties\":{\"areEqual\":{\"type\":\"boolean\",\"description\":\"Whether the given SS58 addresses are equal or not. Equality is determined by comparing the accountId/publicKey of each address.\"},\"addresses\":{\"type\":\"array\",\"description\":\"An array that contains detailed information for each of the queried SS58 addresses.\",\"items\":{\"$ref\":\"#/components/schemas/AddressDetails\"}}}},\"AccountConvert\":{\"type\":\"object\",\"properties\":{\"ss58Prefix\":{\"type\":\"string\",\"description\":\"SS58 prefix based on which the account ID or Public Key (hex) is converted to an SS58 address.\",\"format\":\"unsignedInteger\"},\"network\":{\"type\":\"string\",\"description\":\"The network based on which the returned address is encoded. It depends on the prefix that was given as a query param.\"},\"address\":{\"type\":\"string\",\"description\":\"The returned SS58 address which is the result of the conversion of the account ID or Public Key (hex).\"},\"accountId\":{\"type\":\"string\",\"description\":\"The given account ID or Public Key (hex) that is converted to an SS58 address.\"},\"scheme\":{\"type\":\"string\",\"description\":\"The cryptographic scheme/algorithm used to encode the given account ID or Public Key (hex).\"},\"publicKey\":{\"type\":\"boolean\",\"description\":\"Whether the given path parameter is a Public Key (hex) or not.\"}}},\"AccountPoolAssetsBalances\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"poolAssets\":{\"type\":\"array\",\"description\":\"An array of queried assets.\",\"items\":{\"$ref\":\"#/components/schemas/AssetsBalance\"}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"AccountForeignAssetsBalances\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"foreignAssets\":{\"type\":\"array\",\"description\":\"An array of queried foreign assets.\",\"items\":{\"$ref\":\"#/components/schemas/ForeignAssetBalance\"}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"ForeignAssetBalance\":{\"type\":\"object\",\"properties\":{\"multiLocation\":{\"type\":\"object\",\"description\":\"The multilocation identifier of the foreign asset. This is an XCM multilocation object that uniquely identifies an asset across different parachains.\"},\"balance\":{\"type\":\"string\",\"description\":\"The balance of the foreign asset.\",\"format\":\"unsignedInteger\"},\"isFrozen\":{\"type\":\"boolean\",\"description\":\"Whether the asset is frozen for non-admin transfers. Returns false if the runtime does not support isFrozen.\"},\"isSufficient\":{\"type\":\"boolean\",\"description\":\"Whether a non-zero balance of this asset is a deposit of sufficient value to account for the state bloat associated with its balance storage. If set to `true`, then non-zero balances may be stored without a `consumer` reference (and thus an ED in the Balances pallet or whatever else is used to control user-account state growth).\"}}},\"AccountProxyInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"delegatedAccounts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"delegate\":{\"type\":\"string\",\"description\":\"Delegate address for the given proxy.\",\"format\":\"ss58\"},\"delay\":{\"type\":\"string\",\"description\":\"The announcement period required of the initial proxy. Will generally be zero.\",\"format\":\"unsignedInteger\"},\"proxyType\":{\"type\":\"string\",\"description\":\"The permissions allowed for this proxy account.\"}}}},\"depositHeld\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The held deposit.\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"AccountStakingInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"rewardDestination\":{\"type\":\"string\",\"description\":\"The account to which rewards will be paid. Can be 'Staked' (Stash account, adding to the amount at stake), 'Stash' (Stash address, not adding to the amount at stake), or 'Controller' (Controller address).\",\"format\":\"ss58\",\"enum\":[\"Staked\",\"Stash\",\"Controller\"]},\"controller\":{\"type\":\"string\",\"description\":\"Controller address for the given Stash.\",\"format\":\"ss58\"},\"numSlashingSpans\":{\"type\":\"string\",\"description\":\"Number of slashing spans on Stash account; `null` if provided address is not a Controller.\",\"format\":\"unsignedInteger\"},\"nominations\":{\"$ref\":\"#/components/schemas/Nominations\"},\"staking\":{\"$ref\":\"#/components/schemas/StakingLedger\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}},\"description\":\"Note: For Sidecar versions prior to v.20.0.0, in field `claimedRewards` under `staking`, we return whatever we would find under `StakingLedger` with no further calculations. From v.20.0.0 onwards, `claimedRewards` is calculated based on different calls: `lastReward`, `claimedRewards` or `legacyClaimedRewards`. Note on lastReward: Runtime versions of Kusama less than 1062 will either have `lastReward` in place of `claimedRewards`, or no field at all. This is related to changes in reward distribution. See: [Lazy Payouts](https://github.com/paritytech/substrate/pull/4474), [Simple Payouts](https://github.com/paritytech/substrate/pull/5406)\"},\"AccountStakingPayouts\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"erasPayouts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"era\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Era this information is associated with.\"},\"totalEraRewardPoints\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Total reward points for the era. Equals the sum of reward points for all the validators in the set.\"},\"totalEraPayout\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Total payout for the era. Validators split the payout based on the portion of `totalEraRewardPoints` they have.\"},\"payouts\":{\"$ref\":\"#/components/schemas/Payouts\"}}}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"AccountValidation\":{\"type\":\"object\",\"properties\":{\"isValid\":{\"type\":\"boolean\",\"description\":\"Whether the given address is valid ss58 formatted.\"},\"ss58Prefix\":{\"type\":\"string\",\"description\":\"SS58 prefix of the given address. If the address is a valid base58 format, but incorrect ss58, a prefix for the given address will still be returned.\",\"format\":\"unsignedInteger\"},\"network\":{\"type\":\"string\",\"description\":\"The network based on which the given address is encoded.\"},\"accountId\":{\"type\":\"string\",\"description\":\"The account id of the given address.\"}}},\"AccountVestingInfo\":{\"type\":\"object\",\"description\":\"Sidecar version's <= v10.0.0 have a`vesting` return value that defaults to an object for when there is no available vesting-info data. It also returns a `VestingInfo` as an object. For Sidecar >=11.0.0, that value will now default as an array when there is no value, and `Vec` is returned when there is.\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"vesting\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/VestingSchedule\"}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"vestedBalance\":{\"type\":\"string\",\"description\":\"Total vested amount across all schedules based on time elapsed. Only present when `includeClaimable` parameter is used.\",\"format\":\"unsignedInteger\"},\"vestingTotal\":{\"type\":\"string\",\"description\":\"Total locked amount across all vesting schedules. Only present when `includeClaimable` parameter is used.\",\"format\":\"unsignedInteger\"},\"vestedClaimable\":{\"type\":\"string\",\"description\":\"Actual amount that can be claimed now (vestedBalance minus already claimed). Only present when `includeClaimable` parameter is used.\",\"format\":\"unsignedInteger\"},\"blockNumberForCalculation\":{\"type\":\"string\",\"description\":\"The block number used for vesting calculations. Only present when `includeClaimable` parameter is used.\",\"format\":\"unsignedInteger\"},\"blockNumberSource\":{\"type\":\"string\",\"description\":\"Which chain's block number was used for calculations ('relay' or 'self'). Only present when `includeClaimable` parameter is used.\",\"enum\":[\"relay\",\"self\"]}}},\"AddressDetails\":{\"type\":\"object\",\"properties\":{\"ss58Format\":{\"type\":\"string\",\"description\":\"The queried SS58 address.\"},\"ss58Prefix\":{\"type\":\"string\",\"description\":\"SS58 prefix of the given address.\",\"format\":\"unsignedInteger\"},\"network\":{\"type\":\"string\",\"description\":\"The network based on which the given address is encoded.\"},\"publicKey\":{\"type\":\"string\",\"description\":\"The account ID/Public Key (hex) of the queried SS58 address.\"}}},\"AssetsBalance\":{\"type\":\"object\",\"properties\":{\"assetId\":{\"type\":\"string\",\"description\":\"The identifier of the asset.\",\"format\":\"unsignedInteger\"},\"balance\":{\"type\":\"string\",\"description\":\"The balance of the asset.\",\"format\":\"unsignedInteger\"},\"isFrozen\":{\"type\":\"boolean\",\"description\":\"Whether the asset is frozen for non-admin transfers. Note, that some runtimes may not have support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\"},\"isSufficient\":{\"type\":\"boolean\",\"description\":\"Whether a non-zero balance of this asset is a deposit of sufficient value to account for the state bloat associated with its balance storage. If set to `true`, then non-zero balances may be stored without a `consumer` reference (and thus an ED in the Balances pallet or whatever else is used to control user-account state growth).\"}}},\"AssetInfo\":{\"type\":\"object\",\"properties\":{\"owner\":{\"type\":\"string\",\"description\":\"Owner of the assets privileges.\",\"format\":\"SS58\"},\"issuer\":{\"type\":\"string\",\"description\":\"The `AccountId` able to mint tokens.\",\"format\":\"SS58\"},\"admin\":{\"type\":\"string\",\"description\":\"The `AccountId` that can thaw tokens, force transfers and burn token from any account.\",\"format\":\"SS58\"},\"freezer\":{\"type\":\"string\",\"description\":\"The `AccountId` that can freeze tokens.\",\"format\":\"SS58\"},\"supply\":{\"type\":\"string\",\"description\":\"The total supply across accounts.\",\"format\":\"unsignedInteger\"},\"deposit\":{\"type\":\"string\",\"description\":\"The balance deposited for this. This pays for the data stored.\",\"format\":\"unsignedInteger\"},\"minBalance\":{\"type\":\"string\",\"description\":\"The ED for virtual accounts.\",\"format\":\"unsignedInteger\"},\"isSufficient\":{\"type\":\"boolean\",\"description\":\"If `true`, then any account with this asset is given a provider reference. Otherwise, it requires a consumer reference.\"},\"accounts\":{\"type\":\"string\",\"description\":\"The total number of accounts.\",\"format\":\"unsignedInteger\"},\"sufficients\":{\"type\":\"string\",\"description\":\"The total number of accounts for which is placed a self-sufficient reference.\"},\"approvals\":{\"type\":\"string\",\"description\":\"The total number of approvals.\",\"format\":\"unsignedInteger\"},\"status\":{\"type\":\"string\",\"description\":\"The status of the asset.\"}}},\"AssetMetadata\":{\"type\":\"object\",\"properties\":{\"deposit\":{\"type\":\"string\",\"description\":\"The balance deposited for this metadata. This pays for the data stored in this struct.\",\"format\":\"unsignedInteger\"},\"name\":{\"type\":\"string\",\"description\":\"The user friendly name of this asset.\",\"format\":\"$hex\"},\"symbol\":{\"type\":\"string\",\"description\":\"The ticker symbol for this asset.\",\"format\":\"$hex\"},\"decimals\":{\"type\":\"string\",\"description\":\"The number of decimals this asset uses to represent one unit.\",\"format\":\"unsignedInteger\"},\"isFrozen\":{\"type\":\"boolean\",\"description\":\"Whether the asset metadata may be changed by a non Force origin. Note, that some runtimes may not have support for isFrozen and if so the following will be returned `isFrozen does not exist for this runtime`\"}}},\"AssetMultiLocation\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/AssetMultiLocationObject\"},{\"$ref\":\"#/components/schemas/AssetMultiLocationHex\"}]},\"AssetMultiLocationObject\":{\"type\":\"object\",\"properties\":{\"parents\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"interior\":{\"type\":\"object\"}},\"description\":\"The multiLocation of the foreign asset as an object.\",\"example\":\"{\\\"parents\\\":\\\"2\\\",\\\"interior\\\":{\\\"X1\\\":{\\\"GlobalConsensus\\\":\\\"Polkadot\\\"}}}\"},\"AssetMultiLocationHex\":{\"type\":\"string\",\"pattern\":\"^0x[0-9a-fA-F]+$\",\"description\":\"The multiLocation of the foreign asset given as a hexadecimal value.\"},\"BalanceLock\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"An identifier for this lock. Only one lock may be in existence for each identifier.\"},\"amount\":{\"type\":\"string\",\"description\":\"The amount below which the free balance may not drop with this lock in effect.\",\"format\":\"unsignedInteger\"},\"reasons\":{\"type\":\"string\",\"description\":\"Reasons for withdrawing balance.\",\"enum\":[\"Fee = 0\",\"Misc = 1\",\"All = 2\"]}}},\"Block\":{\"type\":\"object\",\"properties\":{\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"authorId\":{\"type\":\"string\",\"description\":\"The account ID of the block author (may be undefined for some chains).\",\"format\":\"ss58\"},\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"},\"onInitialize\":{\"$ref\":\"#/components/schemas/BlockInitialize\"},\"extrinsics\":{\"type\":\"array\",\"description\":\"Array of extrinsics (inherents and transactions) within the block.\",\"items\":{\"$ref\":\"#/components/schemas/Extrinsic\"}},\"onFinalize\":{\"$ref\":\"#/components/schemas/BlockFinalize\"},\"finalized\":{\"type\":\"boolean\",\"description\":\"A boolean identifying whether the block is finalized or not. Note: on chains that do not have deterministic finality this field is omitted.\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}},\"description\":\"Note: Block finalization does not correspond to consensus, i.e. whether the block is in the canonical chain. It denotes the finalization of block _construction._\"},\"BlockRaw\":{\"type\":\"object\",\"properties\":{\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}},\"extrinsics\":{\"type\":\"array\",\"description\":\"Array of raw extrinsics (inherents and transactions) within the block.\",\"items\":{\"type\":\"string\"}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"Blocks\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Block\"}},\"BlockFinalize\":{\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}}},\"description\":\"Object with an array of `SanitizedEvent`s that occurred during block construction finalization with the `method` and `data` for each.\"},\"BlockHeader\":{\"type\":\"object\",\"properties\":{\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"BlockIdentifiers\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"height\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"}}},\"BlockParaInclusions\":{\"type\":\"object\",\"description\":\"Contains all decoded parachain inclusion information for a relay chain block\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"inclusions\":{\"type\":\"array\",\"description\":\"Array of parachain inclusions in this relay chain block, sorted by paraId\",\"items\":{\"$ref\":\"#/components/schemas/ParaInclusion\"}}}},\"ParaInclusion\":{\"type\":\"object\",\"description\":\"Information about a single parachain inclusion event\",\"properties\":{\"paraId\":{\"type\":\"string\",\"description\":\"The parachain ID\",\"format\":\"unsignedInteger\"},\"paraBlockNumber\":{\"type\":\"number\",\"description\":\"The parachain block number that was included (decoded from HeadData)\",\"format\":\"unsignedInteger\"},\"paraBlockHash\":{\"type\":\"string\",\"description\":\"The parachain block hash that was included (decoded from HeadData)\",\"format\":\"hex\"},\"descriptor\":{\"$ref\":\"#/components/schemas/ParaInclusionDescriptor\"},\"commitmentsHash\":{\"type\":\"string\",\"description\":\"Hash of the candidate commitments\",\"format\":\"hex\"},\"coreIndex\":{\"type\":\"string\",\"description\":\"Core index assigned to this parachain block\",\"format\":\"unsignedInteger\"},\"groupIndex\":{\"type\":\"string\",\"description\":\"Validator group index that backed this parachain block\",\"format\":\"unsignedInteger\"}}},\"ParaInclusionDescriptor\":{\"type\":\"object\",\"description\":\"Candidate descriptor containing parachain inclusion metadata\",\"properties\":{\"relayParent\":{\"type\":\"string\",\"description\":\"The relay chain parent block hash\",\"format\":\"hex\"},\"persistedValidationDataHash\":{\"type\":\"string\",\"description\":\"Hash of the persisted validation data\",\"format\":\"hex\"},\"povHash\":{\"type\":\"string\",\"description\":\"Hash of the Proof of Validity (PoV)\",\"format\":\"hex\"},\"erasureRoot\":{\"type\":\"string\",\"description\":\"Root hash of the erasure encoding\",\"format\":\"hex\"},\"paraHead\":{\"type\":\"string\",\"description\":\"Hash of the parachain head data\",\"format\":\"hex\"},\"validationCodeHash\":{\"type\":\"string\",\"description\":\"Hash of the validation code\",\"format\":\"hex\"}}},\"BlockInitialize\":{\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}}},\"description\":\"Object with an array of `SanitizedEvent`s that occurred during block initialization with the `method` and `data` for each.\"},\"BlocksTrace\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"blockHash\":{\"type\":\"string\"},\"events\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TraceEvent\"}},\"parentHash\":{\"type\":\"string\"},\"spans\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/TraceSpan\"}},\"storageKeys\":{\"type\":\"string\",\"description\":\"Hex encoded storage keys used to filter events.\"},\"tracingTargets\":{\"type\":\"string\",\"description\":\"Targets used to filter spans and events.\"}}},\"BlocksTraceOperations\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"operations\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Operation\"}}}},\"CoretimeRegionsResponse\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"regions\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CoretimeRegion\"}}}},\"CoretimeLeasesResponse\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"leases\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CoretimeLease\"}}}},\"CoretimeReservationsResponse\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"reservations\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CoretimeReservation\"}}}},\"CoretimeRenewalsResponse\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"renewals\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CoretimeRenewal\"}}}},\"CoretimeChainInfoResponse\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"configuration\":{\"$ref\":\"#/components/schemas/CoretimeConfig\"},\"currentRegion\":{\"type\":\"object\",\"properties\":{\"start\":{\"type\":\"string\",\"description\":\"The start time.\"},\"end\":{\"type\":\"string\",\"description\":\"The end time.\"}}},\"cores\":{\"type\":\"object\",\"properties\":{\"total\":{\"type\":\"string\",\"description\":\"The total number of cores.\"},\"available\":{\"type\":\"string\",\"description\":\"The number of free cores.\"},\"sold\":{\"type\":\"string\",\"description\":\"The number of reserved cores.\"},\"currentCorePrice\":{\"type\":\"string\",\"description\":\"The current core price.\"},\"selloutPrice\":{\"type\":\"string\",\"description\":\"The sellout price.\"},\"firstCore\":{\"type\":\"string\",\"description\":\"The first core id.\"}}}}},\"CoretimeRelayInfoResponse\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"brokerId\":{\"type\":\"string\",\"description\":\"The broker parachain id.\"},\"palletVersion\":{\"type\":\"string\",\"description\":\"The pallet version.\"},\"maxHistoricalRevenue\":{\"type\":\"string\",\"description\":\"The maximum historical revenue.\"}}},\"CoretimeChainCoresResponse\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"cores\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CoretimeCore\"}}}},\"CoretimeRelayCoresResponse\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"cores\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CoretimeRelayCoreDescriptor\"}}}},\"CoretimeRelayCoreDescriptor\":{\"type\":\"object\",\"properties\":{\"paraId\":{\"type\":\"string\",\"description\":\"The parachain id.\"},\"type\":{\"type\":\"string\",\"description\":\"The parachain type.\"},\"info\":{\"type\":\"object\",\"properties\":{\"currentWork\":{\"type\":\"object\",\"properties\":{\"assignments\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"isPool\":{\"type\":\"boolean\",\"description\":\"Whether the workload is a pool.\"},\"isTask\":{\"type\":\"boolean\",\"description\":\"Whether the workload is a task.\"},\"ratio\":{\"type\":\"string\",\"description\":\"The ratio of the workload.\"},\"remaining\":{\"type\":\"string\",\"description\":\"The remaining workload.\"},\"task\":{\"type\":\"string\",\"description\":\"The parachain id.\"}}}},\"endHint\":{\"type\":\"string\",\"description\":\"The end hint.\"},\"pos\":{\"type\":\"string\",\"description\":\"The position.\"},\"step\":{\"type\":\"string\",\"description\":\"The step.\"}}},\"queue\":{\"type\":\"object\",\"properties\":{\"first\":{\"type\":\"string\",\"description\":\"The first assignment in queue.\"},\"last\":{\"type\":\"string\",\"description\":\"The last assignment in queue.\"}}}}}}},\"CoretimeCore\":{\"type\":\"object\",\"properties\":{\"coreId\":{\"type\":\"string\",\"description\":\"The core id.\"},\"paraId\":{\"type\":\"string\",\"description\":\"The parachain core.\"},\"workload\":{\"type\":\"object\",\"$ref\":\"#/components/schemas/CoretimeWorkload\"},\"workplan\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CoretimeWorkplan\"}},\"type\":{\"description\":\"The paid price.\",\"type\":\"object\",\"properties\":{\"condition\":{\"type\":\"string\",\"description\":\"Type of assignment.\"},\"details\":{\"type\":\"object\",\"oneOf\":[{\"$ref\":\"#/components/schemas/CoretimeUntil\"},{\"$ref\":\"#/components/schemas/CoretimeMask\"}]}}},\"regions\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CoretimeRegion\"}}}},\"CoretimeConfig\":{\"type\":\"object\",\"properties\":{\"interludeLength\":{\"type\":\"string\",\"description\":\"The interlude length.\"},\"leadinLength\":{\"type\":\"string\",\"description\":\"The leadin length.\"},\"regionLength\":{\"type\":\"string\",\"description\":\"The region length.\"},\"relayBlocksPerTimeslice\":{\"type\":\"string\",\"description\":\"The number of relay chain blocks per timeslice.\"}}},\"CoretimeSaleInfo\":{\"type\":\"object\",\"properties\":{\"phase\":{\"type\":\"string\",\"description\":\"The phase of the sale.\"},\"saleStart\":{\"type\":\"string\",\"description\":\"The sale start.\"},\"leadinLength\":{\"type\":\"string\",\"description\":\"The leading length.\"},\"endPrice\":{\"type\":\"string\",\"description\":\"The end price.\"},\"regionBegin\":{\"type\":\"string\",\"description\":\"The region start time.\"},\"regionEnd\":{\"type\":\"string\",\"description\":\"The region end time.\"},\"idealCoresSold\":{\"type\":\"string\",\"description\":\"The ideal number of cores sold.\"},\"coresOffered\":{\"type\":\"string\",\"description\":\"The number of cores on sale.\"},\"firstCore\":{\"type\":\"string\",\"description\":\"The first core id.\"},\"selloutPrice\":{\"type\":\"string\",\"description\":\"The sellout price.\"},\"coresSold\":{\"type\":\"string\",\"description\":\"The number of cores sold.\"}}},\"CoretimeMask\":{\"type\":\"string\",\"description\":\"The mask.\"},\"CoretimeUntil\":{\"type\":\"string\",\"description\":\"The lease expiry time.\"},\"CoretimeWorkplan\":{\"type\":\"object\",\"properties\":{\"core\":{\"type\":\"string\",\"description\":\"The core id.\"},\"timeslice\":{\"type\":\"string\",\"description\":\"The timeslice.\"},\"info\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/CoretimeWorkplanInfo\"}}}},\"CoretimeWorkplanInfo\":{\"type\":\"object\",\"properties\":{\"isPool\":{\"type\":\"boolean\",\"description\":\"Whether the workload is a pool.\"},\"isTask\":{\"type\":\"boolean\",\"description\":\"Whether the workload is a task.\"},\"mask\":{\"type\":\"string\",\"description\":\"The mask.\"},\"task\":{\"type\":\"string\",\"description\":\"The parachain id.\"}}},\"CoretimeWorkload\":{\"type\":\"object\",\"properties\":{\"isPool\":{\"type\":\"boolean\",\"description\":\"Whether the workload is a pool.\"},\"isTask\":{\"type\":\"boolean\",\"description\":\"Whether the workload is a task.\"},\"mask\":{\"type\":\"string\",\"description\":\"The mask.\"},\"task\":{\"type\":\"string\",\"description\":\"The parachain id.\"}}},\"CoretimeRegion\":{\"type\":\"object\",\"properties\":{\"core\":{\"type\":\"string\",\"description\":\"The core id.\"},\"begin\":{\"type\":\"string\",\"description\":\"The begin time.\"},\"end\":{\"type\":\"string\",\"description\":\"The end time.\"},\"owner\":{\"type\":\"string\",\"description\":\"The owner of the region.\"},\"paid\":{\"type\":\"string\",\"description\":\"The paid price.\"},\"mask\":{\"type\":\"string\",\"description\":\"The mask.\"}}},\"CoretimeLease\":{\"type\":\"object\",\"properties\":{\"task\":{\"type\":\"string\",\"description\":\"The parachain id.\"},\"until\":{\"type\":\"string\",\"description\":\"The lease expiry time.\"},\"core\":{\"type\":\"string\",\"description\":\"The core id.\"}}},\"CoretimeReservation\":{\"type\":\"object\",\"properties\":{\"task\":{\"type\":\"string\",\"description\":\"The parachain id.\"},\"mask\":{\"type\":\"string\",\"description\":\"The mask.\"}}},\"CoretimeRenewal\":{\"type\":\"object\",\"properties\":{\"completion\":{\"type\":\"string\",\"description\":\"The completion status.\"},\"core\":{\"type\":\"string\",\"description\":\"The core id.\"},\"mask\":{\"type\":\"string\",\"description\":\"The mask.\"},\"price\":{\"type\":\"string\",\"description\":\"The renewal price.\"},\"task\":{\"type\":\"string\",\"description\":\"The parachain id.\"},\"when\":{\"type\":\"string\",\"description\":\"The renewal time.\"}}},\"BlockWithDecodedXcmMsgs\":{\"allOf\":[{\"$ref\":\"#/components/schemas/Block\"},{\"$ref\":\"#/components/schemas/DecodedXcmMsgs\"}],\"description\":\"Block information that includes the decoded XCM messages if any are found in the queried block. If not, the decodedXcmMsgs object will be returned with three empty arrays corresponding to each direction, horizontalMessages, downwardMessages, upwardMessages.\"},\"BondedPool\":{\"type\":\"object\",\"properties\":{\"points\":{\"type\":\"number\"},\"state\":{\"type\":\"string\"},\"memberCounter\":{\"type\":\"number\"},\"roles\":{\"type\":\"object\",\"properties\":{\"depositor\":{\"type\":\"string\"},\"root\":{\"type\":\"string\"},\"nominator\":{\"type\":\"string\"},\"stateToggler\":{\"type\":\"string\"}}}}},\"ChainType\":{\"type\":\"object\",\"description\":\"Type of the chain. It will return one of the following enum variants as a key. Live, Development, Local, or Custom. Each variant will have a value as null except when the ChainType is Custom, it will return a string.\",\"properties\":{\"live\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"development\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"local\":{\"type\":\"string\",\"nullable\":true,\"default\":null},\"custom\":{\"type\":\"string\"}},\"example\":\"{\\\"live\\\": null}\"},\"ContractsInkQuery\":{\"type\":\"object\",\"description\":\"Result from calling a query to a Ink contract.\",\"properties\":{\"debugMessage\":{\"type\":\"string\"},\"gasConsumed\":{\"type\":\"string\"},\"gasRequired\":{\"type\":\"string\"},\"output\":{\"type\":\"boolean\"},\"result\":{\"type\":\"object\",\"description\":\"Will result in an Ok or Err object depending on the result of the query.\"},\"storageDeposit\":{\"type\":\"object\"}}},\"ContractMetadata\":{\"type\":\"object\",\"description\":\"Metadata used to instantiate a ContractPromise. This metadata can be generated by compiling the contract you are querying.\"},\"DecodedXcmMsgs\":{\"type\":\"object\",\"properties\":{\"decodedXcmMsgs\":{\"type\":\"object\",\"properties\":{\"horizontalMessages\":{\"type\":\"object\",\"oneOf\":[{\"$ref\":\"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInRelay\"},{\"$ref\":\"#/components/schemas/DecodedXcmMsgsHorizontalMessagesInParachain\"}]},\"downwardMessages\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"sentAt\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Represents the block number that the XCM message was sent at on the relay chain.\"},\"msg\":{\"type\":\"string\",\"description\":\"Represents the XCM message.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}}}},\"upwardMessages\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}}}}}}},\"description\":\"Object with three arrays, one for every XCM direction. The arrays are populated or left empty based on the direction of the current XCM message that is being decoded. The XCM messages can be Upward and/or Horizontal (`in transit`) messages when connected to a Relay chain. When connected to a Parachain, the messages can be Downward and/or Horizontal. One or more messages can be present in a single block. In case of multiple messages from the same paraIds (originParaId and/or destinationParaId), the messages will be shown under the field `data`.\"},\"DecodedXcmMsgsHorizontalMessagesInRelay\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"destinationParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent to.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}},\"description\":\"Array that includes the Horizontal (`in transit`) messages when we are connected to a Relay Chain. Each block can contain one or more messages. If multiple messages share the same origin and destination paraId, they will be displayed within the data field.\"}},\"DecodedXcmMsgsHorizontalMessagesInParachain\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"sentAt\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Represents the block number that the XCM message was sent at on the relay chain.\"},\"originParaId\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The Parachain id that the specific XCM message was sent from.\"},\"data\":{\"type\":\"object\",\"description\":\"The decoded instructions included in the XCM message and their respective fields.\"}},\"description\":\"Array that includes the Horizontal Messages when we are connected to a Parachain. Each block can contain one or more messages. If multiple messages originate from the same parachain (originParaId), they will be displayed within the data field.\"}},\"DigestItem\":{\"type\":\"object\",\"properties\":{\"type\":{\"type\":\"string\"},\"index\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"value\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"ElectionStatus\":{\"type\":\"object\",\"properties\":{\"status\":{\"type\":\"object\",\"description\":\"[Deprecated](Works for polkadot runtimes before v0.8.30).\\nEra election status: either `Close: null` or `Open: `. A status of `Close` indicates that the submission window for solutions from off-chain Phragmen is not open. A status of `Open` indicates that the submission window for off-chain Phragmen solutions has been open since BlockNumber. N.B. when the submission window is open, certain extrinsics are not allowed because they would mutate the state that the off-chain Phragmen calculation relies on for calculating results.\"},\"toggleEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the `status` will switch.\",\"format\":\"unsignedInteger\"}},\"description\":\"Information about the off-chain election. Not included in response when `forceEra.isForceNone`.\"},\"Error\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"message\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"},\"level\":{\"type\":\"string\"}}},\"ExtrinsicMethod\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\"},\"method\":{\"type\":\"string\"}},\"description\":\"Extrinsic method\"},\"Extrinsic\":{\"type\":\"object\",\"properties\":{\"method\":{\"$ref\":\"#/components/schemas/ExtrinsicMethod\"},\"signature\":{\"$ref\":\"#/components/schemas/Signature\"},\"nonce\":{\"type\":\"string\",\"description\":\"Account nonce, if applicable.\",\"format\":\"unsignedInteger\"},\"args\":{\"type\":\"object\",\"description\":\"Object of arguments keyed by parameter name. Note: if you are expecting an [`OpaqueCall`](https://substrate.dev/rustdocs/v2.0.0/pallet_multisig/type.OpaqueCall.html) and it is not decoded in the response (i.e. it is just a hex string), then Sidecar was not able to decode it and likely that it is not a valid call for the runtime.\"},\"tip\":{\"type\":\"string\",\"description\":\"Any tip added to the transaction.\",\"format\":\"unsignedInteger\"},\"hash\":{\"type\":\"string\",\"description\":\"The transaction's hash.\",\"format\":\"hex\"},\"info\":{\"$ref\":\"#/components/schemas/RuntimeDispatchInfo\"},\"era\":{\"$ref\":\"#/components/schemas/GenericExtrinsicEra\"},\"events\":{\"type\":\"array\",\"description\":\"An array of `SanitizedEvent`s that occurred during extrinsic execution.\",\"items\":{\"$ref\":\"#/components/schemas/SanitizedEvent\"}},\"success\":{\"type\":\"boolean\",\"description\":\"Whether or not the extrinsic succeeded.\"},\"paysFee\":{\"type\":\"boolean\",\"description\":\"Whether the extrinsic requires a fee. Careful! This field relates to whether or not the extrinsic requires a fee if called as a transaction. Block authors could insert the extrinsic as an inherent in the block and not pay a fee. Always check that `paysFee` is `true` and that the extrinsic is signed when reconciling old blocks.\"}}},\"ExtrinsicIndex\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"extrinsic\":{\"$ref\":\"#/components/schemas/Extrinsic\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}},\"description\":\"A single extrinsic at a given block.\"},\"FundInfo\":{\"type\":\"object\",\"properties\":{\"depositor\":{\"type\":\"string\"},\"verifier\":{\"type\":\"string\"},\"deposit\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"raised\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"end\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"cap\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"lastConstribution\":{\"type\":\"string\",\"enum\":[\"preEnding\",\"ending\"]},\"firstPeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"lastPeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"trieIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"GenericExtrinsicEra\":{\"type\":\"object\",\"description\":\"The return value for era can either be `mortalEra`, or `immortalEra` and is represented as an enum in substrate. `immortalEra` meaning\\nthe transaction is valid forever. `mortalEra` consists of a tuple containing a period and phase.\\nex: `\\\"{\\\"mortalEra\\\": [\\\"64\\\", \\\"11\\\"]}\\\"`. The Period is the period of validity from the block hash found in the signing material.\\nThe Phase is the period that this transaction's lifetime begins (and, importantly,\\nimplies which block hash is included in the signature material).\\n\",\"properties\":{\"mortalEra\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Tuple of a Phase, and Period. Each item in the array will be a string formatted as an integer.\"},\"immortalEra\":{\"type\":\"string\",\"description\":\"Hardcoded constant '0x00'.\",\"format\":\"hex\"}},\"example\":\"{\\\"mortalEra\\\":[\\\"64\\\", \\\"11\\\"]}\"},\"LiquidityPools\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pools\":{\"type\":\"array\",\"description\":\"Array containing existent liquidity pool's token id.\",\"items\":{\"$ref\":\"#/components/schemas/LiquidityPool\"},\"example\":\"[{\\\"reserves\\\":[{\\\"parents\\\":\\\"1\\\",\\\"interior\\\":{\\\"here\\\": null}},{\\\"parents\\\":\\\"0\\\",\\\"interior\\\":{\\\"x2\\\":[{\\\"palletInstance\\\": \\\"50\\\"},{\\\"generalIndex\\\":\\\"2\\\"}]}}],\\\"lpToken\\\":{\\\"lpToken\\\":\\\"1\\\"} },{\\\"lpToken\\\":{\\\"lpToken\\\":\\\"0\\\"}}]\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"LiquidityPool\":{\"type\":\"object\",\"properties\":{\"reserves\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"parents\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"interior\":{\"type\":\"object\"}}}},\"lpToken\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Liquidity pool token ID.\"}}},\"NextAvailableId\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"id\":{\"type\":\"string\",\"description\":\"Next availabe liquidity pool's id.\",\"example\":\"4\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"NodeNetwork\":{\"type\":\"object\",\"properties\":{\"nodeRoles\":{\"$ref\":\"#/components/schemas/NodeRole\"},\"numPeers\":{\"type\":\"string\",\"description\":\"Number of peers the node is connected to.\",\"format\":\"unsignedInteger\"},\"isSyncing\":{\"type\":\"boolean\",\"description\":\"Whether or not the node is syncing. `False` indicates that the node is in sync.\"},\"shouldHavePeers\":{\"type\":\"boolean\",\"description\":\"Whether or not the node should be connected to peers. Might be false for local chains or when running without discovery.\"},\"localPeerId\":{\"type\":\"string\",\"description\":\"Local copy of the `PeerId`.\"},\"localListenAddresses\":{\"type\":\"array\",\"description\":\"Multiaddresses that the local node is listening on. The addresses include a trailing `/p2p/` with the local PeerId, and are thus suitable to be passed to `system_addReservedPeer` or as a bootnode address for example.\",\"items\":{\"type\":\"string\"}},\"peersInfo\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PeerInfo\"}}}},\"NodeRole\":{\"type\":\"string\",\"description\":\"Role of this node. (N.B. Sentry nodes are being deprecated.)\",\"enum\":[\"Full\",\"LightClient\",\"Authority\",\"Sentry\"]},\"NodeVersion\":{\"type\":\"object\",\"properties\":{\"clientVersion\":{\"type\":\"string\",\"description\":\"Node's binary version.\"},\"clientImplName\":{\"type\":\"string\",\"description\":\"Node's implementation name.\"},\"chain\":{\"type\":\"string\",\"description\":\"Node's chain name.\"}},\"description\":\"Version information of the node.\"},\"Nominations\":{\"type\":\"object\",\"properties\":{\"targets\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"The targets of the nomination.\"},\"submittedIn\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The era the nominations were submitted. (Except for initial nominations which are considered submitted at era 0.)\"},\"suppressed\":{\"type\":\"boolean\",\"description\":\"Whether the nominations have been suppressed.\"}}},\"OnboardingAs\":{\"type\":\"string\",\"enum\":[\"parachain\",\"parathread\"],\"description\":\"This property only shows up when `paraLifecycle=onboarding`. It\\ndescribes if a particular para is onboarding as a `parachain` or a\\n`parathread`.\\n\"},\"Operation\":{\"type\":\"object\",\"properties\":{\"phase\":{\"$ref\":\"#/components/schemas/OperationPhase\"},\"parentSpanId\":{\"$ref\":\"#/components/schemas/SpanId\"},\"primarySpanId\":{\"$ref\":\"#/components/schemas/SpanId\"},\"eventIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Index of the underlying trace event.\"},\"address\":{\"type\":\"string\",\"description\":\"Account this operation affects. Note - this will be an object like\\n`{ id: address }` if the network uses `MultiAddress`\\n\"},\"storage\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\"},\"item\":{\"type\":\"string\"},\"field1\":{\"type\":\"string\",\"description\":\"A field of the storage item. (i.e `system::Account::get(address).data`)\\n\"},\"field2\":{\"type\":\"string\",\"description\":\"A field of the struct described by field1 (i.e\\n`system::Account::get(address).data.free`)\\n\"}}},\"amount\":{\"$ref\":\"#/components/schemas/OperationAmount\"}}},\"OperationAmount\":{\"type\":\"object\",\"properties\":{\"values\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"currency\":{\"$ref\":\"#/components/schemas/OperationAmountCurrency\"}}},\"OperationAmountCurrency\":{\"type\":\"object\",\"properties\":{\"symbol\":{\"type\":\"string\",\"example\":\"KSM\"}}},\"OperationPhase\":{\"type\":\"object\",\"properties\":{\"variant\":{\"type\":\"string\",\"enum\":[\"onInitialize\",\"initialChecks\",\"applyExtrinsic\",\"onFinalize\",\"finalChecks\"],\"description\":\"Phase of block execution pipeline.\"},\"extrinsicIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"If phase variant is `applyExtrinsic` this will be the index of\\nthe extrinsic. Otherwise this field will not be present.\\n\"}}},\"PalletsAssetsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"assetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"assetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"PalletConstants\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up constants.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletConstantsItemMetadata\"},\"description\":\"Array containing metadata for each constant entry of the pallet.\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletConstantsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up constants.\",\"example\":\"14\"},\"errorItem\":{\"type\":\"string\",\"description\":\"Name of the constant item.\",\"example\":\"EnactmentPeriod\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletConstantsItemMetadata\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletConstantsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"VotingPeriod\",\"description\":\"The constant item's name (which is the same as the constant item's ID).\"},\"type\":{\"type\":\"string\",\"example\":\"4\"},\"value\":{\"type\":\"string\",\"example\":\"0x00270600\",\"description\":\"The hex value of the constant\"},\"docs\":{\"type\":\"string\",\"example\":\"Information concerning any given constant.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"}},\"description\":\"Metadata of an constant item from a FRAME pallet.\"},\"PalletDispatchables\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up dispatchables.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItemMetadata\"},\"description\":\"Array containing metadata for each dispatchable entry of the pallet.\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"PalletDispatchablesItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up dispatchables.\",\"example\":\"14\"},\"dispatchableItem\":{\"type\":\"string\",\"description\":\"Name of the dispatchable item.\",\"example\":\"vote\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletDispatchablesItemMetadata\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"PalletDispatchablesItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"propose\",\"description\":\"The dispatchable item's name (which is the same as the dispatchable item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the dispatchable item in the lists of pallet dispatchables.\"},\"docs\":{\"type\":\"string\",\"example\":\"Information concerning any given dispatchable.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of a dispatchable item from a FRAME pallet.\"},\"PalletErrors\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up errors.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletErrorsItemMetadata\"},\"description\":\"Array containing metadata for each error entry of the pallet.\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletErrorsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up errors.\",\"example\":\"14\"},\"errorItem\":{\"type\":\"string\",\"description\":\"Name of the error item.\",\"example\":\"ValueLow\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletErrorsItemMetadata\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletErrorsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"InsufficientFunds\",\"description\":\"The error item's name (which is the same as the error item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the error item in the lists of pallet errors\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given error.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of an error item from a FRAME pallet.\"},\"PalletEvents\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up events.\",\"example\":\"14\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletEventsItemMetadata\"},\"description\":\"Array containing metadata for each event entry of the pallet.\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletEventsItem\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up events.\",\"example\":\"14\"},\"eventItem\":{\"type\":\"string\",\"description\":\"Name of the events item.\",\"example\":\"Proposed\"},\"metadata\":{\"$ref\":\"#/components/schemas/PalletEventsItemMetadata\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletEventsItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"Tabled\",\"description\":\"The event item's name (which is the same as the event item's ID).\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"index\":{\"type\":\"string\",\"example\":\"0\",\"description\":\"The index of the error item in the lists of pallet events\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given event.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"},\"args\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"description\":\"Metadata of an event item from a FRAME pallet.\"},\"PalletsForeignAssets\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletsForeignAssetsInfo\"},\"description\":\"Array containing the `AssetDetails` and `AssetMetadata` of every foreign asset.\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"PalletsForeignAssetsInfo\":{\"type\":\"object\",\"properties\":{\"multiLocation\":{\"$ref\":\"#/components/schemas/AssetMultiLocation\"},\"foreignAssetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"foreignAssetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"}}},\"PalletsNominationPool\":{\"type\":\"object\",\"properties\":{\"bondedPool\":{\"$ref\":\"#/components/schemas/BondedPool\"},\"rewardPool\":{\"$ref\":\"#/components/schemas/RewardPool\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletsNominationPoolsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"counterForBondedPools\":{\"type\":\"number\"},\"counterForMetadata\":{\"type\":\"number\"},\"counterForPoolMembers\":{\"type\":\"number\"},\"counterForReversePoolIdLookup\":{\"type\":\"number\"},\"counterForRewardPools\":{\"type\":\"number\"},\"counterForSubPoolsStorage\":{\"type\":\"number\"},\"lastPoolId\":{\"type\":\"number\"},\"maxPoolMembers\":{\"type\":\"number\"},\"maxPoolMembersPerPool\":{\"type\":\"number\",\"nullable\":true},\"maxPools\":{\"type\":\"number\"},\"minCreateBond\":{\"type\":\"number\"},\"minJoinBond\":{\"type\":\"number\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletsOnGoingReferenda\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"referenda\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Referendum's id.\"},\"decisionDeposit\":{\"type\":\"object\",\"properties\":{\"who\":{\"type\":\"string\",\"description\":\"The account who placed the referendum's decision deposit.\"},\"amount\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The amount of the decision deposit.\"}},\"description\":\"A deposit which is required for a referendum to progress to the decision phase.\"},\"enactment\":{\"type\":\"string\",\"enum\":[\"at\",\"after\"],\"description\":\"The enactment period of the referendum. It can be defined using either the `at` option, which specifies the exact block height when the referendum will be enacted, or the `after` option, which indicates the number of blocks after which the enactment will occur.\"},\"submitted\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The block number at which the referendum was submitted.\"},\"deciding\":{\"type\":\"object\",\"properties\":{\"since\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The block number at which the referendum started being `decided`.\"},\"confirming\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The block number at which the referendum's confirmation stage will end at as long as it doesn't lose its approval in the meantime.\"}}}}},\"description\":\"A list of ongoing referenda and their details.\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletsPoolAssetsInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"poolAssetInfo\":{\"$ref\":\"#/components/schemas/AssetInfo\"},\"poolAssetMetadata\":{\"$ref\":\"#/components/schemas/AssetMetadata\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletStorage\":{\"type\":\"object\",\"properties\":{\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up storage.\",\"example\":\"15\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/PalletStorageItemMetadata\"},\"description\":\"Array containing metadata for each storage entry of the pallet.\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletStorageItem\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"pallet\":{\"type\":\"string\",\"description\":\"Name of the pallet.\",\"example\":\"democracy\"},\"palletIndex\":{\"type\":\"string\",\"description\":\"Index of the pallet for looking up storage.\",\"example\":\"15\"},\"storageItem\":{\"type\":\"string\",\"description\":\"Name of the storage item.\",\"example\":\"referendumInfoOf\"},\"keys\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"N Storage keys passed in as the `keys` query param.\",\"example\":[\"0x00\",\"0x01\"]},\"value\":{\"type\":\"object\",\"description\":\"Value returned by this storage query.\",\"example\":{\"Ongoing\":{\"end\":\"1612800\",\"proposalHash\":\"0x7de70fc8be782076d0b5772be77153d172a5381c72dd56d3385e25f62abf507e\",\"threshold\":\"Supermajorityapproval\",\"delay\":\"403200\",\"tally\":{\"ayes\":\"41925212461400000\",\"nays\":\"214535586500000\",\"turnout\":\"34485320658000000\"}}}},\"metadata\":{\"$ref\":\"#/components/schemas/PalletStorageItemMetadata\"},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\"}}},\"PalletStorageItemMetadata\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"example\":\"ReferendumInfoOf\",\"description\":\"The storage item's name (which is the same as the storage item's ID).\"},\"modifier\":{\"type\":\"string\",\"example\":\"Optional\"},\"type\":{\"$ref\":\"#/components/schemas/PalletStorageType\"},\"fallback\":{\"type\":\"string\",\"example\":\"0x00\"},\"docs\":{\"type\":\"string\",\"example\":\" Information concerning any given referendum.\\n\\n TWOX-NOTE: SAFE as indexes are not under an attacker’s control.\"}},\"description\":\"Metadata of a storage item from a FRAME pallet.\"},\"PalletStorageType\":{\"type\":\"object\",\"description\":\"This is going to be formatted to the type of StorageEntryTypeV14.\"},\"Para\":{\"type\":\"object\",\"properties\":{\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"paraLifecycle\":{\"$ref\":\"#/components/schemas/ParaLifecycle\"},\"onboardingAs\":{\"$ref\":\"#/components/schemas/OnboardingAs\"}}},\"Paras\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paras\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Para\"}}}},\"ParasAuctionsCurrent\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"beginEnd\":{\"type\":\"string\",\"format\":\"unisgnedInteger or $null\",\"description\":\"Fist block (number) of the auction ending phase. `null` if there is no ongoing\\nauction.\\n\"},\"finishEnd\":{\"type\":\"string\",\"format\":\"unisgnedInteger or $null\",\"description\":\"Last block (number) of the auction ending phase. `null` if there is no ongoing\\nauction.\\n\"},\"phase\":{\"type\":\"string\",\"enum\":[\"startPeriod\",\"endPeriod\",\"vrfDelay\"],\"description\":\"An auction can be in one of 4 phases. Both `startingPeriod` () and `endingPeriod` indicate\\nan ongoing auction, while `vrfDelay` lines up with the `AuctionStatus::VrfDelay` . Finally, a value of `null`\\nindicates there is no ongoing auction. Keep in mind the that the `finishEnd` field is the block number the\\n`endingPeriod` finishes and the `vrfDelay` period begins. The `vrfDelay` period is typically about an\\nepoch long and no crowdloan contributions are accepted.\\n\"},\"auctionIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The auction number. If there is no current auction this will be the number\\nof the previous auction.\\n\"},\"leasePeriods\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"Lease period indexes that may be bid on in this auction. `null` if\\nthere is no ongoing auction.\\n\"},\"winning\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/WinningData\"}}}},\"ParasCrowdloans\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"funds\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"fundInfo\":{\"$ref\":\"#/components/schemas/FundInfo\"}}},\"description\":\"List of paras that have crowdloans.\\n\"}}},\"ParasCrowdloanInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"fundInfo\":{\"$ref\":\"#/components/schemas/FundInfo\"},\"leasePeriods\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"Lease periods the crowdloan can bid on.\"}}},\"ParasHeaders\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paraId\":{\"type\":\"object\",\"description\":\"The key is not named `paraId` and will be the number of the parachain. There is technically no limit to the number of paraId keys there can be. \\n\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The block's hash.\",\"format\":\"hex\"},\"number\":{\"type\":\"string\",\"description\":\"The block's height.\",\"format\":\"unsignedInteger\"},\"parentHash\":{\"type\":\"string\",\"description\":\"The hash of the parent block.\",\"format\":\"hex\"},\"stateRoot\":{\"type\":\"string\",\"description\":\"The state root after executing this block.\",\"format\":\"hex\"},\"extrinsicsRoot\":{\"type\":\"string\",\"description\":\"The Merkle root of the extrinsics.\",\"format\":\"hex\"},\"digest\":{\"type\":\"object\",\"properties\":{\"logs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/DigestItem\"},\"description\":\"Array of `DigestItem`s associated with the block.\"}}}}}}},\"ParachainInclusion\":{\"type\":\"object\",\"properties\":{\"parachainBlock\":{\"type\":\"integer\",\"description\":\"The parachain block number that was searched for.\"},\"parachainBlockHash\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"The hash of the parachain block.\"},\"parachainId\":{\"type\":\"integer\",\"description\":\"The parachain ID.\"},\"relayParentNumber\":{\"type\":\"integer\",\"description\":\"The relay chain block number used as parent during parachain block production.\"},\"inclusionNumber\":{\"type\":\"integer\",\"nullable\":true,\"description\":\"The relay chain block number where the parachain block was included (null if not found).\"},\"found\":{\"type\":\"boolean\",\"description\":\"Whether the inclusion was found within the search depth.\"}},\"required\":[\"parachainBlock\",\"parachainBlockHash\",\"parachainId\",\"relayParentNumber\",\"inclusionNumber\",\"found\"]},\"ParasLeasesCurrent\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"leasePeriodIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Current lease period index. This value may be null when the current block now, substracted by the leaseOffset is less then zero.\"},\"endOfLeasePeriod\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Last block (number) of the current lease period. This value may be null when `leasePeriodIndex` is null.\"},\"currentLeaseHolders\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"description\":\"List of `paraId`s that currently hold a lease.\"}}},\"ParasLeaseInfo\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"paraLifecycle\":{\"$ref\":\"#/components/schemas/ParaLifecycle\"},\"onboardingAs\":{\"$ref\":\"#/components/schemas/OnboardingAs\"},\"leases\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"leasePeriodIndex\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"account\":{\"type\":\"string\"},\"deposit\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"List of lease periods for which the `paraId` holds a lease along with\\nthe deposit held and the associated `accountId`.\\n\"}}},\"ParaLifecycle\":{\"type\":\"string\",\"enum\":[\"onboarding\",\"parathread\",\"parachain\",\"upgradingParathread\",\"downgradingParachain\",\"offboardingParathread\",\"offboardingParachain\"],\"description\":\"The possible states of a para, to take into account delayed lifecycle\\nchanges.\\n\"},\"Payouts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"validatorId\":{\"type\":\"string\",\"description\":\"AccountId of the validator the payout is coming from.\"},\"nominatorStakingPayout\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Payout for the reward destination associated with the accountId the query was made for.\"},\"claimed\":{\"type\":\"boolean\",\"description\":\"Whether or not the reward has been claimed.\"},\"totalValidatorRewardPoints\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Number of reward points earned by the validator.\"},\"validatorCommission\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The percentage of the total payout that the validator takes as commission, expressed as a Perbill.\"},\"totalValidatorExposure\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The sum of the validator's and its nominators' stake.\"},\"nominatorExposure\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The amount of stake the nominator has behind the validator.\"}},\"description\":\"Payout for a nominating _Stash_ address and information about the validator they were nominating.\"}},\"PeerInfo\":{\"type\":\"object\",\"properties\":{\"peerId\":{\"type\":\"string\",\"description\":\"Peer ID.\"},\"roles\":{\"type\":\"string\",\"description\":\"Roles the peer is running\"},\"protocolVersion\":{\"type\":\"string\",\"description\":\"Peer's protocol version.\",\"format\":\"unsignedInteger\"},\"bestHash\":{\"type\":\"string\",\"description\":\"Hash of the best block on the peer's canon chain.\",\"format\":\"hex\"},\"bestNumber\":{\"type\":\"string\",\"description\":\"Height of the best block on the peer's canon chain.\",\"format\":\"unsignedInteger\"}}},\"RewardPool\":{\"type\":\"object\",\"properties\":{\"lastRecordedRewardCounter\":{\"type\":\"number\"},\"lastRecordedTotalPayouts\":{\"type\":\"number\"},\"totalRewardsClaimed\":{\"type\":\"number\"}}},\"RuntimeCode\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"code\":{\"type\":\"string\",\"format\":\"hex\"}}},\"RuntimeDispatchInfo\":{\"type\":\"object\",\"properties\":{\"weight\":{\"$ref\":\"#/components/schemas/WeightsV2\",\"description\":\"Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\"},\"class\":{\"type\":\"string\",\"description\":\"Extrinsic class.\",\"enum\":[\"Normal\",\"Operational\",\"Mandatory\"]},\"partialFee\":{\"type\":\"string\",\"description\":\"The _inclusion fee_ of a transaction, i.e. the minimum fee required for a transaction. Includes weight and encoded length fees, but does not have access to any signed extensions, e.g. the `tip`.\",\"format\":\"unsignedInteger\"},\"kind\":{\"type\":\"string\",\"description\":\"Information on the partialFee that is collected. Can be either `preDispatch`, `postDispatch` or `fromEvent`. `preDispatch` means the information used to collect the fee was from `payment_queryInfo`, `postDispatch` means the information used to calculate the fee was from finalized weights for the extrinsic, and `fromEvent` means that the partialFee was abstracted from the `TransactionPayment::TransactionPaidFee` event.\"}},\"description\":\"RuntimeDispatchInfo for the transaction. Includes the `partialFee`.\"},\"RuntimeMetadata\":{\"type\":\"object\",\"description\":\"Substrate runtime metadata containing pallet information, types registry, and API specifications.\\nThe structure varies significantly between different runtime versions (V9-V16) and different chains.\\nThis is a generic container that preserves the actual metadata structure as returned by the runtime.\\n\",\"properties\":{\"magicNumber\":{\"type\":\"string\",\"description\":\"The magic number identifying this as Substrate metadata (typically \\\"1635018093\\\")\",\"example\":\"1635018093\"},\"metadata\":{\"type\":\"object\",\"description\":\"Version-specific metadata content. The structure depends entirely on the runtime metadata version\\nand can include various combinations of pallets, lookup registries, extrinsics, APIs, and other\\nruntime-specific information.\\n\"}},\"required\":[\"magicNumber\",\"metadata\"]},\"RuntimeSpec\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"authoringVersion\":{\"type\":\"string\",\"description\":\"The version of the authorship interface. An authoring node will not attempt to author blocks unless this is equal to its native runtime.\"},\"chainType\":{\"$ref\":\"#/components/schemas/ChainType\"},\"implVersion\":{\"type\":\"string\",\"description\":\"Version of the implementation specification. Non-consensus-breaking optimizations are about the only changes that could be made which would result in only the `impl_version` changing. The `impl_version` is set to 0 when `spec_version` is incremented.\"},\"specName\":{\"type\":\"string\",\"description\":\"Identifies the different Substrate runtimes.\"},\"specVersion\":{\"type\":\"string\",\"description\":\"Version of the runtime specification.\"},\"transactionVersion\":{\"type\":\"string\",\"description\":\"All existing dispatches are fully compatible when this number doesn't change. This number must change when an existing dispatchable (module ID, dispatch ID) is changed, either through an alteration in its user-level semantics, a parameter added/removed/changed, a dispatchable being removed, a module being removed, or a dispatchable/module changing its index.\"},\"properties\":{\"type\":\"object\",\"description\":\"Arbitrary properties defined in the chain spec.\"}},\"description\":\"Version information related to the runtime.\"},\"SanitizedEvent\":{\"type\":\"object\",\"properties\":{\"method\":{\"type\":\"string\"},\"data\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"Signature\":{\"type\":\"object\",\"properties\":{\"signature\":{\"type\":\"string\",\"format\":\"hex\"},\"signer\":{\"type\":\"string\",\"format\":\"ss58\"}},\"description\":\"Object with `signature` and `signer`, or `null` if unsigned.\"},\"SpanId\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"target\":{\"type\":\"string\"},\"id\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"StakingLedger\":{\"type\":\"object\",\"properties\":{\"stash\":{\"type\":\"string\",\"description\":\"The _Stash_ account whose balance is actually locked and at stake.\",\"format\":\"ss58\"},\"total\":{\"type\":\"string\",\"description\":\"The total amount of the _Stash_'s balance that we are currently accounting for. Simply `active + unlocking`.\",\"format\":\"unsignedInteger\"},\"active\":{\"type\":\"string\",\"description\":\"The total amount of the _Stash_'s balance that will be at stake in any forthcoming eras.\",\"format\":\"unsignedInteger\"},\"unlocking\":{\"type\":\"string\",\"description\":\"Any balance that is becoming free, which may eventually be transferred out of the _Stash_ (assuming it doesn't get slashed first). Represented as an array of objects, each with an `era` at which `value` will be unlocked.\",\"format\":\"unsignedInteger\"},\"claimedRewards\":{\"type\":\"array\",\"description\":\"Array of objects, each containing an `era` and its corresponding `status`, which represents the rewards status of the queried Stash account. The queried account can either be a validator or nominator account. This array is populated with values from `stakingLedger.lastReward`, `stakingLedger.legacyClaimedRewards` or `stakingLedger.claimedRewards`, as well as the `query.staking.claimedRewards` call, depending on whether the queried block is before or after the migration. For more details on the implementation and the migration, refer to the related PR (https://github.com/paritytech/substrate-api-sidecar/pull/1445) and linked issue (https://github.com/paritytech/substrate-api-sidecar/issues/1433#issuecomment-2075914389).\",\"items\":{\"type\":\"object\",\"properties\":{\"era\":{\"type\":\"string\",\"description\":\"The era for which we check the rewards status.\",\"format\":\"unsignedInteger\"},\"status\":{\"type\":\"string\",\"description\":\"The rewards status of the stakers backing a validator.\",\"enum\":[\"claimed\",\"unclaimed\",\"partially claimed\"]}}}}},\"description\":\"The staking ledger.\"},\"StakingProgress\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"activeEra\":{\"type\":\"string\",\"description\":\"`EraIndex` of the era being rewarded.\\n\",\"format\":\"unsignedInteger\"},\"forceEra\":{\"type\":\"string\",\"description\":\"Current status of era forcing.\",\"enum\":[\"ForceNone\",\"NotForcing\",\"ForceAlways\",\"ForceNew\"]},\"nextActiveEraEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the next active era will start. Not included in response when `forceEra.isForceNone`.\",\"format\":\"unsignedInteger\"},\"nextSessionEstimate\":{\"type\":\"string\",\"description\":\"Upper bound estimate of the block height at which the next session will start.\",\"format\":\"unsignedInteger\"},\"unappliedSlashes\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/UnappliedSlash\"},\"description\":\"Array of upcoming `UnappliedSlash` indexed by era.\"},\"electionStatus\":{\"$ref\":\"#/components/schemas/ElectionStatus\"},\"idealValidatorCount\":{\"type\":\"string\",\"description\":\"Upper bound of validator set size; considered the ideal size. Not included in response when `forceEra.isForceNone`.\",\"format\":\"unsignedInteger\"},\"validatorSet\":{\"type\":\"array\",\"description\":\"Stash account IDs of the validators for the current session. Not included in response when `forceEra.isForceNone`.\",\"items\":{\"type\":\"string\",\"format\":\"ss58\"}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"StakingValidators\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"validators\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"address\":{\"type\":\"string\",\"description\":\"Address of validator.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of individual validator (active/waiting).\"},\"commission\":{\"type\":\"string\",\"description\":\"The validator's commission rate as parts-per-billion (e.g., \\\"100000000\\\" = 10%). Not present for chilled validators.\"},\"blocked\":{\"type\":\"boolean\",\"description\":\"Whether the validator is blocked from receiving new nominations. Not present for chilled validators.\"}}}},\"validatorsToBeChilled\":{\"description\":\"Validators that will not be participating in the next era.\",\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"address\":{\"type\":\"string\",\"description\":\"Address of validator.\"},\"status\":{\"type\":\"string\",\"description\":\"Status of individual validator (active/waiting).\"}}}},\"rcBlockHash\":{\"type\":\"string\",\"description\":\"The relay chain block hash used for the query. Only present when `useRcBlock` parameter is used.\"},\"rcBlockNumber\":{\"type\":\"string\",\"description\":\"The relay chain block number used for the query. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"},\"ahTimestamp\":{\"type\":\"string\",\"description\":\"The Asset Hub block timestamp. Only present when `useRcBlock` parameter is used.\",\"format\":\"unsignedInteger\"}}},\"StorageEntryTypeV13\":{\"type\":\"object\",\"properties\":{\"hasher\":{\"type\":\"string\",\"description\":\"Returns a string deonting the storage hasher.\"},\"key\":{\"type\":\"string\",\"description\":\"Key of the queried pallet storageId.\"},\"value\":{\"type\":\"string\",\"description\":\"Value of the queried pallet storageId.\"},\"linked\":{\"type\":\"boolean\"}}},\"StorageEntryTypeV14\":{\"type\":\"object\",\"properties\":{\"hasher\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Returns a string denoting the storage hasher inside of an array.\"},\"key\":{\"type\":\"string\",\"description\":\"The SiLookupTypeId to identify the type.\"},\"value\":{\"type\":\"string\",\"description\":\"The SiLookupTypeId to identify the type.\"}}},\"TraceEvent\":{\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"object\",\"properties\":{\"stringValues\":{\"$ref\":\"#/components/schemas/TraceEventDataStringValues\"}}},\"parentId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"target\":{\"type\":\"string\"}}},\"TraceEventDataStringValues\":{\"type\":\"object\",\"properties\":{\"key\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"The complete storage key for the entry.\"},\"method\":{\"type\":\"string\",\"description\":\"Normally one of Put or Get.\"},\"result\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"Hex scale encoded storage value.\"}},\"description\":\"Note these exact values will only be present for storage events.\"},\"TraceSpan\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"name\":{\"type\":\"string\"},\"parentId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"target\":{\"type\":\"string\"},\"wasm\":{\"type\":\"boolean\"}}},\"Transaction\":{\"type\":\"object\",\"properties\":{\"tx\":{\"type\":\"string\",\"format\":\"hex\"}}},\"TransactionDispatchOutcome\":{\"type\":\"object\",\"description\":\"The result of a valid transaction submitted via the `dry-run` endpoint.\",\"properties\":{\"actualWeight\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The actual weight of the transaction.\"},\"paysFee\":{\"type\":\"string\",\"format\":\"boolean\",\"description\":\"Whether the transaction pays a fee.\"}}},\"TransactionDispatchError\":{\"type\":\"object\",\"description\":\"The reason why the dispatch call failed.\",\"properties\":{\"errorType\":{\"type\":\"string\",\"enum\":[\"Other\",\"CannotLookup\",\"BadOrigin\",\"ModuleError\",\"ConsumerRemaining\",\"NoProviders\",\"TooManyConsumers\",\"TokenError\",\"ArithmeticError\",\"TransactionalError\",\"Exhausted\",\"Corruption\",\"Unavailable\",\"RootNotAllowed\"],\"description\":\"The type of transaction error.\"}}},\"TransactionValidityError\":{\"type\":\"object\",\"description\":\"The error result from an invalid transaction submitted via the `dry-run` endpoint.\",\"properties\":{\"errorType\":{\"type\":\"string\",\"enum\":[\"Unimplemented\",\"VersionedConversionFailed\"],\"description\":\"The type of transaction error, either `Unimplemented` or `VersionedConversionFailed`.\"}}},\"DryRunBody\":{\"type\":\"object\",\"properties\":{\"at\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"tx\":{\"type\":\"string\",\"format\":\"hex\"},\"senderAddress\":{\"type\":\"string\",\"format\":\"ss58\"}}},\"TransactionDryRun\":{\"type\":\"object\",\"properties\":{\"resultType\":{\"type\":\"string\",\"enum\":[\"DispatchOutcome\",\"DispatchError\",\"TransactionValidityError\"],\"description\":\"The result will be either a `DispatchOutcome` if the transaction is valid, a `DispatchError` if the transaction failed, or a `TransactionValidityError` if the transaction is invalid.\"},\"result\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/TransactionDispatchOutcome\"},{\"$ref\":\"#/components/schemas/TransactionDispatchError\"},{\"$ref\":\"#/components/schemas/TransactionValidityError\"}]}},\"description\":\"References:\\n - `PostDispatchInfo`: https://docs.rs/frame-support/38.0.0/frame_support/dispatch/struct.PostDispatchInfo.html\\n - `DispatchError`: https://docs.rs/sp-runtime/39.0.1/sp_runtime/enum.DispatchError.html\\n - `Error Type`: https://paritytech.github.io/polkadot-sdk/master/xcm_runtime_apis/dry_run/enum.Error.html\"},\"TransactionFailedToParse\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"error\":{\"type\":\"string\",\"description\":\"`Failed to parse a tx.`\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"cause\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"}},\"description\":\"Error message when Sidecar fails to parse the transaction.\"},\"TransactionFailedToSubmit\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"error\":{\"type\":\"string\",\"description\":\"Failed to submit transaction.\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"cause\":{\"type\":\"string\"},\"stack\":{\"type\":\"string\"}},\"description\":\"Error message when the node rejects the submitted transaction.\"},\"TransactionFailure\":{\"oneOf\":[{\"$ref\":\"#/components/schemas/TransactionFailedToSubmit\"},{\"$ref\":\"#/components/schemas/TransactionFailedToParse\"}]},\"TransactionFeeEstimate\":{\"type\":\"object\",\"properties\":{\"weight\":{\"$ref\":\"#/components/schemas/WeightsV2\",\"description\":\"Weights represented as WeightsV2 (two dimensional weights). When querying historical blocks that use WeightsV1, the weight will be returned as a weight key that points to a number represented as a string.\"},\"class\":{\"type\":\"string\",\"description\":\"Extrinsic class.\",\"enum\":[\"Normal\",\"Operational\",\"Mandatory\"]},\"partialFee\":{\"type\":\"string\",\"description\":\"Expected inclusion fee for the transaction. Note that the fee rate changes up to 30% in a 24 hour period and this will not be the exact fee.\",\"format\":\"unsignedInteger\"}},\"description\":\"Note: `partialFee` does not include any tips that you may add to increase a transaction's priority. See [compute_fee](https://crates.parity.io/pallet_transaction_payment/struct.Module.html#method.compute_fee).\"},\"TransactionFeeEstimateFailure\":{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"at\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\"}}},\"error\":{\"type\":\"string\",\"description\":\"Error description.\"},\"transaction\":{\"type\":\"string\",\"format\":\"hex\"},\"block\":{\"type\":\"string\",\"description\":\"Block hash of the block fee estimation was attempted at.\"},\"cause\":{\"type\":\"string\",\"description\":\"Error message from the client.\"},\"stack\":{\"type\":\"string\"}}},\"TransactionMaterial\":{\"type\":\"object\",\"properties\":{\"at\":{\"$ref\":\"#/components/schemas/BlockIdentifiers\"},\"genesisHash\":{\"type\":\"string\",\"description\":\"The hash of the chain's genesis block.\",\"format\":\"blockHash\"},\"chainName\":{\"type\":\"string\",\"description\":\"The chain's name.\"},\"specName\":{\"type\":\"string\",\"description\":\"The chain's spec.\"},\"specVersion\":{\"type\":\"string\",\"description\":\"The spec version. Always increased in a runtime upgrade.\"},\"txVersion\":{\"type\":\"string\",\"description\":\"The transaction version. Common `txVersion` numbers indicate that the transaction encoding format and method indices are the same. Needed for decoding in an offline environment. Adding new transactions does not change `txVersion`.\"},\"metadata\":{\"type\":\"string\",\"description\":\"The chain's metadata. It will only be present when the metadata query param is used.\"}},\"description\":\"Note: `chainName`, `specName`, and `specVersion` are used to define a type registry with a set of signed extensions and types. For Polkadot and Kusama, `chainName` is not used in defining this registry, but in other Substrate-based chains that re-launch their network without changing the `specName`, the `chainName` would be needed to create the correct registry. Substrate Reference: - `RuntimeVersion`: https://crates.parity.io/sp_version/struct.RuntimeVersion.html - `SignedExtension`: https://crates.parity.io/sp_runtime/traits/trait.SignedExtension.html - FRAME Support: https://crates.parity.io/frame_support/metadata/index.html\"},\"TransactionPool\":{\"type\":\"object\",\"properties\":{\"pool\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"H256 hash of the extrinsic.\"},\"encodedExtrinsic\":{\"type\":\"string\",\"format\":\"hex\",\"description\":\"Scale encoded extrinsic.\"},\"tip\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"The tip included in the extrinsic. Only included if the query param `includeFee` is set to true.\"},\"priority\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Computed priority of an extrinsic. Only included if the query param `includeFee` is set to true.\"},\"partialFee\":{\"type\":\"string\",\"format\":\"unsignedInteger\",\"description\":\"Provided `partialFee` of an extrinsic. Only included if the query param `includeFee` is set to true.\"}}}}}},\"TransactionSuccess\":{\"type\":\"object\",\"properties\":{\"hash\":{\"type\":\"string\",\"description\":\"The hash of the encoded transaction.\"}}},\"UnappliedSlash\":{\"type\":\"object\",\"properties\":{\"validator\":{\"type\":\"string\",\"description\":\"Stash account ID of the offending validator.\",\"format\":\"ss58\"},\"own\":{\"type\":\"string\",\"description\":\"The amount the validator will be slashed.\",\"format\":\"unsignedInteger\"},\"others\":{\"type\":\"array\",\"description\":\"Array of tuples(`[accountId, amount]`) representing all the stashes of other slashed stakers and the amount they will be slashed.\",\"items\":{\"type\":\"string\",\"format\":\"tuple[ss58, unsignedInteger]\"}},\"reporters\":{\"type\":\"array\",\"description\":\"Array of account IDs of the reporters of the offense.\",\"items\":{\"type\":\"string\",\"format\":\"ss58\"}},\"payout\":{\"type\":\"string\",\"description\":\"Amount of bounty payout to reporters.\",\"format\":\"unsignedInteger\"}}},\"VestingSchedule\":{\"type\":\"object\",\"properties\":{\"locked\":{\"type\":\"string\",\"description\":\"Number of tokens locked at start.\",\"format\":\"unsignedInteger\"},\"perBlock\":{\"type\":\"string\",\"description\":\"Number of tokens that gets unlocked every block after `startingBlock`.\",\"format\":\"unsignedInteger\"},\"startingBlock\":{\"type\":\"string\",\"description\":\"Starting block for unlocking (vesting).\",\"format\":\"unsignedInteger\"},\"vested\":{\"type\":\"string\",\"description\":\"Amount that has vested based on time elapsed for this schedule. Only present when `includeClaimable` parameter is used.\",\"format\":\"unsignedInteger\"}},\"description\":\"Vesting schedule for an account.\"},\"WeightsV2\":{\"type\":\"object\",\"properties\":{\"refTime\":{\"type\":\"string\",\"description\":\"The weight of computational time used based on some reference hardware.\"},\"proofSize\":{\"type\":\"string\",\"description\":\"The weight of storage space used by proof of validity.\"}}},\"WinningData\":{\"type\":\"object\",\"properties\":{\"bid\":{\"type\":\"object\",\"properties\":{\"accountId\":{\"type\":\"string\"},\"paraId\":{\"type\":\"string\",\"format\":\"unsignedInteger\"},\"amount\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"leaseSet\":{\"type\":\"array\",\"items\":{\"type\":\"string\",\"format\":\"unsignedInteger\"}}},\"description\":\"A currently winning bid and the set of lease periods the bid is for. The\\n`amount` of the bid is per lease period. The `bid` property will be `null`\\nif no bid has been made for the corresponding `leaseSet`.\\n\"}},\"requestBodies\":{\"Transaction\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/Transaction\"}}},\"required\":true},\"TransactionDryRun\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/DryRunBody\"}}},\"required\":true},\"ContractMetadata\":{\"content\":{\"application/json\":{\"schema\":{\"$ref\":\"#/components/schemas/ContractMetadata\"}}}}}}}\n\n//# sourceURL=webpack://sidecar-swagger-ui/./src/openapi-v1.yaml?"); /***/ }), diff --git a/docs/src/openapi-v1.yaml b/docs/src/openapi-v1.yaml index 379862092..688d82b4c 100755 --- a/docs/src/openapi-v1.yaml +++ b/docs/src/openapi-v1.yaml @@ -72,6 +72,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: assets in: query description: An array of AssetId's to be queried. If not supplied, defaults to providing @@ -135,6 +143,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: assetId in: query description: The `assetId` associated with the asset-approval. @@ -201,6 +217,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: token in: query description: 'Token to query the balance of. If not specified it will query @@ -338,6 +362,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: assets in: query description: An array of AssetId's to be queried. If not supplied, defaults to providing @@ -401,6 +433,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: assetId in: query description: The `assetId` associated with the asset-approval. @@ -468,6 +508,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: foreignAssets in: query description: An array of multilocation JSON strings to be queried. If not supplied, all @@ -531,6 +579,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successfull operation @@ -582,6 +638,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: includeClaimedRewards in: query description: When set to `false`, the `claimedRewards` field is not included @@ -655,6 +719,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: depth in: query description: The number of eras to query for payouts of. Must be less @@ -742,6 +814,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: includeClaimable in: query description: When set to 'true', calculates and includes vested amounts for each vesting schedule plus the claimable amount. For Asset Hub post-migration queries, this requires a relay chain connection since vesting schedules use relay chain block numbers. @@ -1672,6 +1752,14 @@ paths: schema: type: boolean default: false + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -1751,12 +1839,20 @@ paths: type: string - name: useRcBlock in: query - description: When set to `true`, it will use the relay chain block identifier to determine + description: When set to `true`, it will use the relay chain block identifier to determine the corresponding Asset Hub block. Only supported for Asset Hub endpoints with relay chain API available. When used, returns an array of response objects or empty array if no Asset Hub block found. required: false schema: type: boolean default: false + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: useEvmFormat in: query description: When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM. @@ -1807,6 +1903,14 @@ paths: schema: type: boolean default: false + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -1873,12 +1977,20 @@ paths: default: false - name: useRcBlock in: query - description: When set to `true`, it will use the relay chain block identifier to determine + description: When set to `true`, it will use the relay chain block identifier to determine the corresponding Asset Hub block. Only supported for Asset Hub endpoints with relay chain API available. When used, returns an array of response objects or empty array if no Asset Hub block found. required: false schema: type: boolean default: false + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: useEvmFormat in: query description: When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM. @@ -1964,13 +2076,21 @@ paths: type: string - name: useRcBlock in: query - description: When set to `true`, it will use the latest relay chain block to determine the + description: When set to `true`, it will use the latest relay chain block to determine the corresponding Asset Hub block. Only supported for Asset Hub endpoints with relay chain API available. Respects the `finalized` parameter when determining which relay chain block to use. When used, returns an array of response objects or empty array if no Asset Hub block found. required: false schema: type: boolean default: false + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. - name: useEvmFormat in: query description: When set to `true`, every extrinsic's event emitted by pallet-revive will have the address data formatted to EVM. @@ -2017,6 +2137,14 @@ paths: schema: type: boolean default: false + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2060,6 +2188,14 @@ paths: schema: type: boolean default: false + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2562,6 +2698,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2598,6 +2742,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2640,6 +2792,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2682,6 +2842,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2713,6 +2881,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2751,6 +2927,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2783,6 +2967,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2827,6 +3019,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2890,6 +3090,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -2945,6 +3153,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -3008,6 +3224,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -3064,6 +3288,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -3127,6 +3359,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -3183,6 +3423,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -3246,6 +3494,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -4284,6 +4540,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -4360,6 +4624,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -4410,6 +4682,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -4453,6 +4733,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -4500,6 +4788,14 @@ paths: schema: type: boolean description: When set to 'true', uses relay chain block mode with the 'at' parameter. + - name: useRcBlockFormat + in: query + description: Controls the response format when using 'useRcBlock=true'. When set to 'object', wraps the response in an object containing relay chain block info ('rcBlock') and the parachain data array ('parachainDataPerBlock'). When set to 'array' or omitted, returns the standard array format. Only valid when 'useRcBlock=true' is specified. + required: false + schema: + type: string + enum: [array, object] + description: Response format - 'array' (default) returns standard array, 'object' wraps response with rcBlock info. responses: "200": description: successful operation @@ -4931,6 +5227,34 @@ paths: $ref: '#/components/schemas/BlocksTraceOperations' components: schemas: + RcBlockInfo: + type: object + description: Relay chain block information used when useRcBlockFormat=object. + properties: + hash: + type: string + description: The relay chain block hash. + format: hex + parentHash: + type: string + description: The parent block hash of the relay chain block. + format: hex + number: + type: string + description: The relay chain block number. + format: unsignedInteger + RcBlockObjectResponse: + type: object + description: Response wrapper when using useRcBlockFormat=object. Contains relay chain block info and an array of parachain data. + properties: + rcBlock: + $ref: '#/components/schemas/RcBlockInfo' + parachainDataPerBlock: + type: array + description: Array of response objects, one for each Asset Hub block found in the relay chain block. Empty array if no Asset Hub blocks found. + items: + type: object + description: The endpoint-specific response data for each Asset Hub block. AccountAssetsApproval: type: object properties: