From b6a7c331f528039c04a5be791aa332f3324b05a2 Mon Sep 17 00:00:00 2001 From: rdlrt <3169068+rdlrt@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:49:07 +1000 Subject: [PATCH 01/13] Makes specs modular --- images/archive/koios.png | Bin 15588 -> 0 bytes images/koios-design.png | Bin 119503 -> 0 bytes specs/README.md | 86 + specs/createspecs.py | 276 +- specs/examples/fixtures.yaml | 166 + .../1-api-info.yaml => fragments/info.yaml} | 2 +- specs/fragments/macros.yaml | 7 + .../parameters.yaml} | 0 specs/fragments/paths/account.yaml | 235 + specs/fragments/paths/address.yaml | 134 + specs/fragments/paths/asset.yaml | 236 + specs/fragments/paths/block.yaml | 87 + specs/fragments/paths/epoch.yaml | 55 + specs/fragments/paths/governance.yaml | 274 + specs/fragments/paths/network.yaml | 129 + specs/fragments/paths/ogmios.yaml | 24 + specs/fragments/paths/pool.yaml | 313 + specs/fragments/paths/script.yaml | 117 + specs/fragments/paths/transactions.yaml | 187 + .../request-bodies.yaml} | 0 specs/fragments/schemas/account.yaml | 272 + specs/fragments/schemas/address.yaml | 125 + specs/fragments/schemas/asset.yaml | 302 + specs/fragments/schemas/block.yaml | 219 + specs/fragments/schemas/epoch.yaml | 414 + specs/fragments/schemas/governance.yaml | 688 ++ specs/fragments/schemas/network.yaml | 233 + specs/fragments/schemas/pool.yaml | 565 ++ specs/fragments/schemas/script.yaml | 157 + specs/fragments/schemas/transactions.yaml | 622 ++ specs/networks.yaml | 10 + specs/results/koiosapi-guild.yaml | 6994 ----------------- specs/results/koiosapi-mainnet.yaml | 2 - specs/results/koiosapi-preprod.yaml | 2 - specs/results/koiosapi-preview.yaml | 2 - specs/template.yaml | 93 + specs/templates/4-api-schemas.yaml | 3607 --------- specs/templates/api-main.yaml | 2395 ------ specs/templates/example-map.json | 241 - 39 files changed, 5973 insertions(+), 13298 deletions(-) delete mode 100644 images/archive/koios.png delete mode 100644 images/koios-design.png create mode 100644 specs/README.md create mode 100644 specs/examples/fixtures.yaml rename specs/{templates/1-api-info.yaml => fragments/info.yaml} (99%) create mode 100644 specs/fragments/macros.yaml rename specs/{templates/2-api-params.yaml => fragments/parameters.yaml} (100%) create mode 100644 specs/fragments/paths/account.yaml create mode 100644 specs/fragments/paths/address.yaml create mode 100644 specs/fragments/paths/asset.yaml create mode 100644 specs/fragments/paths/block.yaml create mode 100644 specs/fragments/paths/epoch.yaml create mode 100644 specs/fragments/paths/governance.yaml create mode 100644 specs/fragments/paths/network.yaml create mode 100644 specs/fragments/paths/ogmios.yaml create mode 100644 specs/fragments/paths/pool.yaml create mode 100644 specs/fragments/paths/script.yaml create mode 100644 specs/fragments/paths/transactions.yaml rename specs/{templates/3-api-requestBodies.yaml => fragments/request-bodies.yaml} (100%) create mode 100644 specs/fragments/schemas/account.yaml create mode 100644 specs/fragments/schemas/address.yaml create mode 100644 specs/fragments/schemas/asset.yaml create mode 100644 specs/fragments/schemas/block.yaml create mode 100644 specs/fragments/schemas/epoch.yaml create mode 100644 specs/fragments/schemas/governance.yaml create mode 100644 specs/fragments/schemas/network.yaml create mode 100644 specs/fragments/schemas/pool.yaml create mode 100644 specs/fragments/schemas/script.yaml create mode 100644 specs/fragments/schemas/transactions.yaml create mode 100644 specs/networks.yaml delete mode 100644 specs/results/koiosapi-guild.yaml create mode 100644 specs/template.yaml delete mode 100644 specs/templates/4-api-schemas.yaml delete mode 100644 specs/templates/api-main.yaml delete mode 100644 specs/templates/example-map.json diff --git a/images/archive/koios.png b/images/archive/koios.png deleted file mode 100644 index 6639703a9baae5ae683f13fdd41a205e1ca51cbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15588 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 MR9PERtq2SKKdcaw0RR91 diff --git a/images/koios-design.png b/images/koios-design.png deleted file mode 100644 index 4f27fc1ce28322d7bd8d5408f96c89774e866991..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119503 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%0Dh{PVn8kcgbs3hXI*23fv_K8Kt`JxAD` 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

}y$O>2`d*x6Nj4WiUzF64| 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

  • M!fe?*;+Bi-Jadf!{vYdhV?|?qWqQ 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 pw21@Q1fVs5Ed77}XCUkN3QPLCgPok[ \t]*)#!(?P" - + "|".join(re.escape(k) for k in PLACEHOLDER_MAP) - + r")!#", +from __future__ import annotations + +import argparse +import pathlib +import re +import sys +import tempfile +import textwrap + +SPECS_DIR = pathlib.Path(__file__).parent + +PATH_ORDER = [ + "network", "epoch", "block", "transactions", "address", "account", + "asset", "governance", "pool", "script", "ogmios", +] + +SCHEMA_ORDER = [ + "network", "pool", "epoch", "block", "address", "account", + "transactions", "asset", "governance", "script", +] + +MACRO_RE = re.compile(r"^([ \t]*)#!macro:(\w+)!#", re.MULTILINE) +PLACEHOLDER_RE = re.compile( + r"^(?P[ \t]*)#!(?P\w+)!#", flags=re.MULTILINE, ) -def _inject(match: re.Match) -> str: - indent = match.group("indent") - key = match.group("key") - block = PLACEHOLDER_MAP[key] - - return textwrap.indent(block, indent) - -def populate_spec(network, outf): - """Populate template spec using network initial and write to outf file""" - template = pathlib.Path(inputspecsfile).read_text() - template = _PH_RE.sub(_inject, template) - template=template.replace("#!info!#", str(pathlib.Path(apiinfofile).read_text()).rstrip()) - template=template.replace("#!params!#", str(pathlib.Path(apiparamsfile).read_text()).rstrip()) - template=template.replace("#!requestBodies!#", str(pathlib.Path(apirequestBodiesfile).read_text()).rstrip()) - template=template.replace("#!schemas!#", str(pathlib.Path(apischemafile).read_text()).rstrip()) - print("Creating " + outf + " using koiosapi.yaml as template...") - for ep, vals in examples["params"].items(): - template = template.replace(f"##{ep}_param##", vals[network]) - for erb, vals in examples["requestBodies"].items(): - template = template.replace(f"##{erb}_rb##", vals[network]) - with open(outf, 'w') as f: - f.write(template) - -def main(): - populate_spec("m", "results/koiosapi-mainnet.yaml") - populate_spec("pv", "results/koiosapi-preview.yaml") - populate_spec("pp", "results/koiosapi-preprod.yaml") - print("Done!!") - -try: - main() -except Exception as e: - print("Error occured : " + str(e) + "\n Traceback : " + str(traceback.print_exc())) + +def _read(path: pathlib.Path) -> str: + return path.read_text().rstrip("\n") + + +def _load_simple_yaml(path: pathlib.Path) -> dict: + """Load a shallow nested YAML dict (no lists) using stdlib only.""" + root: dict = {} + stack: list[tuple[int, dict]] = [(-1, root)] + + for raw_line in path.read_text().splitlines(): + if not raw_line.strip() or raw_line.strip().startswith("#"): + continue + indent = len(raw_line) - len(raw_line.lstrip(" ")) + key, _, value = raw_line.strip().partition(":") + value = value.strip() + while stack and indent <= stack[-1][0]: + stack.pop() + parent = stack[-1][1] + if not value: + parent[key] = {} + stack.append((indent, parent[key])) + else: + parent[key] = value.strip('"').strip("'") + return root + + +def _fixtures_value(val: str) -> str: + """Return fixture value as a string for placeholder substitution.""" + return str(val) + + +def load_macros() -> dict[str, str]: + macros: dict[str, str] = {} + content = _read(SPECS_DIR / "fragments" / "macros.yaml") + for match in re.finditer(r"^(\w+): \|\n", content, re.MULTILINE): + name = match.group(1) + start = match.end() + next_match = re.search(r"^\w+:", content[start:], re.MULTILINE) + end = start + next_match.start() if next_match else len(content) + body = content[start:end].rstrip("\n") + lines = body.splitlines() + nonempty = [line for line in lines if line.strip()] + if nonempty: + min_indent = min(len(line) - len(line.lstrip()) for line in nonempty) + body = "\n".join( + line[min_indent:] if line else "" for line in lines + ) + macros[name] = body + return macros + + +def expand_macros(text: str, macros: dict[str, str]) -> str: + def _replace(match: re.Match) -> str: + indent = match.group(1) + name = match.group(2) + if name not in macros: + raise KeyError(f"Unknown macro: {name}") + body = macros[name].rstrip("\n") + # Macro lines are relative to the placeholder indent (no extra base offset). + return "\n".join(indent + line if line else "" for line in body.splitlines()) + + return MACRO_RE.sub(_replace, text) + + +def merge_paths() -> str: + parts = [] + for name in PATH_ORDER: + path_file = SPECS_DIR / "fragments" / "paths" / f"{name}.yaml" + if not path_file.exists(): + continue + fixed_lines = [] + for line in _read(path_file).splitlines(): + if line.startswith("/"): + fixed_lines.append(" " + line) + else: + fixed_lines.append(line) + parts.append("\n".join(fixed_lines)) + return "\n\n".join(parts) + + +def merge_schemas() -> str: + parts = [] + for name in SCHEMA_ORDER: + schema_file = SPECS_DIR / "fragments" / "schemas" / f"{name}.yaml" + if schema_file.exists(): + parts.append(_read(schema_file)) + return "schemas:\n" + "\n\n".join(parts) + + +def inject_placeholders(template: str, fragments: dict[str, str]) -> str: + def _inject(match: re.Match) -> str: + indent = match.group("indent") + key = match.group("key") + if key not in fragments: + raise KeyError(f"Unknown placeholder: {key}") + return textwrap.indent(fragments[key], indent) + + return PLACEHOLDER_RE.sub(_inject, template) + + +def load_fixtures() -> dict: + fixtures_path = SPECS_DIR / "examples" / "fixtures.yaml" + data = _load_simple_yaml(fixtures_path) + return data + + +def load_networks() -> dict: + data = _load_simple_yaml(SPECS_DIR / "networks.yaml") + return data["networks"] + + +def substitute_examples(text: str, network_name: str, fixtures: dict) -> str: + for section, suffix in (("params", "param"), ("requestBodies", "rb")): + for key, values in fixtures.get(section, {}).items(): + if network_name not in values: + continue + placeholder = f"##{key}_{suffix}##" + text = text.replace(placeholder, _fixtures_value(values[network_name])) + return text + + +def build_spec(network_name: str, network_key: str, fixtures: dict, macros: dict) -> str: + fragments = { + "info": _read(SPECS_DIR / "fragments" / "info.yaml"), + "paths": merge_paths(), + "parameters": _read(SPECS_DIR / "fragments" / "parameters.yaml"), + "requestBodies": _read(SPECS_DIR / "fragments" / "request-bodies.yaml"), + "schemas": merge_schemas(), + } + template = _read(SPECS_DIR / "template.yaml") + spec = inject_placeholders(template, fragments) + spec = expand_macros(spec, macros) + spec = substitute_examples(spec, network_name, fixtures) + return spec + "\n" + + +def write_spec(network_name: str, output: pathlib.Path, fixtures: dict, macros: dict, network_key: str) -> None: + spec = build_spec(network_name, network_key, fixtures, macros) + output.parent.mkdir(parents=True, exist_ok=True) + output.write_text(spec) + print(f"Created {output} ({network_name})") + + +def check_specs(networks: dict, fixtures: dict, macros: dict) -> bool: + ok = True + for name, cfg in networks.items(): + output = SPECS_DIR / cfg["output"] + expected = output.read_text() + generated = build_spec(name, cfg["key"], fixtures, macros) + if generated != expected: + print(f"MISMATCH: {output}", file=sys.stderr) + ok = False + if ok: + print("All specs match committed results.") + return ok + + +def main() -> int: + parser = argparse.ArgumentParser(description="Generate Koios OpenAPI specs from fragments.") + parser.add_argument( + "--network", + choices=["mainnet", "preview", "preprod", "guild"], + help="Generate a single network spec (default: all)", + ) + parser.add_argument( + "--check", + action="store_true", + help="Verify generated specs match committed results/", + ) + args = parser.parse_args() + + fixtures = load_fixtures() + networks = load_networks() + macros = load_macros() + + if args.check: + return 0 if check_specs(networks, fixtures, macros) else 1 + + targets = networks.items() + if args.network: + targets = [(args.network, networks[args.network])] + + for name, cfg in targets: + output = SPECS_DIR / cfg["output"] + write_spec(name, output, fixtures, macros, cfg["key"]) + + print("Done.") + return 0 + + +if __name__ == "__main__": + try: + sys.exit(main()) + except Exception as exc: + print(f"Error: {exc}", file=sys.stderr) + raise diff --git a/specs/examples/fixtures.yaml b/specs/examples/fixtures.yaml new file mode 100644 index 00000000..37fcd157 --- /dev/null +++ b/specs/examples/fixtures.yaml @@ -0,0 +1,166 @@ +params: + _epoch_no: + mainnet: "320" + preview: "675" + preprod: "166" + _stake_address: + mainnet: "stake1u8yxtugdv63wxafy9d00nuz6hjyyp4qnggvc9a3vxh8yl0ckml2uz" + preview: "stake_test1uzs5rxys8qy5jnr9g0mkj860ms5n92nrykmrgyumpf2ytmsejj4m6" + preprod: "stake_test1urkzeud48zxwnjc54emzmmc3gkg2r6d6tm2sd799jxjnqxqlfzmvk" + _tx_hash: + mainnet: "f144a8264acf4bdfe2e1241170969c930d64ab6b0996a4a45237b623f1dd670e" + preview: "f1592b29b79ae85d753913dd25644c60925a4a0683979faa33832fead4b4bd9c" + preprod: "d10133964da9e443b303917fd0b7644ae3d01c133deff85b4f59416c2d00f530" + _asset_policy: + mainnet: "750900e4999ebe0d58f19b634768ba25e525aaf12403bfe8fe130501" + preview: "065270479316f1d92e00f7f9f095ebeaac9d009c878dc35ce36d3404" + preprod: "c6e65ba7878b2f8ea0ad39287d3e2fd256dc5c4160fc19bdf4c4d87e" + _asset_name: + mainnet: "424f4f4b" + preview: "433374" + preprod: "7447454e53" + _asset_policy_nft: + mainnet: "f0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9a" + preview: "005b8ca355aec6125531ebea89bf9ef8df90121ea5717f0c55027e35" + preprod: "002126e5e7cb2f5b6ac52ef2cdb9308ff58bf6e3b62e29df447cec72" + _asset_name_nft: + mainnet: "68616e646c65" + preview: "4d43" + preprod: "74657374" + _drep_id: + mainnet: "drep17l6sywnwqu9aedd6aumev42w39ln5zfl9nw7j4ak6u8swyrwvz3" + preview: "drep17rksqsgqx8ej3rtc3x4gjm8a44u6w3qcshfm46yc9tq4zeffuzj" + preprod: "drep1ydmraa6kv8cvmry059v608tehl50nfmg0z764lmsqkvwurs40sw2z" + _cc_hot_id: + mainnet: "cc_hot1qgqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqvcdjk7" + preview: "cc_hot1qgqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqvcdjk7" + preprod: "cc_hot1qgqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqvcdjk7" + _proposal_id: + mainnet: "gov_action1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpzklpgpf" + preview: "gov_action17m93skslaxyd45gpr6ernkdzs852h564wsterr8l6lheu7hu7kvsqecyqdh" + preprod: "gov_action14lefp8upwhhq92xph7t075txshf9huxxh9d2ey05ml2n5hqgvlxqqp92kfl" + _pool_bech32: + mainnet: "pool155efqn9xpcf73pphkk88cmlkdwx4ulkg606tne970qswczg3asc" + preview: "pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q" + preprod: "pool1vw6fr9agt58djrp3w0t0lsn6t329t6eusqxz5ugd9w7ecyedsdv" + _pool_bech32_optional: + mainnet: "pool155efqn9xpcf73pphkk88cmlkdwx4ulkg606tne970qswczg3asc" + preview: "pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q" + preprod: "pool1vw6fr9agt58djrp3w0t0lsn6t329t6eusqxz5ugd9w7ecyedsdv" + _pool_epoch_no: + mainnet: "320" + preview: "12" + preprod: "31" + _script_hash: + mainnet: "d8480dc869b94b80e81ec91b0abe307279311fe0e7001a9488f61ff8" + preview: "f758cf422ca0cbed7d9d6fad1eb5a3c70537d62e661ad450dd2a3810" + preprod: "14abafb323de75b7266fd0eab29b6ef562305e8a0dfbb64b07ef32c7" +requestBodies: + epoch_no: + mainnet: "409" + preview: "11" + preprod: "30" + asset1: + mainnet: ['750900e4999ebe0d58f19b634768ba25e525aaf12403bfe8fe130501','424f4f4b'] + preview: ['065270479316f1d92e00f7f9f095ebeaac9d009c878dc35ce36d3404','433374'] + preprod: ['c6e65ba7878b2f8ea0ad39287d3e2fd256dc5c4160fc19bdf4c4d87e','7447454e53'] + asset2: + mainnet: ['f0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9a','6b6f696f732e72657374'] + preview: ['189e2c53985411addb8df0f3e09f70e343da69f06746c408aba672a8','15fc257714a51769e192761d674db2ee2e80137428e522f9b914debb5f785301'] + preprod: ['777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8','6141414441'] + stake_addresses1: + mainnet: "stake1uyrx65wjqjgeeksd8hptmcgl5jfyrqkfq0xe8xlp367kphsckq250" + preview: "stake_test1urqntq4wexjylnrdnp97qq79qkxxvrsa9lcnwr7ckjd6w0cr04y4p" + preprod: "stake_test1urq4rcynzj4uxqc74c852zky7wa6epgmn9r6k3j3gv7502q8jks0l" + stake_addresses2: + mainnet: "stake1uxpdrerp9wrxunfh6ukyv5267j70fzxgw0fr3z8zeac5vyqhf9jhy" + preview: "stake_test1up6wqzrw2h9vvjy5zfkjn0dwtymy5r29zyhf8fyhm6fat9c2am5hl" + preprod: "stake_test1ur4t5nhceyn2amfuj7z74uxmmj8jf9fmgd2egqw8c98ve3cp2g4wx" + payment_addresses1: + mainnet: "addr1qy2jt0qpqz2z2z9zx5w4xemekkce7yderz53kjue53lpqv90lkfa9sgrfjuz6uvt4uqtrqhl2kj0a9lnr9ndzutx32gqleeckv" + preview: "addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc" + preprod: "addr_test1vzpwq95z3xyum8vqndgdd9mdnmafh3djcxnc6jemlgdmswcve6tkw" + payment_addresses2: + mainnet: "addr1q9xvgr4ehvu5k5tmaly7ugpnvekpqvnxj8xy50pa7kyetlnhel389pa4rnq6fmkzwsaynmw0mnldhlmchn2sfd589fgsz9dd0y" + preview: "addr_test1vqneq3v0dqh3x3muv6ee3lt8e5729xymnxuavx6tndcjc2cv24ef9" + preprod: "addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc" + address_txs_after_block_height: + mainnet: "6238675" + preview: "40356" + preprod: "9417" + block_info1: + mainnet: "fb9087c9f1408a7bbd7b022fd294ab565fec8dd3a8ef091567482722a1fa4e30" + preview: "a4504e2495ed03b48be36676f430c54dca0769d29f72ebf18d493abf42d2167b" + preprod: "2abeb8d1c1227139763be30ddb7a2fd79abd7d44195fca87a7c836a510b2802d" + block_info2: + mainnet: "60188a8dcb6db0d80628815be2cf626c4d17cb3e826cebfca84adaff93ad492a" + preview: "8e7a6206d2b21ae4f26e7e09353fadae17f838a63d095c2be51acbd16e9b7716" + preprod: "4e790b758c495953bb33c4aad4a4b4c1b98f7c2ec135ebd3db21f32059481718" + block_info3: + mainnet: "c6646214a1f377aa461a0163c213fc6b86a559a2d6ebd647d54c4eb00aaab015" + preview: "1baaf7812ed48e663adb9eeaa68fe25034e5e30b4f8e56cc8600cac5e9d42ce7" + preprod: "389da613316d2aec61edc34d51f1b3d004891ab38c9419771e5e0a3b12de3ef6" + credential_txs_payment_credentials1: + mainnet: "025b0a8f85cb8a46e1dda3fae5d22f07e2d56abb4019a2129c5d6c52" + preview: "33c378cee41b2e15ac848f7f6f1d2f78155ab12d93b713de898d855f" + preprod: "b429738bd6cc58b5c7932d001aa2bd05cfea47020a556c8c753d4436" + credential_txs_payment_credentials2: + mainnet: "13f6870c5e4f3b242463e4dc1f2f56b02a032d3797d933816f15e555" + preview: "52e63f22c5107ed776b70f7b92248b02552fd08f3e747bc745099441" + preprod: "82e016828989cd9d809b50d6976d9efa9bc5b2c1a78d4b3bfa1bb83b" + drep_ids1: + mainnet: "drep1yglrf4el8gghum239fggvfrau25k2576y4dvcz65r2ukj8sqpsc2k" + preview: "drep1yt76he02dprm2af6x26vg76mhs2vajlg43cr9jh9dq3f2qs68ts3s" + preprod: "drep1ydmraa6kv8cvmry059v608tehl50nfmg0z764lmsqkvwurs40sw2z" + drep_ids2: + mainnet: "drep1ytf9f78k7rkwk4cu6l2nvna22keu9yus4kqzc0hqspd36uszu0xc2" + preview: "drep1g5vl99xcpv8uce5hhh50xe3fh68tl9f8hcprleekw0c6jhhr45f" + preprod: "drep1y25j98kvqf7t3tj4pvxwrjr2728dsrfekptgg3kxqrr56qqcny8sn" + tx_ids_tx_hashes1: + mainnet: "f144a8264acf4bdfe2e1241170969c930d64ab6b0996a4a45237b623f1dd670e" + preview: "f1592b29b79ae85d753913dd25644c60925a4a0683979faa33832fead4b4bd9c" + preprod: "d10133964da9e443b303917fd0b7644ae3d01c133deff85b4f59416c2d00f530" + tx_ids_tx_hashes2: + mainnet: "0b8ba3bed976fa4913f19adc9f6dd9063138db5b4dd29cecde369456b5155e94" + preview: "206f6da5b0b0de45605a95f5ce7e172be9674550f7dde3838c45cbf24bab8b00" + preprod: "145688d3619e7524510ea64c0ec6363b77a9b8da179ef9bb0273a0940d57d576" + txbin: + mainnet: "f144a8264acf4bdfe2e1241170969c930d64ab6b0996a4a45237b623f1dd670e" + preview: "f1592b29b79ae85d753913dd25644c60925a4a0683979faa33832fead4b4bd9c" + preprod: "d10133964da9e443b303917fd0b7644ae3d01c133deff85b4f59416c2d00f530" + utxo_ref1: + mainnet: "f144a8264acf4bdfe2e1241170969c930d64ab6b0996a4a45237b623f1dd670e#0" + preview: "206f6da5b0b0de45605a95f5ce7e172be9674550f7dde3838c45cbf24bab8b00#0" + preprod: "d10133964da9e443b303917fd0b7644ae3d01c133deff85b4f59416c2d00f530#0" + utxo_ref2: + mainnet: "0b8ba3bed976fa4913f19adc9f6dd9063138db5b4dd29cecde369456b5155e94#0" + preview: "f1592b29b79ae85d753913dd25644c60925a4a0683979faa33832fead4b4bd9c#0" + preprod: "145688d3619e7524510ea64c0ec6363b77a9b8da179ef9bb0273a0940d57d576#0" + pool_ids_pool_bech32_ids1: + mainnet: "pool100wj94uzf54vup2hdzk0afng4dhjaqggt7j434mtgm8v2gfvfgp" + preview: "pool1p90428kec03mjdya3k4gv5d20w7lmed7ca0snknef5j977l3y8l" + preprod: "pool1ext7qrwjzaxcdfhdnkq5mth59ukuu2atcg6tgqpmevpt7ratkta" + pool_ids_pool_bech32_ids2: + mainnet: "pool102s2nqtea2hf5q0s4amj0evysmfnhrn4apyyhd4azcmsclzm96m" + preview: "pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw" + preprod: "pool1vw6fr9agt58djrp3w0t0lsn6t329t6eusqxz5ugd9w7ecyedsdv" + pool_ids_pool_bech32_ids3: + mainnet: "pool102vsulhfx8ua2j9fwl2u7gv57fhhutc3tp6juzaefgrn7ae35wm" + preview: "pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a" + preprod: "pool1ws42l6rawqjv58crs5l32v0eem3qnngpnjfd7epwd4lmjccc5cg" + script_hashes1: + mainnet: "bd2119ee2bfb8c8d7c427e8af3c35d537534281e09e23013bca5b138" + preview: "c6d963e8892916ab8753d3c342037cd122123c4dd783a07af21f8dac" + preprod: "a8e9f8f34fd631b1d5b9f41a90f4abc0d3935cea7baba0bb34c96f59" + script_hashes2: + mainnet: "c0c671fba483641a71bb92d3a8b7c52c90bf1c01e2b83116ad7d4536" + preview: "c0c671fba483641a71bb92d3a8b7c52c90bf1c01e2b83116ad7d4536" + preprod: "b4fd6dfe4a643aeec5d75dbb1f27198fc2aabf30bf92ed5470253792" + datum_hashes1: + mainnet: "818ee3db3bbbd04f9f2ce21778cac3ac605802a4fcb00c8b3a58ee2dafc17d46" + preview: "6181b3dc623cd8812caf027a3507e9b3095388a7cf3db65983e1fddd3a84c88c" + preprod: "5571e2c3549f15934a38382d1318707a86751fb70827f4cbd29b104480f1be9b" + datum_hashes2: + mainnet: "45b0cfc220ceec5b7c1c62c4d4193d38e4eba48e8815729ce75f9c0ab0e4c1c0" + preview: "f8ae55ff89e1f5366f23e16bcaf2073252337b96031a02d79e41d653b5f0a978" + preprod: "5f7212f546d7e7308ce99b925f05538db19981f4ea3084559c0b28a363245826" diff --git a/specs/templates/1-api-info.yaml b/specs/fragments/info.yaml similarity index 99% rename from specs/templates/1-api-info.yaml rename to specs/fragments/info.yaml index aa6c1321..d2ed7093 100644 --- a/specs/templates/1-api-info.yaml +++ b/specs/fragments/info.yaml @@ -143,4 +143,4 @@ info: A big thank you to the following projects who are already starting to use Koios from early days. A list of tools, libraries and projects utilising Koios (atleast those who'd like to be named) can be found [here](https://www.koios.rest/community.html) x-logo: - url: "https://api.koios.rest/images/koios.png" + url: "https://api.koios.rest/images/koios.svg" diff --git a/specs/fragments/macros.yaml b/specs/fragments/macros.yaml new file mode 100644 index 00000000..af4de1e2 --- /dev/null +++ b/specs/fragments/macros.yaml @@ -0,0 +1,7 @@ +koios_errors: | + "400": + $ref: "#/components/responses/BadRequest" + "401": + $ref: "#/components/responses/Unauthorized" + "404": + $ref: "#/components/responses/NotFound" diff --git a/specs/templates/2-api-params.yaml b/specs/fragments/parameters.yaml similarity index 100% rename from specs/templates/2-api-params.yaml rename to specs/fragments/parameters.yaml diff --git a/specs/fragments/paths/account.yaml b/specs/fragments/paths/account.yaml new file mode 100644 index 00000000..c9d835fa --- /dev/null +++ b/specs/fragments/paths/account.yaml @@ -0,0 +1,235 @@ +/account_list: #RPC + get: + tags: + - Stake Account + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/account_list" + #!macro:koios_errors!# + summary: Account List + description: Get a list of all stake addresses that have atleast 1 transaction + operationId: account_list +/account_info: #RPC + post: + tags: + - Stake Account + requestBody: + $ref: "#/components/requestBodies/stake_addresses" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/account_info" + #!macro:koios_errors!# + summary: Account Information + description: Get the account information for given stake addresses + operationId: account_info +/account_info_cached: #RPC + post: + tags: + - Stake Account + requestBody: + $ref: "#/components/requestBodies/stake_addresses" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/account_info" + #!macro:koios_errors!# + summary: Account Information (Cached) + description: Get the cached account information for given stake addresses (effective for performance query against registered accounts) + operationId: account_info_cached +/account_utxos: #RPC + post: + tags: + - Stake Account + requestBody: + $ref: "#/components/requestBodies/stake_addresses_with_extended" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/utxo_infos" + #!macro:koios_errors!# + summary: UTxOs for stake addresses (accounts) + description: Get a list of all UTxOs for given stake addresses (account)s + operationId: account_utxos +/account_txs: #RPC + get: + tags: + - Stake Account + parameters: + - $ref: "#/components/parameters/_stake_address" + - $ref: "#/components/parameters/_after_block_height" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/address_txs" + #!macro:koios_errors!# + summary: Account Txs + description: Get a list of all Txs for a given stake address (account) + operationId: account_txs +/account_rewards: #RPC + post: + deprecated: true + tags: + - Stake Account + requestBody: + $ref: "#/components/requestBodies/stake_addresses_with_epoch_no" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/account_rewards" + #!macro:koios_errors!# + summary: Account Rewards + description: >- + Get the full rewards history (including MIR) for given stake addresses + operationId: account_rewards + x-badges: + - color: red + label: "Deprecated" +/account_reward_history: #RPC + post: + tags: + - Stake Account + requestBody: + $ref: "#/components/requestBodies/stake_addresses_with_epoch_no" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/account_reward_history" + #!macro:koios_errors!# + summary: Account Reward History + description: >- + Get the full rewards history (including MIR) for given stake addresses + operationId: account_reward_history +/account_updates: #RPC + post: + deprecated: true + tags: + - Stake Account + requestBody: + $ref: "#/components/requestBodies/stake_addresses" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/account_updates" + #!macro:koios_errors!# + summary: Account Updates + description: >- + Get the account updates (registration, deregistration, delegation and + withdrawals) for given stake addresses + operationId: account_updates +/account_update_history: #RPC + post: + tags: + - Stake Account + requestBody: + $ref: "#/components/requestBodies/stake_addresses" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/account_update_history" + #!macro:koios_errors!# + summary: Account Update History + description: >- + Get the account updates (registration, deregistration, delegation and + withdrawals) for given stake addresses + operationId: account_update_history +/account_addresses: #RPC + post: + tags: + - Stake Account + requestBody: + $ref: "#/components/requestBodies/stake_addresses_with_first_only_and_empty" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/account_addresses" + #!macro:koios_errors!# + summary: Account Addresses + description: Get all addresses associated with given staking accounts + operationId: account_addresses +/account_assets: #RPC + post: + tags: + - Stake Account + requestBody: + $ref: "#/components/requestBodies/stake_addresses" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/account_assets" + #!macro:koios_errors!# + summary: Account Assets + description: Get the native asset balance for a given stake address + operationId: account_assets +/account_history: #RPC + post: + deprecated: true + tags: + - Stake Account + requestBody: + $ref: "#/components/requestBodies/stake_addresses" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/account_history" + #!macro:koios_errors!# + summary: Account History + description: Get the staking history of given stake addresses (accounts) + operationId: account_history + x-badges: + - color: red + label: "Deprecated" +/account_stake_history: #RPC + post: + tags: + - Stake Account + requestBody: + $ref: "#/components/requestBodies/stake_addresses" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/account_stake_history" + #!macro:koios_errors!# + summary: Account Stake History + description: Get the staking history of given stake addresses (accounts) + operationId: account_stake_history diff --git a/specs/fragments/paths/address.yaml b/specs/fragments/paths/address.yaml new file mode 100644 index 00000000..f8f96380 --- /dev/null +++ b/specs/fragments/paths/address.yaml @@ -0,0 +1,134 @@ +/address_list: #RPC + get: + tags: + - Address + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/address_list" + #!macro:koios_errors!# + summary: Address List + description: Get a list of all used address on blockchain + operationId: account_list +/address_info: #RPC + post: + tags: + - Address + requestBody: + $ref: "#/components/requestBodies/payment_addresses" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/address_info" + #!macro:koios_errors!# + summary: Address Information + description: Get address info - balance, associated stake address (if any) and UTxO set for given addresses + operationId: address_info +/address_utxos: #RPC + post: + tags: + - Address + requestBody: + $ref: "#/components/requestBodies/payment_addresses_with_extended" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/utxo_infos" + #!macro:koios_errors!# + summary: Address UTxOs + description: Get UTxO set for given addresses + operationId: address_utxos +/address_outputs: #RPC + post: + tags: + - Address + requestBody: + $ref: "#/components/requestBodies/address_txs" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/address_outputs" + #!macro:koios_errors!# + summary: Address Outputs + description: Basic transaction output info for given addresses + operationId: address_outputs +/credential_utxos: #RPC + post: + tags: + - Address + requestBody: + $ref: "#/components/requestBodies/credential_utxos" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/utxo_infos" + #!macro:koios_errors!# + summary: UTxOs from payment credentials + description: Get UTxO details for requested payment credentials + operationId: credential_utxos +/address_txs: #RPC + post: + tags: + - Address + requestBody: + $ref: "#/components/requestBodies/address_txs" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/address_txs" + #!macro:koios_errors!# + summary: Address Transactions + description: Get the transaction hash list of input address array, optionally filtering after specified block height (inclusive) + operationId: address_txs +/credential_txs: #RPC + post: + tags: + - Address + requestBody: + $ref: "#/components/requestBodies/credential_txs" + responses: + "200": + description: Array of transaction hashes for given credential(s) + content: + application/json: + schema: + $ref: "#/components/schemas/address_txs" + #!macro:koios_errors!# + summary: Transactions from payment credentials + description: Get the transaction hash list of input payment credential array, optionally filtering after specified block height (inclusive) + operationId: credential_txs +/address_assets: #RPC + post: + tags: + - Address + requestBody: + $ref: "#/components/requestBodies/payment_addresses" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/address_assets" + #!macro:koios_errors!# + summary: Address Assets + description: Get the list of all the assets (policy, name and quantity) for given addresses + operationId: address_assets diff --git a/specs/fragments/paths/asset.yaml b/specs/fragments/paths/asset.yaml new file mode 100644 index 00000000..85498147 --- /dev/null +++ b/specs/fragments/paths/asset.yaml @@ -0,0 +1,236 @@ +/asset_list: #RPC + get: + tags: + - Asset + parameters: + - $ref: "#/components/parameters/_asset_policy" + - $ref: "#/components/parameters/_asset_name" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/asset_list" + #!macro:koios_errors!# + summary: Asset List + description: Get the list of all native assets (paginated). Use the optional parameters to filter efficiently, bypassing the performance cost of filtering the encoded output. Results are pre-sorted by policy ID and then asset name. + operationId: asset_list +/policy_asset_list: #RPC + get: + tags: + - Asset + parameters: + - $ref: "#/components/parameters/_asset_policy" + responses: + "200": + description: Array of brief information of assets under the same policy + content: + application/json: + schema: + $ref: "#/components/schemas/policy_asset_list" + #!macro:koios_errors!# + summary: Policy Asset List + description: Get the list of asset under the given policy (including balances) + operationId: policy_asset_list +/asset_token_registry: #RPC + get: + tags: + - Asset + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/asset_token_registry" + #!macro:koios_errors!# + summary: Asset Token Registry + description: Get a list of assets registered via token registry on github + operationId: asset_token_registry +/asset_info: #RPC + post: + tags: + - Asset + requestBody: + $ref: "#/components/requestBodies/asset_list" + responses: + "200": + description: Array of detailed asset information + content: + application/json: + schema: + $ref: "#/components/schemas/asset_info" + #!macro:koios_errors!# + summary: Asset Information (Bulk) + description: Get the information of a list of assets including first minting & token registry metadata + operationId: asset_info +/asset_utxos: #RPC + post: + tags: + - Asset + requestBody: + $ref: "#/components/requestBodies/asset_list_with_extended" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/utxo_infos" + #!macro:koios_errors!# + summary: Asset UTxOs + description: Get the UTxO information of a list of assets including + operationId: asset_utxos +/asset_history: #RPC + get: + tags: + - Asset + parameters: + - $ref: "#/components/parameters/_asset_policy" + - $ref: "#/components/parameters/_asset_name" + responses: + "200": + description: Array of asset mint/burn history + content: + application/json: + schema: + $ref: "#/components/schemas/asset_history" + #!macro:koios_errors!# + summary: Asset History + description: Get the mint/burn history of an asset + operationId: asset_history +/asset_addresses: #RPC + get: + tags: + - Asset + parameters: + - $ref: "#/components/parameters/_asset_policy" + - $ref: "#/components/parameters/_asset_name" + responses: + "200": + description: Success! + content: + application/json: + schema: + $ref: "#/components/schemas/asset_addresses" + #!macro:koios_errors!# + summary: Asset Addresses + description: Get the list of all addresses holding a given asset

    + `Note - Due to cardano's UTxO design and usage from projects, asset to addresses map can be infinite. Thus, for a small subset of active projects + with millions of transactions, these might end up with timeouts (HTTP code 504) on free layer. Such large-scale projects are free to subscribe to + query layers to have a dedicated cache table for themselves served via Koios.` + operationId: asset_addresses +/asset_nft_address: #RPC + get: + tags: + - Asset + parameters: + - $ref: "#/components/parameters/_asset_policy_nft" + - $ref: "#/components/parameters/_asset_name_nft" + responses: + "200": + description: Payment addresses currently holding the given NFT + content: + application/json: + schema: + $ref: "#/components/schemas/asset_nft_address" + #!macro:koios_errors!# + summary: NFT Address + description: Get the address where specified NFT currently reside on. + operationId: asset_nft_address +/policy_asset_addresses: #RPC + get: + deprecated: true + tags: + - Asset + parameters: + - $ref: "#/components/parameters/_asset_policy" + responses: + "200": + description: Array of asset names and payment addresses for the given policy (including balances) + content: + application/json: + schema: + $ref: "#/components/schemas/policy_asset_addresses" + #!macro:koios_errors!# + summary: Policy Asset Address List + description: + Get the list of addresses with quantity for each asset on the given policy

    + `Note - Due to cardano's UTxO design and usage from projects, asset to addresses map can be infinite. Thus, for a small subset of active projects + with millions of transactions, these might end up with timeouts (HTTP code 504) on free layer. Such large-scale projects are free to subscribe to + query layers to have a dedicated cache table for themselves served via Koios.` + operationId: policy_asset_addresses +/policy_asset_info: #RPC + get: + deprecated: true + tags: + - Asset + parameters: + - $ref: "#/components/parameters/_asset_policy" + responses: + "200": + description: Array of detailed information of assets under the same policy + content: + application/json: + schema: + $ref: "#/components/schemas/policy_asset_info" + #!macro:koios_errors!# + summary: Policy Asset Information + description: Get the information for all assets under the same policy + operationId: policy_asset_info +/policy_asset_mints: #RPC + get: + tags: + - Asset + parameters: + - $ref: "#/components/parameters/_asset_policy" + responses: + "200": + description: Get a list of mint or burn count details for all assets minted under a policy + content: + application/json: + schema: + $ref: "#/components/schemas/policy_asset_mints" + #!macro:koios_errors!# + summary: Policy Asset Mints + description: Get a list of mint or burn count details for all assets minted under a policy + operationId: policy_asset_mints +/asset_summary: #RPC + get: + tags: + - Asset + parameters: + - $ref: "#/components/parameters/_asset_policy" + - $ref: "#/components/parameters/_asset_name" + responses: + "200": + description: Array of asset summary information + content: + application/json: + schema: + $ref: "#/components/schemas/asset_summary" + #!macro:koios_errors!# + summary: Asset Summary + description: Get the summary of an asset (total transactions exclude minting/total wallets include only wallets with asset balance) + operationId: asset_summary +/asset_txs: #RPC + get: + tags: + - Asset + parameters: + - $ref: "#/components/parameters/_asset_policy" + - $ref: "#/components/parameters/_asset_name" + - $ref: "#/components/parameters/_after_block_height" + - $ref: "#/components/parameters/_history" + responses: + "200": + description: An array of Tx hashes that included the given asset (latest first) + content: + application/json: + schema: + $ref: "#/components/schemas/address_txs" + #!macro:koios_errors!# + summary: Asset Transactions + description: Get the list of current or all asset transaction hashes (newest first) + operationId: asset_txs diff --git a/specs/fragments/paths/block.yaml b/specs/fragments/paths/block.yaml new file mode 100644 index 00000000..b2bc0474 --- /dev/null +++ b/specs/fragments/paths/block.yaml @@ -0,0 +1,87 @@ +/blocks: #RPC + get: + tags: + - Block + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/blocks" + #!macro:koios_errors!# + summary: Block List + description: Get summarised details about all blocks (paginated - latest first) + operationId: blocks +/block_info: #RPC + post: + tags: + - Block + requestBody: + $ref: "#/components/requestBodies/block_hashes" + responses: + "200": + description: Success + content: + application/json: + schema: + $ref: "#/components/schemas/block_info" + #!macro:koios_errors!# + summary: Block Information + description: Get detailed information about a specific block + operationId: block_info +/block_txs: #RPC + post: + tags: + - Block + requestBody: + $ref: "#/components/requestBodies/block_hashes" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/block_txs" + #!macro:koios_errors!# + summary: Block Transactions + description: Get a list of all transactions included in provided blocks + operationId: block_txs +/block_tx_cbor: #RPC + post: + tags: + - Block + requestBody: + $ref: "#/components/requestBodies/block_hashes" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/block_tx_cbor" + #!macro:koios_errors!# + summary: Block Transactions (Raw CBOR) + description: Get raw CBOR data for all transaction(s) within requested blocks + operationId: block_tx_cbor +/block_tx_info: #RPC + post: + deprecated: true + tags: + - Block + requestBody: + $ref: "#/components/requestBodies/block_tx_info" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/block_tx_info" + #!macro:koios_errors!# + summary: Block Transactions (Detailed Info) + description: Get detailed information about transaction(s) for requested blocks + operationId: block_tx_info + x-badges: + - color: red + label: "Deprecated" diff --git a/specs/fragments/paths/epoch.yaml b/specs/fragments/paths/epoch.yaml new file mode 100644 index 00000000..9c55b435 --- /dev/null +++ b/specs/fragments/paths/epoch.yaml @@ -0,0 +1,55 @@ +/epoch_info: #RPC + get: + tags: + - Epoch + parameters: + - $ref: "#/components/parameters/_epoch_no" + - $ref: "#/components/parameters/_include_next_epoch" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/epoch_info" + #!macro:koios_errors!# + summary: Epoch Information + description: Get the epoch information, all epochs if no epoch specified + operationId: epoch_info +/epoch_params: #RPC + get: + tags: + - Epoch + parameters: + - $ref: "#/components/parameters/_epoch_no" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/epoch_params" + #!macro:koios_errors!# + summary: Epoch's Protocol Parameters + description: >- + Get the protocol parameters for specific epoch, returns information + about all epochs if no epoch specified + operationId: epoch_params +/epoch_block_protocols: #RPC + get: + tags: + - Epoch + parameters: + - $ref: "#/components/parameters/_epoch_no" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/epoch_block_protocols" + #!macro:koios_errors!# + summary: Epoch's Block Protocols + description: >- + Get the information about block protocol distribution in epoch + operationId: epoch_block_protocols diff --git a/specs/fragments/paths/governance.yaml b/specs/fragments/paths/governance.yaml new file mode 100644 index 00000000..27f64935 --- /dev/null +++ b/specs/fragments/paths/governance.yaml @@ -0,0 +1,274 @@ +/drep_epoch_summary: #RPC + get: + tags: + - Governance + parameters: + - $ref: "#/components/parameters/_epoch_no" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/drep_epoch_summary" + #!macro:koios_errors!# + summary: DReps Epoch Summary + description: Summary of voting power and DRep count for each epoch + operationId: drep_epoch_summary +/drep_list: #RPC + get: + tags: + - Governance + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/drep_list" + #!macro:koios_errors!# + summary: DReps List + description: List of all active delegated representatives (DReps) + operationId: drep_list +/drep_info: #RPC + post: + tags: + - Governance + requestBody: + $ref: "#/components/requestBodies/drep_id_bulk" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/drep_info" + #!macro:koios_errors!# + summary: DReps Info + description: Get detailed information about requested delegated representatives (DReps) + operationId: drep_info +/drep_metadata: #RPC + post: + tags: + - Governance + requestBody: + $ref: "#/components/requestBodies/drep_id_bulk" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/drep_metadata" + #!macro:koios_errors!# + summary: DReps Metadata + description: List metadata for requested delegated representatives (DReps) + operationId: drep_metadata +/drep_updates: #RPC + get: + tags: + - Governance + parameters: + - $ref: "#/components/parameters/_drep_id_optional" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/drep_updates" + #!macro:koios_errors!# + summary: DReps Updates + description: List of updates for requested (or all) delegated representatives (DReps) + operationId: drep_updates +/drep_history: #RPC + get: + deprecated: true + tags: + - Governance + parameters: + - $ref: "#/components/parameters/_epoch_no" + - $ref: "#/components/parameters/_drep_id_optional" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/drep_voting_power_history" + #!macro:koios_errors!# + summary: DReps Voting Power History + description: History of DReps voting power against each (or requested) epoch + operationId: drep_history + x-badges: + - color: red + label: "Deprecated" +/drep_voting_power_history: #RPC + get: + tags: + - Governance + parameters: + - $ref: "#/components/parameters/_epoch_no" + - $ref: "#/components/parameters/_drep_id_optional" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/drep_voting_power_history" + #!macro:koios_errors!# + summary: DReps Voting Power History + description: History of DReps voting power against each (or requested) epoch + operationId: drep_voting_power_history +/drep_votes: #RPC + get: + deprecated: true + tags: + - Governance + parameters: + - $ref: "#/components/parameters/_drep_id" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/drep_votes" + #!macro:koios_errors!# + summary: DReps Votes + description: List of all votes casted by requested delegated representative (DRep) + operationId: drep_votes + x-badges: + - color: red + label: "Deprecated" +/drep_delegators: #RPC + get: + tags: + - Governance + parameters: + - $ref: "#/components/parameters/_drep_id" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/drep_delegators" + #!macro:koios_errors!# + summary: DReps Delegators + description: List of all delegators to requested delegated representative (DRep). + operationId: drep_delegators +/committee_info: #RPC + get: + tags: + - Governance + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/committee_info" + #!macro:koios_errors!# + summary: Committee Information + description: Information about active committee and its members + operationId: committee_info +/committee_votes: #RPC + get: + tags: + - Governance + parameters: + - $ref: "#/components/parameters/_cc_hot_id" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/committee_votes" + #!macro:koios_errors!# + summary: Committee Votes + description: List of all votes casted by given committee member or collective + operationId: committee_votes +/proposal_list: #RPC + get: + tags: + - Governance + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/proposal_list" + #!macro:koios_errors!# + summary: Proposals List + description: List of all governance proposals + operationId: proposal_list +/voter_proposal_list: #RPC + get: + tags: + - Governance + parameters: + - $ref: "#/components/parameters/_voter_id" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/proposal_list" + #!macro:koios_errors!# + summary: Voter's Proposal List + description: List of all governance proposals for specified DRep, SPO or Committee credential + operationId: voter_proposal_list +/proposal_voting_summary: #RPC + get: + tags: + - Governance + parameters: + - $ref: "#/components/parameters/_proposal_id" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/proposal_voting_summary" + #!macro:koios_errors!# + summary: Proposal Voting Summary + description: Summary of votes for given proposal + operationId: proposal_voting_summary +/proposal_votes: #RPC + get: + tags: + - Governance + parameters: + - $ref: "#/components/parameters/_proposal_id" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/proposal_votes" + #!macro:koios_errors!# + summary: Proposal Votes + description: List of all votes cast on specified governance action + operationId: proposal_votes +/vote_list: #RPC + get: + tags: + - Governance + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/vote_list" + #!macro:koios_errors!# + summary: Vote List + description: List of all votes posted on-chain + operationId: vote_list diff --git a/specs/fragments/paths/network.yaml b/specs/fragments/paths/network.yaml new file mode 100644 index 00000000..27564ae6 --- /dev/null +++ b/specs/fragments/paths/network.yaml @@ -0,0 +1,129 @@ +/tip: #RPC + get: + tags: + - Network + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/tip" + #!macro:koios_errors!# + summary: Query Chain Tip + description: Get the tip info about the latest block seen by chain + operationId: tip +/era_summaries: #RPC + get: + tags: + - Network + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/era_summaries" + #!macro:koios_errors!# + summary: Get Era Summaries + description: Get some information about each era on the network alongwith it's start epoch + operationId: era_summaries +/genesis: #RPC + get: + tags: + - Network + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/genesis" + #!macro:koios_errors!# + summary: Get Genesis info + description: Get the Genesis parameters used to start specific era on chain + operationId: genesis +/totals: #RPC + get: + tags: + - Network + parameters: + - $ref: "#/components/parameters/_epoch_no" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/totals" + #!macro:koios_errors!# + summary: Get historical tokenomic stats + description: >- + Get the circulating utxo, treasury, rewards, supply and reserves in + lovelace for specified epoch, all epochs if empty + operationId: totals +/param_updates: #RPC + get: + tags: + - Network + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/param_updates" + #!macro:koios_errors!# + summary: Param Update Proposals + description: Get all parameter update proposals submitted to the chain starting Shelley era + operationId: param_updates +/cli_protocol_params: #RPC + get: + tags: + - Network + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/cli_protocol_params" + #!macro:koios_errors!# + summary: CLI Protocol Parameters + description: >- + Get Current Protocol Parameters as published by cardano-cli. Note that + the output schema of this command is unfortunately fluid on cardano-node + and may vary between CLI versions/era. Accordingly, the returned output for + this endpoint is left as raw JSON (single row) and any filtering to output should + be done on client-side + operationId: cli_protocol_params +/reserve_withdrawals: #RPC + get: + tags: + - Network + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/reserve_withdrawals" + #!macro:koios_errors!# + summary: Reserve Withdrawals + description: List of all withdrawals from reserves against stake accounts + operationId: reserve_withdrawals +/treasury_withdrawals: #RPC + get: + tags: + - Network + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/reserve_withdrawals" + #!macro:koios_errors!# + summary: Treasury Withdrawals + description: List of all withdrawals from treasury against stake accounts + operationId: treasury_withdrawals diff --git a/specs/fragments/paths/ogmios.yaml b/specs/fragments/paths/ogmios.yaml new file mode 100644 index 00000000..9a252e58 --- /dev/null +++ b/specs/fragments/paths/ogmios.yaml @@ -0,0 +1,24 @@ +/ogmios: #ogmios-api + post: + tags: + - Ogmios + requestBody: + $ref: "#/components/requestBodies/ogmios" + responses: + "200": + description: Current tip of the chain, identified by a slot and a block header hash. + content: + application/json: + schema: + $ref: "#/components/schemas/ogmiostip" + "400": + $ref: "#/components/responses/BadRequest" + summary: Query Example + description: | + Query the current tip of the Network. + +
    +
    + operationId: ogmios diff --git a/specs/fragments/paths/pool.yaml b/specs/fragments/paths/pool.yaml new file mode 100644 index 00000000..19a83ce3 --- /dev/null +++ b/specs/fragments/paths/pool.yaml @@ -0,0 +1,313 @@ +/pool_list: #RPC + get: + tags: + - Pool + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/pool_list" + #!macro:koios_errors!# + summary: Pool List + description: List of brief info for all pools + operationId: pool_list +/pool_info: #RPC + post: + tags: + - Pool + requestBody: + $ref: "#/components/requestBodies/pool_ids" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/pool_info" + #!macro:koios_errors!# + summary: Pool Information + description: Current pool statuses and details for a specified list of pool ids + operationId: pool_info +/pool_stake_snapshot: #RPC + get: + tags: + - Pool + parameters: + - $ref: "#/components/parameters/_pool_bech32" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/pool_snapshot" + #!macro:koios_errors!# + summary: Pool Stake Snapshot + description: Returns Mark, Set and Go stake snapshots for the selected pool, useful for leaderlog calculation + operationId: pool_stake_snapshot +/pool_delegators: #RPC + get: + tags: + - Pool + parameters: + - $ref: "#/components/parameters/_pool_bech32" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/pool_delegators" + #!macro:koios_errors!# + summary: Pool Delegators List + description: Return information about live delegators for a given pool. + operationId: pool_delegators +/pool_delegators_history: #RPC + get: + tags: + - Pool + parameters: + - $ref: "#/components/parameters/_pool_bech32" + - $ref: "#/components/parameters/_epoch_no" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/pool_delegators_history" + #!macro:koios_errors!# + summary: Pool Delegators History + description: Return information about active delegators (incl. history) for a given pool and epoch number (all epochs if not specified). + operationId: pool_delegators_history +/pool_invalid_delegators: #RPC + get: + tags: + - Pool + parameters: + - $ref: "#/components/parameters/_pool_bech32" + - $ref: "#/components/parameters/_epoch_no" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/pool_invalid_delegators" + #!macro:koios_errors!# + summary: Pool Invalid Delegators + description: Return information about delegators for a given pool that are invalid for the specified epoch. + operationId: pool_invalid_delegators +/pool_blocks: #RPC + get: + tags: + - Pool + parameters: + - $ref: "#/components/parameters/_pool_bech32" + - $ref: "#/components/parameters/_epoch_no" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/pool_blocks" + #!macro:koios_errors!# + summary: Pool Blocks + description: >- + Return information about blocks minted by a given pool for all epochs + (or _epoch_no if provided) + operationId: pool_blocks +/pool_owner_history: #RPC + post: + tags: + - Pool + requestBody: + $ref: "#/components/requestBodies/pool_ids" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/pool_owner_history" + #!macro:koios_errors!# + summary: Pool Owner History + description: >- + Return information about pool owner's historical stake and their promised pledge to their pools + operationId: pool_owner_history +/pool_history: #RPC + get: + tags: + - Pool + parameters: + - $ref: "#/components/parameters/_pool_bech32" + - $ref: "#/components/parameters/_epoch_no" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/pool_history_info" + #!macro:koios_errors!# + summary: Pool Stake, Block and Reward History + description: >- + Return information about pool stake, block and reward history in a given epoch _epoch_no + (or all epochs that pool existed for, in descending order if no _epoch_no was provided) + operationId: pool_history +/pool_updates: #RPC + get: + tags: + - Pool + parameters: + - $ref: "#/components/parameters/_pool_bech32_optional" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/pool_updates" + #!macro:koios_errors!# + summary: Pool Updates (History) + description: Return all pool updates for all pools or only updates for specific pool if specified + operationId: pool_updates +/pool_registrations: #RPC + get: + tags: + - Pool + parameters: + - $ref: "#/components/parameters/_pool_epoch_no" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/pool_registrations" + #!macro:koios_errors!# + summary: Pool Registrations + description: Return all pool registrations initiated in the requested epoch + operationId: pool_registrations +/pool_retirements: #RPC + get: + tags: + - Pool + parameters: + - $ref: "#/components/parameters/_epoch_no" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/pool_registrations" + #!macro:koios_errors!# + summary: Pool Retirements + description: Return all pool retirements initiated in the requested epoch + operationId: pool_retirements +/pool_relays: #RPC + get: + tags: + - Pool + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/pool_relays" + #!macro:koios_errors!# + summary: Pool Relays + description: A list of registered relays for all pools + operationId: pool_relays +/pool_voting_power_history: #RPC + get: + tags: + - Governance + parameters: + - $ref: "#/components/parameters/_epoch_no" + - $ref: "#/components/parameters/_pool_bech32_optional" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/pool_voting_power_history" + #!macro:koios_errors!# + summary: Pool's Voting Power History + description: History of Pool voting power against each (or requested) epoch + operationId: pool_voting_power_history +/pool_votes: #RPC + get: + deprecated: true + tags: + - Governance + parameters: + - $ref: "#/components/parameters/_pool_bech32" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/pool_votes" + #!macro:koios_errors!# + summary: Pool Votes + description: List of all votes casted by a pool + operationId: pool_votes + x-badges: + - color: red + label: "Deprecated" + +/pool_groups: #RPC + get: + tags: + - Pool + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/pool_groups" + #!macro:koios_errors!# + summary: Pool Groups + description: List of all registered pool and their groups across sources from [pool_groups](https://github.com/cardano-community/pool_groups) repository. This is only relevant for mainnet + operationId: pool_groups +/pool_metadata: #RPC + post: + tags: + - Pool + requestBody: + $ref: "#/components/requestBodies/pool_ids_optional" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/pool_metadata" + #!macro:koios_errors!# + summary: Pool Metadata + description: Metadata (on & off-chain) for all pools + operationId: pool_metadata +/pool_calidus_keys: #RPC + get: + tags: + - Pool + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/pool_calidus_keys" + #!macro:koios_errors!# + summary: Pool Calidus Keys + description: List of valid calidus keys for all pools + operationId: pool_calidus_keys diff --git a/specs/fragments/paths/script.yaml b/specs/fragments/paths/script.yaml new file mode 100644 index 00000000..931bcf9d --- /dev/null +++ b/specs/fragments/paths/script.yaml @@ -0,0 +1,117 @@ +/script_info: #RPC + post: + tags: + - Script + requestBody: + $ref: "#/components/requestBodies/script_hashes" + responses: + "200": + description: Array of information for scripts requested + content: + application/json: + schema: + $ref: "#/components/schemas/script_info" + #!macro:koios_errors!# + summary: Script Information + description: List of script information for given script hashes + operationId: script_info +/native_script_list: #RPC + get: + tags: + - Script + responses: + "200": + description: List of native script and creation tx hash pairs + content: + application/json: + schema: + $ref: "#/components/schemas/script_list" + #!macro:koios_errors!# + summary: Native Script List + description: List of all existing native script hashes along with their creation transaction hashes + operationId: native_script_list +/plutus_script_list: #RPC + get: + tags: + - Script + responses: + "200": + description: List of Plutus script and creation tx hash pairs + content: + application/json: + schema: + $ref: "#/components/schemas/script_list" + #!macro:koios_errors!# + summary: Plutus Script List + description: List of all existing Plutus script hashes along with their creation transaction hashes + operationId: plutus_script_list +/script_redeemers: #RPC + get: + tags: + - Script + parameters: + - $ref: "#/components/parameters/_script_hash" + responses: + "200": + description: Array of all redeemers for a given script hash + content: + application/json: + schema: + $ref: "#/components/schemas/script_redeemers" + #!macro:koios_errors!# + summary: Script Redeemers + description: List of all redeemers for a given script hash + operationId: script_redeemers +/reference_script_utxos: #RPC + post: + tags: + - Script + requestBody: + $ref: "#/components/requestBodies/script_hashes" + responses: + "200": + description: Array of information for scripts requested + content: + application/json: + schema: + $ref: "#/components/schemas/script_utxos" + #!macro:koios_errors!# + summary: Reference Script UTxOs + description: List of all unspent UTxOs with a reference script matching given script hashes + operationId: reference_script_utxos +/script_utxos: #RPC + get: + deprecated: true + tags: + - Script + parameters: + - $ref: "#/components/parameters/_script_hash" + - $ref: "#/components/parameters/_extended" + responses: + "200": + description: List of UTxOs for a given script hash + content: + application/json: + schema: + $ref: "#/components/schemas/utxo_infos" + #!macro:koios_errors!# + summary: Script UTxOs + description: List of all UTxOs for a given script hash + operationId: script_utxos +/datum_info: #RPC + post: + tags: + - Script + requestBody: + $ref: "#/components/requestBodies/datum_hashes" + responses: + "200": + description: Array of datum information for given datum hashes + content: + application/json: + schema: + $ref: "#/components/schemas/datum_info" + #!macro:koios_errors!# + summary: Datum Information + description: List of datum information for given datum hashes + operationId: datum_info diff --git a/specs/fragments/paths/transactions.yaml b/specs/fragments/paths/transactions.yaml new file mode 100644 index 00000000..22d43e4b --- /dev/null +++ b/specs/fragments/paths/transactions.yaml @@ -0,0 +1,187 @@ +/utxo_info: #RPC + post: + tags: + - Transactions + requestBody: + $ref: "#/components/requestBodies/utxo_refs_with_extended" + responses: + "200": + description: Success! + content: + application/json: + schema: + $ref: "#/components/schemas/utxo_infos" + #!macro:koios_errors!# + summary: UTxO Info + description: Get UTxO set for requested UTxO references + operationId: utxo_info +/tx_cbor: #RPC + post: + tags: + - Transactions + requestBody: + $ref: "#/components/requestBodies/tx_ids" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/tx_cbor" + #!macro:koios_errors!# + summary: Raw Transaction (CBOR) + description: Get raw transaction(s) in CBOR format + operationId: tx_cbor +/tx_info: #RPC + post: + tags: + - Transactions + requestBody: + $ref: "#/components/requestBodies/tx_info" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/tx_info" + #!macro:koios_errors!# + summary: Transaction Information + description: Get detailed information about transaction(s) + operationId: tx_info +/tx_metadata: #RPC + post: + tags: + - Transactions + requestBody: + $ref: "#/components/requestBodies/tx_ids" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/tx_metadata" + #!macro:koios_errors!# + summary: Transaction Metadata + description: Get metadata information (if any) for given transaction(s) + operationId: tx_metadata +/tx_metalabels: #RPC + get: + tags: + - Transactions + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/tx_metalabels" + #!macro:koios_errors!# + summary: Transaction Metadata Labels + description: Get a list of all transaction metalabels + operationId: tx_metalabels +/tx_by_metalabel: #RPC + get: + tags: + - Transactions + parameters: + - $ref: "#/components/parameters/_label" + - $ref: "#/components/parameters/_after_block_height" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/tx_by_metalabel" + #!macro:koios_errors!# + summary: Transactions by Metadata Label + description: Get a list of all transactions that include a specific metadata label (key) + operationId: tx_by_metalabel +/submittx: #submit-api + post: + tags: + - Transactions + requestBody: + $ref: "#/components/requestBodies/txbin" + x-code-samples: + - lang: "Shell" + source: | + # Assuming ${data} is a raw binary serialized transaction on the file-system. + # If using a CLI-generated tx file, please ensure to deserialise (using `xxd -p -r <<< $(jq .cborHex ${tx.signed}) > ${data}`) first before submitting. + curl -X POST \ + --header "Content-Type: application/cbor" \ + --data-binary @${data} https://api.koios.rest/api/v1/submittx + responses: + "202": + description: OK + content: + application/json: + schema: + description: The transaction id. + type: string + format: hex + minLength: 64 + maxLength: 64 + example: 92bcd06b25dfbd89b578d536b4d3b7dd269b7c2aa206ed518012cffe0444d67f + "400": + description: An error occured while submitting transaction. + summary: Submit Transaction + description: Submit an already serialized transaction to the network. + operationId: submittx +/tx_status: #RPC + post: + tags: + - Transactions + requestBody: + $ref: "#/components/requestBodies/tx_ids" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/tx_status" + #!macro:koios_errors!# + summary: Transaction Status + description: Get the number of block confirmations for a given transaction hash list + operationId: tx_status +/tx_outs_epoch: #RPC + get: + tags: + - Transactions + parameters: + - $ref: "#/components/parameters/_epoch_no_reqd" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/tx_outs_epoch" + #!macro:koios_errors!# + summary: Transaction outputs by epoch + description: Get a list of all transaction outputs for requested epoch + operationId: tx_outs_epoch +/tx_utxos: #RPC + post: + deprecated: true + tags: + - Transactions + requestBody: + $ref: "#/components/requestBodies/tx_ids" + responses: + "200": + description: Success!! + content: + application/json: + schema: + $ref: "#/components/schemas/tx_utxos" + #!macro:koios_errors!# + summary: Transaction UTxOs + description: Get UTxO set (inputs/outputs) of transactions [DEPRECATED - Use /utxo_info instead]. + operationId: tx_utxos + x-badges: + - color: red + label: "Deprecated" diff --git a/specs/templates/3-api-requestBodies.yaml b/specs/fragments/request-bodies.yaml similarity index 100% rename from specs/templates/3-api-requestBodies.yaml rename to specs/fragments/request-bodies.yaml diff --git a/specs/fragments/schemas/account.yaml b/specs/fragments/schemas/account.yaml new file mode 100644 index 00000000..5c371bf9 --- /dev/null +++ b/specs/fragments/schemas/account.yaml @@ -0,0 +1,272 @@ + account_list: + description: Array of account (stake address) IDs + type: array + items: + type: object + properties: + stake_address: + $ref: "#/components/schemas/account_history/items/properties/stake_address" + stake_address_hex: + type: string + description: Cardano staking address (reward account) in hex format + example: e1c865f10d66a2e375242b5ef9f05abc8840d413421982f62c35ce4fbf + script_hash: + anyOf: + - type: string + - type: "null" + description: Script hash in case the stake address is locked by a script + example: bf357f5de69e4aad71954bebd64357a4813ea5233df12fce4a9de582 + account_info: + description: Array of stake account information + type: array + items: + type: object + properties: + stake_address: + $ref: "#/components/schemas/account_history/items/properties/stake_address" + status: + type: string + description: Stake address status + enum: ["registered", "not registered"] + example: registered + delegated_drep: + anyOf: + - type: string + - type: "null" + description: Account's current delegation status to DRep ID in CIP-129 Bech32 format + example: drep1yfhyq6tztjksqqpd5lglc3zr2tn8vylgjh9xzz7n2p4l4lgk3qam3 + delegated_pool: + anyOf: + - $ref: "#/components/schemas/pool_list/items/properties/pool_id_bech32" + - type: "null" + total_balance: + type: string + description: Total balance of the account including UTxO, rewards and MIRs (in number) + example: "207116800428" + utxo: + type: string + description: Total UTxO balance of the account + example: "162764177131" + rewards: + type: string + description: Total rewards earned by the account + example: "56457728047" + withdrawals: + type: string + description: Total rewards withdrawn by the account + example: "12105104750" + rewards_available: + type: string + description: Total rewards available for withdrawal + example: "44352623297" + deposit: + type: string + description: Total deposit available for withdrawal + example: "2000000" + reserves: + type: string + description: Total reserves MIR value of the account + example: "0" + treasury: + type: string + description: Total treasury MIR value of the account + example: "0" + proposal-refund: + type: string + description: Total proposal refund for this account + example: "0" + account_rewards: + description: Array of reward history information + type: array + items: + type: object + properties: + stake_address: + $ref: "#/components/schemas/account_history/items/properties/stake_address" + rewards: + type: array + items: + type: object + properties: + earned_epoch: + $ref: "#/components/schemas/reserve_withdrawals/items/properties/earned_epoch" + spendable_epoch: + $ref: "#/components/schemas/reserve_withdrawals/items/properties/spendable_epoch" + amount: + type: string + description: Amount of rewards earned (in number) + type: + type: string + description: The source of the rewards + enum: [member, leader, treasury, reserves, refund] + example: member + pool_id: + anyOf: + - $ref: "#/components/schemas/pool_list/items/properties/pool_id_bech32" + - type: "null" + account_reward_history: + description: Array of reward history information + type: array + items: + type: object + properties: + stake_address: + $ref: "#/components/schemas/account_history/items/properties/stake_address" + earned_epoch: + $ref: "#/components/schemas/reserve_withdrawals/items/properties/earned_epoch" + spendable_epoch: + $ref: "#/components/schemas/reserve_withdrawals/items/properties/spendable_epoch" + amount: + type: string + description: Amount of rewards earned (in number) + type: + type: string + description: The source of the rewards + enum: [member, leader, treasury, reserves, refund] + example: member + pool_id_bech32: + anyOf: + - $ref: "#/components/schemas/pool_list/items/properties/pool_id_bech32" + - type: "null" + account_updates: + description: Array of account updates information + type: array + items: + type: object + properties: + stake_address: + $ref: "#/components/schemas/account_history/items/properties/stake_address" + updates: + type: array + items: + type: object + properties: + action_type: + type: string + description: Type of certificate submitted + enum: + [ + "registration", + "delegation_pool", + "delegation_drep", + "withdrawal", + "deregistration", + ] + example: "registration" + tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + epoch_no: + $ref: "#/components/schemas/blocks/items/properties/epoch_no" + epoch_slot: + $ref: "#/components/schemas/blocks/items/properties/epoch_slot" + absolute_slot: + $ref: "#/components/schemas/blocks/items/properties/abs_slot" + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + account_update_history: + description: Array of account update history information + type: array + items: + type: object + properties: + stake_address: + $ref: "#/components/schemas/account_history/items/properties/stake_address" + action_type: + type: string + description: Type of certificate submitted + enum: + [ + "registration", + "delegation_pool", + "delegation_drep", + "withdrawal", + "deregistration", + ] + example: "registration" + tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + epoch_no: + $ref: "#/components/schemas/blocks/items/properties/epoch_no" + epoch_slot: + $ref: "#/components/schemas/blocks/items/properties/epoch_slot" + absolute_slot: + $ref: "#/components/schemas/blocks/items/properties/abs_slot" + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + account_addresses: + description: Array of payment addresses + type: array + items: + type: object + properties: + stake_address: + $ref: "#/components/schemas/account_history/items/properties/stake_address" + addresses: + type: array + items: + $ref: "#/components/schemas/utxo_infos/items/properties/address" + account_assets: + description: Array of assets owned by account + type: array + items: + type: object + properties: + stake_address: + $ref: "#/components/schemas/account_history/items/properties/stake_address" + policy_id: + $ref: "#/components/schemas/asset_info/items/properties/policy_id" + asset_name: + $ref: "#/components/schemas/asset_info/items/properties/asset_name" + fingerprint: + $ref: "#/components/schemas/asset_info/items/properties/fingerprint" + decimals: + $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" + quantity: + $ref: "#/components/schemas/asset_addresses/items/properties/quantity" + account_history: + description: Array of active stake values per epoch + type: array + items: + properties: + stake_address: + type: string + description: Cardano staking address (reward account) in bech32 format + example: stake1u8yxtugdv63wxafy9d00nuz6hjyyp4qnggvc9a3vxh8yl0ckml2uz + history: + type: array + items: + type: object + properties: + pool_id: + type: string + description: Bech32 representation of pool ID + example: pool1z5uqdk7dzdxaae5633fqfcu2eqzy3a3rgtuvy087fdld7yws0xt + epoch_no: + type: number + description: Epoch number + example: 301 + active_stake: + type: string + description: Active stake amount (in numbers) + example: 682334162 + account_stake_history: + description: Array of active stake values per epoch + type: array + items: + properties: + stake_address: + type: string + description: Cardano staking address (reward account) in bech32 format + example: stake1u8yxtugdv63wxafy9d00nuz6hjyyp4qnggvc9a3vxh8yl0ckml2uz + pool_id_bech32: + type: string + description: Bech32 representation of pool ID + example: pool1z5uqdk7dzdxaae5633fqfcu2eqzy3a3rgtuvy087fdld7yws0xt + epoch_no: + type: number + description: Epoch number + example: 301 + active_stake: + type: string + description: Active stake amount (in numbers) + example: 682334162 diff --git a/specs/fragments/schemas/address.yaml b/specs/fragments/schemas/address.yaml new file mode 100644 index 00000000..e57d8455 --- /dev/null +++ b/specs/fragments/schemas/address.yaml @@ -0,0 +1,125 @@ + address_list: + description: Array of information for address(es) + type: array + items: + type: object + properties: + address: + $ref: "#/components/schemas/utxo_infos/items/properties/address" + address_hex: + type: string + description: Cardano address in hex format + example: 60f879af535c02e37bf77fb3b5f51d017229fe47995c37b9aca9e0091c + has_script: + $ref: "#/components/schemas/drep_info/items/properties/has_script" + payment_cred: + $ref: "#/components/schemas/utxo_infos/items/properties/payment_cred" + stake_address: + anyOf: + - $ref: "#/components/schemas/account_history/items/properties/stake_address" + - type: "null" + stake_address_hex: + anyOf: + - $ref: "#/components/schemas/account_list/items/properties/stake_address_hex" + - type: "null" + address_info: + description: Array of information for address(es) + type: array + items: + type: object + properties: + address: + $ref: "#/components/schemas/utxo_infos/items/properties/address" + balance: + type: string + description: Sum of all UTxO values beloning to address + example: "10723473983" + stake_address: + anyOf: + - $ref: "#/components/schemas/account_history/items/properties/stake_address" + - type: "null" + script_address: + type: boolean + description: Signifies whether the address is a script address + example: true + utxo_set: + type: array + items: + type: object + properties: + tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + tx_index: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" + block_height: + $ref: "#/components/schemas/blocks/items/properties/block_height" + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + value: + $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/value" + datum_hash: + $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_hash" + inline_datum: + $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/inline_datum" + reference_script: + $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/reference_script" + asset_list: + $ref: "#/components/schemas/utxo_infos/items/properties/asset_list" + address_txs: + description: Array of transaction hashes + type: array + items: + type: object + properties: + tx_hash: + $ref: "#/components/schemas/tx_info/items/properties/tx_hash" + epoch_no: + $ref: "#/components/schemas/blocks/items/properties/epoch_no" + block_height: + $ref: "#/components/schemas/blocks/items/properties/block_height" + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + address_outputs: + description: Array of basic transaction output information + type: array + items: + type: object + properties: + address: + $ref: "#/components/schemas/utxo_infos/items/properties/address" + tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + tx_index: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" + value: + $ref: "#/components/schemas/utxo_infos/items/properties/value" + stake_address: + $ref: "#/components/schemas/utxo_infos/items/properties/stake_address" + payment_cred: + $ref: "#/components/schemas/utxo_infos/items/properties/payment_cred" + epoch_no: + $ref: "#/components/schemas/utxo_infos/items/properties/epoch_no" + block_height: + $ref: "#/components/schemas/utxo_infos/items/properties/block_height" + block_time: + $ref: "#/components/schemas/utxo_infos/items/properties/block_time" + is_spent: + $ref: "#/components/schemas/utxo_infos/items/properties/is_spent" + address_assets: + description: Array of address-owned assets + type: array + items: + type: object + properties: + address: + $ref: "#/components/schemas/utxo_infos/items/properties/address" + policy_id: + $ref: "#/components/schemas/asset_info/items/properties/policy_id" + asset_name: + $ref: "#/components/schemas/asset_info/items/properties/asset_name" + fingerprint: + $ref: "#/components/schemas/asset_info/items/properties/fingerprint" + decimals: + $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" + quantity: + $ref: "#/components/schemas/asset_addresses/items/properties/quantity" diff --git a/specs/fragments/schemas/asset.yaml b/specs/fragments/schemas/asset.yaml new file mode 100644 index 00000000..20276d88 --- /dev/null +++ b/specs/fragments/schemas/asset.yaml @@ -0,0 +1,302 @@ + asset_list: + description: Array of policy IDs and asset names + type: array + items: + type: object + properties: + policy_id: + $ref: "#/components/schemas/asset_info/items/properties/policy_id" + asset_name: + $ref: "#/components/schemas/asset_info/items/properties/asset_name" + asset_name_ascii: + $ref: "#/components/schemas/asset_info/items/properties/asset_name_ascii" + fingerprint: + $ref: "#/components/schemas/asset_info/items/properties/fingerprint" + asset_token_registry: + description: An array of token registry information (registered via github) for each asset + type: array + items: + type: object + properties: + policy_id: + $ref: "#/components/schemas/asset_info/items/properties/policy_id" + asset_name: + $ref: "#/components/schemas/asset_info/items/properties/asset_name" + asset_name_ascii: + $ref: "#/components/schemas/asset_info/items/properties/asset_name_ascii" + ticker: + $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/ticker" + description: + $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/description" + url: + $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/url" + decimals: + $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" + logo: + $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/logo" + asset_addresses: + description: An array of payment addresses holding the given token (including balances) + type: array + items: + properties: + payment_address: + $ref: "#/components/schemas/utxo_infos/items/properties/address" + stake_address: + $ref: "#/components/schemas/address_info/items/properties/stake_address" + quantity: + type: string + description: Asset balance on the payment address + example: "23" + asset_nft_address: + description: An array of payment addresses holding the given token + type: array + items: + properties: + payment_address: + $ref: "#/components/schemas/utxo_infos/items/properties/address" + stake_address: + $ref: "#/components/schemas/address_info/items/properties/stake_address" + asset_summary: + description: Array of asset summary information + type: array + items: + properties: + policy_id: + $ref: "#/components/schemas/asset_info/items/properties/policy_id" + asset_name: + $ref: "#/components/schemas/asset_info/items/properties/asset_name" + fingerprint: + $ref: "#/components/schemas/asset_info/items/properties/fingerprint" + total_transactions: + type: number + description: Total number of transactions including the given asset + example: 89416 + staked_wallets: + type: number + description: Total number of registered wallets holding the given asset + example: 548 + unstaked_addresses: + type: number + description: Total number of payment addresses (not belonging to registered wallets) holding the given asset + example: 245 + addresses: + type: number + description: Total number of unique addresses holding the given asset + example: 812 + asset_info: + description: Array of detailed asset information + type: array + items: + properties: + policy_id: + type: string + description: Asset Policy ID (hex) + example: d3501d9531fcc25e3ca4b6429318c2cc374dbdbcf5e99c1c1e5da1ff + asset_name: + anyOf: + - type: string + - type: "null" + description: Asset Name (hex) + example: 444f4e545350414d + asset_name_ascii: + type: string + description: Asset Name (ASCII) + example: DONTSPAM + fingerprint: + type: string + description: The CIP14 fingerprint of the asset + example: asset1ua6pz3yd5mdka946z8jw2fld3f8d0mmxt75gv9 + minting_tx_hash: + type: string + description: Hash of the latest mint transaction (with metadata if found for asset) + example: cb07b7e51b77079776c4a78f2daf8f14f9945d2b047da7bfcb71d7fbb9f86712 + total_supply: + type: string + description: Total supply for the asset + example: "35000" + mint_cnt: + type: number + description: Count of total mint transactions + example: 1 + burn_cnt: + type: number + description: Count of total burn transactions + example: 5 + creation_time: + type: number + description: UNIX timestamp of the first asset mint + example: 1506635091 + minting_tx_metadata: + allOf: + - $ref: "#/components/schemas/tx_metadata/items/properties/metadata" + description: Latest minting transaction metadata (aligns with CIP-25) + token_registry_metadata: + anyOf: + - type: object + - type: "null" + description: Asset metadata registered on the Cardano Token Registry + properties: + name: + anyOf: + - type: string + - type: "null" + example: Rackmob + description: + anyOf: + - type: string + - type: "null" + example: Metaverse Blockchain Cryptocurrency. + ticker: + anyOf: + - type: string + - type: "null" + example: MOB + url: + anyOf: + - type: string + - type: "null" + example: https://www.rackmob.com/ + logo: + anyOf: + - type: string + - type: "null" + description: A PNG image file as a byte string + example: iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6CAYAAACI7Fo9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADnmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc + decimals: + type: number + example: 0 + cip68_metadata: + anyOf: + - type: object + - type: "null" + description: CIP 68 metadata if present for asset + example: + { + "222": + { + "fields": + [ + { + "map": + [ + { + "k": { "bytes": "6e616d65" }, + "v": { "bytes": "74657374" }, + }, + ], + }, + ], + "constructor": 0, + }, + } + asset_history: + description: Array of asset mint/burn history + type: array + items: + properties: + policy_id: + $ref: "#/components/schemas/asset_info/items/properties/policy_id" + asset_name: + $ref: "#/components/schemas/asset_info/items/properties/asset_name" + fingerprint: + $ref: "#/components/schemas/asset_info/items/properties/fingerprint" + minting_txs: + anyOf: + - type: array + - type: "null" + description: Array of all mint/burn transactions for an asset + items: + type: object + properties: + tx_hash: + type: string + description: Hash of minting/burning transaction + example: e1ecc517f95715bb87681cfde2c594dbc971739f84f8bfda16170b35d63d0ddf + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + quantity: + type: string + description: Quantity minted/burned (negative numbers indicate burn transactions) + example: "-10" + metadata: + type: array + description: Array of Transaction Metadata for given transaction + items: + $ref: "#/components/schemas/asset_info/items/properties/minting_tx_metadata" + + policy_asset_addresses: + description: Array of asset names and payment addresses for the given policy (including balances) + type: array + items: + properties: + asset_name: + $ref: "#/components/schemas/asset_info/items/properties/asset_name" + payment_address: + $ref: "#/components/schemas/utxo_infos/items/properties/address" + stake_address: + $ref: "#/components/schemas/address_info/items/properties/stake_address" + quantity: + $ref: "#/components/schemas/asset_addresses/items/properties/quantity" + policy_asset_info: + description: Array of detailed information of assets under requested policies + type: array + items: + properties: + asset_name: + $ref: "#/components/schemas/asset_info/items/properties/asset_name" + asset_name_ascii: + $ref: "#/components/schemas/asset_info/items/properties/asset_name_ascii" + fingerprint: + $ref: "#/components/schemas/asset_info/items/properties/fingerprint" + minting_tx_hash: + $ref: "#/components/schemas/asset_info/items/properties/minting_tx_hash" + total_supply: + $ref: "#/components/schemas/asset_info/items/properties/total_supply" + mint_cnt: + $ref: "#/components/schemas/asset_info/items/properties/mint_cnt" + burn_cnt: + $ref: "#/components/schemas/asset_info/items/properties/burn_cnt" + creation_time: + $ref: "#/components/schemas/asset_info/items/properties/creation_time" + minting_tx_metadata: + $ref: "#/components/schemas/asset_info/items/properties/minting_tx_metadata" + token_registry_metadata: + $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata" + policy_asset_mints: + description: Array of mint information for assets under requested policies + type: array + items: + properties: + asset_name: + $ref: "#/components/schemas/asset_info/items/properties/asset_name" + asset_name_ascii: + $ref: "#/components/schemas/asset_info/items/properties/asset_name_ascii" + fingerprint: + $ref: "#/components/schemas/asset_info/items/properties/fingerprint" + minting_tx_hash: + $ref: "#/components/schemas/asset_info/items/properties/minting_tx_hash" + total_supply: + $ref: "#/components/schemas/asset_info/items/properties/total_supply" + mint_cnt: + $ref: "#/components/schemas/asset_info/items/properties/mint_cnt" + burn_cnt: + $ref: "#/components/schemas/asset_info/items/properties/burn_cnt" + creation_time: + $ref: "#/components/schemas/asset_info/items/properties/creation_time" + minting_tx_metadata: + $ref: "#/components/schemas/asset_info/items/properties/minting_tx_metadata" + decimals: + $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" + policy_asset_list: + description: Array of brief information of assets under the same policy + type: array + items: + properties: + asset_name: + $ref: "#/components/schemas/asset_info/items/properties/asset_name" + fingerprint: + $ref: "#/components/schemas/asset_info/items/properties/fingerprint" + total_supply: + $ref: "#/components/schemas/asset_info/items/properties/total_supply" + decimals: + $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" diff --git a/specs/fragments/schemas/block.yaml b/specs/fragments/schemas/block.yaml new file mode 100644 index 00000000..00a7e8ff --- /dev/null +++ b/specs/fragments/schemas/block.yaml @@ -0,0 +1,219 @@ + blocks: + description: Array of block information + type: array + items: + type: object + properties: + hash: + type: string + description: Hash of the block + example: 2fa5178c5be950c7f40d6c74efe9b3dd12c4836dc3f3dd052cd1c2a12edd477f + epoch_no: + type: number + description: Epoch number of the block + example: 117 + abs_slot: + type: number + description: Absolute slot number of the block + example: 49073930 + epoch_slot: + type: number + description: Slot number of the block in epoch + example: 171530 + block_height: + type: number + description: Block height + example: 1794506 + block_size: + type: number + description: Block size in bytes + example: 2433 + block_time: + type: number + description: UNIX timestamp of the block + example: 1704757130 + tx_count: + type: number + description: Number of transactions in the block + example: 2 + vrf_key: + type: string + description: VRF key of the block producer + example: "vrf_vk1400ju08429se790upcvurdyqrhl8rhm7spm2jxg0lfnedqeaexfq7jsf2x" + pool: + anyOf: + - type: string + - type: "null" + description: Pool ID in bech32 format (null for pre-Shelley blocks) + example: pool13m26ky08vz205232k20u8ft5nrg8u68klhn0xfsk9m4gsqsc44v + op_cert_counter: + type: number + description: Counter value of the operational certificate used to create this block + example: 5 + proto_major: + $ref: "#/components/schemas/epoch_params/items/properties/protocol_major" + proto_minor: + $ref: "#/components/schemas/epoch_params/items/properties/protocol_minor" + parent_hash: + type: string + description: Previous Hash of the current block + example: 7eb8d62f9d6a5e7cf2d9635f0b531d2693fef55a717894e3a97baf6183b8d189 + block_info: + description: Array of detailed block information + type: array + items: + type: object + properties: + hash: + $ref: "#/components/schemas/blocks/items/properties/hash" + epoch_no: + $ref: "#/components/schemas/blocks/items/properties/epoch_no" + era: + $ref: "#/components/schemas/era_summaries/items/properties/era" + abs_slot: + $ref: "#/components/schemas/blocks/items/properties/abs_slot" + epoch_slot: + $ref: "#/components/schemas/blocks/items/properties/epoch_slot" + block_height: + $ref: "#/components/schemas/blocks/items/properties/block_height" + block_size: + $ref: "#/components/schemas/blocks/items/properties/block_size" + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + tx_count: + $ref: "#/components/schemas/blocks/items/properties/tx_count" + vrf_key: + $ref: "#/components/schemas/blocks/items/properties/vrf_key" + op_cert: + type: string + description: Hash of the block producers' operational certificate + example: "16bfc28a7127d11805fe02df67f8c3909ab7e2e2cd81b6954d90eeff1938614c" + op_cert_counter: + $ref: "#/components/schemas/blocks/items/properties/op_cert_counter" + pool: + $ref: "#/components/schemas/blocks/items/properties/pool" + proto_major: + $ref: "#/components/schemas/epoch_params/items/properties/protocol_major" + proto_minor: + $ref: "#/components/schemas/epoch_params/items/properties/protocol_minor" + total_output: + anyOf: + - type: string + - type: "null" + description: Total output of the block (in number) + example: "92384672389" + total_fees: + anyOf: + - type: string + - type: "null" + description: Total fees of the block (in number) + example: "2346834" + num_confirmations: + type: number + description: Number of confirmations for the block + example: 664275 + parent_hash: + type: string + description: Hash of the parent of this block + example: "16bfc28a7127d11805fe02df67f8c3909ab7e2e2cd81b6954d90eeff1938614c" + child_hash: + type: string + description: Hash of the child of this block (if present) + example: "a3b525ba0747ce9daa928fa28fbc680f95e6927943a1fbd6fa5394d96c9dc2fa" + block_txs: + description: Array of transactions hashes + type: array + items: + type: object + properties: + block_hash: + $ref: "#/components/schemas/blocks/items/properties/hash" + tx_hash: + $ref: "#/components/schemas/tx_info/items/properties/tx_hash" + epoch_no: + $ref: "#/components/schemas/blocks/items/properties/epoch_no" + block_height: + $ref: "#/components/schemas/blocks/items/properties/block_height" + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + block_tx_cbor: + description: Array of raw transaction(s) in CBOR format + type: array + items: + type: object + properties: + tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + block_hash: + $ref: "#/components/schemas/blocks/items/properties/hash" + block_height: + $ref: "#/components/schemas/blocks/items/properties/block_height" + epoch_no: + $ref: "#/components/schemas/blocks/items/properties/epoch_no" + absolute_slot: + $ref: "#/components/schemas/blocks/items/properties/abs_slot" + tx_timestamp: + $ref: "#/components/schemas/tx_info/items/properties/tx_timestamp" + cbor: + $ref: "#/components/schemas/tx_cbor/items/properties/cbor" + block_tx_info: + description: Array of detailed information about transaction(s) + type: array + items: + type: object + properties: + tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + block_hash: + $ref: "#/components/schemas/blocks/items/properties/hash" + block_height: + $ref: "#/components/schemas/blocks/items/properties/block_height" + epoch_no: + $ref: "#/components/schemas/blocks/items/properties/epoch_no" + epoch_slot: + $ref: "#/components/schemas/blocks/items/properties/epoch_slot" + absolute_slot: + $ref: "#/components/schemas/blocks/items/properties/abs_slot" + tx_timestamp: + $ref: "#/components/schemas/tx_info/items/properties/tx_timestamp" + tx_block_index: + $ref: "#/components/schemas/tx_info/items/properties/tx_block_index" + tx_size: + $ref: "#/components/schemas/tx_info/items/properties/tx_size" + total_output: + $ref: "#/components/schemas/tx_info/items/properties/total_output" + fee: + $ref: "#/components/schemas/tx_info/items/properties/fee" + treasury_donation: + $ref: "#/components/schemas/tx_info/items/properties/treasury_donation" + deposit: + $ref: "#/components/schemas/tx_info/items/properties/deposit" + invalid_before: + $ref: "#/components/schemas/tx_info/items/properties/invalid_before" + invalid_after: + $ref: "#/components/schemas/tx_info/items/properties/invalid_after" + collateral_inputs: + $ref: "#/components/schemas/tx_info/items/properties/collateral_inputs" + collateral_output: + $ref: "#/components/schemas/tx_info/items/properties/collateral_output" + reference_inputs: + $ref: "#/components/schemas/tx_info/items/properties/reference_inputs" + inputs: + description: An array of UTxO inputs spent in the transaction + anyOf: + - $ref: "#/components/schemas/tx_info/items/properties/outputs" + - type: "null" + outputs: + $ref: "#/components/schemas/tx_info/items/properties/outputs" + withdrawals: + $ref: "#/components/schemas/tx_info/items/properties/withdrawals" + assets_minted: + $ref: "#/components/schemas/tx_info/items/properties/assets_minted" + metadata: + $ref: "#/components/schemas/tx_metadata/items/properties/metadata" + certificates: + $ref: "#/components/schemas/tx_info/items/properties/certificates" + native_scripts: + $ref: "#/components/schemas/tx_info/items/properties/native_scripts" + plutus_contracts: + $ref: "#/components/schemas/tx_info/items/properties/plutus_contracts" diff --git a/specs/fragments/schemas/epoch.yaml b/specs/fragments/schemas/epoch.yaml new file mode 100644 index 00000000..0d34380c --- /dev/null +++ b/specs/fragments/schemas/epoch.yaml @@ -0,0 +1,414 @@ + epoch_info: + description: Array of detailed summary for each epoch + type: array + items: + type: object + properties: + epoch_no: + type: number + description: Epoch number + example: 294 + era: + $ref: "#/components/schemas/era_summaries/items/properties/era" + out_sum: + type: string + description: Total output value across all transactions in epoch + example: "15432725054364942" + fees: + type: string + description: Total fees incurred by transactions in epoch + example: "74325855210" + tx_count: + type: number + description: Number of transactions submitted in epoch + example: 357919 + blk_count: + type: number + description: Number of blocks created in epoch + example: 17321 + start_time: + type: number + description: UNIX timestamp of the epoch start + example: 1506203091 + end_time: + type: number + description: UNIX timestamp of the epoch end + example: 1506635091 + first_block_time: + type: number + description: UNIX timestamp of the epoch's first block + example: 1506635091 + last_block_time: + type: number + description: UNIX timestamp of the epoch's last block + example: 1506635091 + active_stake: + anyOf: + - type: string + - type: "null" + description: Total active stake in epoch stake snapshot (null for pre-Shelley epochs) + example: "23395112387185880" + total_rewards: + anyOf: + - type: string + - type: "null" + description: Total rewards earned in epoch (null for pre-Shelley epochs) + example: "252902897534230" + avg_blk_reward: + anyOf: + - type: string + - type: "null" + description: Average block reward for epoch (null for pre-Shelley epochs) + example: "660233450" + epoch_params: + description: Epoch parameters (all fields nullable for pre-Shelley/Gougen epochs except first block hash) + type: array + items: + properties: + epoch_no: + type: number + description: Epoch number + example: 294 + era: + $ref: "#/components/schemas/era_summaries/items/properties/era" + min_fee_a: + anyOf: + - type: number + - type: "null" + description: The 'a' parameter to calculate the minimum transaction fee + example: 44 + min_fee_b: + anyOf: + - type: number + - type: "null" + description: The 'b' parameter to calculate the minimum transaction fee + example: 155381 + max_block_size: + anyOf: + - type: number + - type: "null" + description: The maximum block size (in bytes) + example: 65536 + max_tx_size: + anyOf: + - type: number + - type: "null" + description: The maximum transaction size (in bytes) + example: 16384 + max_bh_size: + anyOf: + - type: number + - type: "null" + description: The maximum block header size (in bytes) + example: 1100 + key_deposit: + anyOf: + - type: string + - type: "null" + description: The amount (in number) required for a deposit to register a stake address + example: "2000000" + pool_deposit: + anyOf: + - type: string + - type: "null" + description: The amount (in number) required for a deposit to register a stake pool + example: "500000000" + max_epoch: + anyOf: + - type: number + - type: "null" + description: The maximum number of epochs in the future that a pool retirement is allowed to be scheduled for + example: 18 + optimal_pool_count: + anyOf: + - type: number + - type: "null" + description: The optimal number of stake pools + example: 500 + influence: + anyOf: + - type: number + - type: "null" + format: double + description: The pledge influence on pool rewards + example: 0.3 + monetary_expand_rate: + anyOf: + - type: number + - type: "null" + format: double + description: The monetary expansion rate + example: 0.003 + treasury_growth_rate: + anyOf: + - type: number + - type: "null" + format: double + description: The treasury growth rate + example: 0.2 + decentralisation: + anyOf: + - type: number + - type: "null" + format: double + description: The decentralisation parameter (1 fully centralised, 0 fully decentralised) + example: 0.1 + extra_entropy: + anyOf: + - type: string + - type: "null" + description: The hash of 32-byte string of extra random-ness added into the protocol's entropy pool + example: d982e06fd33e7440b43cefad529b7ecafbaa255e38178ad4189a37e4ce9bf1fa + protocol_major: + anyOf: + - type: number + - type: "null" + description: The protocol major version + example: 10 + protocol_minor: + anyOf: + - type: number + - type: "null" + description: The protocol minor version + example: 0 + min_utxo_value: + anyOf: + - type: string + - type: "null" + description: The minimum value of a UTxO entry + example: "34482" + min_pool_cost: + anyOf: + - type: string + - type: "null" + description: The minimum pool cost + example: "340000000" + nonce: + anyOf: + - type: string + - type: "null" + description: The nonce value for this epoch + example: 01304ddf5613166be96fce27be110747f2c8fcb38776618ee79225ccb59b81e2 + block_hash: + type: string + description: The hash of the first block where these parameters are valid + example: f9dc2a2fc3a2db09a71af007a740261de585afc9e3022b8e30535592ff4dd9e5 + cost_models: + anyOf: + - type: object + - type: "null" + description: The per language cost model in JSON + example: null + price_mem: + anyOf: + - type: number + - type: "null" + format: double + description: The per word cost of script memory usage + example: 0.0577 + price_step: + anyOf: + - type: number + - type: "null" + format: double + description: The cost of script execution step usage + example: 7.21e-05 + max_tx_ex_mem: + anyOf: + - type: number + - type: "null" + description: The maximum number of execution memory allowed to be used in a single transaction + example: 10000000 + max_tx_ex_steps: + anyOf: + - type: number + - type: "null" + description: The maximum number of execution steps allowed to be used in a single transaction + example: 10000000000 + max_block_ex_mem: + anyOf: + - type: number + - type: "null" + description: The maximum number of execution memory allowed to be used in a single block + example: 50000000 + max_block_ex_steps: + anyOf: + - type: number + - type: "null" + description: The maximum number of execution steps allowed to be used in a single block + example: 40000000000 + max_val_size: + anyOf: + - type: number + - type: "null" + description: The maximum Val size + example: 5000 + collateral_percent: + anyOf: + - type: number + - type: "null" + description: The percentage of the tx fee which must be provided as collateral when including non-native scripts + example: 150 + max_collateral_inputs: + anyOf: + - type: number + - type: "null" + description: The maximum number of collateral inputs allowed in a transaction + example: 3 + coins_per_utxo_size: + anyOf: + - type: string + - type: "null" + description: The cost per UTxO size + example: "34482" + pvt_motion_no_confidence: + anyOf: + - type: number + - type: "null" + description: Pool Voting threshold for motion of no-confidence. + example: 0.6 + pvt_committee_normal: + anyOf: + - type: number + - type: "null" + description: Pool Voting threshold for new committee/threshold (normal state). + example: 0.65 + pvt_committee_no_confidence: + anyOf: + - type: number + - type: "null" + description: Pool Voting threshold for new committee/threshold (state of no-confidence). + example: 0.65 + pvt_hard_fork_initiation: + anyOf: + - type: number + - type: "null" + description: Pool Voting threshold for hard-fork initiation. + example: 0.51 + dvt_motion_no_confidence: + anyOf: + - type: number + - type: "null" + description: DRep Vote threshold for motion of no-confidence. + example: 0.67 + dvt_committee_normal: + anyOf: + - type: number + - type: "null" + description: DRep Vote threshold for new committee/threshold (normal state). + example: 0.67 + dvt_committee_no_confidence: + anyOf: + - type: number + - type: "null" + description: DRep Vote threshold for new committee/threshold (state of no-confidence). + example: 0.65 + dvt_update_to_constitution: + anyOf: + - type: number + - type: "null" + description: DRep Vote threshold for update to the Constitution. + example: 0.75 + dvt_hard_fork_initiation: + anyOf: + - type: number + - type: "null" + description: DRep Vote threshold for hard-fork initiation. + example: 0.6 + dvt_p_p_network_group: + anyOf: + - type: number + - type: "null" + description: DRep Vote threshold for protocol parameter changes, network group. + example: 0.67 + dvt_p_p_economic_group: + anyOf: + - type: number + - type: "null" + description: DRep Vote threshold for protocol parameter changes, economic group. + example: 0.67 + dvt_p_p_technical_group: + anyOf: + - type: number + - type: "null" + description: DRep Vote threshold for protocol parameter changes, technical group. + example: 0.67 + dvt_p_p_gov_group: + anyOf: + - type: number + - type: "null" + description: DRep Vote threshold for protocol parameter changes, governance group. + example: 0.75 + dvt_treasury_withdrawal: + anyOf: + - type: number + - type: "null" + description: DRep Vote threshold for treasury withdrawal. + example: 0.67 + committee_min_size: + anyOf: + - type: number + - type: "null" + description: Minimal constitutional committee size. + example: 5 + committee_max_term_length: + anyOf: + - type: number + - type: "null" + description: Constitutional committee term limits. + example: 146 + gov_action_lifetime: + anyOf: + - type: number + - type: "null" + description: Governance action expiration. + example: 14 + gov_action_deposit: + anyOf: + - type: string + - type: "null" + description: Governance action deposit. + example: 100000000000 + drep_deposit: + anyOf: + - type: string + - type: "null" + description: DRep deposit amount. + example: 500000000 + drep_activity: + anyOf: + - type: number + - type: "null" + description: DRep activity period. + example: 20 + pvtpp_security_group: + anyOf: + - type: number + - type: "null" + description: Pool Voting threshold for protocol parameter changes, security group. + example: 0.6 + min_fee_ref_script_cost_per_byte: + anyOf: + - type: number + - type: "null" + description: Minimum Fee for Reference Script cost pre byte + example: 15 + epoch_block_protocols: + description: Array of distinct block protocol versions counts in epoch + type: array + items: + properties: + proto_major: + type: number + description: Protocol major version + example: 6 + proto_minor: + type: number + description: Protocol major version + example: 2 + era: + $ref: "#/components/schemas/era_summaries/items/properties/era" + blocks: + type: number + description: Amount of blocks with specified major and protocol combination + example: 2183 diff --git a/specs/fragments/schemas/governance.yaml b/specs/fragments/schemas/governance.yaml new file mode 100644 index 00000000..3bb9980a --- /dev/null +++ b/specs/fragments/schemas/governance.yaml @@ -0,0 +1,688 @@ + drep_info: + description: Get detailed information about requested delegated representatives (DReps) + type: array + items: + properties: + drep_id: + type: string + description: DRep ID in CIP-129 bech32 format + example: drep1yfhyq6tztjksqqpd5lglc3zr2tn8vylgjh9xzz7n2p4l4lgk3qam3 + hex: + type: string + description: DRep ID in hex format + example: 6e4069625cad00002da7d1fc444352e67613e895ca610bd3506bfafd + has_script: + type: boolean + description: Flag which shows if this credential is a script hash + example: false + drep_status: + type: string + enum: + - registered + - deregistered + - not_registered + description: DRep's current registration status + example: registered + deposit: + anyOf: + - type: string + - type: "null" + description: DRep's registration deposit in number + example: "500000000" + active: + type: boolean + description: Flag to show if the DRep is (i.e. not expired) + example: true + expires_epoch_no: + anyOf: + - type: number + - type: "null" + description: After which epoch DRep is considered inactive. + example: 410 + amount: + type: string + description: The total amount of voting power this DRep is delegated. + example: "599496769641" + meta_url: + anyOf: + - type: string + - type: "null" + description: A URL to a JSON payload of metadata + example: "https://hornan7.github.io/Vote_Context.jsonld" + meta_hash: + anyOf: + - type: string + - type: "null" + description: A hash of the contents of the metadata URL + example: dc208474e195442d07a5b6d42af19bb2db02229427dfb53ab23122e6b0e2487d + drep_epoch_summary: + description: Summary of voting power and DRep count for each epoch + type: array + items: + properties: + epoch_no: + $ref: "#/components/schemas/blocks/items/properties/epoch_no" + amount: + type: string + description: The total amount of voting power between all DReps including pre-defined roles for the epoch. + example: "599496769641" + dreps: + type: number + description: The total number of DReps with vote power for the epoch. + example: 324 + drep_list: + description: List of all active delegated representatives (DReps) + type: array + items: + properties: + drep_id: + $ref: "#/components/schemas/drep_info/items/properties/drep_id" + hex: + $ref: "#/components/schemas/drep_info/items/properties/hex" + has_script: + $ref: "#/components/schemas/drep_info/items/properties/has_script" + drep_status: + $ref: "#/components/schemas/drep_info/items/properties/drep_status" + drep_delegators: + description: List of all delegators by requested delegated representative (DRep) + type: array + items: + properties: + stake_address: + $ref: "#/components/schemas/account_list/items/properties/stake_address" + stake_address_hex: + $ref: "#/components/schemas/account_list/items/properties/stake_address_hex" + script_hash: + $ref: "#/components/schemas/account_list/items/properties/script_hash" + epoch_no: + description: Epoch when vote delegation was made + allOf: + - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" + amount: + $ref: "#/components/schemas/account_info/items/properties/total_balance" + drep_metadata: + description: List metadata for requested delegated representatives (DReps) + type: array + items: + properties: + drep_id: + $ref: "#/components/schemas/drep_info/items/properties/drep_id" + hex: + $ref: "#/components/schemas/drep_info/items/properties/hex" + has_script: + $ref: "#/components/schemas/drep_info/items/properties/has_script" + meta_url: + $ref: "#/components/schemas/drep_info/items/properties/meta_url" + meta_hash: + $ref: "#/components/schemas/drep_info/items/properties/meta_hash" + meta_json: + anyOf: + - type: object + - type: "null" + description: The payload as JSON + example: + { + "body": + { + "title": "...", + "...": "...", + "references": + [ + { + "uri": "...", + "@type": "Other", + "label": "Hardfork to PV10", + }, + ], + }, + "authors": + [ + { + "name": "...", + "witness": + { + "publicKey": "...", + "signature": "...", + "witnessAlgorithm": "ed25519", + }, + }, + ], + "@context": + { + "body": + { + "@id": "CIP108:body", + "@context": + { + "title": "CIP108:title", + "abstract": "CIP108:abstract", + "rationale": "CIP108:rationale", + "motivation": "CIP108:motivation", + "references": + { + "@id": "CIP108:references", + "@context": + { + "uri": "CIP100:reference-uri", + "Other": "CIP100:OtherReference", + "label": "CIP100:reference-label", + "referenceHash": + { + "@id": "CIP108:referenceHash", + "@context": + { + "hashDigest": "CIP108:hashDigest", + "hashAlgorithm": "CIP100:hashAlgorithm", + }, + }, + "GovernanceMetadata": "CIP100:GovernanceMetadataReference", + }, + "@container": "@set", + }, + }, + }, + "CIP100": "https://github.com/cardano-foundation/CIPs/blob/master/CIP-0100/README.md#", + "CIP108": "https://github.com/cardano-foundation/CIPs/blob/master/CIP-0108/README.md#", + "authors": + { + "@id": "CIP100:authors", + "@context": + { + "name": "http://xmlns.com/foaf/0.1/name", + "witness": + { + "@id": "CIP100:witness", + "@context": + { + "publicKey": "CIP100:publicKey", + "signature": "CIP100:signature", + "witnessAlgorithm": "CIP100:witnessAlgorithm", + }, + }, + }, + "@container": "@set", + }, + "@language": "en-us", + "hashAlgorithm": "CIP100:hashAlgorithm", + }, + "hashAlgorithm": "blake2b-256", + } + bytes: + anyOf: + - type: string + - type: "null" + description: The raw bytes of the payload + example: 7b0a20202240636f6e74657874223a207b0a2020202022406c616e6775616765223a2022656e2d7573222c0a2020202022434950313030223a202268747470733a2f2f6769746875622e636f6d2f63617264616e6f2d666f756e646174696f6e2f434950732f626c6f622f6d61737465722f4349502d303130302f524541444d452e6d6423222c0a2020202022434950313038223a202268747470733a2f2f6769746875622e636f6d2f63617264616e6f2d666f756e646174696f6e2f434950732f626c6f622f6d61737465722f4349502d303130382f524541444d452e6d6423222c0a202020202268617368416c676f726974686d223a20224349503130303a68617368416c676f726974686d222c0a2020202022626f6479223a207b0a20202020202022406964223a20224349503130383a626f6479222c0a2020202020202240636f6e74657874223a207b0a2020202020202020227265666572656e636573223a207b0a2020202020202020202022406964223a20224349503130383a7265666572656e636573222c0a202020202020202020202240636f6e7461696e6572223a202240736574222c0a202020202020202020202240636f6e74657874223a207b0a20202020202020202020202022476f7665726e616e63654d65746164617461223a20224349503130303a476f7665726e616e63654d657461646174615265666572656e6365222c0a202020202020202020202020224f74686572223a20224349503130303a4f746865725265666572656e6365222c0a202020202020202020202020226c6162656c223a20224349503130303a7265666572656e63652d6c6162656c222c0a20202020202020202020202022757269223a20224349503130303a7265666572656e63652d757269222c0a202020202020202020202020227265666572656e636548617368223a207b0a202020202020202020202020202022406964223a20224349503130383a7265666572656e636548617368222c0a20202020202020202020202020202240636f6e74657874223a207b0a202020202020202020202020202020202268617368446967657374223a20224349503130383a68617368446967657374222c0a202020202020202020202020202020202268617368416c676f726974686d223a20224349503130303a68617368416c676f726974686d220a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020207d0a20202020202020207d2c0a2020202020202020227469746c65223a20224349503130383a7469746c65222c0a2020202020202020226162737472616374223a20224349503130383a6162737472616374222c0a2020202020202020226d6f7469766174696f6e223a20224349503130383a6d6f7469766174696f6e222c0a202020202020202022726174696f6e616c65223a20224349503130383a726174696f6e616c65220a2020202020207d0a202020207d2c0a2020202022617574686f7273223a207b0a20202020202022406964223a20224349503130303a617574686f7273222c0a2020202020202240636f6e7461696e6572223a202240736574222c0a2020202020202240636f6e74657874223a207b0a2020202020202020226e616d65223a2022687474703a2f2f786d6c6e732e636f6d2f666f61662f302e312f6e616d65222c0a2020202020202020227769746e657373223a207b0a2020202020202020202022406964223a20224349503130303a7769746e657373222c0a202020202020202020202240636f6e74657874223a207b0a202020202020202020202020227769746e657373416c676f726974686d223a20224349503130303a7769746e657373416c676f726974686d222c0a202020202020202020202020227075626c69634b6579223a20224349503130303a7075626c69634b6579222c0a202020202020202020202020227369676e6174757265223a20224349503130303a7369676e6174757265220a202020202020202020207d0a20202020202020207d0a2020202020207d0a202020207d0a20207d2c0a20202268617368416c676f726974686d223a2022626c616b6532622d323536222c0a202022626f6479223a207b0a20202020227469746c65223a202248617264666f726b20746f2050726f746f636f6c2076657273696f6e203130222c0a20202020226162737472616374223a20224c6574277320686176652073616e63686f4e657420696e2066756c6c20676f7665726e616e636520617320736f6f6e20617320706f737369626c65222c0a20202020226d6f7469766174696f6e223a2022505639206973206e6f742061732066756e2061732050563130222c0a2020202022726174696f6e616c65223a20224c65742773206b6565702074657374696e67207374756666222c0a20202020227265666572656e636573223a205b0a2020202020207b0a2020202020202020224074797065223a20224f74686572222c0a2020202020202020226c6162656c223a202248617264666f726b20746f2050563130222c0a202020202020202022757269223a2022220a2020202020207d0a202020205d0a20207d2c0a202022617574686f7273223a205b0a202020207b0a202020202020226e616d65223a20224361726c6f73222c0a202020202020227769746e657373223a207b0a2020202020202020227769746e657373416c676f726974686d223a202265643235353139222c0a2020202020202020227075626c69634b6579223a202237656130396133346165626231336339383431633731333937623163616266656335646466393530343035323933646565343936636163326634333734383061222c0a2020202020202020227369676e6174757265223a20226134373639383562346363306434353766323437373937363131373939613666366138306663386362376563396463623561383232333838386430363138653330646531363566336438363963346130643931303764386135623631326164376335653432343431393037663562393137393666306437313837643634613031220a2020202020207d0a202020207d0a20205d0a7d + warning: + anyOf: + - type: string + - type: "null" + description: A warning that occured while validating the metadata + language: + anyOf: + - type: string + - type: "null" + description: The language described in the context of the metadata as per CIP-100 + example: en-us + comment: + anyOf: + - type: string + - type: "null" + description: Comment attached to the metadata + is_valid: + anyOf: + - type: boolean + - type: "null" + description: Indicate whether data is invalid + example: null + drep_updates: + description: List of updates for requested (or all) delegated representatives (DReps) + type: array + items: + properties: + drep_id: + $ref: "#/components/schemas/drep_info/items/properties/drep_id" + hex: + $ref: "#/components/schemas/drep_info/items/properties/hex" + has_script: + $ref: "#/components/schemas/drep_info/items/properties/has_script" + update_tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + cert_index: + type: number + description: The index of this certificate within the the transaction. + example: 1 + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + action: + type: string + description: Effective action for this DRep Update certificate + enum: ["updated", "registered", "deregistered"] + example: registered + deposit: + $ref: "#/components/schemas/drep_info/items/properties/deposit" + meta_url: + $ref: "#/components/schemas/drep_metadata/items/properties/meta_url" + meta_hash: + $ref: "#/components/schemas/drep_metadata/items/properties/meta_hash" + meta_json: + $ref: "#/components/schemas/drep_metadata/items/properties/meta_json" + drep_voting_power_history: + description: History of DReps voting power against each (or requested) epoch + type: array + items: + properties: + drep_id: + $ref: "#/components/schemas/drep_info/items/properties/drep_id" + epoch_no: + $ref: "#/components/schemas/blocks/items/properties/epoch_no" + amount: + anyOf: + - type: string + - type: "null" + description: The voting power for the DRep + example: "14231445553" + drep_votes: + description: List of all votes casted by requested delegated representative (DRep) + type: array + items: + properties: + proposal_id: + $ref: "#/components/schemas/proposal_list/items/properties/proposal_id" + proposal_tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + proposal_index: + $ref: "#/components/schemas/proposal_list/items/properties/proposal_index" + vote_tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + vote: + type: string + enum: ["Yes", "No", "Abstain"] + description: Actual Vote casted + example: "Yes" + meta_url: + $ref: "#/components/schemas/drep_metadata/items/properties/meta_url" + meta_hash: + $ref: "#/components/schemas/drep_metadata/items/properties/meta_hash" + pool_voting_power_history: + description: History of Pool's voting power against each (or requested) epoch + type: array + items: + properties: + pool_id_bech32: + $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" + epoch_no: + $ref: "#/components/schemas/blocks/items/properties/epoch_no" + amount: + anyOf: + - type: string + - type: "null" + description: The voting power for the pool for the epoch + example: "11231445553" + pool_votes: + description: List of all votes casted by requested pool + type: array + items: + $ref: "#/components/schemas/drep_votes/items" + committee_votes: + description: List of all votes casted by requested delegated representative (DRep) + type: array + items: + $ref: "#/components/schemas/drep_votes/items" + proposal_list: + description: List of all governance action proposals + type: array + items: + properties: + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + proposal_id: + type: string + description: Proposal Action ID in accordance with CIP-129 format + example: "gov_action17m93skslaxyd45gpr6ernkdzs852h564wsterr8l6lheu7hu7kvsqecyqdh" + proposal_tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + proposal_index: + type: number + description: Index of governance proposal in transaction + example: 0 + proposal_type: + type: string + enum: + [ + "ParameterChange", + "HardForkInitiation", + "TreasuryWithdrawals", + "NoConfidence", + "NewCommittee", + "NewConstitution", + "InfoAction", + ] + description: Proposal Action Type + example: ParameterChange + proposal_description: + type: object + description: Description for Proposal Action + example: '{"tag": "InfoAction"}' + deposit: + $ref: "#/components/schemas/drep_info/items/properties/deposit" + return_address: + type: string + description: The StakeAddress index of the reward address to receive the deposit when it is repaid. + example: stake1uy6yzwsxxc28lfms0qmpxvyz9a7y770rtcqx9y96m42cttqwvp4m5 + proposed_epoch: + type: number + description: Shows the epoch at which this governance action was proposed. + example: 660 + ratified_epoch: + anyOf: + - type: number + - type: "null" + description: If not null, then this proposal has been ratified at the specified epoch. + example: 670 + enacted_epoch: + anyOf: + - type: number + - type: "null" + description: If not null, then this proposal has been enacted at the specified epoch. + example: 675 + dropped_epoch: + anyOf: + - type: number + - type: "null" + description: If not null, then this proposal has been dropped (expired/enacted) at the specified epoch. + example: 680 + expired_epoch: + anyOf: + - type: number + - type: "null" + description: If not null, then this proposal has been expired at the specified epoch. + example: 680 + expiration: + anyOf: + - type: number + - type: "null" + description: Shows the epoch at which this governance action is expected to expire. + meta_url: + $ref: "#/components/schemas/drep_metadata/items/properties/meta_url" + meta_hash: + $ref: "#/components/schemas/drep_metadata/items/properties/meta_hash" + meta_json: + $ref: "#/components/schemas/drep_metadata/items/properties/meta_json" + meta_comment: + $ref: "#/components/schemas/drep_metadata/items/properties/comment" + meta_language: + $ref: "#/components/schemas/drep_metadata/items/properties/language" + meta_is_valid: + $ref: "#/components/schemas/drep_metadata/items/properties/is_valid" + withdrawal: + type: array + description: The array of amounts withdrawn from treasury into specified stake addresses by this proposal + items: + properties: + stake_address: + $ref: "#/components/schemas/account_history/items/properties/stake_address" + amount: + type: string + example: "31235800000" + param_proposal: + description: If not null, the proposed new parameter set + anyOf: + - type: object + - type: "null" + example: { "key_deposit": 1000000 } + voter_proposal_list: + description: List of all governance action proposals where specified credential(DRep, SPO or Committee member) has cast a vote + type: array + items: + $ref: "#/components/schemas/proposal_list/items" + proposal_voting_summary: + description: Summary of votes for given proposal + type: array + items: + properties: + proposal_type: + $ref: "#/components/schemas/proposal_list/items/properties/proposal_type" + epoch_no: + type: number + description: Epoch for which data was collated + example: 441 + drep_yes_votes_cast: + type: number + description: Number of 'yes' votes casted by dreps + example: 7 + drep_active_yes_vote_power: + type: string + description: Power of 'yes' votes that were explicitly cast + example: "31231231231" + drep_yes_vote_power: + type: string + description: Power of 'yes' votes from dreps (includes explicit yes and inferred via other means) + example: "31146839512742" + drep_yes_pct: + type: number + description: Percentage of 'yes' votes from dreps + example: 60.72 + drep_no_votes_cast: + type: number + description: Number of 'no' votes casted by dreps + example: 0 + drep_active_no_vote_power: + type: string + description: Power of 'no' votes that were explicitly cast + example: "2012312393392" + drep_no_vote_power: + type: string + description: Power of 'no' votes from dreps (includes explicit no and inferred via other means) + example: "20148194577715" + drep_no_pct: + type: number + description: Percentage of 'no' votes from dreps + example: 39.28 + drep_abstain_votes_cast: + type: number + description: Number of active 'abstain' votes from dreps + example: 5 + drep_active_abstain_vote_power: + type: string + description: Power of 'abstain' votes that were explicitly cast + example: "123321123321" + drep_always_no_confidence_vote_power: + type: string + description: Power of votes delegated to 'always_no_confidence' predefined drep + example: "9999" + drep_always_abstain_vote_power: + type: string + description: Power of votes delegated to 'always_abstain' predefined drep + example: "87654321" + pool_yes_votes_cast: + type: number + description: Number of 'yes' votes casted by pools + example: 1 + pool_active_yes_vote_power: + type: string + description: Power of 'yes' pool votes that were explicitly cast + example: "123123123" + pool_yes_vote_power: + type: string + description: Power of 'yes' votes from pools (includes explicit yes and inferred via other means) + example: "5234000000" + pool_yes_pct: + type: number + description: Percentage of 'yes' votes from pools + example: 13.12 + pool_no_votes_cast: + type: number + description: Number of 'no' votes casted by pools + example: 0 + pool_active_no_vote_power: + type: string + description: Power of 'no' pool votes that were explicitly cast + example: "0" + pool_no_vote_power: + type: string + description: Power of 'no' votes from pools (includes explicit no and inferred via other means) + example: "0" + pool_no_pct: + type: number + description: Percentage of 'no' votes from pools + example: 0 + pool_abstain_votes_cast: + type: number + description: Percentage of 'abstain' votes from pools + example: 0 + pool_active_abstain_vote_power: + type: string + description: Power of 'abstain' pool votes that were explicitly cast + example: "12312312312" + pool_passive_always_abstain_votes_assigned: + type: number + description: Number of non-voting SPO pool reward addresses delegating to 'always_abstain' drep + example: 1 + pool_passive_always_abstain_vote_power: + type: string + description: Combined power of non-voting SPO pool votes where reward addresses delegate to 'always_abstain' + example: "12312312" + pool_passive_always_no_confidence_votes_assigned: + type: number + description: Number of non-voting SPO pool reward addresses delegating to 'always_no_confidence' drep + example: 10 + pool_passive_always_no_confidence_vote_power: + type: string + description: Combined power of non-voting SPO pool votes where reward addresses delegate to 'always_no_confidence' + example: "321321" + committee_yes_votes_cast: + type: number + description: Number of 'yes' votes casted by committee + example: 5 + committee_yes_pct: + type: number + description: Percentage of 'yes' votes from committee + example: 71.43 + committee_no_votes_cast: + type: number + description: Number of 'no' votes casted by committee + example: 1 + committee_no_pct: + type: number + description: Percentage of 'no' votes from committee + example: 28.57 + committee_abstain_votes_cast: + type: number + description: Percentage of 'abstain' votes from committee + proposal_votes: + type: array + description: List of all votes cast on specified governance action + items: + properties: + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + voter_role: + type: string + description: The role of the voter + enum: ["ConstitutionalCommittee", "DRep", "SPO"] + example: DRep + voter_id: + type: string + description: Voter's DRep ID (CIP-129 bech32 format), pool ID (bech32 format) or committee hot ID (CIP-129 bech32 format) + example: drep1yfhyq6tztjksqqpd5lglc3zr2tn8vylgjh9xzz7n2p4l4lgk3qam3 + voter_hex: + type: string + description: Voter's DRep ID , pool ID or committee hash in hex format + example: 6e4069625cad00002da7d1fc444352e67613e895ca610bd3506bfafd + voter_has_script: + $ref: "#/components/schemas/drep_info/items/properties/has_script" + vote: + $ref: "#/components/schemas/drep_votes/items/properties/vote" + meta_url: + $ref: "#/components/schemas/drep_metadata/items/properties/meta_url" + meta_hash: + $ref: "#/components/schemas/drep_metadata/items/properties/meta_hash" + vote_list: + type: array + description: List of all votes cast on specified governance action + items: + properties: + vote_tx_hash: + type: string + description: The transaction hash where-in vote was posted + example: e239058473ab5ab1f5829b9058a93cbd0daaf72f9252cc16b34925cd87b37d35 + voter_role: + $ref: "#/components/schemas/proposal_votes/items/properties/voter_role" + voter_id: + $ref: "#/components/schemas/proposal_votes/items/properties/voter_id" + proposal_id: + $ref: "#/components/schemas/proposal_list/items/properties/proposal_id" + proposal_tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + proposal_index: + $ref: "#/components/schemas/proposal_list/items/properties/proposal_index" + proposal_type: + $ref: "#/components/schemas/proposal_list/items/properties/proposal_type" + epoch_no: + $ref: "#/components/schemas/blocks/items/properties/epoch_no" + block_height: + $ref: "#/components/schemas/blocks/items/properties/block_height" + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + vote: + $ref: "#/components/schemas/drep_votes/items/properties/vote" + meta_url: + $ref: "#/components/schemas/drep_metadata/items/properties/meta_url" + meta_hash: + $ref: "#/components/schemas/drep_metadata/items/properties/meta_hash" + meta_json: + $ref: "#/components/schemas/drep_metadata/items/properties/meta_json" + committee_info: + description: Current governance committee + type: object + properties: + proposal_id: + $ref: "#/components/schemas/proposal_list/items/properties/proposal_id" + proposal_tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + proposal_index: + $ref: "#/components/schemas/proposal_list/items/properties/proposal_index" + quorum_numerator: + type: number + example: 67 + quorum_denominator: + type: number + example: 100 + members: + description: Array of all members part of active governance committee + type: array + items: + type: object + properties: + status: + type: string + description: Member authentication status + enum: ["authorized", "not_authorized", "resigned"] + example: authorized + cc_cold_hex: + type: string + description: Committee member cold key hash in hex format + example: 6095e643ea6f1cccb6e463ec34349026b3a48621aac5d512655ab1bf + cc_cold_has_script: + type: boolean + description: Flag which shows if this credential is a script hash + example: false + cc_hot_hex: + anyOf: + - type: string + - type: "null" + description: Committee member key hash from last valid hot key authorization certificate in hex format + example: 65d497b875c56ab213586a4006d4f6658970573ea8e2398893857472 + cc_hot_has_script: + anyOf: + - type: boolean + - type: "null" + description: Flag which shows if this credential is a script hash + example: false + expiration_epoch: + type: number + description: Epoch number in which the committee member vote rights expire + example: 324 diff --git a/specs/fragments/schemas/network.yaml b/specs/fragments/schemas/network.yaml new file mode 100644 index 00000000..c5648f58 --- /dev/null +++ b/specs/fragments/schemas/network.yaml @@ -0,0 +1,233 @@ + tip: + description: Current tip of the chain + type: array + items: + properties: + hash: + $ref: "#/components/schemas/blocks/items/properties/hash" + era: + $ref: "#/components/schemas/era_summaries/items/properties/era" + epoch_no: + $ref: "#/components/schemas/blocks/items/properties/epoch_no" + abs_slot: + $ref: "#/components/schemas/blocks/items/properties/abs_slot" + epoch_slot: + $ref: "#/components/schemas/blocks/items/properties/epoch_slot" + block_no: + deprecated: true + type: number + description: DEPRECATED!! Use Block height instead + example: 1794506 + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + era_summaries: + description: Information about each era on the network alongwith it's start epoch + type: array + items: + properties: + era: + type: string + example: Conway + description: Cardano Era + protocol_major: + $ref: "#/components/schemas/epoch_params/items/properties/protocol_major" + protocol_minor: + $ref: "#/components/schemas/epoch_params/items/properties/protocol_minor" + ledger_protocol: + type: string + example: Praos + description: Protocol name that denotes collection of features sitting between consensus and ledger layer + consensus_mechanism: + type: string + example: Ouroboros Genesis/Praos + description: Consensus name that denotes collection of consensus features introduced at a hard fork + notes: + type: string + example: Plomin HF + description: Additional information about when this protocol update was pushed (if there is a fork name associated) + epoch_no: + $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" + first_block_time: + $ref: "#/components/schemas/epoch_info/items/properties/first_block_time" + first_block_hash: + $ref: "#/components/schemas/epoch_params/items/properties/block_hash" + genesis: + description: Array of genesis parameters used to start each era on chain + type: array + items: + properties: + networkmagic: + type: string + example: 764824073 + description: Unique network identifier for chain + networkid: + type: string + example: Mainnet + description: Network ID used at various CLI identification to distinguish between Mainnet and other networks + epochlength: + type: string + example: 432000 + description: Number of slots in an epoch + slotlength: + type: string + example: 1 + description: Duration of a single slot (in seconds) + maxlovelacesupply: + type: string + example: 45000000000000000 + description: Maximum smallest units (lovelaces) supply for the blockchain + systemstart: + type: number + description: UNIX timestamp of the first block (genesis) on chain + example: 1506203091 + activeslotcoeff: + type: string + example: 0.05 + description: "Active Slot Co-Efficient (f) - determines the _probability_ of number of slots in epoch that are expected to have blocks (so mainnet, this would be: 432000 * 0.05 = 21600 estimated blocks)" + slotsperkesperiod: + type: string + example: 129600 + description: Number of slots that represent a single KES period (a unit used for validation of KES key evolutions) + maxkesrevolutions: + type: string + example: 62 + description: Number of KES key evolutions that will automatically occur before a KES (hot) key is expired. This parameter is for security of a pool, in case an operator had access to his hot(online) machine compromised + securityparam: + type: string + example: 2160 + description: A unit (k) used to divide epochs to determine stability window (used in security checks like ensuring atleast 1 block was created in 3*k/f period, or to finalize next epoch's nonce at 4*k/f slots before end of epoch) + updatequorum: + type: string + example: 5 + description: Number of BFT members that need to approve (via vote) a Protocol Update Proposal + alonzogenesis: + type: string + example: '{\"lovelacePerUTxOWord\":34482,\"executionPrices\":{\"prSteps\":{\"numerator\":721,\"denominator\":10000000},...' + description: A JSON dump of Alonzo Genesis + totals: + description: Array of supply/reserves/utxo/fees/treasury stats + type: array + items: + properties: + epoch_no: + type: number + description: Epoch number + example: 294 + circulation: + type: string + description: Circulating UTxOs for given epoch (in numbers) + example: 32081169442642320 + treasury: + type: string + description: Funds in treasury for given epoch (in numbers) + example: 637024173474141 + reward: + type: string + description: Rewards accumulated as of given epoch (in numbers) + example: 506871250479840 + supply: + type: string + description: Total Active Supply (sum of treasury funds, rewards, UTxOs, deposits and fees) for given epoch (in numbers) + example: 33228495612391330 + reserves: + type: string + description: Total Reserves yet to be unlocked on chain + example: 11771504387608670 + fees: + type: string + description: The amount (in Lovelace) in the fee pot. + example: 92010214941 + deposits_stake: + type: string + description: The amount (in Lovelace) in the obligation pot coming from stake key and pool deposits. + example: 3338702000000 + deposits_drep: + type: string + description: The amount (in Lovelace) in the obligation pot coming from drep registrations deposits. + example: 0 + deposits_proposal: + type: string + description: The amount (in Lovelace) in the obligation pot coming from governance proposal deposits. + example: 0 + treasury_donation: + type: string + description: The amount (in Lovelace) donated to the treasury. + example: 0 + treasury_withdrawal: + type: string + description: The amount (in Lovelace) withdrawn from the treasury. + example: 0 + reserves_withdrawal: + type: string + description: The amount (in Lovelace) withdrawn from reserves. + example: 0 + param_updates: + description: Array of unique param update proposals submitted on chain + type: array + items: + properties: + tx_hash: + $ref: "#/components/schemas/tx_info/items/properties/tx_hash" + block_height: + $ref: "#/components/schemas/blocks/items/properties/block_height" + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + epoch_no: + $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" + data: + type: string + description: JSON encoded data with details about the parameter update + example: { "decentralisation": 0.9 } + cli_protocol_params: + description: Get Current Protocol Parameters from node as published by cardano-cli in JSON format + type: object + example: + { + "collateralPercentage": 150, + "maxBlockBodySize": 90112, + "maxBlockHeaderSize": 1100, + "maxCollateralInputs": 3, + "maxTxSize": 16384, + "maxValueSize": 5000, + "minPoolCost": 170000000, + "minUTxOValue": null, + "monetaryExpansion": 3.0e-3, + "poolPledgeInfluence": 0.3, + "poolRetireMaxEpoch": 18, + "protocolVersion": { "major": 8, "minor": 0 }, + "...": "...", + "stakeAddressDeposit": 2000000, + "stakePoolDeposit": 500000000, + "stakePoolTargetNum": 500, + "treasuryCut": 0.2, + "txFeeFixed": 155381, + "txFeePerByte": 44, + "utxoCostPerByte": 4310, + } + reserve_withdrawals: + description: Array of withdrawals from reserves/treasury against stake accounts + type: array + items: + properties: + epoch_no: + $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" + epoch_slot: + $ref: "#/components/schemas/blocks/items/properties/epoch_slot" + tx_hash: + $ref: "#/components/schemas/tx_info/items/properties/tx_hash" + block_hash: + $ref: "#/components/schemas/blocks/items/properties/hash" + block_height: + $ref: "#/components/schemas/blocks/items/properties/block_height" + amount: + $ref: "#/components/schemas/pool_delegators/items/properties/amount" + stake_address: + $ref: "#/components/schemas/account_history/items/properties/stake_address" + earned_epoch: + description: Epoch where amount is earned + allOf: + - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" + spendable_epoch: + description: Epoch where the earned amount can be spent + allOf: + - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" diff --git a/specs/fragments/schemas/pool.yaml b/specs/fragments/schemas/pool.yaml new file mode 100644 index 00000000..b2161d1d --- /dev/null +++ b/specs/fragments/schemas/pool.yaml @@ -0,0 +1,565 @@ + pool_list: + description: Array of pool IDs and tickers + type: array + items: + properties: + pool_id_bech32: + $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" + pool_id_hex: + $ref: "#/components/schemas/pool_info/items/properties/pool_id_hex" + active_epoch_no: + $ref: "#/components/schemas/pool_info/items/properties/active_epoch_no" + margin: + $ref: "#/components/schemas/pool_info/items/properties/margin" + fixed_cost: + $ref: "#/components/schemas/pool_info/items/properties/fixed_cost" + pledge: + $ref: "#/components/schemas/pool_info/items/properties/pledge" + deposit: + $ref: "#/components/schemas/pool_info/items/properties/deposit" + reward_addr: + $ref: "#/components/schemas/pool_info/items/properties/reward_addr" + owners: + $ref: "#/components/schemas/pool_info/items/properties/owners" + relays: + $ref: "#/components/schemas/pool_info/items/properties/relays" + ticker: + anyOf: + - type: string + - type: "null" + description: Pool ticker + example: AHL + pool_group: + $ref: "#/components/schemas/pool_groups/items/properties/pool_group" + meta_url: + $ref: "#/components/schemas/pool_info/items/properties/meta_url" + meta_hash: + $ref: "#/components/schemas/pool_info/items/properties/meta_hash" + pool_status: + $ref: "#/components/schemas/pool_info/items/properties/pool_status" + active_stake: + $ref: "#/components/schemas/pool_info/items/properties/active_stake" + retiring_epoch: + $ref: "#/components/schemas/pool_info/items/properties/retiring_epoch" + pool_history_info: + description: Array of pool history information + type: array + items: + type: object + properties: + epoch_no: + type: number + description: Epoch for which the pool history data is shown + example: 312 + active_stake: + $ref: "#/components/schemas/pool_info/items/properties/active_stake" + active_stake_pct: + anyOf: + - type: number + - type: "null" + description: Active stake for the pool, expressed as a percentage of total active stake on network + example: 13.512182543475783 + saturation_pct: + type: number + description: Saturation percentage of a pool at the time of snapshot (2 decimals) + example: 45.32 + block_cnt: + anyOf: + - type: number + - type: "null" + description: Number of blocks pool created in that epoch + example: 14 + delegator_cnt: + type: number + description: Number of delegators to the pool for that epoch snapshot + example: 1432 + margin: + type: number + description: Margin (decimal format) + example: 0.125 + fixed_cost: + type: string + description: Pool fixed cost per epoch (in numbers) + example: "340000000" + pool_fees: + type: string + description: Total amount of fees earned by pool owners in that epoch (in numbers) + example: "123327382" + deleg_rewards: + type: string + description: Total amount of rewards earned by delegators in that epoch (in numbers) + example: "123456789123" + member_rewards: + anyOf: + - type: string + - type: "null" + description: Total amount of rewards earned by members (delegator - owner) in that epoch (in numbers) + example: "123456780123" + epoch_ros: + type: number + description: Annualized ROS (return on staking) for delegators for this epoch + example: 3.000340466 + pool_owner_history: + description: Array of pool owner's stake history + type: array + items: + type: object + properties: + pool_id_bech32: + $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" + stake_address: + type: string + description: Individual Stake account registered as (one of the) pool owner(s) + example: stake1uy6yzwsxxc28lfms0qmpxvyz9a7y770rtcqx9y96m42cttqwvp4m5 + declared_pledge: + $ref: "#/components/schemas/pool_info/items/properties/pledge" + epoch: + $ref: "#/components/schemas/pool_history_info/items/properties/epoch_no" + active_stake: + $ref: "#/components/schemas/pool_info/items/properties/active_stake" + pool_info: + description: Array of pool information + type: array + items: + type: object + properties: + pool_id_bech32: + type: string + description: Pool ID (bech32 format) + example: pool155efqn9xpcf73pphkk88cmlkdwx4ulkg606tne970qswczg3asc + pool_id_hex: + type: string + description: Pool ID (Hex format) + example: a532904ca60e13e88437b58e7c6ff66b8d5e7ec8d3f4b9e4be7820ec + active_epoch_no: + $ref: "#/components/schemas/pool_updates/items/properties/active_epoch_no" + vrf_key_hash: + anyOf: + - type: string + - type: "null" + description: Pool VRF key hash + example: 25efdad1bc12944d38e4e3c26c43565bec84973a812737b163b289e87d0d5ed3 + margin: + anyOf: + - type: number + - type: "null" + description: Margin (decimal format) + example: 0.1 + fixed_cost: + anyOf: + - type: string + - type: "null" + description: Pool fixed cost per epoch + example: "500000000" + pledge: + anyOf: + - type: string + - type: "null" + description: Pool pledge in number + example: "64000000000000" + deposit: + anyOf: + - type: string + - type: "null" + description: Pool's registration deposit in number + example: "500000000" + reward_addr: + anyOf: + - type: string + - type: "null" + description: Pool reward address + example: stake1uy6yzwsxxc28lfms0qmpxvyz9a7y770rtcqx9y96m42cttqwvp4m5 + reward_addr_delegated_drep: + anyOf: + - type: string + - type: "null" + description: Reward address' current delegation status to DRep ID in CIP-129 Bech32 format + example: drep1yfhyq6tztjksqqpd5lglc3zr2tn8vylgjh9xzz7n2p4l4lgk3qam3 + owners: + anyOf: + - type: array + - type: "null" + items: + type: string + description: Pool (co)owner address + example: stake1u8088wvudd7dp3rxl0v9xgng8r3j50s65ge3l3jvgd94keqfm3nv3 + relays: + type: array + items: + type: object + properties: + dns: + anyOf: + - type: string + - type: "null" + description: DNS name of the relay (nullable) + example: relays-new.cardano-mainnet.iohk.io + srv: + anyOf: + - type: string + - type: "null" + description: DNS service name of the relay (nullable) + example: biostakingpool3.hopto.org + ipv4: + anyOf: + - type: string + - type: "null" + description: IPv4 address of the relay (nullable) + example: "54.220.20.40" + ipv6: + anyOf: + - type: string + - type: "null" + description: IPv6 address of the relay (nullable) + example: 2604:ed40:1000:1711:6082:78ff:fe0c:ebf + port: + anyOf: + - type: number + - type: "null" + description: Port number of the relay (nullable) + example: 6000 + meta_url: + anyOf: + - type: string + - type: "null" + description: Pool metadata URL + example: https://pools.iohk.io/IOGP.json + meta_hash: + anyOf: + - type: string + - type: "null" + description: Pool metadata hash + example: 37eb004c0dd8a221ac3598ca1c6d6257fb5207ae9857b7c163ae0f39259d6cc0 + meta_json: + anyOf: + - type: object + - type: "null" + properties: + name: + type: string + description: Pool name + example: Input Output Global (IOHK) - Private + ticker: + type: string + description: Pool ticker + example: IOGP + homepage: + type: string + description: Pool homepage URL + example: https://iohk.io + description: + type: string + description: Pool description + example: Our mission is to provide economic identity to the billions of people who lack it. IOHK will not use the IOHK ticker. + pool_status: + type: string + description: Pool status + enum: ["registered", "retiring", "retired"] + example: registered + retiring_epoch: + anyOf: + - type: number + - type: "null" + description: Announced retiring epoch (nullable) + example: null + op_cert: + anyOf: + - type: string + - type: "null" + description: Pool latest operational certificate hash + example: 37eb004c0dd8a221ac3598ca1c6d6257fb5207ae9857b7c163ae0f39259d6cc0 + op_cert_counter: + anyOf: + - type: number + - type: "null" + description: Pool latest operational certificate counter value + example: 8 + active_stake: + anyOf: + - type: string + - type: "null" + description: Amount of delegated stake to this pool at the time of epoch snapshot + example: "64328627680963" + sigma: + anyOf: + - type: number + - type: "null" + description: Pool relative active stake share + example: 0.0034839235 + block_count: + anyOf: + - type: number + - type: "null" + description: Total pool blocks on chain + example: 4509 + live_pledge: + anyOf: + - type: string + - type: "null" + description: Summary of account balance for all pool owner's + example: "64328594406327" + live_stake: + anyOf: + - type: string + - type: "null" + description: Pool live stake + example: "64328627680963" + live_delegators: + type: number + description: Pool live delegator count + example: 5 + live_saturation: + anyOf: + - type: number + - type: "null" + description: Pool live saturation (decimal format) + example: 94.52 + voting_power: + anyOf: + - type: string + - type: "null" + description: Current voting power (lovelaces) of this stake pool + example: "123456789" + pool_snapshot: + type: array + items: + description: Array of pool stake information for 3 snapshots + type: object + properties: + snapshot: + type: string + description: Type of snapshot ("Mark", "Set" or "Go") + example: "Mark" + epoch_no: + type: number + description: Epoch number for the snapshot entry + example: 324 + nonce: + $ref: "#/components/schemas/epoch_params/items/properties/nonce" + pool_stake: + type: string + description: Pool's Active Stake for the given epoch + example: "100000000000" + active_stake: + type: string + description: Total Active Stake for the given epoch + example: "103703246364020" + pool_delegators: + description: Array of live pool delegators + type: array + items: + type: object + properties: + stake_address: + $ref: "#/components/schemas/account_history/items/properties/stake_address" + amount: + type: string + description: Current delegator live stake (in number) + example: "64328591517480" + active_epoch_no: + type: number + description: Epoch number in which the delegation becomes active + example: 324 + latest_delegation_tx_hash: + type: string + description: Latest transaction hash used for delegation by the account + example: 368d08fe86804d637649341d3aec4a9baa7dffa6d00f16de2ba9dba814f1c948 + pool_registrations: + description: Array of pool registrations/retirements + type: array + items: + type: object + properties: + pool_id_bech32: + $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" + tx_hash: + $ref: "#/components/schemas/tx_info/items/properties/tx_hash" + block_hash: + $ref: "#/components/schemas/blocks/items/properties/hash" + block_height: + $ref: "#/components/schemas/blocks/items/properties/block_height" + epoch_no: + $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" + epoch_slot: + $ref: "#/components/schemas/blocks/items/properties/epoch_slot" + active_epoch_no: + $ref: "#/components/schemas/pool_updates/items/properties/active_epoch_no" + pool_delegators_history: + description: Array of pool delegators (historical) + anyOf: + - type: array + - type: "null" + items: + type: object + properties: + stake_address: + $ref: "#/components/schemas/account_history/items/properties/stake_address" + amount: + $ref: "#/components/schemas/pool_delegators/items/properties/amount" + epoch_no: + type: number + description: Epoch number for the delegation history + example: 324 + pool_invalid_delegators: + description: Array of pool delegators that are invalid for the specified epoch + type: array + items: + type: object + properties: + stake_address: + $ref: "#/components/schemas/account_history/items/properties/stake_address" + epoch_no: + $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" + pool_blocks: + description: Array of blocks created by pool + type: array + items: + type: object + properties: + epoch_no: + $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" + epoch_slot: + $ref: "#/components/schemas/blocks/items/properties/epoch_slot" + abs_slot: + $ref: "#/components/schemas/blocks/items/properties/abs_slot" + block_height: + $ref: "#/components/schemas/blocks/items/properties/block_height" + block_hash: + $ref: "#/components/schemas/blocks/items/properties/hash" + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + pool_updates: + description: Array of historical pool updates + type: array + items: + type: object + properties: + tx_hash: + $ref: "#/components/schemas/tx_info/items/properties/tx_hash" + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + pool_id_bech32: + $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" + pool_id_hex: + $ref: "#/components/schemas/pool_info/items/properties/pool_id_hex" + active_epoch_no: + anyOf: + - type: number + - type: "null" + description: Epoch number in which the update becomes active + example: 324 + vrf_key_hash: + $ref: "#/components/schemas/pool_info/items/properties/vrf_key_hash" + margin: + $ref: "#/components/schemas/pool_info/items/properties/margin" + fixed_cost: + $ref: "#/components/schemas/pool_info/items/properties/fixed_cost" + pledge: + $ref: "#/components/schemas/pool_info/items/properties/pledge" + reward_addr: + $ref: "#/components/schemas/pool_info/items/properties/reward_addr" + owners: + $ref: "#/components/schemas/pool_info/items/properties/owners" + relays: + $ref: "#/components/schemas/pool_info/items/properties/relays" + meta_url: + $ref: "#/components/schemas/pool_info/items/properties/meta_url" + meta_hash: + $ref: "#/components/schemas/pool_info/items/properties/meta_hash" + meta_json: + $ref: "#/components/schemas/pool_info/items/properties/meta_json" + update_type: + type: string + description: Type of update task + enum: ["registration", "deregistration"] + example: registration + retiring_epoch: + $ref: "#/components/schemas/pool_info/items/properties/retiring_epoch" + pool_relays: + description: Array of pool relay information + type: array + items: + type: object + properties: + pool_id_bech32: + $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" + relays: + $ref: "#/components/schemas/pool_info/items/properties/relays" + pool_metadata: + description: Array of pool metadata + type: array + items: + type: object + properties: + pool_id_bech32: + $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" + meta_url: + $ref: "#/components/schemas/pool_info/items/properties/meta_url" + meta_hash: + $ref: "#/components/schemas/pool_info/items/properties/meta_hash" + meta_json: + $ref: "#/components/schemas/pool_info/items/properties/meta_json" + pool_calidus_keys: + description: Array of valid calidus keys for all pools + type: array + items: + properties: + pool_id_bech32: + $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" + pool_status: + $ref: "#/components/schemas/pool_info/items/properties/pool_status" + calidus_nonce: + type: number + description: Unique nonce for pool's calidus key registration as per CIP-88 + example: 150720822 + calidus_pub_key: + type: string + description: Calidus public key as per CIP-88 + example: "dea2d81424a285f7fd2846beb39320543ba1df27b890789b2c152b64a352e2df" + calidus_id_bech32: + type: string + description: Calidus key in bech32 format as per CIP-88 + example: "calidus158w8ft8k4endw5q6m0rx2myl2ldvw5f5d8xmwyem6529fcgn575zh" + tx_hash: + $ref: "#/components/schemas/tx_info/items/properties/tx_hash" + epoch_no: + $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" + block_height: + $ref: "#/components/schemas/blocks/items/properties/block_height" + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + registered: + type: boolean + description: Flag to show if the pool has active calidus key as registered + example: true + bytes: + type: string + description: Raw Transaction metadata in hex + example: 19029a324512 + pool_groups: + description: Array of pools with their corresponding group information + type: array + items: + properties: + pool_id_bech32: + $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" + pool_group: + anyOf: + - type: string + - type: "null" + description: A group that the pool was identified to be associated with + example: IOG + ticker: + $ref: "#/components/schemas/pool_info/items/properties/meta_json/properties/ticker" + adastat_group: + anyOf: + - type: string + - type: "null" + description: The pool's group identification as per adastat.net + example: iohk.io + balanceanalytics_group: + anyOf: + - type: string + - type: "null" + description: The pool's group identification as per balanceanalytics.io + example: IOG diff --git a/specs/fragments/schemas/script.yaml b/specs/fragments/schemas/script.yaml new file mode 100644 index 00000000..45ebbdee --- /dev/null +++ b/specs/fragments/schemas/script.yaml @@ -0,0 +1,157 @@ + script_info: + type: array + items: + description: Array of information for scripts + properties: + script_hash: + anyOf: + - type: string + - type: "null" + description: Hash of a script + example: bfa7ffa9b2e164873db6ac6d0528c82e212963bc62e10fd1d81da4af + creation_tx_hash: + type: string + description: Hash of the script creation transaction + example: 255f061502ad83230351fbcf2d9fade1b5d118d332f92c9861075010a1fe3fbe + type: + type: string + description: Type of the script + enum: ["plutusV1", "plutusV2", "timelock", "multisig"] + example: plutusV1 + value: + anyOf: + - type: object + - type: "null" + description: Data in JSON format + example: null + bytes: + anyOf: + - type: string + - type: "null" + description: Script bytes (cborSeq) + example: 5907f4010000332323232323232323233223232323232332232323232322223232533532533533355300712001323212330012233350052200200200100235001220011233001225335002101710010142325335333573466e3cd400488008d4020880080580544ccd5cd19b873500122001350082200101601510153500122002353500122002222222222200a101413357389201115554784f206e6f7420636f6e73756d6564000133333573466e1cd55cea8012400046644246600200600464646464646464646464646666ae68cdc39aab9d500a480008cccccccccc888888888848cccccccccc00402c02802402001c01801401000c008cd40508c8c8cccd5cd19b8735573aa0049000119910919800801801180f9aba150023019357426ae8940088c98d4cd5ce01581501481409aab9e5001137540026ae854028cd4050054d5d0a804999aa80bbae501635742a010666aa02eeb94058d5d0a80399a80a0109aba15006335014335502402275a6ae854014c8c8c8cccd5cd19b8735573aa00490001199109198008018011919191999ab9a3370e6aae754009200023322123300100300233502575a6ae854008c098d5d09aba2500223263533573805e05c05a05826aae7940044dd50009aba150023232323333573466e1cd55cea8012400046644246600200600466a04aeb4d5d0a80118131aba135744a004464c6a66ae700bc0b80b40b04d55cf280089baa001357426ae8940088c98d4cd5ce01581501481409aab9e5001137540026ae854010cd4051d71aba15003335014335502475c40026ae854008c070d5d09aba2500223263533573804e04c04a04826ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150023232323333573466e1d400520062321222230040053019357426aae79400c8cccd5cd19b875002480108c848888c008014c06cd5d09aab9e500423333573466e1d400d20022321222230010053015357426aae7940148cccd5cd19b875004480008c848888c00c014dd71aba135573ca00c464c6a66ae7008808408007c0780740704d55cea80089baa001357426ae8940088c98d4cd5ce00d80d00c80c080c89931a99ab9c4910350543500019018135573ca00226ea8004c8004d5405888448894cd40044d400c88004884ccd401488008c010008ccd54c01c4800401401000448c88c008dd6000990009aa80b111999aab9f00125009233500830043574200460066ae880080548c8c8c8cccd5cd19b8735573aa00690001199911091998008020018011919191999ab9a3370e6aae7540092000233221233001003002301735742a00466a01c02c6ae84d5d1280111931a99ab9c01b01a019018135573ca00226ea8004d5d0a801999aa803bae500635742a00466a014eb8d5d09aba2500223263533573802e02c02a02826ae8940044d55cf280089baa0011335500175ceb44488c88c008dd5800990009aa80a11191999aab9f0022500823350073355017300635573aa004600a6aae794008c010d5d100180a09aba100111220021221223300100400312232323333573466e1d4005200023212230020033005357426aae79400c8cccd5cd19b8750024800884880048c98d4cd5ce00980900880800789aab9d500113754002464646666ae68cdc39aab9d5002480008cc8848cc00400c008c014d5d0a8011bad357426ae8940088c98d4cd5ce00800780700689aab9e5001137540024646666ae68cdc39aab9d5001480008dd71aba135573ca004464c6a66ae7003803403002c4dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6a66ae7004404003c0380340304d55cea80089baa0012323333573466e1d40052002200523333573466e1d40092000200523263533573801a01801601401226aae74dd5000891001091000919191919191999ab9a3370ea002900610911111100191999ab9a3370ea004900510911111100211999ab9a3370ea00690041199109111111198008048041bae35742a00a6eb4d5d09aba2500523333573466e1d40112006233221222222233002009008375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846644244444446600c01201060186ae854024dd71aba135744a01246666ae68cdc3a8032400446424444444600e010601a6ae84d55cf280591999ab9a3370ea00e900011909111111180280418071aba135573ca018464c6a66ae7004c04804404003c03803403002c0284d55cea80209aab9e5003135573ca00426aae7940044dd50009191919191999ab9a3370ea002900111999110911998008028020019bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c8488c00800cc020d5d09aab9e500623263533573801801601401201026aae75400c4d5d1280089aab9e500113754002464646666ae68cdc3a800a400446424460020066eb8d5d09aab9e500323333573466e1d400920002321223002003375c6ae84d55cf280211931a99ab9c009008007006005135573aa00226ea800444888c8c8cccd5cd19b8735573aa0049000119aa80518031aba150023005357426ae8940088c98d4cd5ce00480400380309aab9e5001137540029309000a490350543100112212330010030021123230010012233003300200200133512233002489209366f09fe40eaaeb17d3cb6b0b61e087d664174c39a48a986f86b2b0ba6e2a7b00480008848cc00400c0088005 + size: + type: number + description: The size of the CBOR serialised script (in bytes) + example: 2039 + script_list: + description: List of script and creation tx hash pairs + type: array + items: + properties: + script_hash: + $ref: "#/components/schemas/script_info/items/properties/script_hash" + creation_tx_hash: + $ref: "#/components/schemas/script_info/items/properties/creation_tx_hash" + type: + $ref: "#/components/schemas/script_info/items/properties/type" + size: + $ref: "#/components/schemas/script_info/items/properties/size" + script_redeemers: + description: Array of all redeemers for a given script hash + type: array + items: + type: object + properties: + script_hash: + $ref: "#/components/schemas/script_info/items/properties/script_hash" + redeemers: + type: array + items: + type: object + properties: + tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + tx_index: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" + unit_mem: + anyOf: + - type: string + - type: number + - type: "null" + description: The budget in Memory to run a script + example: 520448 + unit_steps: + anyOf: + - type: string + - type: number + - type: "null" + description: The budget in Cpu steps to run a script + example: 211535239 + fee: + type: string + description: The budget in fees to run a script - the fees depend on the ExUnits and the current prices + example: "45282" + purpose: + type: string + description: What kind of validation this redeemer is used for + enum: ["spend", "mint", "cert", "reward"] + example: spend + datum_hash: + anyOf: + - type: string + - type: "null" + description: The Hash of the Plutus Data + example: 5a595ce795815e81d22a1a522cf3987d546dc5bb016de61b002edd63a5413ec4 + datum_value: + $ref: "#/components/schemas/script_info/items/properties/value" + script_utxos: + description: List of all unspent utxos with a reference script matching given script hashes + type: array + items: + properties: + script_hash: + $ref: "#/components/schemas/script_info/items/properties/script_hash" + tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + tx_index: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" + datum_info: + description: Array of datum information for given datum hashes + type: array + items: + type: object + properties: + datum_hash: + $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_hash" + creation_tx_hash: + $ref: "#/components/schemas/script_info/items/properties/creation_tx_hash" + value: + $ref: "#/components/schemas/script_info/items/properties/value" + bytes: + $ref: "#/components/schemas/script_info/items/properties/bytes" + + ogmiostip: + description: Current tip of the chain, identified by a slot and a block header hash. + type: object + properties: + jsonrpc: + type: string + description: Identifier for JSON-RPC 2.0 standard + example: "2.0" + method: + type: string + description: The Ogmios method that was called in the request + example: "queryNetwork/tip" + result: + anyOf: + - type: string + - type: number + - type: array + - type: object + - type: "null" + description: Result of the query + properties: + slot: + type: number + description: Absolute slot number on chain + example: 59886800 + id: + type: string + description: Block Hash (Blake2b 32-byte hash digest, encoded in base16) + example: "df5678c9774b7bc8c60a4c83b63c3676e618640ad05f7d1ee775b68939cf77d1" + example: + { + "slot": 59886800, + "id": "df5678c9774b7bc8c60a4c83b63c3676e618640ad05f7d1ee775b68939cf77d1", + } diff --git a/specs/fragments/schemas/transactions.yaml b/specs/fragments/schemas/transactions.yaml new file mode 100644 index 00000000..9faf316c --- /dev/null +++ b/specs/fragments/schemas/transactions.yaml @@ -0,0 +1,622 @@ + tx_info: + description: Array of detailed information about transaction(s) + type: array + items: + type: object + properties: + tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + block_hash: + $ref: "#/components/schemas/blocks/items/properties/hash" + block_height: + $ref: "#/components/schemas/blocks/items/properties/block_height" + epoch_no: + $ref: "#/components/schemas/blocks/items/properties/epoch_no" + epoch_slot: + $ref: "#/components/schemas/blocks/items/properties/epoch_slot" + absolute_slot: + $ref: "#/components/schemas/blocks/items/properties/abs_slot" + tx_timestamp: + type: number + description: UNIX timestamp of the transaction + example: 1506635091 + tx_block_index: + type: number + description: Index of transaction within block + example: 6 + tx_size: + type: number + description: Size in bytes of transaction + example: 391 + total_output: + type: string + description: Total sum of all transaction outputs (in numbers) + example: "157832856" + fee: + type: string + description: Total Transaction fee (in numbers) + example: "172761" + treasury_donation: + type: string + description: Total Donation to on-chain treasury (in numbers) + example: "0" + deposit: + type: string + description: Total Deposits included in transaction (for example, if it is registering a pool/key) + example: "0" + invalid_before: + anyOf: + - type: string + - type: "null" + description: Slot before which transaction cannot be validated (if supplied, else null) + example: "42331172" + invalid_after: + anyOf: + - type: string + - type: "null" + description: Slot after which transaction cannot be validated + example: "42332172" + collateral_inputs: + description: An array of collateral inputs needed for smart contracts in case of contract failure + anyOf: + - $ref: "#/components/schemas/tx_info/items/properties/outputs" + - type: "null" + collateral_output: + description: A collateral output for change if the smart contract fails to execute and collateral inputs are spent. (CIP-40) + anyOf: + - type: array + - type: "null" + items: + properties: + payment_addr: + $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/payment_addr" + stake_addr: + $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/stake_addr" + tx_hash: + $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/tx_hash" + tx_index: + $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/tx_index" + value: + $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/value" + datum_hash: + $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/datum_hash" + inline_datum: + $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/inline_datum" + reference_script: + $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/reference_script" + asset_list: + type: array + description: Brief asset description from ledger + reference_inputs: + description: An array of reference inputs. A reference input allows looking at an output without spending it. (CIP-31) + anyOf: + - $ref: "#/components/schemas/tx_info/items/properties/outputs" + - type: "null" + inputs: + $ref: "#/components/schemas/tx_info/items/properties/outputs" + #description: An array of UTxO inputs spent in the transaction + outputs: + type: array + description: An array of UTxO outputs created by the transaction + items: + type: object + properties: + payment_addr: + type: object + properties: + bech32: + $ref: "#/components/schemas/utxo_infos/items/properties/address" + cred: + type: string + description: Payment credential + example: de3c1c527e8826b9cd2030f88f75fc44cd4ce519b9ded9eb794b3794 + stake_addr: + $ref: "#/components/schemas/address_info/items/properties/stake_address" + tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + tx_index: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" + value: + type: string + description: Total sum of ADA on the UTxO + example: "157832856" + datum_hash: + anyOf: + - type: string + - type: "null" + description: Hash of datum (if any) connected to UTxO + example: 30c16dd243324cf9d90ffcf211b9e0f2117a7dc28d17e85927dfe2af3328e5c9 + inline_datum: + anyOf: + - type: object + - type: "null" + description: Allows datums to be attached to UTxO (CIP-32) + properties: + bytes: + type: string + description: Datum bytes (hex) + example: 19029a + value: + type: object + description: Value (json) + example: { "int": 666 } + reference_script: + anyOf: + - type: object + - type: "null" + description: Allow reference scripts to be used to satisfy script requirements during validation, rather than requiring the spending transaction to do so. (CIP-33) + properties: + hash: + type: string + description: Hash of referenced script + example: 67f33146617a5e61936081db3b2117cbf59bd2123748f58ac9678656 + size: + type: number + description: Size in bytes + example: 14 + type: + type: string + description: Type of script + example: plutusV1 + bytes: + type: string + description: Script bytes (hex) + example: 4e4d01000033222220051200120011 + value: + anyOf: + - type: object + - type: "null" + description: Value (json) + example: null + asset_list: + $ref: "#/components/schemas/utxo_infos/items/properties/asset_list" + withdrawals: + anyOf: + - type: array + - type: "null" + description: Array of withdrawals with-in a transaction + items: + type: object + properties: + amount: + type: string + description: Withdrawal amount (in numbers) + example: "9845162" + stake_addr: + type: string + description: A Cardano staking address (reward account, bech32 encoded) + example: stake1uxggf4shfvpghcangm67ky0q4zlc3xn7gezy0auhxczu3pslm9wrj + assets_minted: + anyOf: + - type: array + - type: "null" + description: Array of minted assets with-in a transaction + items: + properties: + policy_id: + $ref: "#/components/schemas/asset_info/items/properties/policy_id" + asset_name: + $ref: "#/components/schemas/asset_info/items/properties/asset_name" + fingerprint: + $ref: "#/components/schemas/asset_info/items/properties/fingerprint" + decimals: + $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" + quantity: + type: string + description: Quantity of minted assets (negative on burn) + example: "1" + metadata: + $ref: "#/components/schemas/tx_metadata/items/properties/metadata" + certificates: + anyOf: + - type: array + - type: "null" + description: Certificates present with-in a transaction (if any) + items: + properties: + index: + anyOf: + - type: number + - type: "null" + description: Certificate index + example: 0 + type: + type: string + description: Type of certificate (could be delegation, stake_registration, stake_deregistraion, pool_update, pool_retire, param_proposal, reserve_MIR, treasury_MIR) + example: delegation + info: + anyOf: + - type: object + - type: "null" + description: A JSON array containing information from the certificate + example: + { + "stake_address": "stake1uxggf4shfvpghcangm67ky0q4zlc3xn7gezy0auhxczu3pslm9wrj", + "pool": "pool1k53pf4wzn263c08e3wr3gttndfecm9f4uzekgctcx947vt7fh2p", + } + native_scripts: + anyOf: + - type: array + - type: "null" + description: Native scripts present in a transaction (if any) + items: + properties: + script_hash: + $ref: "#/components/schemas/script_info/items/properties/script_hash" + script_json: + type: object + description: JSON representation of the timelock script (null for other script types) + example: + { + "type": "all", + "scripts": + [ + { + "type": "sig", + "keyHash": "a96da581c39549aeda81f539ac3940ac0cb53657e774ca7e68f15ed9", + }, + { + "type": "sig", + "keyHash": "ccfcb3fed004562be1354c837a4a4b9f4b1c2b6705229efeedd12d4d", + }, + { + "type": "sig", + "keyHash": "74fcd61aecebe36aa6b6cd4314027282fa4b41c3ce8af17d9b77d0d1", + }, + ], + } + plutus_contracts: + anyOf: + - type: array + - type: "null" + description: Plutus contracts present in transaction (if any) + items: + properties: + address: + anyOf: + - type: string + - type: "null" + description: Plutus script address + example: addr1w999n67e86jn6xal07pzxtrmqynspgx0fwmcmpua4wc6yzsxpljz3 + spends_input: + anyOf: + - type: object + - type: "null" + properties: + tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + tx_index: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" + description: Input utxo this contract spends + script_hash: + $ref: "#/components/schemas/script_info/items/properties/script_hash" + bytecode: + $ref: "#/components/schemas/script_info/items/properties/bytes" + size: + $ref: "#/components/schemas/script_info/items/properties/size" + valid_contract: + type: boolean + description: True if the contract is valid or there is no contract + example: true + input: + type: object + properties: + redeemer: + type: object + properties: + purpose: + $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/purpose" + fee: + $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/fee" + unit: + type: object + properties: + steps: + $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/unit_steps" + mem: + $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/unit_mem" + datum: + type: object + properties: + hash: + $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_hash" + value: + $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_value" + datum: + type: object + properties: + hash: + $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_hash" + value: + $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_value" + voting_procedures: + anyOf: + - type: array + - type: "null" + description: Governance votes in a transaction (if any) + items: + properties: + proposal_tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + proposal_index: + $ref: "#/components/schemas/proposal_list/items/properties/proposal_index" + voter_role: + $ref: "#/components/schemas/proposal_votes/items/properties/voter_role" + voter: + $ref: "#/components/schemas/proposal_votes/items/properties/voter_id" + voter_hex: + $ref: "#/components/schemas/proposal_votes/items/properties/voter_hex" + vote: + $ref: "#/components/schemas/drep_votes/items/properties/vote" + proposal_procedures: + anyOf: + - type: array + - type: "null" + description: Governance proposals in a transaction (if any) + items: + properties: + index: + $ref: "#/components/schemas/proposal_list/items/properties/proposal_index" + type: + $ref: "#/components/schemas/proposal_list/items/properties/proposal_type" + description: + $ref: "#/components/schemas/proposal_list/items/properties/proposal_description" + deposit: + $ref: "#/components/schemas/drep_info/items/properties/deposit" + return_address: + $ref: "#/components/schemas/proposal_list/items/properties/return_address" + expiration: + $ref: "#/components/schemas/proposal_list/items/properties/expiration" + meta_url: + $ref: "#/components/schemas/drep_metadata/items/properties/meta_url" + meta_hash: + $ref: "#/components/schemas/drep_metadata/items/properties/meta_hash" + withdrawal: + $ref: "#/components/schemas/proposal_list/items/properties/withdrawal" + param_proposal: + $ref: "#/components/schemas/proposal_list/items/properties/param_proposal" + tx_cbor: + description: Raw Transaction(s) in CBOR format + items: + properties: + tx_hash: + $ref: "#/components/schemas/tx_info/items/properties/tx_hash" + block_hash: + $ref: "#/components/schemas/blocks/items/properties/hash" + block_height: + $ref: "#/components/schemas/blocks/items/properties/block_height" + epoch_no: + $ref: "#/components/schemas/blocks/items/properties/epoch_no" + absolute_slot: + $ref: "#/components/schemas/blocks/items/properties/abs_slot" + tx_timestamp: + $ref: "#/components/schemas/tx_info/items/properties/tx_timestamp" + cbor: + type: string + description: CBOR encoded raw transaction. + tx_utxos: + description: Array of inputs and outputs for given transaction(s) + type: array + items: + properties: + tx_hash: + $ref: "#/components/schemas/tx_info/items/properties/tx_hash" + inputs: + type: array + description: An array of UTxO inputs used by the transaction + items: + type: object + properties: + payment_addr: + type: object + properties: + bech32: + type: string + description: A Cardano payment/base address (bech32 encoded) where funds were sent or change to be returned + example: addr1q80rc8zj06yzdwwdyqc03rm4l3zv6n89rxuaak0t099n09yssntpwjcz303mx3h4avg7p29l3zd8u3jyglmewds9ezrqad9mkw + cred: + type: string + description: Payment credential + example: de3c1c527e8826b9cd2030f88f75fc44cd4ce519b9ded9eb794b3794 + stake_addr: + $ref: "#/components/schemas/address_info/items/properties/stake_address" + tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + tx_index: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" + value: + type: string + description: Total sum of ADA on the UTxO + example: 157832856 + outputs: + description: An array of UTxO outputs created by the transaction + allOf: + - $ref: "#/components/schemas/tx_utxos/items/properties/inputs" + tx_metadata: + description: Array of metadata information present in each of the transactions queried + anyOf: + - type: array + - type: "null" + items: + properties: + tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + metadata: + anyOf: + - type: object + - type: "null" + description: A JSON array containing details about metadata within transaction + example: + { + "721": + { + "version": 1, + "copyright": "...", + "publisher": ["p...o"], + "4bf184e01e0f163296ab253edd60774e2d34367d0e7b6cbc689b567d": + {}, + }, + } + tx_status: + description: Array of transaction confirmation counts + type: array + items: + properties: + tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + num_confirmations: + anyOf: + - type: number + - type: "null" + description: Number of block confirmations + example: 17 + tx_metalabels: + description: Array of known metadata labels + type: array + items: + properties: + key: + type: string + description: A distinct known metalabel + example: "721" + tx_by_metalabel: + description: Array of transactions containing the queried metadata label + type: array + items: + type: object + properties: + tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + block_hash: + $ref: "#/components/schemas/blocks/items/properties/hash" + block_height: + $ref: "#/components/schemas/blocks/items/properties/block_height" + epoch_no: + $ref: "#/components/schemas/blocks/items/properties/epoch_no" + absolute_slot: + $ref: "#/components/schemas/blocks/items/properties/abs_slot" + tx_timestamp: + $ref: "#/components/schemas/blocks/items/properties/block_time" + utxo_infos: + description: Array of complete UTxO information + type: array + items: + type: object + properties: + tx_hash: + type: string + description: Hash identifier of the transaction + example: f144a8264acf4bdfe2e1241170969c930d64ab6b0996a4a45237b623f1dd670e + tx_index: + type: number + description: Index of UTxO in the transaction + example: 0 + address: + type: string + description: A Cardano payment/base address (bech32 encoded) + example: addr1qxkfe8s6m8qt5436lec3f0320hrmpppwqgs2gah4360krvyssntpwjcz303mx3h4avg7p29l3zd8u3jyglmewds9ezrqdc3cxp + value: + $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/value" + stake_address: + $ref: "#/components/schemas/address_info/items/properties/stake_address" + payment_cred: + anyOf: + - type: string + - type: "null" + description: Payment credential + example: de3c1c527e8826b9cd2030f88f75fc44cd4ce519b9ded9eb794b3794 + epoch_no: + $ref: "#/components/schemas/blocks/items/properties/epoch_no" + block_height: + $ref: "#/components/schemas/blocks/items/properties/block_height" + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + datum_hash: + $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_hash" + inline_datum: + $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/inline_datum" + reference_script: + $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/reference_script" + asset_list: + anyOf: + - type: array + - type: "null" + description: An array of assets on the UTxO + items: + properties: + policy_id: + $ref: "#/components/schemas/asset_info/items/properties/policy_id" + asset_name: + $ref: "#/components/schemas/asset_info/items/properties/asset_name" + fingerprint: + $ref: "#/components/schemas/asset_info/items/properties/fingerprint" + decimals: + $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" + quantity: + type: string + description: Quantity of assets on the UTxO + example: "1" + is_spent: + type: boolean + description: True if the UTxO has been spent + example: true + tx_outs_epoch: + description: List of transaction outputs with basic details for requested epoch + type: array + items: + type: object + properties: + tx_hash: + type: string + description: Hash identifier of the transaction + example: f144a8264acf4bdfe2e1241170969c930d64ab6b0996a4a45237b623f1dd670e + tx_index: + type: number + description: Index of UTxO in the transaction + example: 0 + address: + type: string + description: A Cardano payment/base address (bech32 encoded) + example: addr1qxkfe8s6m8qt5436lec3f0320hrmpppwqgs2gah4360krvyssntpwjcz303mx3h4avg7p29l3zd8u3jyglmewds9ezrqdc3cxp + stake_address: + $ref: "#/components/schemas/address_info/items/properties/stake_address" + payment_cred: + anyOf: + - type: string + - type: "null" + description: Payment credential + example: de3c1c527e8826b9cd2030f88f75fc44cd4ce519b9ded9eb794b3794 + epoch_no: + $ref: "#/components/schemas/blocks/items/properties/epoch_no" + block_height: + $ref: "#/components/schemas/blocks/items/properties/block_height" + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + value: + $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/value" + datum_hash: + $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_hash" + is_spent: + type: boolean + description: True if the UTxO has been spent + example: true + tx_treasury_donations_epoch: + description: List of treasury donation transactions for requested epoch (current if NULL) + type: array + items: + type: object + properties: + epoch_no: + $ref: "#/components/schemas/blocks/items/properties/epoch_no" + tx_hash: + $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" + block_hash: + $ref: "#/components/schemas/blocks/items/properties/hash" + tx_block_index: + $ref: "#/components/schemas/tx_info/items/properties/tx_block_index" + block_height: + $ref: "#/components/schemas/blocks/items/properties/block_height" + block_time: + $ref: "#/components/schemas/blocks/items/properties/block_time" + treasury_donation: + $ref: "#/components/schemas/tx_info/items/properties/treasury_donation" diff --git a/specs/networks.yaml b/specs/networks.yaml new file mode 100644 index 00000000..3de408c5 --- /dev/null +++ b/specs/networks.yaml @@ -0,0 +1,10 @@ +networks: + mainnet: + key: m + output: results/koiosapi-mainnet.yaml + preview: + key: pv + output: results/koiosapi-preview.yaml + preprod: + key: pp + output: results/koiosapi-preprod.yaml diff --git a/specs/results/koiosapi-guild.yaml b/specs/results/koiosapi-guild.yaml deleted file mode 100644 index 27f7506d..00000000 --- a/specs/results/koiosapi-guild.yaml +++ /dev/null @@ -1,6994 +0,0 @@ -openapi: 3.1.0 -info: - title: Koios API - contact: - name: Koios Core Team - url: https://t.me/CardanoKoios - email: general@koios.rest - license: - name: Creative Commons Attribution 4.0 International - url: https://github.com/cardano-community/koios-artifacts/blob/main/LICENSE - version: v1.4.1 - description: | - Koios is best described as a Decentralized and Elastic RESTful query layer for exploring data on Cardano blockchain to consume within applications/wallets/explorers/etc. This page not only provides an OpenAPI Spec for live implementation, but also ability to execute live demo from client browser against each endpoint with pre-filled examples. - - # API Usage - - The endpoints served by Koios can be browsed from the left side bar of this site. You will find that almost each endpoint has an example that you can `Try` and will help you get an example in shell using cURL. For public queries, you do not need to register yourself - you can simply use them as per the examples provided on individual endpoints. But in addition, the [PostgREST API](https://postgrest.org/en/stable/api.html) used underneath provides a handful of features that can be quite handy for you to improve your queries to directly grab very specific information pertinent to your calls, reducing data you download and process. - - ## Vertical Filtering - - Instead of returning entire row, you can elect which rows you would like to fetch from the endpoint by using the `select` parameter with corresponding columns separated by commas. See example below (first is complete information for tip, while second command gives us 3 columns we are interested in):

    - - ``` bash - curl "https://api.koios.rest/api/v1/tip" - - # [{"hash":"4d44c8a453e677f933c3df42ebcf2fe45987c41268b9cfc9b42ae305e8c3d99a","epoch_no":317,"abs_slot":51700871,"epoch_slot":120071,"block_height":6806994,"block_time":1643267162}] - - curl "https://api.koios.rest/api/v1/blocks?select=epoch_no,epoch_slot,block_height" - - # [{"epoch_no":317,"epoch_slot":120071,"block_height":6806994}] - ``` - - ## Horizontal Filtering - - You can filter the returned output based on specific conditions using operators against a column within returned result. Consider an example where you would want to query blocks minted in first 3 minutes of epoch 250 (i.e. epoch_slot was less than 180). To do so your query would look like below:

    - ``` bash - curl "https://api.koios.rest/api/v1/blocks?epoch_no=eq.250&epoch_slot=lt.180" - - # [{"hash":"8fad2808ac6b37064a0fa69f6fe065807703d5235a57442647bbcdba1c02faf8","epoch_no":250,"abs_slot":22636942,"epoch_slot":142,"block_height":5385757,"block_time":1614203233,"tx_count":65,"vrf_key":"vrf_vk14y9pjprzlsjvjt66mv5u7w7292sxp3kn4ewhss45ayjga5vurgaqhqknuu","pool":null,"op_cert_counter":2}, - # {"hash":"9d33b02badaedc0dedd0d59f3e0411e5fb4ac94217fb5ee86719e8463c570e16","epoch_no":250,"abs_slot":22636800,"epoch_slot":0,"block_height":5385756,"block_time":1614203091,"tx_count":10,"vrf_key":"vrf_vk1dkfsejw3h2k7tnguwrauqfwnxa7wj3nkp3yw2yw3400c4nlkluwqzwvka6","pool":null,"op_cert_counter":2}] - ``` - - Here, we made use of `eq.` operator to denote a filter of "value equal to" against `epoch_no` column. Similarly, we added a filter using `lt.` operator to denote a filter of "values lower than" against `epoch_slot` column. You can find a complete list of operators supported in PostgREST documentation (commonly used ones extracted below): - - |Abbreviation|In PostgreSQL|Meaning | - |------------|-------------|-------------------------------------------| - |eq |`=` |equals | - |gt |`>` |greater than | - |gte |`>=` |greater than or equal | - |lt |`<` |less than | - |lte |`<=` |less than or equal | - |neq |`<>` or `!=` |not equal | - |like |`LIKE` |LIKE operator (use * in place of %) | - |in |`IN` |one of a list of values, e.g. `?a=in.("hi,there","yes,you")`| - |is |`IS` |checking for exact equality (null,true,false,unknown)| - |cs |`@>` |contains e.g. `?tags=cs.{example, new}` | - |cd |`<@` |contained in e.g. `?values=cd.{1,2,3}` | - |not |`NOT` |negates another operator | - |or |`OR` |logical `OR` operator | - |and |`AND` |logical `AND` operator | - - ## Pagination (offset/limit) - - When you query any endpoint in PostgREST, the number of observations returned will be limited to a maximum of 1000 rows (set via `max-rows` config option in the `grest.conf` file. This - however - is a result of a paginated call, wherein the [ up to ] 1000 records you see without any parameters is the first page. If you want to see the next 1000 results, you can always append `offset=1000` to view the next set of results. But what if 1000 is too high for your use-case and you want smaller page? Well, you can specify a smaller limit using parameter `limit`, which will see shortly in an example below. The obvious question at this point that would cross your mind is - how do I know if I need to offset and what range I am querying? This is where headers come in to your aid. - - The default headers returned by PostgREST will include a `Content-Range` field giving a range of observations returned. For large tables, this range could include a wildcard `*` as it is expensive to query exact count of observations from endpoint. But if you would like to get an estimate count without overloading servers, PostgREST can utilise Postgres's own maintenance thread results (which maintain stats for each table) to provide you a count, by specifying a header `"Prefer: count=estimated"`. - - Sounds confusing? Let's see this in practice, to hopefully make it easier. - Consider a simple case where I want query `blocks` endpoint for `block_height` column and focus on `content-range` header to monitor the rows we discussed above.

    - - ``` bash - curl -s "https://api.koios.rest/api/v1/blocks?select=block_height" -I | grep -i content-range - - # content-range: 0-999/* - - ``` - - As we can see above, the number of observations returned was 1000 (range being 0-999), but the total size was not queried to avoid wait times. Now, let's modify this default behaviour to query rows beyond the first 999, but this time - also add another clause to limit results by 500. We can do this using `offset=1000` and `limit=500` as below:

    - - ``` bash - curl -s "https://api.koios.rest/api/v1/blocks?select=block_height&offset=1000&limit=500" -I | grep -i content-range - - # content-range: 1000-1499/* - - ``` - - The above methods for pagination are very useful to keep some of the queries light as well as process the output in smaller pages, making better use of your resources and respecting server timeouts for response times. - However, note that due to the complex nature of some queries that require pre-processing before being subjected to paginations, these may not always be helpful to avoid server timeouts. - - ## Ordering - - You can set a sorting order for returned queries against specific column(s). - Consider example where you want to check `epoch_no` and `epoch_slot` for the first 5 blocks created by a particular pool, i.e. you can set order to ascending based on block_height column and add horizontal filter for that pool ID as below:

    - - ``` bash - curl -s "https://api.koios.rest/api/v1/blocks?pool=eq.pool155efqn9xpcf73pphkk88cmlkdwx4ulkg606tne970qswczg3asc&order=block_height.asc&limit=5" - - # [{"hash":"610b4c7bbebeeb212bd002885048cc33154ba29f39919d62a3d96de05d315706","epoch_no":236,"abs_slot":16594295,"epoch_slot":5495,"block_height":5086774,"block_time":1608160586,"tx_count":1,"vrf_key":"vrf_vk18x0e7dx8j37gdxftnn8ru6jcxs7n6acdazc4ykeda2ygjwg9a7ls7ns699","pool":"pool155efqn9xpcf73pphkk88cmlkdwx4ulkg606tne970qswczg3asc","op_cert_counter":1}, - # {"hash":"d93d1db5275329ab695d30c06a35124038d8d9af64fc2b0aa082b8aa43da4164","epoch_no":236,"abs_slot":16597729,"epoch_slot":8929,"block_height":5086944,"block_time":1608164020,"tx_count":7,"vrf_key":"vrf_vk18x0e7dx8j37gdxftnn8ru6jcxs7n6acdazc4ykeda2ygjwg9a7ls7ns699","pool":"pool155efqn9xpcf73pphkk88cmlkdwx4ulkg606tne970qswczg3asc","op_cert_counter":1}, - # {"hash":"dc9496eae64294b46f07eb20499ae6dae4d81fdc67c63c354397db91bda1ee55","epoch_no":236,"abs_slot":16598058,"epoch_slot":9258,"block_height":5086962,"block_time":1608164349,"tx_count":1,"vrf_key":"vrf_vk18x0e7dx8j37gdxftnn8ru6jcxs7n6acdazc4ykeda2ygjwg9a7ls7ns699","pool":"pool155efqn9xpcf73pphkk88cmlkdwx4ulkg606tne970qswczg3asc","op_cert_counter":1}, - # {"hash":"6ebc7b734c513bc19290d96ca573a09cac9503c5a349dd9892b9ab43f917f9bd","epoch_no":236,"abs_slot":16601491,"epoch_slot":12691,"block_height":5087097,"block_time":1608167782,"tx_count":0,"vrf_key":"vrf_vk18x0e7dx8j37gdxftnn8ru6jcxs7n6acdazc4ykeda2ygjwg9a7ls7ns699","pool":"pool155efqn9xpcf73pphkk88cmlkdwx4ulkg606tne970qswczg3asc","op_cert_counter":1}, - # {"hash":"2eac97548829fc312858bc56a40f7ce3bf9b0ca27ee8530283ccebb3963de1c0","epoch_no":236,"abs_slot":16602308,"epoch_slot":13508,"block_height":5087136,"block_time":1608168599,"tx_count":1,"vrf_key":"vrf_vk18x0e7dx8j37gdxftnn8ru6jcxs7n6acdazc4ykeda2ygjwg9a7ls7ns699","pool":"pool155efqn9xpcf73pphkk88cmlkdwx4ulkg606tne970qswczg3asc","op_cert_counter":1}] - ``` - - ## Response Formats - - You can get the results from the PostgREST endpoints in CSV or JSON formats. The default response format will always be JSON, but if you'd like to switch, you can do so by specifying header `'Accept: text/csv'` or `'Accept: application/json'`. - Below is an example of JSON/CSV output making use of above to print first in JSON (default), and then override response format to CSV.

    - - ``` bash - curl -s "https://api.koios.rest/api/v1/blocks?select=epoch_no,epoch_slot,block_time&limit=3" - - # [{"epoch_no":318,"epoch_slot":27867,"block_time":1643606958}, - # {"epoch_no":318,"epoch_slot":27841,"block_time":1643606932}, - # {"epoch_no":318,"epoch_slot":27839,"block_time":1643606930}] - - curl -s "https://api.koios.rest/api/v1/blocks?select=epoch_no,epoch_slot,block_time&limit=3" -H "Accept: text/csv" - - # epoch_no,epoch_slot,block_time - # 318,28491,1643607582 - # 318,28479,1643607570 - # 318,28406,1643607497 - - ``` - - ## Limits - - While use of Koios is completely free and there are no registration requirements to the usage, the monitoring layer will only restrict spam requests that can potentially cause high amount of load to backends. The emphasis is on using list of objects first, and then [bulk where available] query specific objects to drill down where possible - which forms higher performance results to consumer as well as instance provider. Some basic protection against patterns that could cause unexpected resource spikes are protected as per below: - - - Burst Limit: A single IP can query an endpoint up to 100 times within 10 seconds (that's about 8.64 million requests within a day). The sleep time if a limit is crossed is minimal (60 seconds) for that IP - during which, the monitoring layer will return HTTP Status `429 - Too many requests`. - - Pagination/Limits: Any query results fetched will be paginated by 1000 records (you can reduce limit and or control pagination offsets on URL itself, see API > Pagination section for more details). - - Query timeout: If a query from server takes more than 30 seconds, it will return a HTTP Status of `504 - Gateway timeout`. This is because we would want to ensure you're using the queries optimally, and more often than not - it would indicate that particular endpoint is not optimised (or the network connectivity is not optimal between servers). - - Payload size limit: Koios supports sending bulk objects to reduce networking costs as well as number of calls users spent. However, this can also become an easy attack surface. Thus, we've had to add a strict limit for request body size to be limited to 1kb for public and 5kb for registered tiers. - - Yet, there may be cases where the above restrictions may need exceptions (for example, an explorer or a wallet might need more connections than above - going beyond the Burst Limit). For such cases, it is best to approach the team and we can work towards a solution. - - # Authentication - - While Koios public tier remains unauthenticated and allows queries without any authentication, it has low limits to prevent actions against an erroraneous query/loop from a consumer. There is also a Free tier which requires setting up Bearer Auth token that is linked to the owner's wallet account (which can be connected to via [Koios website](https://koios.rest/pricing/Pricing.html) ). - The examples across this API site already [supports authentication](/#auth), for you to use in the queries. - - # Community projects - - A big thank you to the following projects who are already starting to use Koios from early days. A list of tools, libraries and projects utilising Koios (atleast those who'd like to be named) can be found [here](https://www.koios.rest/community.html) - - x-logo: - url: "https://api.koios.rest/images/koios.png" -servers: - - url: https://api.koios.rest/api/v1 - description: Mainnet - - url: https://preview.koios.rest/api/v1 - description: Preview Network - - url: https://preprod.koios.rest/api/v1 - description: Preprod Network - - url: https://sancho.koios.rest/api/v1 - description: Sanchonet Network -paths: - /tip: #RPC - get: - tags: - - Network - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/tip" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Query Chain Tip - description: Get the tip info about the latest block seen by chain - operationId: tip - /era_summaries: #RPC - get: - tags: - - Network - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/era_summaries" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Get Era Summaries - description: Get some information about each era on the network alongwith it's start epoch - operationId: era_summaries - /genesis: #RPC - get: - tags: - - Network - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/genesis" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Get Genesis info - description: Get the Genesis parameters used to start specific era on chain - operationId: genesis - /totals: #RPC - get: - tags: - - Network - parameters: - - $ref: "#/components/parameters/_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/totals" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Get historical tokenomic stats - description: >- - Get the circulating utxo, treasury, rewards, supply and reserves in - lovelace for specified epoch, all epochs if empty - operationId: totals - /param_updates: #RPC - get: - tags: - - Network - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/param_updates" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Param Update Proposals - description: Get all parameter update proposals submitted to the chain starting Shelley era - operationId: param_updates - /cli_protocol_params: #RPC - get: - tags: - - Network - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/cli_protocol_params" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: CLI Protocol Parameters - description: >- - Get Current Protocol Parameters as published by cardano-cli. Note that - the output schema of this command is unfortunately fluid on cardano-node - and may vary between CLI versions/era. Accordingly, the returned output for - this endpoint is left as raw JSON (single row) and any filtering to output should - be done on client-side - operationId: cli_protocol_params - /reserve_withdrawals: #RPC - get: - tags: - - Network - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/reserve_withdrawals" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Reserve Withdrawals - description: List of all withdrawals from reserves against stake accounts - operationId: reserve_withdrawals - /treasury_withdrawals: #RPC - get: - tags: - - Network - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/reserve_withdrawals" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Treasury Withdrawals - description: List of all withdrawals from treasury against stake accounts - operationId: treasury_withdrawals - - /epoch_info: #RPC - get: - tags: - - Epoch - parameters: - - $ref: "#/components/parameters/_epoch_no" - - $ref: "#/components/parameters/_include_next_epoch" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/epoch_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Epoch Information - description: Get the epoch information, all epochs if no epoch specified - operationId: epoch_info - /epoch_params: #RPC - get: - tags: - - Epoch - parameters: - - $ref: "#/components/parameters/_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/epoch_params" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Epoch's Protocol Parameters - description: >- - Get the protocol parameters for specific epoch, returns information - about all epochs if no epoch specified - operationId: epoch_params - /epoch_block_protocols: #RPC - get: - tags: - - Epoch - parameters: - - $ref: "#/components/parameters/_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/epoch_block_protocols" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Epoch's Block Protocols - description: >- - Get the information about block protocol distribution in epoch - operationId: epoch_block_protocols - - /blocks: #RPC - get: - tags: - - Block - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/blocks" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Block List - description: Get summarised details about all blocks (paginated - latest first) - operationId: blocks - /block_info: #RPC - post: - tags: - - Block - requestBody: - $ref: "#/components/requestBodies/block_hashes" - responses: - "200": - description: Success - content: - application/json: - schema: - $ref: "#/components/schemas/block_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Block Information - description: Get detailed information about a specific block - operationId: block_info - /block_txs: #RPC - post: - tags: - - Block - requestBody: - $ref: "#/components/requestBodies/block_hashes" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/block_txs" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Block Transactions - description: Get a list of all transactions included in provided blocks - operationId: block_txs - /block_tx_cbor: #RPC - post: - tags: - - Block - requestBody: - $ref: "#/components/requestBodies/block_hashes" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/block_tx_cbor" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Block Transactions (Raw CBOR) - description: Get raw CBOR data for all transaction(s) within requested blocks - operationId: block_tx_cbor - /block_tx_info: #RPC - post: - deprecated: true - tags: - - Block - requestBody: - $ref: "#/components/requestBodies/block_tx_info" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/block_tx_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Block Transactions (Detailed Info) - description: Get detailed information about transaction(s) for requested blocks - operationId: block_tx_info - x-badges: - - color: red - label: "Deprecated" - - /utxo_info: #RPC - post: - tags: - - Transactions - requestBody: - $ref: "#/components/requestBodies/utxo_refs_with_extended" - responses: - "200": - description: Success! - content: - application/json: - schema: - $ref: "#/components/schemas/utxo_infos" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: UTxO Info - description: Get UTxO set for requested UTxO references - operationId: utxo_info - /tx_cbor: #RPC - post: - tags: - - Transactions - requestBody: - $ref: "#/components/requestBodies/tx_ids" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/tx_cbor" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Raw Transaction (CBOR) - description: Get raw transaction(s) in CBOR format - operationId: tx_cbor - /tx_info: #RPC - post: - tags: - - Transactions - requestBody: - $ref: "#/components/requestBodies/tx_info" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/tx_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Transaction Information - description: Get detailed information about transaction(s) - operationId: tx_info - /tx_metadata: #RPC - post: - tags: - - Transactions - requestBody: - $ref: "#/components/requestBodies/tx_ids" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/tx_metadata" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Transaction Metadata - description: Get metadata information (if any) for given transaction(s) - operationId: tx_metadata - /tx_metalabels: #RPC - get: - tags: - - Transactions - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/tx_metalabels" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Transaction Metadata Labels - description: Get a list of all transaction metalabels - operationId: tx_metalabels - /tx_by_metalabel: #RPC - get: - tags: - - Transactions - parameters: - - $ref: "#/components/parameters/_label" - - $ref: "#/components/parameters/_after_block_height" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/tx_by_metalabel" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Transactions by Metadata Label - description: Get a list of all transactions that include a specific metadata label (key) - operationId: tx_by_metalabel - /submittx: #submit-api - post: - tags: - - Transactions - requestBody: - $ref: "#/components/requestBodies/txbin" - x-code-samples: - - lang: "Shell" - source: | - # Assuming ${data} is a raw binary serialized transaction on the file-system. - # If using a CLI-generated tx file, please ensure to deserialise (using `xxd -p -r <<< $(jq .cborHex ${tx.signed}) > ${data}`) first before submitting. - curl -X POST \ - --header "Content-Type: application/cbor" \ - --data-binary @${data} https://api.koios.rest/api/v1/submittx - responses: - "202": - description: OK - content: - application/json: - schema: - description: The transaction id. - type: string - format: hex - minLength: 64 - maxLength: 64 - example: 92bcd06b25dfbd89b578d536b4d3b7dd269b7c2aa206ed518012cffe0444d67f - "400": - description: An error occured while submitting transaction. - summary: Submit Transaction - description: Submit an already serialized transaction to the network. - operationId: submittx - /tx_status: #RPC - post: - tags: - - Transactions - requestBody: - $ref: "#/components/requestBodies/tx_ids" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/tx_status" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Transaction Status - description: Get the number of block confirmations for a given transaction hash list - operationId: tx_status - /tx_outs_epoch: #RPC - get: - tags: - - Transactions - parameters: - - $ref: "#/components/parameters/_epoch_no_reqd" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/tx_outs_epoch" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Transaction outputs by epoch - description: Get a list of all transaction outputs for requested epoch - operationId: tx_outs_epoch - /tx_utxos: #RPC - post: - deprecated: true - tags: - - Transactions - requestBody: - $ref: "#/components/requestBodies/tx_ids" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/tx_utxos" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Transaction UTxOs - description: Get UTxO set (inputs/outputs) of transactions [DEPRECATED - Use /utxo_info instead]. - operationId: tx_utxos - x-badges: - - color: red - label: "Deprecated" - - /address_list: #RPC - get: - tags: - - Address - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/address_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Address List - description: Get a list of all used address on blockchain - operationId: account_list - /address_info: #RPC - post: - tags: - - Address - requestBody: - $ref: "#/components/requestBodies/payment_addresses" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/address_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Address Information - description: Get address info - balance, associated stake address (if any) and UTxO set for given addresses - operationId: address_info - /address_utxos: #RPC - post: - tags: - - Address - requestBody: - $ref: "#/components/requestBodies/payment_addresses_with_extended" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/utxo_infos" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Address UTxOs - description: Get UTxO set for given addresses - operationId: address_utxos - /address_outputs: #RPC - post: - tags: - - Address - requestBody: - $ref: "#/components/requestBodies/address_txs" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/address_outputs" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Address Outputs - description: Basic transaction output info for given addresses - operationId: address_outputs - /credential_utxos: #RPC - post: - tags: - - Address - requestBody: - $ref: "#/components/requestBodies/credential_utxos" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/utxo_infos" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: UTxOs from payment credentials - description: Get UTxO details for requested payment credentials - operationId: credential_utxos - /address_txs: #RPC - post: - tags: - - Address - requestBody: - $ref: "#/components/requestBodies/address_txs" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/address_txs" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Address Transactions - description: Get the transaction hash list of input address array, optionally filtering after specified block height (inclusive) - operationId: address_txs - /credential_txs: #RPC - post: - tags: - - Address - requestBody: - $ref: "#/components/requestBodies/credential_txs" - responses: - "200": - description: Array of transaction hashes for given credential(s) - content: - application/json: - schema: - $ref: "#/components/schemas/address_txs" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Transactions from payment credentials - description: Get the transaction hash list of input payment credential array, optionally filtering after specified block height (inclusive) - operationId: credential_txs - /address_assets: #RPC - post: - tags: - - Address - requestBody: - $ref: "#/components/requestBodies/payment_addresses" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/address_assets" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Address Assets - description: Get the list of all the assets (policy, name and quantity) for given addresses - operationId: address_assets - - /account_list: #RPC - get: - tags: - - Stake Account - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account List - description: Get a list of all stake addresses that have atleast 1 transaction - operationId: account_list - /account_info: #RPC - post: - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Information - description: Get the account information for given stake addresses - operationId: account_info - /account_info_cached: #RPC - post: - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Information (Cached) - description: Get the cached account information for given stake addresses (effective for performance query against registered accounts) - operationId: account_info_cached - /account_utxos: #RPC - post: - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses_with_extended" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/utxo_infos" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: UTxOs for stake addresses (accounts) - description: Get a list of all UTxOs for given stake addresses (account)s - operationId: account_utxos - /account_txs: #RPC - get: - tags: - - Stake Account - parameters: - - $ref: "#/components/parameters/_stake_address" - - $ref: "#/components/parameters/_after_block_height" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/address_txs" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Txs - description: Get a list of all Txs for a given stake address (account) - operationId: account_txs - /account_rewards: #RPC - post: - deprecated: true - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses_with_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_rewards" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Rewards - description: >- - Get the full rewards history (including MIR) for given stake addresses - operationId: account_rewards - x-badges: - - color: red - label: "Deprecated" - /account_reward_history: #RPC - post: - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses_with_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_reward_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Reward History - description: >- - Get the full rewards history (including MIR) for given stake addresses - operationId: account_reward_history - /account_updates: #RPC - post: - deprecated: true - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_updates" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Updates - description: >- - Get the account updates (registration, deregistration, delegation and - withdrawals) for given stake addresses - operationId: account_updates - /account_update_history: #RPC - post: - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_update_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Update History - description: >- - Get the account updates (registration, deregistration, delegation and - withdrawals) for given stake addresses - operationId: account_update_history - /account_addresses: #RPC - post: - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses_with_first_only_and_empty" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_addresses" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Addresses - description: Get all addresses associated with given staking accounts - operationId: account_addresses - /account_assets: #RPC - post: - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_assets" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Assets - description: Get the native asset balance for a given stake address - operationId: account_assets - /account_history: #RPC - post: - deprecated: true - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account History - description: Get the staking history of given stake addresses (accounts) - operationId: account_history - x-badges: - - color: red - label: "Deprecated" - /account_stake_history: #RPC - post: - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_stake_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Stake History - description: Get the staking history of given stake addresses (accounts) - operationId: account_stake_history - - /asset_list: #RPC - get: - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy" - - $ref: "#/components/parameters/_asset_name" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/asset_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Asset List - description: Get the list of all native assets (paginated). Use the optional parameters to filter efficiently, bypassing the performance cost of filtering the encoded output. Results are pre-sorted by policy ID and then asset name. - operationId: asset_list - /policy_asset_list: #RPC - get: - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy" - responses: - "200": - description: Array of brief information of assets under the same policy - content: - application/json: - schema: - $ref: "#/components/schemas/policy_asset_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Policy Asset List - description: Get the list of asset under the given policy (including balances) - operationId: policy_asset_list - /asset_token_registry: #RPC - get: - tags: - - Asset - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/asset_token_registry" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Asset Token Registry - description: Get a list of assets registered via token registry on github - operationId: asset_token_registry - /asset_info: #RPC - post: - tags: - - Asset - requestBody: - $ref: "#/components/requestBodies/asset_list" - responses: - "200": - description: Array of detailed asset information - content: - application/json: - schema: - $ref: "#/components/schemas/asset_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Asset Information (Bulk) - description: Get the information of a list of assets including first minting & token registry metadata - operationId: asset_info - /asset_utxos: #RPC - post: - tags: - - Asset - requestBody: - $ref: "#/components/requestBodies/asset_list_with_extended" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/utxo_infos" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Asset UTxOs - description: Get the UTxO information of a list of assets including - operationId: asset_utxos - /asset_history: #RPC - get: - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy" - - $ref: "#/components/parameters/_asset_name" - responses: - "200": - description: Array of asset mint/burn history - content: - application/json: - schema: - $ref: "#/components/schemas/asset_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Asset History - description: Get the mint/burn history of an asset - operationId: asset_history - /asset_addresses: #RPC - get: - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy" - - $ref: "#/components/parameters/_asset_name" - responses: - "200": - description: Success! - content: - application/json: - schema: - $ref: "#/components/schemas/asset_addresses" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Asset Addresses - description: Get the list of all addresses holding a given asset

    - `Note - Due to cardano's UTxO design and usage from projects, asset to addresses map can be infinite. Thus, for a small subset of active projects - with millions of transactions, these might end up with timeouts (HTTP code 504) on free layer. Such large-scale projects are free to subscribe to - query layers to have a dedicated cache table for themselves served via Koios.` - operationId: asset_addresses - /asset_nft_address: #RPC - get: - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy_nft" - - $ref: "#/components/parameters/_asset_name_nft" - responses: - "200": - description: Payment addresses currently holding the given NFT - content: - application/json: - schema: - $ref: "#/components/schemas/asset_nft_address" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: NFT Address - description: Get the address where specified NFT currently reside on. - operationId: asset_nft_address - /policy_asset_addresses: #RPC - get: - deprecated: true - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy" - responses: - "200": - description: Array of asset names and payment addresses for the given policy (including balances) - content: - application/json: - schema: - $ref: "#/components/schemas/policy_asset_addresses" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Policy Asset Address List - description: - Get the list of addresses with quantity for each asset on the given policy

    - `Note - Due to cardano's UTxO design and usage from projects, asset to addresses map can be infinite. Thus, for a small subset of active projects - with millions of transactions, these might end up with timeouts (HTTP code 504) on free layer. Such large-scale projects are free to subscribe to - query layers to have a dedicated cache table for themselves served via Koios.` - operationId: policy_asset_addresses - /policy_asset_info: #RPC - get: - deprecated: true - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy" - responses: - "200": - description: Array of detailed information of assets under the same policy - content: - application/json: - schema: - $ref: "#/components/schemas/policy_asset_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Policy Asset Information - description: Get the information for all assets under the same policy - operationId: policy_asset_info - /policy_asset_mints: #RPC - get: - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy" - responses: - "200": - description: Get a list of mint or burn count details for all assets minted under a policy - content: - application/json: - schema: - $ref: "#/components/schemas/policy_asset_mints" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Policy Asset Mints - description: Get a list of mint or burn count details for all assets minted under a policy - operationId: policy_asset_mints - /asset_summary: #RPC - get: - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy" - - $ref: "#/components/parameters/_asset_name" - responses: - "200": - description: Array of asset summary information - content: - application/json: - schema: - $ref: "#/components/schemas/asset_summary" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Asset Summary - description: Get the summary of an asset (total transactions exclude minting/total wallets include only wallets with asset balance) - operationId: asset_summary - /asset_txs: #RPC - get: - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy" - - $ref: "#/components/parameters/_asset_name" - - $ref: "#/components/parameters/_after_block_height" - - $ref: "#/components/parameters/_history" - responses: - "200": - description: An array of Tx hashes that included the given asset (latest first) - content: - application/json: - schema: - $ref: "#/components/schemas/address_txs" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Asset Transactions - description: Get the list of current or all asset transaction hashes (newest first) - operationId: asset_txs - - /drep_epoch_summary: #RPC - get: - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/drep_epoch_summary" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: DReps Epoch Summary - description: Summary of voting power and DRep count for each epoch - operationId: drep_epoch_summary - /drep_list: #RPC - get: - tags: - - Governance - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/drep_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: DReps List - description: List of all active delegated representatives (DReps) - operationId: drep_list - /drep_info: #RPC - post: - tags: - - Governance - requestBody: - $ref: "#/components/requestBodies/drep_id_bulk" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/drep_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: DReps Info - description: Get detailed information about requested delegated representatives (DReps) - operationId: drep_info - /drep_metadata: #RPC - post: - tags: - - Governance - requestBody: - $ref: "#/components/requestBodies/drep_id_bulk" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/drep_metadata" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: DReps Metadata - description: List metadata for requested delegated representatives (DReps) - operationId: drep_metadata - /drep_updates: #RPC - get: - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_drep_id_optional" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/drep_updates" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: DReps Updates - description: List of updates for requested (or all) delegated representatives (DReps) - operationId: drep_updates - /drep_history: #RPC - get: - deprecated: true - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_epoch_no" - - $ref: "#/components/parameters/_drep_id_optional" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/drep_voting_power_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: DReps Voting Power History - description: History of DReps voting power against each (or requested) epoch - operationId: drep_history - x-badges: - - color: red - label: "Deprecated" - /drep_voting_power_history: #RPC - get: - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_epoch_no" - - $ref: "#/components/parameters/_drep_id_optional" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/drep_voting_power_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: DReps Voting Power History - description: History of DReps voting power against each (or requested) epoch - operationId: drep_voting_power_history - /drep_votes: #RPC - get: - deprecated: true - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_drep_id" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/drep_votes" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: DReps Votes - description: List of all votes casted by requested delegated representative (DRep) - operationId: drep_votes - x-badges: - - color: red - label: "Deprecated" - /drep_delegators: #RPC - get: - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_drep_id" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/drep_delegators" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: DReps Delegators - description: List of all delegators to requested delegated representative (DRep). - operationId: drep_delegators - /committee_info: #RPC - get: - tags: - - Governance - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/committee_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Committee Information - description: Information about active committee and its members - operationId: committee_info - /committee_votes: #RPC - get: - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_cc_hot_id" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/committee_votes" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Committee Votes - description: List of all votes casted by given committee member or collective - operationId: committee_votes - /proposal_list: #RPC - get: - tags: - - Governance - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/proposal_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Proposals List - description: List of all governance proposals - operationId: proposal_list - /voter_proposal_list: #RPC - get: - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_voter_id" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/proposal_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Voter's Proposal List - description: List of all governance proposals for specified DRep, SPO or Committee credential - operationId: voter_proposal_list - /proposal_voting_summary: #RPC - get: - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_proposal_id" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/proposal_voting_summary" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Proposal Voting Summary - description: Summary of votes for given proposal - operationId: proposal_voting_summary - /proposal_votes: #RPC - get: - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_proposal_id" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/proposal_votes" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Proposal Votes - description: List of all votes cast on specified governance action - operationId: proposal_votes - /vote_list: #RPC - get: - tags: - - Governance - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/vote_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Vote List - description: List of all votes posted on-chain - operationId: vote_list - - /pool_list: #RPC - get: - tags: - - Pool - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool List - description: List of brief info for all pools - operationId: pool_list - /pool_info: #RPC - post: - tags: - - Pool - requestBody: - $ref: "#/components/requestBodies/pool_ids" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Information - description: Current pool statuses and details for a specified list of pool ids - operationId: pool_info - /pool_stake_snapshot: #RPC - get: - tags: - - Pool - parameters: - - $ref: "#/components/parameters/_pool_bech32" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_snapshot" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Stake Snapshot - description: Returns Mark, Set and Go stake snapshots for the selected pool, useful for leaderlog calculation - operationId: pool_stake_snapshot - /pool_delegators: #RPC - get: - tags: - - Pool - parameters: - - $ref: "#/components/parameters/_pool_bech32" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_delegators" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Delegators List - description: Return information about live delegators for a given pool. - operationId: pool_delegators - /pool_delegators_history: #RPC - get: - tags: - - Pool - parameters: - - $ref: "#/components/parameters/_pool_bech32" - - $ref: "#/components/parameters/_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_delegators_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Delegators History - description: Return information about active delegators (incl. history) for a given pool and epoch number (all epochs if not specified). - operationId: pool_delegators_history - /pool_invalid_delegators: #RPC - get: - tags: - - Pool - parameters: - - $ref: "#/components/parameters/_pool_bech32" - - $ref: "#/components/parameters/_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_invalid_delegators" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Invalid Delegators - description: Return information about delegators for a given pool that are invalid for the specified epoch. - operationId: pool_invalid_delegators - /pool_blocks: #RPC - get: - tags: - - Pool - parameters: - - $ref: "#/components/parameters/_pool_bech32" - - $ref: "#/components/parameters/_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_blocks" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Blocks - description: >- - Return information about blocks minted by a given pool for all epochs - (or _epoch_no if provided) - operationId: pool_blocks - /pool_owner_history: #RPC - post: - tags: - - Pool - requestBody: - $ref: "#/components/requestBodies/pool_ids" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_owner_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Owner History - description: >- - Return information about pool owner's historical stake and their promised pledge to their pools - operationId: pool_owner_history - /pool_history: #RPC - get: - tags: - - Pool - parameters: - - $ref: "#/components/parameters/_pool_bech32" - - $ref: "#/components/parameters/_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_history_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Stake, Block and Reward History - description: >- - Return information about pool stake, block and reward history in a given epoch _epoch_no - (or all epochs that pool existed for, in descending order if no _epoch_no was provided) - operationId: pool_history - /pool_updates: #RPC - get: - tags: - - Pool - parameters: - - $ref: "#/components/parameters/_pool_bech32_optional" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_updates" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Updates (History) - description: Return all pool updates for all pools or only updates for specific pool if specified - operationId: pool_updates - /pool_registrations: #RPC - get: - tags: - - Pool - parameters: - - $ref: "#/components/parameters/_pool_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_registrations" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Registrations - description: Return all pool registrations initiated in the requested epoch - operationId: pool_registrations - /pool_retirements: #RPC - get: - tags: - - Pool - parameters: - - $ref: "#/components/parameters/_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_registrations" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Retirements - description: Return all pool retirements initiated in the requested epoch - operationId: pool_retirements - /pool_relays: #RPC - get: - tags: - - Pool - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_relays" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Relays - description: A list of registered relays for all pools - operationId: pool_relays - /pool_voting_power_history: #RPC - get: - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_epoch_no" - - $ref: "#/components/parameters/_pool_bech32_optional" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_voting_power_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool's Voting Power History - description: History of Pool voting power against each (or requested) epoch - operationId: pool_voting_power_history - /pool_votes: #RPC - get: - deprecated: true - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_pool_bech32" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_votes" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Votes - description: List of all votes casted by a pool - operationId: pool_votes - x-badges: - - color: red - label: "Deprecated" - - /pool_groups: #RPC - get: - tags: - - Pool - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_groups" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Groups - description: List of all registered pool and their groups across sources from [pool_groups](https://github.com/cardano-community/pool_groups) repository. This is only relevant for mainnet - operationId: pool_groups - /pool_metadata: #RPC - post: - tags: - - Pool - requestBody: - $ref: "#/components/requestBodies/pool_ids_optional" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_metadata" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Metadata - description: Metadata (on & off-chain) for all pools - operationId: pool_metadata - /pool_calidus_keys: #RPC - get: - tags: - - Pool - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_calidus_keys" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Calidus Keys - description: List of valid calidus keys for all pools - operationId: pool_calidus_keys - - /script_info: #RPC - post: - tags: - - Script - requestBody: - $ref: "#/components/requestBodies/script_hashes" - responses: - "200": - description: Array of information for scripts requested - content: - application/json: - schema: - $ref: "#/components/schemas/script_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Script Information - description: List of script information for given script hashes - operationId: script_info - /native_script_list: #RPC - get: - tags: - - Script - responses: - "200": - description: List of native script and creation tx hash pairs - content: - application/json: - schema: - $ref: "#/components/schemas/script_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Native Script List - description: List of all existing native script hashes along with their creation transaction hashes - operationId: native_script_list - /plutus_script_list: #RPC - get: - tags: - - Script - responses: - "200": - description: List of Plutus script and creation tx hash pairs - content: - application/json: - schema: - $ref: "#/components/schemas/script_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Plutus Script List - description: List of all existing Plutus script hashes along with their creation transaction hashes - operationId: plutus_script_list - /script_redeemers: #RPC - get: - tags: - - Script - parameters: - - $ref: "#/components/parameters/_script_hash" - responses: - "200": - description: Array of all redeemers for a given script hash - content: - application/json: - schema: - $ref: "#/components/schemas/script_redeemers" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Script Redeemers - description: List of all redeemers for a given script hash - operationId: script_redeemers - /reference_script_utxos: #RPC - post: - tags: - - Script - requestBody: - $ref: "#/components/requestBodies/script_hashes" - responses: - "200": - description: Array of information for scripts requested - content: - application/json: - schema: - $ref: "#/components/schemas/script_utxos" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Reference Script UTxOs - description: List of all unspent UTxOs with a reference script matching given script hashes - operationId: reference_script_utxos - /script_utxos: #RPC - get: - deprecated: true - tags: - - Script - parameters: - - $ref: "#/components/parameters/_script_hash" - - $ref: "#/components/parameters/_extended" - responses: - "200": - description: List of UTxOs for a given script hash - content: - application/json: - schema: - $ref: "#/components/schemas/utxo_infos" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Script UTxOs - description: List of all UTxOs for a given script hash - operationId: script_utxos - /datum_info: #RPC - post: - tags: - - Script - requestBody: - $ref: "#/components/requestBodies/datum_hashes" - responses: - "200": - description: Array of datum information for given datum hashes - content: - application/json: - schema: - $ref: "#/components/schemas/datum_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Datum Information - description: List of datum information for given datum hashes - operationId: datum_info - - /ogmios: #ogmios-api - post: - tags: - - Ogmios - requestBody: - $ref: "#/components/requestBodies/ogmios" - responses: - "200": - description: Current tip of the chain, identified by a slot and a block header hash. - content: - application/json: - schema: - $ref: "#/components/schemas/ogmiostip" - "400": - $ref: "#/components/responses/BadRequest" - summary: Query Example - description: | - Query the current tip of the Network. - -
    -
    - We do support transparent forwarding for various methods from Ogmios, you can read about those here. -
    - operationId: ogmios - -components: - parameters: - _after_block_height: - deprecated: false - name: _after_block_height - description: Block height for specifying time delta - schema: - type: number - example: 50000 - in: query - required: false - allowEmptyValue: true - _epoch_no: - deprecated: false - name: _epoch_no - description: Epoch Number to fetch details for - schema: - type: string - example: "6219" - in: query - required: false - allowEmptyValue: true - _epoch_no_reqd: - deprecated: false - name: _epoch_no - description: Epoch Number to fetch details for - schema: - type: string - example: "6219" - in: query - required: true - allowEmptyValue: false - _stake_address: - deprecated: false - name: _stake_address - description: Cardano staking address (reward account) in bech32 format - schema: - type: string - example: "stake_test17zt9x005zkd2usz2vhvktyzqsuwz25gmgnaqdka5hcj9m2qfg2py2" - in: query - required: true - allowEmptyValue: false - _tx_hash: - deprecated: false - name: _tx_hash - description: Transaction Hash in hexadecimal format (hex) - example: "bf04578d452dd3acb7c70fbac32dc972cb69f932f804171cfb4268f5af0228e7" - schema: - type: string - in: query - required: true - allowEmptyValue: false - _asset_policy: - deprecated: false - name: _asset_policy - description: Asset Policy ID in hexadecimal format (hex) - schema: - type: string - example: "313534a537bc476c86ff7c57ec511bd7f24a9d15654091b24e9c606e" - in: query - required: true - allowEmptyValue: false - _asset_name: - deprecated: false - name: _asset_name - description: Asset Name in hexadecimal format (hex), empty asset name returns royalties - schema: - type: string - example: "41484c636f696e" - in: query - required: false - allowEmptyValue: true - _asset_policy_nft: - deprecated: false - name: _asset_policy - description: NFT Policy ID in hexadecimal format (hex) - schema: - type: string - example: "187abba169e246fdcbebcd12915a8610cb470fda3b3fc21da0c4aed4" - in: query - required: true - allowEmptyValue: false - _asset_name_nft: - deprecated: false - name: _asset_name - description: NFT Name in hexadecimal format (hex) - schema: - type: string - example: "4f504b4559" - in: query - required: false - allowEmptyValue: true - _voter_id: - deprecated: false - name: _voter_id - description: Voter ID (Drep, SPO, Committee Member) in Bech32 format (CIP-5 | CIP-129) - schema: - type: string - example: "drep1s9qaseg7qyum807fcv0hdky9gv0c89tn98t4urjn5ewz57dml0r" - in: query - required: false - allowEmptyValue: true - _drep_id: - deprecated: false - name: _drep_id - description: DRep ID in bech32 format - schema: - type: string - example: "drep1s9qaseg7qyum807fcv0hdky9gv0c89tn98t4urjn5ewz57dml0r" - in: query - required: true - allowEmptyValue: false - _drep_id_optional: - deprecated: false - name: _drep_id - description: DRep ID in bech32 format - schema: - type: string - example: "drep1s9qaseg7qyum807fcv0hdky9gv0c89tn98t4urjn5ewz57dml0r" - in: query - required: false - allowEmptyValue: true - _cc_hot_id: - deprecated: false - name: _cc_hot_id - description: Committee member hot key ID in Bech32 format (CIP-5 | CIP-129) - schema: - type: string - example: "cc_hot1qgqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqvcdjk7" - in: query - required: false - allowEmptyValue: true - _extended: - deprecated: false - name: _extended - description: Controls whether or not certain optional fields supported by a given endpoint are populated as a part of the call - schema: - type: boolean - example: false - in: query - required: false - allowEmptyValue: true - _history: - deprecated: false - name: _history - description: Include all historical transactions, setting to false includes only the non-empty ones - schema: - type: boolean - example: false - in: query - required: false - allowEmptyValue: false - _include_next_epoch: - deprecated: false - name: _include_next_epoch - description: Include information about nearing but not yet started epoch, to get access to active stake snapshot information if available - schema: - type: boolean - example: false - in: query - required: false - allowEmptyValue: true - _pool_bech32: - deprecated: false - name: _pool_bech32 - description: Pool ID in bech32 format - schema: - type: string - example: "pool1xc9eywck4e20tydz4yvh5vfe0ep8whawvwz8wqkc9k046a2ypp4" - in: query - required: true - allowEmptyValue: false - _pool_bech32_optional: - deprecated: false - name: _pool_bech32 - description: Pool ID in bech32 format (optional) - schema: - type: string - example: "pool1xc9eywck4e20tydz4yvh5vfe0ep8whawvwz8wqkc9k046a2ypp4" - in: query - required: false - allowEmptyValue: true - _pool_epoch_no: - deprecated: false - name: _epoch_no - description: Epoch Number to fetch details for - schema: - type: string - example: "18852" - in: query - required: false - allowEmptyValue: true - _script_hash: - deprecated: false - name: _script_hash - description: Script hash in hexadecimal format (hex) - schema: - type: string - example: "f6c13b1bd68219ffb6a1e6d77bd23ec5982f3da2d93007aa5956a142" - in: query - required: true - allowEmptyValue: false - _proposal_id: - deprecated: false - name: _proposal_id - description: Government proposal ID in CIP-129 Bech32 format - example: "gov_action1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpzklpgpf" - schema: - type: string - in: query - required: true - allowEmptyValue: false - _label: - deprecated: false - name: _label - description: Metadata label (key) to filter transactions by - schema: - type: number - example: 721 - in: query - required: true - allowEmptyValue: false - requestBodies: - block_hashes: - content: - application/json: - schema: - required: - - _block_hashes - type: object - properties: - _block_hashes: - type: array - items: - $ref: "#/components/schemas/blocks/items/properties/hash" - example: - _block_hashes: - - af2f6f7dd4e4ea6765103a1e38e023da3edd2b3c7fea2aa367222564dbe01cfd - - bddbbc6df0ad09567a513349bafd56d8ec5c8fcd9ee9db12173624b896350d57 - - 732bf9bbc3780e6cd7ad57a3889dd5904f6e8a27d54eabf43eb0dbc485323f04 - description: Array of block hashes - block_tx_info: - content: - application/json: - schema: - required: - - _block_hashes - type: object - properties: - _block_hashes: - type: array - items: - $ref: "#/components/schemas/blocks/items/properties/hash" - _inputs: - format: boolean - type: boolean - description: Controls whether to include transaction inputs in the result - _metadata: - format: boolean - type: boolean - description: Controls whether to include transaction metadata in the result - _assets: - format: boolean - type: boolean - description: Controls whether to include assets involved within transaction the result - _withdrawals: - format: boolean - type: boolean - description: Controls whether to include any stake account reward withdrawals in the result - _certs: - format: boolean - type: boolean - description: Controls whether to include transaction certificates in the result - _scripts: - format: boolean - type: boolean - description: Controls whether to include any details regarding collateral/reference/datum/script objects in the result - _bytecode: - format: boolean - type: boolean - description: Controls whether to include bytecode for associated reference/plutus scripts - example: - _block_hashes: - - af2f6f7dd4e4ea6765103a1e38e023da3edd2b3c7fea2aa367222564dbe01cfd - - bddbbc6df0ad09567a513349bafd56d8ec5c8fcd9ee9db12173624b896350d57 - - 732bf9bbc3780e6cd7ad57a3889dd5904f6e8a27d54eabf43eb0dbc485323f04 - _inputs: false - _metadata: false - _assets: false - _withdrawals: false - _certs: false - _scripts: false - _bytecode: false - description: Array of block hashes - payment_addresses: - content: - application/json: - schema: - required: - - _addresses - type: object - properties: - _addresses: - type: array - items: - type: string - description: Array of Cardano payment address(es) in bech32 format - example: - _addresses: - - addr_test1qzmtfv43a8ncx6ve92ja6yy25npn9raz9pu5a2tfxsqv9gy9ktf0pu6yu4zjh9r37fzx3h4tsxqdjhu3t4d5ffdsfz9s6ska3z - - addr_test1vq67g5u8ls4vm4wdvs0r8xvsuej66nvaqedyrj2tcz6tuycz275pu - description: Array of Cardano payment address(es) - payment_addresses_with_extended: - content: - application/json: - schema: - required: - - _addresses - type: object - properties: - _addresses: - type: array - items: - type: string - description: Array of Cardano payment address(es) in bech32 format - _extended: - format: boolean - type: boolean - description: Controls whether or not certain optional fields supported by a given endpoint are populated as a part of the call - example: - _addresses: - - addr_test1qzmtfv43a8ncx6ve92ja6yy25npn9raz9pu5a2tfxsqv9gy9ktf0pu6yu4zjh9r37fzx3h4tsxqdjhu3t4d5ffdsfz9s6ska3z - - addr_test1vq67g5u8ls4vm4wdvs0r8xvsuej66nvaqedyrj2tcz6tuycz275pu - _extended: true - description: Array of Cardano payment address(es) with extended flag to toggle additional fields - address_txs: - content: - application/json: - schema: - required: - - _addresses - type: object - properties: - _addresses: - type: array - items: - type: string - description: Array of Cardano payment address(es) in bech32 format - _after_block_height: - format: integer - type: number - description: Only fetch information after specific block height - example: - _addresses: - - addr_test1qzmtfv43a8ncx6ve92ja6yy25npn9raz9pu5a2tfxsqv9gy9ktf0pu6yu4zjh9r37fzx3h4tsxqdjhu3t4d5ffdsfz9s6ska3z - - addr_test1vq67g5u8ls4vm4wdvs0r8xvsuej66nvaqedyrj2tcz6tuycz275pu - _after_block_height: 120000 - description: Array of Cardano payment address(es) - stake_addresses_with_epoch_no: - content: - application/json: - schema: - required: - - _stake_addresses - type: object - properties: - _stake_addresses: - type: array - items: - type: string - description: Array of Cardano stake address(es) in bech32 format - _epoch_no: - format: integer - type: number - description: Only fetch information for a specific epoch - example: - _stake_addresses: - - stake_test17zt9x005zkd2usz2vhvktyzqsuwz25gmgnaqdka5hcj9m2qfg2py2 - - stake_test1uzzm95hs7dzw23ftj3cly3rgm64crqxet7g46k6y5kcy3zcs3mpjd - _epoch_no: 1500 - description: Array of Cardano stake address(es) in bech32 format with optional epoch no to filter by - stake_addresses_with_first_only_and_empty: - content: - application/json: - schema: - required: - - _stake_addresses - type: object - properties: - _stake_addresses: - type: array - items: - type: string - description: Array of Cardano stake address(es) in bech32 format - _first_only: - format: boolean - type: boolean - description: Only return the first result - _empty: - format: boolean - type: boolean - description: Include zero quantity entries - example: - _stake_addresses: - - stake_test17zt9x005zkd2usz2vhvktyzqsuwz25gmgnaqdka5hcj9m2qfg2py2 - - stake_test1uzzm95hs7dzw23ftj3cly3rgm64crqxet7g46k6y5kcy3zcs3mpjd - _first_only: false - _empty: false - description: Array of Cardano stake credential(s) in bech32 format alongwith flag to return first only or used UTxOs - stake_addresses_with_extended: - content: - application/json: - schema: - required: - - _stake_addresses - type: object - properties: - _stake_addresses: - type: array - items: - type: string - description: Array of Cardano stake address(es) in bech32 format - _extended: - format: boolean - type: boolean - description: Controls whether or not certain optional fields supported by a given endpoint are populated as a part of the call - example: - _stake_addresses: - - stake_test17zt9x005zkd2usz2vhvktyzqsuwz25gmgnaqdka5hcj9m2qfg2py2 - - stake_test1uzzm95hs7dzw23ftj3cly3rgm64crqxet7g46k6y5kcy3zcs3mpjd - _extended: true - description: Array of Cardano stake credential(s) in bech32 format alongwith extended flag to return additional columns - stake_addresses: - content: - application/json: - schema: - required: - - _stake_addresses - type: object - properties: - _stake_addresses: - type: array - items: - type: string - description: Array of Cardano stake address(es) in bech32 format - example: - _stake_addresses: - - stake_test17zt9x005zkd2usz2vhvktyzqsuwz25gmgnaqdka5hcj9m2qfg2py2 - - stake_test1uzzm95hs7dzw23ftj3cly3rgm64crqxet7g46k6y5kcy3zcs3mpjd - description: Array of Cardano stake credential(s) in bech32 format - credential_txs: - content: - application/json: - schema: - required: - - _payment_credentials - type: object - properties: - _payment_credentials: - type: array - items: - type: string - description: Array of Cardano payment credential(s) in hex format - _after_block_height: - format: integer - type: number - description: Only fetch information after specific block height - example: - _payment_credentials: - - b6b4b2b1e9e78369992aa5dd108aa4c3328fa228794ea9693400c2a0 - - 35e45387fc2acdd5cd641e339990e665ad4d9d065a41c94bc0b4be13 - _after_block_height: 120000 - description: Array of Cardano payment credential(s) in hex format alongwith filtering based on blockheight - credential_utxos: - content: - application/json: - schema: - required: - - _payment_credentials - type: object - properties: - _payment_credentials: - type: array - items: - type: string - description: Array of Cardano payment credential(s) in hex format - _extended: - format: boolean - type: boolean - description: Controls whether or not certain optional fields supported by a given endpoint are populated as a part of the call - example: - _payment_credentials: - - b6b4b2b1e9e78369992aa5dd108aa4c3328fa228794ea9693400c2a0 - - 35e45387fc2acdd5cd641e339990e665ad4d9d065a41c94bc0b4be13 - _extended: true - description: Array of Cardano payment credential(s) in hex format - tx_ids: - content: - application/json: - schema: - required: - - _tx_hashes - type: object - properties: - _tx_hashes: - type: array - items: - type: string - description: Array of Cardano Transaction hashes - example: - _tx_hashes: - - bf04578d452dd3acb7c70fbac32dc972cb69f932f804171cfb4268f5af0228e7 - - 63b716064012f858450731cb5f960c100c6cb639ec1ec999b898c604451f116a - description: Array of Cardano Transaction hashes - tx_info: - content: - application/json: - schema: - required: - - _tx_hashes - type: object - properties: - _tx_hashes: - type: array - items: - type: string - description: Array of Cardano Transaction hashes - _inputs: - format: boolean - type: boolean - description: Controls whether to include transaction inputs in the result - _metadata: - format: boolean - type: boolean - description: Controls whether to include transaction metadata in the result - _assets: - format: boolean - type: boolean - description: Controls whether to include assets involved within transaction the result - _withdrawals: - format: boolean - type: boolean - description: Controls whether to include any stake account reward withdrawals in the result - _certs: - format: boolean - type: boolean - description: Controls whether to include transaction certificates in the result - _scripts: - format: boolean - type: boolean - description: Controls whether to include any details regarding collateral/reference/datum/script objects in the result - _bytecode: - format: boolean - type: boolean - description: Controls whether to include bytecode for associated reference/plutus scripts - _governance: - format: boolean - type: boolean - description: Controls whether to include governance certificates, votes and proposals in the result - example: - _tx_hashes: - - bf04578d452dd3acb7c70fbac32dc972cb69f932f804171cfb4268f5af0228e7 - - 63b716064012f858450731cb5f960c100c6cb639ec1ec999b898c604451f116a - _inputs: false - _metadata: false - _assets: false - _withdrawals: false - _certs: false - _scripts: false - _bytecode: false - description: Array of Cardano Transaction hashes - txbin: - content: - application/cbor: - schema: - type: string - format: binary - example: bf04578d452dd3acb7c70fbac32dc972cb69f932f804171cfb4268f5af0228e7 - description: Serialised Cardano Transaction - pool_ids: - content: - application/json: - schema: - required: - - _pool_bech32_ids - type: object - properties: - _pool_bech32_ids: - type: array - items: - type: string - description: Array of Cardano pool IDs (bech32 format) - example: - _pool_bech32_ids: - - pool19st4a2vvu78tjtyywjte2eml3kx6ynersgd2nyw0y4jvyhlfu0u - - pool1uul8pytp2p0xq4ckjn3l294km0m7fuef46teehvh3x5tk46sfx3 - - pool1us9ww725p0vygae5zaydme3apt7wg9se2yemhl8mgwkes3tlrqp - description: Array of Cardano pool IDs (bech32 format) - pool_ids_optional: - content: - application/json: - schema: - type: object - properties: - _pool_bech32_ids: - type: array - items: - type: string - description: Array of Cardano pool IDs (bech32 format) - example: - _pool_bech32_ids: - - pool19st4a2vvu78tjtyywjte2eml3kx6ynersgd2nyw0y4jvyhlfu0u - - pool1uul8pytp2p0xq4ckjn3l294km0m7fuef46teehvh3x5tk46sfx3 - - pool1us9ww725p0vygae5zaydme3apt7wg9se2yemhl8mgwkes3tlrqp - description: Array of Cardano pool IDs (bech32 format) [Optional] - script_hashes: - content: - application/json: - schema: - type: object - properties: - _script_hashes: - type: array - items: - type: string - description: Array of Cardano script hashes - example: - _script_hashes: - - a08a267e92456ba48e157dd7e77bdd35aba0fc50fe625a10a6a7fc5e - - 1f3a4aa08cfa0e47fff200578f0d4847b6890b7093a765773feb35de - description: Array of Cardano script hashes - datum_hashes: - content: - application/json: - schema: - type: object - properties: - _datum_hashes: - type: array - items: - type: string - description: Array of Cardano datum hashes - example: - _datum_hashes: - - 964af1ff2a66ce472d34ac39b47f356b6d971d62c794a89ec12825d5de30f3aa - - 17bdb9c96b77c7718d546be50193a80bc9d72081b7375e5e16891db196af14fc - description: Array of Cardano datum hashes - asset_list: - content: - application/json: - schema: - required: - - _asset_list - type: object - properties: - _asset_list: - type: array - description: Array of array of policy ID and asset names (hex) - items: - type: array - items: - type: string - example: - _asset_list: - - ['313534a537bc476c86ff7c57ec511bd7f24a9d15654091b24e9c606e','41484c636f696e'] - - ['313534a537bc476c86ff7c57ec511bd7f24a9d15654091b24e9c606e','41484c636f696e'] - description: Array of array of policyID and asset names (hex) - asset_list_with_extended: - content: - application/json: - schema: - required: - - _asset_list - type: object - properties: - _asset_list: - type: array - description: Array of array of policy ID and asset names (hex) - items: - type: array - items: - type: string - _extended: - format: boolean - type: boolean - description: Controls whether or not certain optional fields supported by a given endpoint are populated as a part of the call - example: - _asset_list: - - ['313534a537bc476c86ff7c57ec511bd7f24a9d15654091b24e9c606e','41484c636f696e'] - - ['313534a537bc476c86ff7c57ec511bd7f24a9d15654091b24e9c606e','41484c636f696e'] - _extended: true - description: Array of array of policyID and asset names (hex) alongwith extended flag to return additional columns - drep_id_bulk: - content: - application/json: - schema: - required: - - _drep_ids - type: object - properties: - _drep_ids: - type: array - descriptions: Array of DRep IDs in bech32 format - items: - type: string - example: - _drep_ids: - - drep1s9qaseg7qyum807fcv0hdky9gv0c89tn98t4urjn5ewz57dml0r - - drep13p45vxysc2s6vp6ez2ng7lynlsheh64zxexpcennn68cuc05yps - utxo_refs_with_extended: - content: - application/json: - schema: - required: - - _utxo_refs - type: object - properties: - _utxo_refs: - type: array - items: - type: string - description: Array of Cardano utxo references in the form "hash#index" - _extended: - format: boolean - type: boolean - description: Controls whether or not certain optional fields supported by a given endpoint are populated as a part of the call - example: - _utxo_refs: - - f82e568d42604fd71424d193c86ec00c97aead2b8f018e81c3139d9e3770c735#0 - - 88ae22495123c7ee37a0bbe865243757185a302ed5359d1eae9347030628290a#0 - _extended: false - description: Array of Cardano UTxO references in the form "hash#index" with extended flag to toggle additional fields - ogmios: - content: - application/json: - schema: - required: - - jsonrpc - - method - type: object - properties: - jsonrpc: - type: string - description: Identifier for JSON-RPC 2.0 standard - example: "2.0" - method: - type: string - description: The Ogmios method to be called (see more details [here](#tag--Ogmios)) or browse examples tab - enum: - [ - "queryNetwork/blockHeight", - "queryNetwork/genesisConfiguration", - "queryNetwork/startTime", - "queryNetwork/tip", - "queryLedgerState/epoch", - "queryLedgerState/eraStart", - "queryLedgerState/eraSummaries", - "queryLedgerState/liveStakeDistribution", - "queryLedgerState/protocolParameters", - "queryLedgerState/proposedProtocolParameters", - "queryLedgerState/stakePools", - "submitTransaction", - "evaluateTransaction", - ] - example: "queryNetwork/tip" - params: - type: object - description: Any parameters relevant to the specific method to be called - nullable: true - examples: - blockHeight: - description: Query the network’s highest block number. - value: { "jsonrpc": "2.0", "method": "queryNetwork/blockHeight" } - genesisConfiguration: - description: Query the genesis configuration of a given era. - value: - { - "jsonrpc": "2.0", - "method": "queryNetwork/genesisConfiguration", - "params": { "era": "shelley" }, - } - startTimeTime: - description: Query the network start time. - value: { "jsonrpc": "2.0", "method": "queryNetwork/startTime" } - tip: - description: Query tip of the Network - value: { "jsonrpc": "2.0", "method": "queryNetwork/tip" } - epoch: - description: Query the current epoch of the ledger. - value: { "jsonrpc": "2.0", "method": "queryLedgerState/epoch" } - eraStart: - description: Query information regarding the beginning of the current ledger era. - value: { "jsonrpc": "2.0", "method": "queryLedgerState/eraStart" } - eraSummaries: - description: Query era bounds and slot parameters details, required for proper sloting arithmetic. - value: - { "jsonrpc": "2.0", "method": "queryLedgerState/eraSummaries" } - liveStakeDistribution: - description: Query distribution of the stake across all known stake pools, relative to the total stake in the network. - value: - { - "jsonrpc": "2.0", - "method": "queryLedgerState/liveStakeDistribution", - } - protocolParameters: - description: Query the current protocol parameters. - value: - { - "jsonrpc": "2.0", - "method": "queryLedgerState/protocolParameters", - } - proposedProtocolParameters: - description: Query the last update proposal w.r.t. protocol parameters, if any. - value: - { - "jsonrpc": "2.0", - "method": "queryLedgerState/proposedProtocolParameters", - } - StakePools: - description: Query the list of all stake pool identifiers currently registered and active. - value: { "jsonrpc": "2.0", "method": "queryLedgerState/stakePools" } - submitTransaction: - description: Submit a signed and serialized transaction to the network. - value: - { - "jsonrpc": "2.0", - "method": "submitTransaction", - "params": - { - "transaction": - { - "cbor": "", - }, - }, - } - evaluateTransaction: - description: Evaluate execution units of scripts in a well-formed transaction. - value: - { - "jsonrpc": "2.0", - "method": "evaluateTransaction", - "params": - { - "transaction": - { - "cbor": "", - }, - "additionalUtxo": [{ ... }], - }, - } - description: JSON-RPC 2.0 standard request body - securitySchemes: - bearerAuth: - type: http - scheme: bearer - bearerFormat: JWT - description: JWT Bearer Auth token generated via https://koios.rest Profile page. Using this token value allows consumers to use higher limits than public unauthenticated requests. - schemas: - tip: - description: Current tip of the chain - type: array - items: - properties: - hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - era: - $ref: "#/components/schemas/era_summaries/items/properties/era" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - abs_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - epoch_slot: - $ref: "#/components/schemas/blocks/items/properties/epoch_slot" - block_no: - deprecated: true - type: number - description: DEPRECATED!! Use Block height instead - example: 1794506 - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - era_summaries: - description: Information about each era on the network alongwith it's start epoch - type: array - items: - properties: - era: - type: string - example: Conway - description: Cardano Era - protocol_major: - $ref: "#/components/schemas/epoch_params/items/properties/protocol_major" - protocol_minor: - $ref: "#/components/schemas/epoch_params/items/properties/protocol_minor" - ledger_protocol: - type: string - example: Praos - description: Protocol name that denotes collection of features sitting between consensus and ledger layer - consensus_mechanism: - type: string - example: Ouroboros Genesis/Praos - description: Consensus name that denotes collection of consensus features introduced at a hard fork - notes: - type: string - example: Plomin HF - description: Additional information about when this protocol update was pushed (if there is a fork name associated) - epoch_no: - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - first_block_time: - $ref: "#/components/schemas/epoch_info/items/properties/first_block_time" - first_block_hash: - $ref: "#/components/schemas/epoch_params/items/properties/block_hash" - genesis: - description: Array of genesis parameters used to start each era on chain - type: array - items: - properties: - networkmagic: - type: string - example: 764824073 - description: Unique network identifier for chain - networkid: - type: string - example: Mainnet - description: Network ID used at various CLI identification to distinguish between Mainnet and other networks - epochlength: - type: string - example: 432000 - description: Number of slots in an epoch - slotlength: - type: string - example: 1 - description: Duration of a single slot (in seconds) - maxlovelacesupply: - type: string - example: 45000000000000000 - description: Maximum smallest units (lovelaces) supply for the blockchain - systemstart: - type: number - description: UNIX timestamp of the first block (genesis) on chain - example: 1506203091 - activeslotcoeff: - type: string - example: 0.05 - description: "Active Slot Co-Efficient (f) - determines the _probability_ of number of slots in epoch that are expected to have blocks (so mainnet, this would be: 432000 * 0.05 = 21600 estimated blocks)" - slotsperkesperiod: - type: string - example: 129600 - description: Number of slots that represent a single KES period (a unit used for validation of KES key evolutions) - maxkesrevolutions: - type: string - example: 62 - description: Number of KES key evolutions that will automatically occur before a KES (hot) key is expired. This parameter is for security of a pool, in case an operator had access to his hot(online) machine compromised - securityparam: - type: string - example: 2160 - description: A unit (k) used to divide epochs to determine stability window (used in security checks like ensuring atleast 1 block was created in 3*k/f period, or to finalize next epoch's nonce at 4*k/f slots before end of epoch) - updatequorum: - type: string - example: 5 - description: Number of BFT members that need to approve (via vote) a Protocol Update Proposal - alonzogenesis: - type: string - example: '{\"lovelacePerUTxOWord\":34482,\"executionPrices\":{\"prSteps\":{\"numerator\":721,\"denominator\":10000000},...' - description: A JSON dump of Alonzo Genesis - totals: - description: Array of supply/reserves/utxo/fees/treasury stats - type: array - items: - properties: - epoch_no: - type: number - description: Epoch number - example: 294 - circulation: - type: string - description: Circulating UTxOs for given epoch (in numbers) - example: 32081169442642320 - treasury: - type: string - description: Funds in treasury for given epoch (in numbers) - example: 637024173474141 - reward: - type: string - description: Rewards accumulated as of given epoch (in numbers) - example: 506871250479840 - supply: - type: string - description: Total Active Supply (sum of treasury funds, rewards, UTxOs, deposits and fees) for given epoch (in numbers) - example: 33228495612391330 - reserves: - type: string - description: Total Reserves yet to be unlocked on chain - example: 11771504387608670 - fees: - type: string - description: The amount (in Lovelace) in the fee pot. - example: 92010214941 - deposits_stake: - type: string - description: The amount (in Lovelace) in the obligation pot coming from stake key and pool deposits. - example: 3338702000000 - deposits_drep: - type: string - description: The amount (in Lovelace) in the obligation pot coming from drep registrations deposits. - example: 0 - deposits_proposal: - type: string - description: The amount (in Lovelace) in the obligation pot coming from governance proposal deposits. - example: 0 - treasury_donation: - type: string - description: The amount (in Lovelace) donated to the treasury. - example: 0 - treasury_withdrawal: - type: string - description: The amount (in Lovelace) withdrawn from the treasury. - example: 0 - reserves_withdrawal: - type: string - description: The amount (in Lovelace) withdrawn from reserves. - example: 0 - param_updates: - description: Array of unique param update proposals submitted on chain - type: array - items: - properties: - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/tx_hash" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - epoch_no: - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - data: - type: string - description: JSON encoded data with details about the parameter update - example: { "decentralisation": 0.9 } - cli_protocol_params: - description: Get Current Protocol Parameters from node as published by cardano-cli in JSON format - type: object - example: - { - "collateralPercentage": 150, - "maxBlockBodySize": 90112, - "maxBlockHeaderSize": 1100, - "maxCollateralInputs": 3, - "maxTxSize": 16384, - "maxValueSize": 5000, - "minPoolCost": 170000000, - "minUTxOValue": null, - "monetaryExpansion": 3.0e-3, - "poolPledgeInfluence": 0.3, - "poolRetireMaxEpoch": 18, - "protocolVersion": { "major": 8, "minor": 0 }, - "...": "...", - "stakeAddressDeposit": 2000000, - "stakePoolDeposit": 500000000, - "stakePoolTargetNum": 500, - "treasuryCut": 0.2, - "txFeeFixed": 155381, - "txFeePerByte": 44, - "utxoCostPerByte": 4310, - } - reserve_withdrawals: - description: Array of withdrawals from reserves/treasury against stake accounts - type: array - items: - properties: - epoch_no: - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - epoch_slot: - $ref: "#/components/schemas/blocks/items/properties/epoch_slot" - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/tx_hash" - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - amount: - $ref: "#/components/schemas/pool_delegators/items/properties/amount" - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - earned_epoch: - description: Epoch where amount is earned - allOf: - - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - spendable_epoch: - description: Epoch where the earned amount can be spent - allOf: - - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - - pool_list: - description: Array of pool IDs and tickers - type: array - items: - properties: - pool_id_bech32: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" - pool_id_hex: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_hex" - active_epoch_no: - $ref: "#/components/schemas/pool_info/items/properties/active_epoch_no" - margin: - $ref: "#/components/schemas/pool_info/items/properties/margin" - fixed_cost: - $ref: "#/components/schemas/pool_info/items/properties/fixed_cost" - pledge: - $ref: "#/components/schemas/pool_info/items/properties/pledge" - deposit: - $ref: "#/components/schemas/pool_info/items/properties/deposit" - reward_addr: - $ref: "#/components/schemas/pool_info/items/properties/reward_addr" - owners: - $ref: "#/components/schemas/pool_info/items/properties/owners" - relays: - $ref: "#/components/schemas/pool_info/items/properties/relays" - ticker: - anyOf: - - type: string - - type: "null" - description: Pool ticker - example: AHL - pool_group: - $ref: "#/components/schemas/pool_groups/items/properties/pool_group" - meta_url: - $ref: "#/components/schemas/pool_info/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/pool_info/items/properties/meta_hash" - pool_status: - $ref: "#/components/schemas/pool_info/items/properties/pool_status" - active_stake: - $ref: "#/components/schemas/pool_info/items/properties/active_stake" - retiring_epoch: - $ref: "#/components/schemas/pool_info/items/properties/retiring_epoch" - pool_history_info: - description: Array of pool history information - type: array - items: - type: object - properties: - epoch_no: - type: number - description: Epoch for which the pool history data is shown - example: 312 - active_stake: - $ref: "#/components/schemas/pool_info/items/properties/active_stake" - active_stake_pct: - anyOf: - - type: number - - type: "null" - description: Active stake for the pool, expressed as a percentage of total active stake on network - example: 13.512182543475783 - saturation_pct: - type: number - description: Saturation percentage of a pool at the time of snapshot (2 decimals) - example: 45.32 - block_cnt: - anyOf: - - type: number - - type: "null" - description: Number of blocks pool created in that epoch - example: 14 - delegator_cnt: - type: number - description: Number of delegators to the pool for that epoch snapshot - example: 1432 - margin: - type: number - description: Margin (decimal format) - example: 0.125 - fixed_cost: - type: string - description: Pool fixed cost per epoch (in numbers) - example: "340000000" - pool_fees: - type: string - description: Total amount of fees earned by pool owners in that epoch (in numbers) - example: "123327382" - deleg_rewards: - type: string - description: Total amount of rewards earned by delegators in that epoch (in numbers) - example: "123456789123" - member_rewards: - anyOf: - - type: string - - type: "null" - description: Total amount of rewards earned by members (delegator - owner) in that epoch (in numbers) - example: "123456780123" - epoch_ros: - type: number - description: Annualized ROS (return on staking) for delegators for this epoch - example: 3.000340466 - pool_owner_history: - description: Array of pool owner's stake history - type: array - items: - type: object - properties: - pool_id_bech32: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" - stake_address: - type: string - description: Individual Stake account registered as (one of the) pool owner(s) - example: stake1uy6yzwsxxc28lfms0qmpxvyz9a7y770rtcqx9y96m42cttqwvp4m5 - declared_pledge: - $ref: "#/components/schemas/pool_info/items/properties/pledge" - epoch: - $ref: "#/components/schemas/pool_history_info/items/properties/epoch_no" - active_stake: - $ref: "#/components/schemas/pool_info/items/properties/active_stake" - pool_info: - description: Array of pool information - type: array - items: - type: object - properties: - pool_id_bech32: - type: string - description: Pool ID (bech32 format) - example: pool155efqn9xpcf73pphkk88cmlkdwx4ulkg606tne970qswczg3asc - pool_id_hex: - type: string - description: Pool ID (Hex format) - example: a532904ca60e13e88437b58e7c6ff66b8d5e7ec8d3f4b9e4be7820ec - active_epoch_no: - $ref: "#/components/schemas/pool_updates/items/properties/active_epoch_no" - vrf_key_hash: - anyOf: - - type: string - - type: "null" - description: Pool VRF key hash - example: 25efdad1bc12944d38e4e3c26c43565bec84973a812737b163b289e87d0d5ed3 - margin: - anyOf: - - type: number - - type: "null" - description: Margin (decimal format) - example: 0.1 - fixed_cost: - anyOf: - - type: string - - type: "null" - description: Pool fixed cost per epoch - example: "500000000" - pledge: - anyOf: - - type: string - - type: "null" - description: Pool pledge in number - example: "64000000000000" - deposit: - anyOf: - - type: string - - type: "null" - description: Pool's registration deposit in number - example: "500000000" - reward_addr: - anyOf: - - type: string - - type: "null" - description: Pool reward address - example: stake1uy6yzwsxxc28lfms0qmpxvyz9a7y770rtcqx9y96m42cttqwvp4m5 - reward_addr_delegated_drep: - anyOf: - - type: string - - type: "null" - description: Reward address' current delegation status to DRep ID in CIP-129 Bech32 format - example: drep1yfhyq6tztjksqqpd5lglc3zr2tn8vylgjh9xzz7n2p4l4lgk3qam3 - owners: - anyOf: - - type: array - - type: "null" - items: - type: string - description: Pool (co)owner address - example: stake1u8088wvudd7dp3rxl0v9xgng8r3j50s65ge3l3jvgd94keqfm3nv3 - relays: - type: array - items: - type: object - properties: - dns: - anyOf: - - type: string - - type: "null" - description: DNS name of the relay (nullable) - example: relays-new.cardano-mainnet.iohk.io - srv: - anyOf: - - type: string - - type: "null" - description: DNS service name of the relay (nullable) - example: biostakingpool3.hopto.org - ipv4: - anyOf: - - type: string - - type: "null" - description: IPv4 address of the relay (nullable) - example: "54.220.20.40" - ipv6: - anyOf: - - type: string - - type: "null" - description: IPv6 address of the relay (nullable) - example: 2604:ed40:1000:1711:6082:78ff:fe0c:ebf - port: - anyOf: - - type: number - - type: "null" - description: Port number of the relay (nullable) - example: 6000 - meta_url: - anyOf: - - type: string - - type: "null" - description: Pool metadata URL - example: https://pools.iohk.io/IOGP.json - meta_hash: - anyOf: - - type: string - - type: "null" - description: Pool metadata hash - example: 37eb004c0dd8a221ac3598ca1c6d6257fb5207ae9857b7c163ae0f39259d6cc0 - meta_json: - anyOf: - - type: object - - type: "null" - properties: - name: - type: string - description: Pool name - example: Input Output Global (IOHK) - Private - ticker: - type: string - description: Pool ticker - example: IOGP - homepage: - type: string - description: Pool homepage URL - example: https://iohk.io - description: - type: string - description: Pool description - example: Our mission is to provide economic identity to the billions of people who lack it. IOHK will not use the IOHK ticker. - pool_status: - type: string - description: Pool status - enum: ["registered", "retiring", "retired"] - example: registered - retiring_epoch: - anyOf: - - type: number - - type: "null" - description: Announced retiring epoch (nullable) - example: null - op_cert: - anyOf: - - type: string - - type: "null" - description: Pool latest operational certificate hash - example: 37eb004c0dd8a221ac3598ca1c6d6257fb5207ae9857b7c163ae0f39259d6cc0 - op_cert_counter: - anyOf: - - type: number - - type: "null" - description: Pool latest operational certificate counter value - example: 8 - active_stake: - anyOf: - - type: string - - type: "null" - description: Amount of delegated stake to this pool at the time of epoch snapshot - example: "64328627680963" - sigma: - anyOf: - - type: number - - type: "null" - description: Pool relative active stake share - example: 0.0034839235 - block_count: - anyOf: - - type: number - - type: "null" - description: Total pool blocks on chain - example: 4509 - live_pledge: - anyOf: - - type: string - - type: "null" - description: Summary of account balance for all pool owner's - example: "64328594406327" - live_stake: - anyOf: - - type: string - - type: "null" - description: Pool live stake - example: "64328627680963" - live_delegators: - type: number - description: Pool live delegator count - example: 5 - live_saturation: - anyOf: - - type: number - - type: "null" - description: Pool live saturation (decimal format) - example: 94.52 - voting_power: - anyOf: - - type: string - - type: "null" - description: Current voting power (lovelaces) of this stake pool - example: "123456789" - pool_snapshot: - type: array - items: - description: Array of pool stake information for 3 snapshots - type: object - properties: - snapshot: - type: string - description: Type of snapshot ("Mark", "Set" or "Go") - example: "Mark" - epoch_no: - type: number - description: Epoch number for the snapshot entry - example: 324 - nonce: - $ref: "#/components/schemas/epoch_params/items/properties/nonce" - pool_stake: - type: string - description: Pool's Active Stake for the given epoch - example: "100000000000" - active_stake: - type: string - description: Total Active Stake for the given epoch - example: "103703246364020" - pool_delegators: - description: Array of live pool delegators - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - amount: - type: string - description: Current delegator live stake (in number) - example: "64328591517480" - active_epoch_no: - type: number - description: Epoch number in which the delegation becomes active - example: 324 - latest_delegation_tx_hash: - type: string - description: Latest transaction hash used for delegation by the account - example: 368d08fe86804d637649341d3aec4a9baa7dffa6d00f16de2ba9dba814f1c948 - pool_registrations: - description: Array of pool registrations/retirements - type: array - items: - type: object - properties: - pool_id_bech32: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/tx_hash" - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - epoch_no: - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - epoch_slot: - $ref: "#/components/schemas/blocks/items/properties/epoch_slot" - active_epoch_no: - $ref: "#/components/schemas/pool_updates/items/properties/active_epoch_no" - pool_delegators_history: - description: Array of pool delegators (historical) - anyOf: - - type: array - - type: "null" - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - amount: - $ref: "#/components/schemas/pool_delegators/items/properties/amount" - epoch_no: - type: number - description: Epoch number for the delegation history - example: 324 - pool_invalid_delegators: - description: Array of pool delegators that are invalid for the specified epoch - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - epoch_no: - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - pool_blocks: - description: Array of blocks created by pool - type: array - items: - type: object - properties: - epoch_no: - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - epoch_slot: - $ref: "#/components/schemas/blocks/items/properties/epoch_slot" - abs_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - pool_updates: - description: Array of historical pool updates - type: array - items: - type: object - properties: - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/tx_hash" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - pool_id_bech32: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" - pool_id_hex: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_hex" - active_epoch_no: - anyOf: - - type: number - - type: "null" - description: Epoch number in which the update becomes active - example: 324 - vrf_key_hash: - $ref: "#/components/schemas/pool_info/items/properties/vrf_key_hash" - margin: - $ref: "#/components/schemas/pool_info/items/properties/margin" - fixed_cost: - $ref: "#/components/schemas/pool_info/items/properties/fixed_cost" - pledge: - $ref: "#/components/schemas/pool_info/items/properties/pledge" - reward_addr: - $ref: "#/components/schemas/pool_info/items/properties/reward_addr" - owners: - $ref: "#/components/schemas/pool_info/items/properties/owners" - relays: - $ref: "#/components/schemas/pool_info/items/properties/relays" - meta_url: - $ref: "#/components/schemas/pool_info/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/pool_info/items/properties/meta_hash" - meta_json: - $ref: "#/components/schemas/pool_info/items/properties/meta_json" - update_type: - type: string - description: Type of update task - enum: ["registration", "deregistration"] - example: registration - retiring_epoch: - $ref: "#/components/schemas/pool_info/items/properties/retiring_epoch" - pool_relays: - description: Array of pool relay information - type: array - items: - type: object - properties: - pool_id_bech32: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" - relays: - $ref: "#/components/schemas/pool_info/items/properties/relays" - pool_metadata: - description: Array of pool metadata - type: array - items: - type: object - properties: - pool_id_bech32: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" - meta_url: - $ref: "#/components/schemas/pool_info/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/pool_info/items/properties/meta_hash" - meta_json: - $ref: "#/components/schemas/pool_info/items/properties/meta_json" - pool_calidus_keys: - description: Array of valid calidus keys for all pools - type: array - items: - properties: - pool_id_bech32: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" - pool_status: - $ref: "#/components/schemas/pool_info/items/properties/pool_status" - calidus_nonce: - type: number - description: Unique nonce for pool's calidus key registration as per CIP-88 - example: 150720822 - calidus_pub_key: - type: string - description: Calidus public key as per CIP-88 - example: "dea2d81424a285f7fd2846beb39320543ba1df27b890789b2c152b64a352e2df" - calidus_id_bech32: - type: string - description: Calidus key in bech32 format as per CIP-88 - example: "calidus158w8ft8k4endw5q6m0rx2myl2ldvw5f5d8xmwyem6529fcgn575zh" - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/tx_hash" - epoch_no: - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - registered: - type: boolean - description: Flag to show if the pool has active calidus key as registered - example: true - bytes: - type: string - description: Raw Transaction metadata in hex - example: 19029a324512 - pool_groups: - description: Array of pools with their corresponding group information - type: array - items: - properties: - pool_id_bech32: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" - pool_group: - anyOf: - - type: string - - type: "null" - description: A group that the pool was identified to be associated with - example: IOG - ticker: - $ref: "#/components/schemas/pool_info/items/properties/meta_json/properties/ticker" - adastat_group: - anyOf: - - type: string - - type: "null" - description: The pool's group identification as per adastat.net - example: iohk.io - balanceanalytics_group: - anyOf: - - type: string - - type: "null" - description: The pool's group identification as per balanceanalytics.io - example: IOG - - epoch_info: - description: Array of detailed summary for each epoch - type: array - items: - type: object - properties: - epoch_no: - type: number - description: Epoch number - example: 294 - era: - $ref: "#/components/schemas/era_summaries/items/properties/era" - out_sum: - type: string - description: Total output value across all transactions in epoch - example: "15432725054364942" - fees: - type: string - description: Total fees incurred by transactions in epoch - example: "74325855210" - tx_count: - type: number - description: Number of transactions submitted in epoch - example: 357919 - blk_count: - type: number - description: Number of blocks created in epoch - example: 17321 - start_time: - type: number - description: UNIX timestamp of the epoch start - example: 1506203091 - end_time: - type: number - description: UNIX timestamp of the epoch end - example: 1506635091 - first_block_time: - type: number - description: UNIX timestamp of the epoch's first block - example: 1506635091 - last_block_time: - type: number - description: UNIX timestamp of the epoch's last block - example: 1506635091 - active_stake: - anyOf: - - type: string - - type: "null" - description: Total active stake in epoch stake snapshot (null for pre-Shelley epochs) - example: "23395112387185880" - total_rewards: - anyOf: - - type: string - - type: "null" - description: Total rewards earned in epoch (null for pre-Shelley epochs) - example: "252902897534230" - avg_blk_reward: - anyOf: - - type: string - - type: "null" - description: Average block reward for epoch (null for pre-Shelley epochs) - example: "660233450" - epoch_params: - description: Epoch parameters (all fields nullable for pre-Shelley/Gougen epochs except first block hash) - type: array - items: - properties: - epoch_no: - type: number - description: Epoch number - example: 294 - era: - $ref: "#/components/schemas/era_summaries/items/properties/era" - min_fee_a: - anyOf: - - type: number - - type: "null" - description: The 'a' parameter to calculate the minimum transaction fee - example: 44 - min_fee_b: - anyOf: - - type: number - - type: "null" - description: The 'b' parameter to calculate the minimum transaction fee - example: 155381 - max_block_size: - anyOf: - - type: number - - type: "null" - description: The maximum block size (in bytes) - example: 65536 - max_tx_size: - anyOf: - - type: number - - type: "null" - description: The maximum transaction size (in bytes) - example: 16384 - max_bh_size: - anyOf: - - type: number - - type: "null" - description: The maximum block header size (in bytes) - example: 1100 - key_deposit: - anyOf: - - type: string - - type: "null" - description: The amount (in number) required for a deposit to register a stake address - example: "2000000" - pool_deposit: - anyOf: - - type: string - - type: "null" - description: The amount (in number) required for a deposit to register a stake pool - example: "500000000" - max_epoch: - anyOf: - - type: number - - type: "null" - description: The maximum number of epochs in the future that a pool retirement is allowed to be scheduled for - example: 18 - optimal_pool_count: - anyOf: - - type: number - - type: "null" - description: The optimal number of stake pools - example: 500 - influence: - anyOf: - - type: number - - type: "null" - format: double - description: The pledge influence on pool rewards - example: 0.3 - monetary_expand_rate: - anyOf: - - type: number - - type: "null" - format: double - description: The monetary expansion rate - example: 0.003 - treasury_growth_rate: - anyOf: - - type: number - - type: "null" - format: double - description: The treasury growth rate - example: 0.2 - decentralisation: - anyOf: - - type: number - - type: "null" - format: double - description: The decentralisation parameter (1 fully centralised, 0 fully decentralised) - example: 0.1 - extra_entropy: - anyOf: - - type: string - - type: "null" - description: The hash of 32-byte string of extra random-ness added into the protocol's entropy pool - example: d982e06fd33e7440b43cefad529b7ecafbaa255e38178ad4189a37e4ce9bf1fa - protocol_major: - anyOf: - - type: number - - type: "null" - description: The protocol major version - example: 10 - protocol_minor: - anyOf: - - type: number - - type: "null" - description: The protocol minor version - example: 0 - min_utxo_value: - anyOf: - - type: string - - type: "null" - description: The minimum value of a UTxO entry - example: "34482" - min_pool_cost: - anyOf: - - type: string - - type: "null" - description: The minimum pool cost - example: "340000000" - nonce: - anyOf: - - type: string - - type: "null" - description: The nonce value for this epoch - example: 01304ddf5613166be96fce27be110747f2c8fcb38776618ee79225ccb59b81e2 - block_hash: - type: string - description: The hash of the first block where these parameters are valid - example: f9dc2a2fc3a2db09a71af007a740261de585afc9e3022b8e30535592ff4dd9e5 - cost_models: - anyOf: - - type: object - - type: "null" - description: The per language cost model in JSON - example: null - price_mem: - anyOf: - - type: number - - type: "null" - format: double - description: The per word cost of script memory usage - example: 0.0577 - price_step: - anyOf: - - type: number - - type: "null" - format: double - description: The cost of script execution step usage - example: 7.21e-05 - max_tx_ex_mem: - anyOf: - - type: number - - type: "null" - description: The maximum number of execution memory allowed to be used in a single transaction - example: 10000000 - max_tx_ex_steps: - anyOf: - - type: number - - type: "null" - description: The maximum number of execution steps allowed to be used in a single transaction - example: 10000000000 - max_block_ex_mem: - anyOf: - - type: number - - type: "null" - description: The maximum number of execution memory allowed to be used in a single block - example: 50000000 - max_block_ex_steps: - anyOf: - - type: number - - type: "null" - description: The maximum number of execution steps allowed to be used in a single block - example: 40000000000 - max_val_size: - anyOf: - - type: number - - type: "null" - description: The maximum Val size - example: 5000 - collateral_percent: - anyOf: - - type: number - - type: "null" - description: The percentage of the tx fee which must be provided as collateral when including non-native scripts - example: 150 - max_collateral_inputs: - anyOf: - - type: number - - type: "null" - description: The maximum number of collateral inputs allowed in a transaction - example: 3 - coins_per_utxo_size: - anyOf: - - type: string - - type: "null" - description: The cost per UTxO size - example: "34482" - pvt_motion_no_confidence: - anyOf: - - type: number - - type: "null" - description: Pool Voting threshold for motion of no-confidence. - example: 0.6 - pvt_committee_normal: - anyOf: - - type: number - - type: "null" - description: Pool Voting threshold for new committee/threshold (normal state). - example: 0.65 - pvt_committee_no_confidence: - anyOf: - - type: number - - type: "null" - description: Pool Voting threshold for new committee/threshold (state of no-confidence). - example: 0.65 - pvt_hard_fork_initiation: - anyOf: - - type: number - - type: "null" - description: Pool Voting threshold for hard-fork initiation. - example: 0.51 - dvt_motion_no_confidence: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for motion of no-confidence. - example: 0.67 - dvt_committee_normal: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for new committee/threshold (normal state). - example: 0.67 - dvt_committee_no_confidence: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for new committee/threshold (state of no-confidence). - example: 0.65 - dvt_update_to_constitution: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for update to the Constitution. - example: 0.75 - dvt_hard_fork_initiation: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for hard-fork initiation. - example: 0.6 - dvt_p_p_network_group: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for protocol parameter changes, network group. - example: 0.67 - dvt_p_p_economic_group: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for protocol parameter changes, economic group. - example: 0.67 - dvt_p_p_technical_group: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for protocol parameter changes, technical group. - example: 0.67 - dvt_p_p_gov_group: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for protocol parameter changes, governance group. - example: 0.75 - dvt_treasury_withdrawal: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for treasury withdrawal. - example: 0.67 - committee_min_size: - anyOf: - - type: number - - type: "null" - description: Minimal constitutional committee size. - example: 5 - committee_max_term_length: - anyOf: - - type: number - - type: "null" - description: Constitutional committee term limits. - example: 146 - gov_action_lifetime: - anyOf: - - type: number - - type: "null" - description: Governance action expiration. - example: 14 - gov_action_deposit: - anyOf: - - type: string - - type: "null" - description: Governance action deposit. - example: 100000000000 - drep_deposit: - anyOf: - - type: string - - type: "null" - description: DRep deposit amount. - example: 500000000 - drep_activity: - anyOf: - - type: number - - type: "null" - description: DRep activity period. - example: 20 - pvtpp_security_group: - anyOf: - - type: number - - type: "null" - description: Pool Voting threshold for protocol parameter changes, security group. - example: 0.6 - min_fee_ref_script_cost_per_byte: - anyOf: - - type: number - - type: "null" - description: Minimum Fee for Reference Script cost pre byte - example: 15 - epoch_block_protocols: - description: Array of distinct block protocol versions counts in epoch - type: array - items: - properties: - proto_major: - type: number - description: Protocol major version - example: 6 - proto_minor: - type: number - description: Protocol major version - example: 2 - era: - $ref: "#/components/schemas/era_summaries/items/properties/era" - blocks: - type: number - description: Amount of blocks with specified major and protocol combination - example: 2183 - - blocks: - description: Array of block information - type: array - items: - type: object - properties: - hash: - type: string - description: Hash of the block - example: 2fa5178c5be950c7f40d6c74efe9b3dd12c4836dc3f3dd052cd1c2a12edd477f - epoch_no: - type: number - description: Epoch number of the block - example: 117 - abs_slot: - type: number - description: Absolute slot number of the block - example: 49073930 - epoch_slot: - type: number - description: Slot number of the block in epoch - example: 171530 - block_height: - type: number - description: Block height - example: 1794506 - block_size: - type: number - description: Block size in bytes - example: 2433 - block_time: - type: number - description: UNIX timestamp of the block - example: 1704757130 - tx_count: - type: number - description: Number of transactions in the block - example: 2 - vrf_key: - type: string - description: VRF key of the block producer - example: "vrf_vk1400ju08429se790upcvurdyqrhl8rhm7spm2jxg0lfnedqeaexfq7jsf2x" - pool: - anyOf: - - type: string - - type: "null" - description: Pool ID in bech32 format (null for pre-Shelley blocks) - example: pool13m26ky08vz205232k20u8ft5nrg8u68klhn0xfsk9m4gsqsc44v - op_cert_counter: - type: number - description: Counter value of the operational certificate used to create this block - example: 5 - proto_major: - $ref: "#/components/schemas/epoch_params/items/properties/protocol_major" - proto_minor: - $ref: "#/components/schemas/epoch_params/items/properties/protocol_minor" - parent_hash: - type: string - description: Previous Hash of the current block - example: 7eb8d62f9d6a5e7cf2d9635f0b531d2693fef55a717894e3a97baf6183b8d189 - block_info: - description: Array of detailed block information - type: array - items: - type: object - properties: - hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - era: - $ref: "#/components/schemas/era_summaries/items/properties/era" - abs_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - epoch_slot: - $ref: "#/components/schemas/blocks/items/properties/epoch_slot" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_size: - $ref: "#/components/schemas/blocks/items/properties/block_size" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - tx_count: - $ref: "#/components/schemas/blocks/items/properties/tx_count" - vrf_key: - $ref: "#/components/schemas/blocks/items/properties/vrf_key" - op_cert: - type: string - description: Hash of the block producers' operational certificate - example: "16bfc28a7127d11805fe02df67f8c3909ab7e2e2cd81b6954d90eeff1938614c" - op_cert_counter: - $ref: "#/components/schemas/blocks/items/properties/op_cert_counter" - pool: - $ref: "#/components/schemas/blocks/items/properties/pool" - proto_major: - $ref: "#/components/schemas/epoch_params/items/properties/protocol_major" - proto_minor: - $ref: "#/components/schemas/epoch_params/items/properties/protocol_minor" - total_output: - anyOf: - - type: string - - type: "null" - description: Total output of the block (in number) - example: "92384672389" - total_fees: - anyOf: - - type: string - - type: "null" - description: Total fees of the block (in number) - example: "2346834" - num_confirmations: - type: number - description: Number of confirmations for the block - example: 664275 - parent_hash: - type: string - description: Hash of the parent of this block - example: "16bfc28a7127d11805fe02df67f8c3909ab7e2e2cd81b6954d90eeff1938614c" - child_hash: - type: string - description: Hash of the child of this block (if present) - example: "a3b525ba0747ce9daa928fa28fbc680f95e6927943a1fbd6fa5394d96c9dc2fa" - block_txs: - description: Array of transactions hashes - type: array - items: - type: object - properties: - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/tx_hash" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - block_tx_cbor: - description: Array of raw transaction(s) in CBOR format - type: array - items: - type: object - properties: - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - absolute_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - tx_timestamp: - $ref: "#/components/schemas/tx_info/items/properties/tx_timestamp" - cbor: - $ref: "#/components/schemas/tx_cbor/items/properties/cbor" - block_tx_info: - description: Array of detailed information about transaction(s) - type: array - items: - type: object - properties: - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - epoch_slot: - $ref: "#/components/schemas/blocks/items/properties/epoch_slot" - absolute_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - tx_timestamp: - $ref: "#/components/schemas/tx_info/items/properties/tx_timestamp" - tx_block_index: - $ref: "#/components/schemas/tx_info/items/properties/tx_block_index" - tx_size: - $ref: "#/components/schemas/tx_info/items/properties/tx_size" - total_output: - $ref: "#/components/schemas/tx_info/items/properties/total_output" - fee: - $ref: "#/components/schemas/tx_info/items/properties/fee" - treasury_donation: - $ref: "#/components/schemas/tx_info/items/properties/treasury_donation" - deposit: - $ref: "#/components/schemas/tx_info/items/properties/deposit" - invalid_before: - $ref: "#/components/schemas/tx_info/items/properties/invalid_before" - invalid_after: - $ref: "#/components/schemas/tx_info/items/properties/invalid_after" - collateral_inputs: - $ref: "#/components/schemas/tx_info/items/properties/collateral_inputs" - collateral_output: - $ref: "#/components/schemas/tx_info/items/properties/collateral_output" - reference_inputs: - $ref: "#/components/schemas/tx_info/items/properties/reference_inputs" - inputs: - description: An array of UTxO inputs spent in the transaction - anyOf: - - $ref: "#/components/schemas/tx_info/items/properties/outputs" - - type: "null" - outputs: - $ref: "#/components/schemas/tx_info/items/properties/outputs" - withdrawals: - $ref: "#/components/schemas/tx_info/items/properties/withdrawals" - assets_minted: - $ref: "#/components/schemas/tx_info/items/properties/assets_minted" - metadata: - $ref: "#/components/schemas/tx_metadata/items/properties/metadata" - certificates: - $ref: "#/components/schemas/tx_info/items/properties/certificates" - native_scripts: - $ref: "#/components/schemas/tx_info/items/properties/native_scripts" - plutus_contracts: - $ref: "#/components/schemas/tx_info/items/properties/plutus_contracts" - - address_list: - description: Array of information for address(es) - type: array - items: - type: object - properties: - address: - $ref: "#/components/schemas/utxo_infos/items/properties/address" - address_hex: - type: string - description: Cardano address in hex format - example: 60f879af535c02e37bf77fb3b5f51d017229fe47995c37b9aca9e0091c - has_script: - $ref: "#/components/schemas/drep_info/items/properties/has_script" - payment_cred: - $ref: "#/components/schemas/utxo_infos/items/properties/payment_cred" - stake_address: - anyOf: - - $ref: "#/components/schemas/account_history/items/properties/stake_address" - - type: "null" - stake_address_hex: - anyOf: - - $ref: "#/components/schemas/account_list/items/properties/stake_address_hex" - - type: "null" - address_info: - description: Array of information for address(es) - type: array - items: - type: object - properties: - address: - $ref: "#/components/schemas/utxo_infos/items/properties/address" - balance: - type: string - description: Sum of all UTxO values beloning to address - example: "10723473983" - stake_address: - anyOf: - - $ref: "#/components/schemas/account_history/items/properties/stake_address" - - type: "null" - script_address: - type: boolean - description: Signifies whether the address is a script address - example: true - utxo_set: - type: array - items: - type: object - properties: - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - tx_index: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - value: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/value" - datum_hash: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_hash" - inline_datum: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/inline_datum" - reference_script: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/reference_script" - asset_list: - $ref: "#/components/schemas/utxo_infos/items/properties/asset_list" - address_txs: - description: Array of transaction hashes - type: array - items: - type: object - properties: - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/tx_hash" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - address_outputs: - description: Array of basic transaction output information - type: array - items: - type: object - properties: - address: - $ref: "#/components/schemas/utxo_infos/items/properties/address" - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - tx_index: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" - value: - $ref: "#/components/schemas/utxo_infos/items/properties/value" - stake_address: - $ref: "#/components/schemas/utxo_infos/items/properties/stake_address" - payment_cred: - $ref: "#/components/schemas/utxo_infos/items/properties/payment_cred" - epoch_no: - $ref: "#/components/schemas/utxo_infos/items/properties/epoch_no" - block_height: - $ref: "#/components/schemas/utxo_infos/items/properties/block_height" - block_time: - $ref: "#/components/schemas/utxo_infos/items/properties/block_time" - is_spent: - $ref: "#/components/schemas/utxo_infos/items/properties/is_spent" - address_assets: - description: Array of address-owned assets - type: array - items: - type: object - properties: - address: - $ref: "#/components/schemas/utxo_infos/items/properties/address" - policy_id: - $ref: "#/components/schemas/asset_info/items/properties/policy_id" - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - decimals: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" - quantity: - $ref: "#/components/schemas/asset_addresses/items/properties/quantity" - - account_list: - description: Array of account (stake address) IDs - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - stake_address_hex: - type: string - description: Cardano staking address (reward account) in hex format - example: e1c865f10d66a2e375242b5ef9f05abc8840d413421982f62c35ce4fbf - script_hash: - anyOf: - - type: string - - type: "null" - description: Script hash in case the stake address is locked by a script - example: bf357f5de69e4aad71954bebd64357a4813ea5233df12fce4a9de582 - account_info: - description: Array of stake account information - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - status: - type: string - description: Stake address status - enum: ["registered", "not registered"] - example: registered - delegated_drep: - anyOf: - - type: string - - type: "null" - description: Account's current delegation status to DRep ID in CIP-129 Bech32 format - example: drep1yfhyq6tztjksqqpd5lglc3zr2tn8vylgjh9xzz7n2p4l4lgk3qam3 - delegated_pool: - anyOf: - - $ref: "#/components/schemas/pool_list/items/properties/pool_id_bech32" - - type: "null" - total_balance: - type: string - description: Total balance of the account including UTxO, rewards and MIRs (in number) - example: "207116800428" - utxo: - type: string - description: Total UTxO balance of the account - example: "162764177131" - rewards: - type: string - description: Total rewards earned by the account - example: "56457728047" - withdrawals: - type: string - description: Total rewards withdrawn by the account - example: "12105104750" - rewards_available: - type: string - description: Total rewards available for withdrawal - example: "44352623297" - deposit: - type: string - description: Total deposit available for withdrawal - example: "2000000" - reserves: - type: string - description: Total reserves MIR value of the account - example: "0" - treasury: - type: string - description: Total treasury MIR value of the account - example: "0" - proposal-refund: - type: string - description: Total proposal refund for this account - example: "0" - account_rewards: - description: Array of reward history information - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - rewards: - type: array - items: - type: object - properties: - earned_epoch: - $ref: "#/components/schemas/reserve_withdrawals/items/properties/earned_epoch" - spendable_epoch: - $ref: "#/components/schemas/reserve_withdrawals/items/properties/spendable_epoch" - amount: - type: string - description: Amount of rewards earned (in number) - type: - type: string - description: The source of the rewards - enum: [member, leader, treasury, reserves, refund] - example: member - pool_id: - anyOf: - - $ref: "#/components/schemas/pool_list/items/properties/pool_id_bech32" - - type: "null" - account_reward_history: - description: Array of reward history information - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - earned_epoch: - $ref: "#/components/schemas/reserve_withdrawals/items/properties/earned_epoch" - spendable_epoch: - $ref: "#/components/schemas/reserve_withdrawals/items/properties/spendable_epoch" - amount: - type: string - description: Amount of rewards earned (in number) - type: - type: string - description: The source of the rewards - enum: [member, leader, treasury, reserves, refund] - example: member - pool_id_bech32: - anyOf: - - $ref: "#/components/schemas/pool_list/items/properties/pool_id_bech32" - - type: "null" - account_updates: - description: Array of account updates information - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - updates: - type: array - items: - type: object - properties: - action_type: - type: string - description: Type of certificate submitted - enum: - [ - "registration", - "delegation_pool", - "delegation_drep", - "withdrawal", - "deregistration", - ] - example: "registration" - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - epoch_slot: - $ref: "#/components/schemas/blocks/items/properties/epoch_slot" - absolute_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - account_update_history: - description: Array of account update history information - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - action_type: - type: string - description: Type of certificate submitted - enum: - [ - "registration", - "delegation_pool", - "delegation_drep", - "withdrawal", - "deregistration", - ] - example: "registration" - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - epoch_slot: - $ref: "#/components/schemas/blocks/items/properties/epoch_slot" - absolute_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - account_addresses: - description: Array of payment addresses - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - addresses: - type: array - items: - $ref: "#/components/schemas/utxo_infos/items/properties/address" - account_assets: - description: Array of assets owned by account - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - policy_id: - $ref: "#/components/schemas/asset_info/items/properties/policy_id" - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - decimals: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" - quantity: - $ref: "#/components/schemas/asset_addresses/items/properties/quantity" - account_history: - description: Array of active stake values per epoch - type: array - items: - properties: - stake_address: - type: string - description: Cardano staking address (reward account) in bech32 format - example: stake1u8yxtugdv63wxafy9d00nuz6hjyyp4qnggvc9a3vxh8yl0ckml2uz - history: - type: array - items: - type: object - properties: - pool_id: - type: string - description: Bech32 representation of pool ID - example: pool1z5uqdk7dzdxaae5633fqfcu2eqzy3a3rgtuvy087fdld7yws0xt - epoch_no: - type: number - description: Epoch number - example: 301 - active_stake: - type: string - description: Active stake amount (in numbers) - example: 682334162 - account_stake_history: - description: Array of active stake values per epoch - type: array - items: - properties: - stake_address: - type: string - description: Cardano staking address (reward account) in bech32 format - example: stake1u8yxtugdv63wxafy9d00nuz6hjyyp4qnggvc9a3vxh8yl0ckml2uz - pool_id_bech32: - type: string - description: Bech32 representation of pool ID - example: pool1z5uqdk7dzdxaae5633fqfcu2eqzy3a3rgtuvy087fdld7yws0xt - epoch_no: - type: number - description: Epoch number - example: 301 - active_stake: - type: string - description: Active stake amount (in numbers) - example: 682334162 - - tx_info: - description: Array of detailed information about transaction(s) - type: array - items: - type: object - properties: - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - epoch_slot: - $ref: "#/components/schemas/blocks/items/properties/epoch_slot" - absolute_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - tx_timestamp: - type: number - description: UNIX timestamp of the transaction - example: 1506635091 - tx_block_index: - type: number - description: Index of transaction within block - example: 6 - tx_size: - type: number - description: Size in bytes of transaction - example: 391 - total_output: - type: string - description: Total sum of all transaction outputs (in numbers) - example: "157832856" - fee: - type: string - description: Total Transaction fee (in numbers) - example: "172761" - treasury_donation: - type: string - description: Total Donation to on-chain treasury (in numbers) - example: "0" - deposit: - type: string - description: Total Deposits included in transaction (for example, if it is registering a pool/key) - example: "0" - invalid_before: - anyOf: - - type: string - - type: "null" - description: Slot before which transaction cannot be validated (if supplied, else null) - example: "42331172" - invalid_after: - anyOf: - - type: string - - type: "null" - description: Slot after which transaction cannot be validated - example: "42332172" - collateral_inputs: - description: An array of collateral inputs needed for smart contracts in case of contract failure - anyOf: - - $ref: "#/components/schemas/tx_info/items/properties/outputs" - - type: "null" - collateral_output: - description: A collateral output for change if the smart contract fails to execute and collateral inputs are spent. (CIP-40) - anyOf: - - type: array - - type: "null" - items: - properties: - payment_addr: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/payment_addr" - stake_addr: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/stake_addr" - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/tx_hash" - tx_index: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/tx_index" - value: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/value" - datum_hash: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/datum_hash" - inline_datum: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/inline_datum" - reference_script: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/reference_script" - asset_list: - type: array - description: Brief asset description from ledger - reference_inputs: - description: An array of reference inputs. A reference input allows looking at an output without spending it. (CIP-31) - anyOf: - - $ref: "#/components/schemas/tx_info/items/properties/outputs" - - type: "null" - inputs: - $ref: "#/components/schemas/tx_info/items/properties/outputs" - #description: An array of UTxO inputs spent in the transaction - outputs: - type: array - description: An array of UTxO outputs created by the transaction - items: - type: object - properties: - payment_addr: - type: object - properties: - bech32: - $ref: "#/components/schemas/utxo_infos/items/properties/address" - cred: - type: string - description: Payment credential - example: de3c1c527e8826b9cd2030f88f75fc44cd4ce519b9ded9eb794b3794 - stake_addr: - $ref: "#/components/schemas/address_info/items/properties/stake_address" - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - tx_index: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" - value: - type: string - description: Total sum of ADA on the UTxO - example: "157832856" - datum_hash: - anyOf: - - type: string - - type: "null" - description: Hash of datum (if any) connected to UTxO - example: 30c16dd243324cf9d90ffcf211b9e0f2117a7dc28d17e85927dfe2af3328e5c9 - inline_datum: - anyOf: - - type: object - - type: "null" - description: Allows datums to be attached to UTxO (CIP-32) - properties: - bytes: - type: string - description: Datum bytes (hex) - example: 19029a - value: - type: object - description: Value (json) - example: { "int": 666 } - reference_script: - anyOf: - - type: object - - type: "null" - description: Allow reference scripts to be used to satisfy script requirements during validation, rather than requiring the spending transaction to do so. (CIP-33) - properties: - hash: - type: string - description: Hash of referenced script - example: 67f33146617a5e61936081db3b2117cbf59bd2123748f58ac9678656 - size: - type: number - description: Size in bytes - example: 14 - type: - type: string - description: Type of script - example: plutusV1 - bytes: - type: string - description: Script bytes (hex) - example: 4e4d01000033222220051200120011 - value: - anyOf: - - type: object - - type: "null" - description: Value (json) - example: null - asset_list: - $ref: "#/components/schemas/utxo_infos/items/properties/asset_list" - withdrawals: - anyOf: - - type: array - - type: "null" - description: Array of withdrawals with-in a transaction - items: - type: object - properties: - amount: - type: string - description: Withdrawal amount (in numbers) - example: "9845162" - stake_addr: - type: string - description: A Cardano staking address (reward account, bech32 encoded) - example: stake1uxggf4shfvpghcangm67ky0q4zlc3xn7gezy0auhxczu3pslm9wrj - assets_minted: - anyOf: - - type: array - - type: "null" - description: Array of minted assets with-in a transaction - items: - properties: - policy_id: - $ref: "#/components/schemas/asset_info/items/properties/policy_id" - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - decimals: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" - quantity: - type: string - description: Quantity of minted assets (negative on burn) - example: "1" - metadata: - $ref: "#/components/schemas/tx_metadata/items/properties/metadata" - certificates: - anyOf: - - type: array - - type: "null" - description: Certificates present with-in a transaction (if any) - items: - properties: - index: - anyOf: - - type: number - - type: "null" - description: Certificate index - example: 0 - type: - type: string - description: Type of certificate (could be delegation, stake_registration, stake_deregistraion, pool_update, pool_retire, param_proposal, reserve_MIR, treasury_MIR) - example: delegation - info: - anyOf: - - type: object - - type: "null" - description: A JSON array containing information from the certificate - example: - { - "stake_address": "stake1uxggf4shfvpghcangm67ky0q4zlc3xn7gezy0auhxczu3pslm9wrj", - "pool": "pool1k53pf4wzn263c08e3wr3gttndfecm9f4uzekgctcx947vt7fh2p", - } - native_scripts: - anyOf: - - type: array - - type: "null" - description: Native scripts present in a transaction (if any) - items: - properties: - script_hash: - $ref: "#/components/schemas/script_info/items/properties/script_hash" - script_json: - type: object - description: JSON representation of the timelock script (null for other script types) - example: - { - "type": "all", - "scripts": - [ - { - "type": "sig", - "keyHash": "a96da581c39549aeda81f539ac3940ac0cb53657e774ca7e68f15ed9", - }, - { - "type": "sig", - "keyHash": "ccfcb3fed004562be1354c837a4a4b9f4b1c2b6705229efeedd12d4d", - }, - { - "type": "sig", - "keyHash": "74fcd61aecebe36aa6b6cd4314027282fa4b41c3ce8af17d9b77d0d1", - }, - ], - } - plutus_contracts: - anyOf: - - type: array - - type: "null" - description: Plutus contracts present in transaction (if any) - items: - properties: - address: - anyOf: - - type: string - - type: "null" - description: Plutus script address - example: addr1w999n67e86jn6xal07pzxtrmqynspgx0fwmcmpua4wc6yzsxpljz3 - spends_input: - anyOf: - - type: object - - type: "null" - properties: - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - tx_index: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" - description: Input utxo this contract spends - script_hash: - $ref: "#/components/schemas/script_info/items/properties/script_hash" - bytecode: - $ref: "#/components/schemas/script_info/items/properties/bytes" - size: - $ref: "#/components/schemas/script_info/items/properties/size" - valid_contract: - type: boolean - description: True if the contract is valid or there is no contract - example: true - input: - type: object - properties: - redeemer: - type: object - properties: - purpose: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/purpose" - fee: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/fee" - unit: - type: object - properties: - steps: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/unit_steps" - mem: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/unit_mem" - datum: - type: object - properties: - hash: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_hash" - value: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_value" - datum: - type: object - properties: - hash: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_hash" - value: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_value" - voting_procedures: - anyOf: - - type: array - - type: "null" - description: Governance votes in a transaction (if any) - items: - properties: - proposal_tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - proposal_index: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_index" - voter_role: - $ref: "#/components/schemas/proposal_votes/items/properties/voter_role" - voter: - $ref: "#/components/schemas/proposal_votes/items/properties/voter_id" - voter_hex: - $ref: "#/components/schemas/proposal_votes/items/properties/voter_hex" - vote: - $ref: "#/components/schemas/drep_votes/items/properties/vote" - proposal_procedures: - anyOf: - - type: array - - type: "null" - description: Governance proposals in a transaction (if any) - items: - properties: - index: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_index" - type: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_type" - description: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_description" - deposit: - $ref: "#/components/schemas/drep_info/items/properties/deposit" - return_address: - $ref: "#/components/schemas/proposal_list/items/properties/return_address" - expiration: - $ref: "#/components/schemas/proposal_list/items/properties/expiration" - meta_url: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_hash" - withdrawal: - $ref: "#/components/schemas/proposal_list/items/properties/withdrawal" - param_proposal: - $ref: "#/components/schemas/proposal_list/items/properties/param_proposal" - tx_cbor: - description: Raw Transaction(s) in CBOR format - items: - properties: - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/tx_hash" - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - absolute_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - tx_timestamp: - $ref: "#/components/schemas/tx_info/items/properties/tx_timestamp" - cbor: - type: string - description: CBOR encoded raw transaction. - tx_utxos: - description: Array of inputs and outputs for given transaction(s) - type: array - items: - properties: - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/tx_hash" - inputs: - type: array - description: An array of UTxO inputs used by the transaction - items: - type: object - properties: - payment_addr: - type: object - properties: - bech32: - type: string - description: A Cardano payment/base address (bech32 encoded) where funds were sent or change to be returned - example: addr1q80rc8zj06yzdwwdyqc03rm4l3zv6n89rxuaak0t099n09yssntpwjcz303mx3h4avg7p29l3zd8u3jyglmewds9ezrqad9mkw - cred: - type: string - description: Payment credential - example: de3c1c527e8826b9cd2030f88f75fc44cd4ce519b9ded9eb794b3794 - stake_addr: - $ref: "#/components/schemas/address_info/items/properties/stake_address" - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - tx_index: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" - value: - type: string - description: Total sum of ADA on the UTxO - example: 157832856 - outputs: - description: An array of UTxO outputs created by the transaction - allOf: - - $ref: "#/components/schemas/tx_utxos/items/properties/inputs" - tx_metadata: - description: Array of metadata information present in each of the transactions queried - anyOf: - - type: array - - type: "null" - items: - properties: - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - metadata: - anyOf: - - type: object - - type: "null" - description: A JSON array containing details about metadata within transaction - example: - { - "721": - { - "version": 1, - "copyright": "...", - "publisher": ["p...o"], - "4bf184e01e0f163296ab253edd60774e2d34367d0e7b6cbc689b567d": - {}, - }, - } - tx_status: - description: Array of transaction confirmation counts - type: array - items: - properties: - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - num_confirmations: - anyOf: - - type: number - - type: "null" - description: Number of block confirmations - example: 17 - tx_metalabels: - description: Array of known metadata labels - type: array - items: - properties: - key: - type: string - description: A distinct known metalabel - example: "721" - tx_by_metalabel: - description: Array of transactions containing the queried metadata label - type: array - items: - type: object - properties: - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - absolute_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - tx_timestamp: - $ref: "#/components/schemas/blocks/items/properties/block_time" - utxo_infos: - description: Array of complete UTxO information - type: array - items: - type: object - properties: - tx_hash: - type: string - description: Hash identifier of the transaction - example: f144a8264acf4bdfe2e1241170969c930d64ab6b0996a4a45237b623f1dd670e - tx_index: - type: number - description: Index of UTxO in the transaction - example: 0 - address: - type: string - description: A Cardano payment/base address (bech32 encoded) - example: addr1qxkfe8s6m8qt5436lec3f0320hrmpppwqgs2gah4360krvyssntpwjcz303mx3h4avg7p29l3zd8u3jyglmewds9ezrqdc3cxp - value: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/value" - stake_address: - $ref: "#/components/schemas/address_info/items/properties/stake_address" - payment_cred: - anyOf: - - type: string - - type: "null" - description: Payment credential - example: de3c1c527e8826b9cd2030f88f75fc44cd4ce519b9ded9eb794b3794 - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - datum_hash: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_hash" - inline_datum: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/inline_datum" - reference_script: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/reference_script" - asset_list: - anyOf: - - type: array - - type: "null" - description: An array of assets on the UTxO - items: - properties: - policy_id: - $ref: "#/components/schemas/asset_info/items/properties/policy_id" - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - decimals: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" - quantity: - type: string - description: Quantity of assets on the UTxO - example: "1" - is_spent: - type: boolean - description: True if the UTxO has been spent - example: true - tx_outs_epoch: - description: List of transaction outputs with basic details for requested epoch - type: array - items: - type: object - properties: - tx_hash: - type: string - description: Hash identifier of the transaction - example: f144a8264acf4bdfe2e1241170969c930d64ab6b0996a4a45237b623f1dd670e - tx_index: - type: number - description: Index of UTxO in the transaction - example: 0 - address: - type: string - description: A Cardano payment/base address (bech32 encoded) - example: addr1qxkfe8s6m8qt5436lec3f0320hrmpppwqgs2gah4360krvyssntpwjcz303mx3h4avg7p29l3zd8u3jyglmewds9ezrqdc3cxp - stake_address: - $ref: "#/components/schemas/address_info/items/properties/stake_address" - payment_cred: - anyOf: - - type: string - - type: "null" - description: Payment credential - example: de3c1c527e8826b9cd2030f88f75fc44cd4ce519b9ded9eb794b3794 - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - value: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/value" - datum_hash: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_hash" - is_spent: - type: boolean - description: True if the UTxO has been spent - example: true - tx_treasury_donations_epoch: - description: List of treasury donation transactions for requested epoch (current if NULL) - type: array - items: - type: object - properties: - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - tx_block_index: - $ref: "#/components/schemas/tx_info/items/properties/tx_block_index" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - treasury_donation: - $ref: "#/components/schemas/tx_info/items/properties/treasury_donation" - - asset_list: - description: Array of policy IDs and asset names - type: array - items: - type: object - properties: - policy_id: - $ref: "#/components/schemas/asset_info/items/properties/policy_id" - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - asset_name_ascii: - $ref: "#/components/schemas/asset_info/items/properties/asset_name_ascii" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - asset_token_registry: - description: An array of token registry information (registered via github) for each asset - type: array - items: - type: object - properties: - policy_id: - $ref: "#/components/schemas/asset_info/items/properties/policy_id" - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - asset_name_ascii: - $ref: "#/components/schemas/asset_info/items/properties/asset_name_ascii" - ticker: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/ticker" - description: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/description" - url: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/url" - decimals: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" - logo: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/logo" - asset_addresses: - description: An array of payment addresses holding the given token (including balances) - type: array - items: - properties: - payment_address: - $ref: "#/components/schemas/utxo_infos/items/properties/address" - stake_address: - $ref: "#/components/schemas/address_info/items/properties/stake_address" - quantity: - type: string - description: Asset balance on the payment address - example: "23" - asset_nft_address: - description: An array of payment addresses holding the given token - type: array - items: - properties: - payment_address: - $ref: "#/components/schemas/utxo_infos/items/properties/address" - stake_address: - $ref: "#/components/schemas/address_info/items/properties/stake_address" - asset_summary: - description: Array of asset summary information - type: array - items: - properties: - policy_id: - $ref: "#/components/schemas/asset_info/items/properties/policy_id" - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - total_transactions: - type: number - description: Total number of transactions including the given asset - example: 89416 - staked_wallets: - type: number - description: Total number of registered wallets holding the given asset - example: 548 - unstaked_addresses: - type: number - description: Total number of payment addresses (not belonging to registered wallets) holding the given asset - example: 245 - addresses: - type: number - description: Total number of unique addresses holding the given asset - example: 812 - asset_info: - description: Array of detailed asset information - type: array - items: - properties: - policy_id: - type: string - description: Asset Policy ID (hex) - example: d3501d9531fcc25e3ca4b6429318c2cc374dbdbcf5e99c1c1e5da1ff - asset_name: - anyOf: - - type: string - - type: "null" - description: Asset Name (hex) - example: 444f4e545350414d - asset_name_ascii: - type: string - description: Asset Name (ASCII) - example: DONTSPAM - fingerprint: - type: string - description: The CIP14 fingerprint of the asset - example: asset1ua6pz3yd5mdka946z8jw2fld3f8d0mmxt75gv9 - minting_tx_hash: - type: string - description: Hash of the latest mint transaction (with metadata if found for asset) - example: cb07b7e51b77079776c4a78f2daf8f14f9945d2b047da7bfcb71d7fbb9f86712 - total_supply: - type: string - description: Total supply for the asset - example: "35000" - mint_cnt: - type: number - description: Count of total mint transactions - example: 1 - burn_cnt: - type: number - description: Count of total burn transactions - example: 5 - creation_time: - type: number - description: UNIX timestamp of the first asset mint - example: 1506635091 - minting_tx_metadata: - allOf: - - $ref: "#/components/schemas/tx_metadata/items/properties/metadata" - description: Latest minting transaction metadata (aligns with CIP-25) - token_registry_metadata: - anyOf: - - type: object - - type: "null" - description: Asset metadata registered on the Cardano Token Registry - properties: - name: - anyOf: - - type: string - - type: "null" - example: Rackmob - description: - anyOf: - - type: string - - type: "null" - example: Metaverse Blockchain Cryptocurrency. - ticker: - anyOf: - - type: string - - type: "null" - example: MOB - url: - anyOf: - - type: string - - type: "null" - example: https://www.rackmob.com/ - logo: - anyOf: - - type: string - - type: "null" - description: A PNG image file as a byte string - example: iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6CAYAAACI7Fo9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADnmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc - decimals: - type: number - example: 0 - cip68_metadata: - anyOf: - - type: object - - type: "null" - description: CIP 68 metadata if present for asset - example: - { - "222": - { - "fields": - [ - { - "map": - [ - { - "k": { "bytes": "6e616d65" }, - "v": { "bytes": "74657374" }, - }, - ], - }, - ], - "constructor": 0, - }, - } - asset_history: - description: Array of asset mint/burn history - type: array - items: - properties: - policy_id: - $ref: "#/components/schemas/asset_info/items/properties/policy_id" - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - minting_txs: - anyOf: - - type: array - - type: "null" - description: Array of all mint/burn transactions for an asset - items: - type: object - properties: - tx_hash: - type: string - description: Hash of minting/burning transaction - example: e1ecc517f95715bb87681cfde2c594dbc971739f84f8bfda16170b35d63d0ddf - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - quantity: - type: string - description: Quantity minted/burned (negative numbers indicate burn transactions) - example: "-10" - metadata: - type: array - description: Array of Transaction Metadata for given transaction - items: - $ref: "#/components/schemas/asset_info/items/properties/minting_tx_metadata" - - policy_asset_addresses: - description: Array of asset names and payment addresses for the given policy (including balances) - type: array - items: - properties: - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - payment_address: - $ref: "#/components/schemas/utxo_infos/items/properties/address" - stake_address: - $ref: "#/components/schemas/address_info/items/properties/stake_address" - quantity: - $ref: "#/components/schemas/asset_addresses/items/properties/quantity" - policy_asset_info: - description: Array of detailed information of assets under requested policies - type: array - items: - properties: - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - asset_name_ascii: - $ref: "#/components/schemas/asset_info/items/properties/asset_name_ascii" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - minting_tx_hash: - $ref: "#/components/schemas/asset_info/items/properties/minting_tx_hash" - total_supply: - $ref: "#/components/schemas/asset_info/items/properties/total_supply" - mint_cnt: - $ref: "#/components/schemas/asset_info/items/properties/mint_cnt" - burn_cnt: - $ref: "#/components/schemas/asset_info/items/properties/burn_cnt" - creation_time: - $ref: "#/components/schemas/asset_info/items/properties/creation_time" - minting_tx_metadata: - $ref: "#/components/schemas/asset_info/items/properties/minting_tx_metadata" - token_registry_metadata: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata" - policy_asset_mints: - description: Array of mint information for assets under requested policies - type: array - items: - properties: - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - asset_name_ascii: - $ref: "#/components/schemas/asset_info/items/properties/asset_name_ascii" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - minting_tx_hash: - $ref: "#/components/schemas/asset_info/items/properties/minting_tx_hash" - total_supply: - $ref: "#/components/schemas/asset_info/items/properties/total_supply" - mint_cnt: - $ref: "#/components/schemas/asset_info/items/properties/mint_cnt" - burn_cnt: - $ref: "#/components/schemas/asset_info/items/properties/burn_cnt" - creation_time: - $ref: "#/components/schemas/asset_info/items/properties/creation_time" - minting_tx_metadata: - $ref: "#/components/schemas/asset_info/items/properties/minting_tx_metadata" - decimals: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" - policy_asset_list: - description: Array of brief information of assets under the same policy - type: array - items: - properties: - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - total_supply: - $ref: "#/components/schemas/asset_info/items/properties/total_supply" - decimals: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" - - drep_info: - description: Get detailed information about requested delegated representatives (DReps) - type: array - items: - properties: - drep_id: - type: string - description: DRep ID in CIP-129 bech32 format - example: drep1yfhyq6tztjksqqpd5lglc3zr2tn8vylgjh9xzz7n2p4l4lgk3qam3 - hex: - type: string - description: DRep ID in hex format - example: 6e4069625cad00002da7d1fc444352e67613e895ca610bd3506bfafd - has_script: - type: boolean - description: Flag which shows if this credential is a script hash - example: false - drep_status: - type: string - enum: - - registered - - deregistered - - not_registered - description: DRep's current registration status - example: registered - deposit: - anyOf: - - type: string - - type: "null" - description: DRep's registration deposit in number - example: "500000000" - active: - type: boolean - description: Flag to show if the DRep is (i.e. not expired) - example: true - expires_epoch_no: - anyOf: - - type: number - - type: "null" - description: After which epoch DRep is considered inactive. - example: 410 - amount: - type: string - description: The total amount of voting power this DRep is delegated. - example: "599496769641" - meta_url: - anyOf: - - type: string - - type: "null" - description: A URL to a JSON payload of metadata - example: "https://hornan7.github.io/Vote_Context.jsonld" - meta_hash: - anyOf: - - type: string - - type: "null" - description: A hash of the contents of the metadata URL - example: dc208474e195442d07a5b6d42af19bb2db02229427dfb53ab23122e6b0e2487d - drep_epoch_summary: - description: Summary of voting power and DRep count for each epoch - type: array - items: - properties: - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - amount: - type: string - description: The total amount of voting power between all DReps including pre-defined roles for the epoch. - example: "599496769641" - dreps: - type: number - description: The total number of DReps with vote power for the epoch. - example: 324 - drep_list: - description: List of all active delegated representatives (DReps) - type: array - items: - properties: - drep_id: - $ref: "#/components/schemas/drep_info/items/properties/drep_id" - hex: - $ref: "#/components/schemas/drep_info/items/properties/hex" - has_script: - $ref: "#/components/schemas/drep_info/items/properties/has_script" - drep_status: - $ref: "#/components/schemas/drep_info/items/properties/drep_status" - drep_delegators: - description: List of all delegators by requested delegated representative (DRep) - type: array - items: - properties: - stake_address: - $ref: "#/components/schemas/account_list/items/properties/stake_address" - stake_address_hex: - $ref: "#/components/schemas/account_list/items/properties/stake_address_hex" - script_hash: - $ref: "#/components/schemas/account_list/items/properties/script_hash" - epoch_no: - description: Epoch when vote delegation was made - allOf: - - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - amount: - $ref: "#/components/schemas/account_info/items/properties/total_balance" - drep_metadata: - description: List metadata for requested delegated representatives (DReps) - type: array - items: - properties: - drep_id: - $ref: "#/components/schemas/drep_info/items/properties/drep_id" - hex: - $ref: "#/components/schemas/drep_info/items/properties/hex" - has_script: - $ref: "#/components/schemas/drep_info/items/properties/has_script" - meta_url: - $ref: "#/components/schemas/drep_info/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/drep_info/items/properties/meta_hash" - meta_json: - anyOf: - - type: object - - type: "null" - description: The payload as JSON - example: - { - "body": - { - "title": "...", - "...": "...", - "references": - [ - { - "uri": "...", - "@type": "Other", - "label": "Hardfork to PV10", - }, - ], - }, - "authors": - [ - { - "name": "...", - "witness": - { - "publicKey": "...", - "signature": "...", - "witnessAlgorithm": "ed25519", - }, - }, - ], - "@context": - { - "body": - { - "@id": "CIP108:body", - "@context": - { - "title": "CIP108:title", - "abstract": "CIP108:abstract", - "rationale": "CIP108:rationale", - "motivation": "CIP108:motivation", - "references": - { - "@id": "CIP108:references", - "@context": - { - "uri": "CIP100:reference-uri", - "Other": "CIP100:OtherReference", - "label": "CIP100:reference-label", - "referenceHash": - { - "@id": "CIP108:referenceHash", - "@context": - { - "hashDigest": "CIP108:hashDigest", - "hashAlgorithm": "CIP100:hashAlgorithm", - }, - }, - "GovernanceMetadata": "CIP100:GovernanceMetadataReference", - }, - "@container": "@set", - }, - }, - }, - "CIP100": "https://github.com/cardano-foundation/CIPs/blob/master/CIP-0100/README.md#", - "CIP108": "https://github.com/cardano-foundation/CIPs/blob/master/CIP-0108/README.md#", - "authors": - { - "@id": "CIP100:authors", - "@context": - { - "name": "http://xmlns.com/foaf/0.1/name", - "witness": - { - "@id": "CIP100:witness", - "@context": - { - "publicKey": "CIP100:publicKey", - "signature": "CIP100:signature", - "witnessAlgorithm": "CIP100:witnessAlgorithm", - }, - }, - }, - "@container": "@set", - }, - "@language": "en-us", - "hashAlgorithm": "CIP100:hashAlgorithm", - }, - "hashAlgorithm": "blake2b-256", - } - bytes: - anyOf: - - type: string - - type: "null" - description: The raw bytes of the payload - example: 7b0a20202240636f6e74657874223a207b0a2020202022406c616e6775616765223a2022656e2d7573222c0a2020202022434950313030223a202268747470733a2f2f6769746875622e636f6d2f63617264616e6f2d666f756e646174696f6e2f434950732f626c6f622f6d61737465722f4349502d303130302f524541444d452e6d6423222c0a2020202022434950313038223a202268747470733a2f2f6769746875622e636f6d2f63617264616e6f2d666f756e646174696f6e2f434950732f626c6f622f6d61737465722f4349502d303130382f524541444d452e6d6423222c0a202020202268617368416c676f726974686d223a20224349503130303a68617368416c676f726974686d222c0a2020202022626f6479223a207b0a20202020202022406964223a20224349503130383a626f6479222c0a2020202020202240636f6e74657874223a207b0a2020202020202020227265666572656e636573223a207b0a2020202020202020202022406964223a20224349503130383a7265666572656e636573222c0a202020202020202020202240636f6e7461696e6572223a202240736574222c0a202020202020202020202240636f6e74657874223a207b0a20202020202020202020202022476f7665726e616e63654d65746164617461223a20224349503130303a476f7665726e616e63654d657461646174615265666572656e6365222c0a202020202020202020202020224f74686572223a20224349503130303a4f746865725265666572656e6365222c0a202020202020202020202020226c6162656c223a20224349503130303a7265666572656e63652d6c6162656c222c0a20202020202020202020202022757269223a20224349503130303a7265666572656e63652d757269222c0a202020202020202020202020227265666572656e636548617368223a207b0a202020202020202020202020202022406964223a20224349503130383a7265666572656e636548617368222c0a20202020202020202020202020202240636f6e74657874223a207b0a202020202020202020202020202020202268617368446967657374223a20224349503130383a68617368446967657374222c0a202020202020202020202020202020202268617368416c676f726974686d223a20224349503130303a68617368416c676f726974686d220a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020207d0a20202020202020207d2c0a2020202020202020227469746c65223a20224349503130383a7469746c65222c0a2020202020202020226162737472616374223a20224349503130383a6162737472616374222c0a2020202020202020226d6f7469766174696f6e223a20224349503130383a6d6f7469766174696f6e222c0a202020202020202022726174696f6e616c65223a20224349503130383a726174696f6e616c65220a2020202020207d0a202020207d2c0a2020202022617574686f7273223a207b0a20202020202022406964223a20224349503130303a617574686f7273222c0a2020202020202240636f6e7461696e6572223a202240736574222c0a2020202020202240636f6e74657874223a207b0a2020202020202020226e616d65223a2022687474703a2f2f786d6c6e732e636f6d2f666f61662f302e312f6e616d65222c0a2020202020202020227769746e657373223a207b0a2020202020202020202022406964223a20224349503130303a7769746e657373222c0a202020202020202020202240636f6e74657874223a207b0a202020202020202020202020227769746e657373416c676f726974686d223a20224349503130303a7769746e657373416c676f726974686d222c0a202020202020202020202020227075626c69634b6579223a20224349503130303a7075626c69634b6579222c0a202020202020202020202020227369676e6174757265223a20224349503130303a7369676e6174757265220a202020202020202020207d0a20202020202020207d0a2020202020207d0a202020207d0a20207d2c0a20202268617368416c676f726974686d223a2022626c616b6532622d323536222c0a202022626f6479223a207b0a20202020227469746c65223a202248617264666f726b20746f2050726f746f636f6c2076657273696f6e203130222c0a20202020226162737472616374223a20224c6574277320686176652073616e63686f4e657420696e2066756c6c20676f7665726e616e636520617320736f6f6e20617320706f737369626c65222c0a20202020226d6f7469766174696f6e223a2022505639206973206e6f742061732066756e2061732050563130222c0a2020202022726174696f6e616c65223a20224c65742773206b6565702074657374696e67207374756666222c0a20202020227265666572656e636573223a205b0a2020202020207b0a2020202020202020224074797065223a20224f74686572222c0a2020202020202020226c6162656c223a202248617264666f726b20746f2050563130222c0a202020202020202022757269223a2022220a2020202020207d0a202020205d0a20207d2c0a202022617574686f7273223a205b0a202020207b0a202020202020226e616d65223a20224361726c6f73222c0a202020202020227769746e657373223a207b0a2020202020202020227769746e657373416c676f726974686d223a202265643235353139222c0a2020202020202020227075626c69634b6579223a202237656130396133346165626231336339383431633731333937623163616266656335646466393530343035323933646565343936636163326634333734383061222c0a2020202020202020227369676e6174757265223a20226134373639383562346363306434353766323437373937363131373939613666366138306663386362376563396463623561383232333838386430363138653330646531363566336438363963346130643931303764386135623631326164376335653432343431393037663562393137393666306437313837643634613031220a2020202020207d0a202020207d0a20205d0a7d - warning: - anyOf: - - type: string - - type: "null" - description: A warning that occured while validating the metadata - language: - anyOf: - - type: string - - type: "null" - description: The language described in the context of the metadata as per CIP-100 - example: en-us - comment: - anyOf: - - type: string - - type: "null" - description: Comment attached to the metadata - is_valid: - anyOf: - - type: boolean - - type: "null" - description: Indicate whether data is invalid - example: null - drep_updates: - description: List of updates for requested (or all) delegated representatives (DReps) - type: array - items: - properties: - drep_id: - $ref: "#/components/schemas/drep_info/items/properties/drep_id" - hex: - $ref: "#/components/schemas/drep_info/items/properties/hex" - has_script: - $ref: "#/components/schemas/drep_info/items/properties/has_script" - update_tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - cert_index: - type: number - description: The index of this certificate within the the transaction. - example: 1 - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - action: - type: string - description: Effective action for this DRep Update certificate - enum: ["updated", "registered", "deregistered"] - example: registered - deposit: - $ref: "#/components/schemas/drep_info/items/properties/deposit" - meta_url: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_hash" - meta_json: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_json" - drep_voting_power_history: - description: History of DReps voting power against each (or requested) epoch - type: array - items: - properties: - drep_id: - $ref: "#/components/schemas/drep_info/items/properties/drep_id" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - amount: - anyOf: - - type: string - - type: "null" - description: The voting power for the DRep - example: "14231445553" - drep_votes: - description: List of all votes casted by requested delegated representative (DRep) - type: array - items: - properties: - proposal_id: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_id" - proposal_tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - proposal_index: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_index" - vote_tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - vote: - type: string - enum: ["Yes", "No", "Abstain"] - description: Actual Vote casted - example: "Yes" - meta_url: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_hash" - pool_voting_power_history: - description: History of Pool's voting power against each (or requested) epoch - type: array - items: - properties: - pool_id_bech32: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - amount: - anyOf: - - type: string - - type: "null" - description: The voting power for the pool for the epoch - example: "11231445553" - pool_votes: - description: List of all votes casted by requested pool - type: array - items: - $ref: "#/components/schemas/drep_votes/items" - committee_votes: - description: List of all votes casted by requested delegated representative (DRep) - type: array - items: - $ref: "#/components/schemas/drep_votes/items" - proposal_list: - description: List of all governance action proposals - type: array - items: - properties: - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - proposal_id: - type: string - description: Proposal Action ID in accordance with CIP-129 format - example: "gov_action17m93skslaxyd45gpr6ernkdzs852h564wsterr8l6lheu7hu7kvsqecyqdh" - proposal_tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - proposal_index: - type: number - description: Index of governance proposal in transaction - example: 0 - proposal_type: - type: string - enum: - [ - "ParameterChange", - "HardForkInitiation", - "TreasuryWithdrawals", - "NoConfidence", - "NewCommittee", - "NewConstitution", - "InfoAction", - ] - description: Proposal Action Type - example: ParameterChange - proposal_description: - type: object - description: Description for Proposal Action - example: '{"tag": "InfoAction"}' - deposit: - $ref: "#/components/schemas/drep_info/items/properties/deposit" - return_address: - type: string - description: The StakeAddress index of the reward address to receive the deposit when it is repaid. - example: stake1uy6yzwsxxc28lfms0qmpxvyz9a7y770rtcqx9y96m42cttqwvp4m5 - proposed_epoch: - type: number - description: Shows the epoch at which this governance action was proposed. - example: 660 - ratified_epoch: - anyOf: - - type: number - - type: "null" - description: If not null, then this proposal has been ratified at the specified epoch. - example: 670 - enacted_epoch: - anyOf: - - type: number - - type: "null" - description: If not null, then this proposal has been enacted at the specified epoch. - example: 675 - dropped_epoch: - anyOf: - - type: number - - type: "null" - description: If not null, then this proposal has been dropped (expired/enacted) at the specified epoch. - example: 680 - expired_epoch: - anyOf: - - type: number - - type: "null" - description: If not null, then this proposal has been expired at the specified epoch. - example: 680 - expiration: - anyOf: - - type: number - - type: "null" - description: Shows the epoch at which this governance action is expected to expire. - meta_url: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_hash" - meta_json: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_json" - meta_comment: - $ref: "#/components/schemas/drep_metadata/items/properties/comment" - meta_language: - $ref: "#/components/schemas/drep_metadata/items/properties/language" - meta_is_valid: - $ref: "#/components/schemas/drep_metadata/items/properties/is_valid" - withdrawal: - type: array - description: The array of amounts withdrawn from treasury into specified stake addresses by this proposal - items: - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - amount: - type: string - example: "31235800000" - param_proposal: - description: If not null, the proposed new parameter set - anyOf: - - type: object - - type: "null" - example: { "key_deposit": 1000000 } - voter_proposal_list: - description: List of all governance action proposals where specified credential(DRep, SPO or Committee member) has cast a vote - type: array - items: - $ref: "#/components/schemas/proposal_list/items" - proposal_voting_summary: - description: Summary of votes for given proposal - type: array - items: - properties: - proposal_type: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_type" - epoch_no: - type: number - description: Epoch for which data was collated - example: 441 - drep_yes_votes_cast: - type: number - description: Number of 'yes' votes casted by dreps - example: 7 - drep_active_yes_vote_power: - type: string - description: Power of 'yes' votes that were explicitly cast - example: "31231231231" - drep_yes_vote_power: - type: string - description: Power of 'yes' votes from dreps (includes explicit yes and inferred via other means) - example: "31146839512742" - drep_yes_pct: - type: number - description: Percentage of 'yes' votes from dreps - example: 60.72 - drep_no_votes_cast: - type: number - description: Number of 'no' votes casted by dreps - example: 0 - drep_active_no_vote_power: - type: string - description: Power of 'no' votes that were explicitly cast - example: "2012312393392" - drep_no_vote_power: - type: string - description: Power of 'no' votes from dreps (includes explicit no and inferred via other means) - example: "20148194577715" - drep_no_pct: - type: number - description: Percentage of 'no' votes from dreps - example: 39.28 - drep_abstain_votes_cast: - type: number - description: Number of active 'abstain' votes from dreps - example: 5 - drep_active_abstain_vote_power: - type: string - description: Power of 'abstain' votes that were explicitly cast - example: "123321123321" - drep_always_no_confidence_vote_power: - type: string - description: Power of votes delegated to 'always_no_confidence' predefined drep - example: "9999" - drep_always_abstain_vote_power: - type: string - description: Power of votes delegated to 'always_abstain' predefined drep - example: "87654321" - pool_yes_votes_cast: - type: number - description: Number of 'yes' votes casted by pools - example: 1 - pool_active_yes_vote_power: - type: string - description: Power of 'yes' pool votes that were explicitly cast - example: "123123123" - pool_yes_vote_power: - type: string - description: Power of 'yes' votes from pools (includes explicit yes and inferred via other means) - example: "5234000000" - pool_yes_pct: - type: number - description: Percentage of 'yes' votes from pools - example: 13.12 - pool_no_votes_cast: - type: number - description: Number of 'no' votes casted by pools - example: 0 - pool_active_no_vote_power: - type: string - description: Power of 'no' pool votes that were explicitly cast - example: "0" - pool_no_vote_power: - type: string - description: Power of 'no' votes from pools (includes explicit no and inferred via other means) - example: "0" - pool_no_pct: - type: number - description: Percentage of 'no' votes from pools - example: 0 - pool_abstain_votes_cast: - type: number - description: Percentage of 'abstain' votes from pools - example: 0 - pool_active_abstain_vote_power: - type: string - description: Power of 'abstain' pool votes that were explicitly cast - example: "12312312312" - pool_passive_always_abstain_votes_assigned: - type: number - description: Number of non-voting SPO pool reward addresses delegating to 'always_abstain' drep - example: 1 - pool_passive_always_abstain_vote_power: - type: string - description: Combined power of non-voting SPO pool votes where reward addresses delegate to 'always_abstain' - example: "12312312" - pool_passive_always_no_confidence_votes_assigned: - type: number - description: Number of non-voting SPO pool reward addresses delegating to 'always_no_confidence' drep - example: 10 - pool_passive_always_no_confidence_vote_power: - type: string - description: Combined power of non-voting SPO pool votes where reward addresses delegate to 'always_no_confidence' - example: "321321" - committee_yes_votes_cast: - type: number - description: Number of 'yes' votes casted by committee - example: 5 - committee_yes_pct: - type: number - description: Percentage of 'yes' votes from committee - example: 71.43 - committee_no_votes_cast: - type: number - description: Number of 'no' votes casted by committee - example: 1 - committee_no_pct: - type: number - description: Percentage of 'no' votes from committee - example: 28.57 - committee_abstain_votes_cast: - type: number - description: Percentage of 'abstain' votes from committee - proposal_votes: - type: array - description: List of all votes cast on specified governance action - items: - properties: - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - voter_role: - type: string - description: The role of the voter - enum: ["ConstitutionalCommittee", "DRep", "SPO"] - example: DRep - voter_id: - type: string - description: Voter's DRep ID (CIP-129 bech32 format), pool ID (bech32 format) or committee hot ID (CIP-129 bech32 format) - example: drep1yfhyq6tztjksqqpd5lglc3zr2tn8vylgjh9xzz7n2p4l4lgk3qam3 - voter_hex: - type: string - description: Voter's DRep ID , pool ID or committee hash in hex format - example: 6e4069625cad00002da7d1fc444352e67613e895ca610bd3506bfafd - voter_has_script: - $ref: "#/components/schemas/drep_info/items/properties/has_script" - vote: - $ref: "#/components/schemas/drep_votes/items/properties/vote" - meta_url: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_hash" - vote_list: - type: array - description: List of all votes cast on specified governance action - items: - properties: - vote_tx_hash: - type: string - description: The transaction hash where-in vote was posted - example: e239058473ab5ab1f5829b9058a93cbd0daaf72f9252cc16b34925cd87b37d35 - voter_role: - $ref: "#/components/schemas/proposal_votes/items/properties/voter_role" - voter_id: - $ref: "#/components/schemas/proposal_votes/items/properties/voter_id" - proposal_id: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_id" - proposal_tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - proposal_index: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_index" - proposal_type: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_type" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - vote: - $ref: "#/components/schemas/drep_votes/items/properties/vote" - meta_url: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_hash" - meta_json: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_json" - committee_info: - description: Current governance committee - type: object - properties: - proposal_id: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_id" - proposal_tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - proposal_index: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_index" - quorum_numerator: - type: number - example: 67 - quorum_denominator: - type: number - example: 100 - members: - description: Array of all members part of active governance committee - type: array - items: - type: object - properties: - status: - type: string - description: Member authentication status - enum: ["authorized", "not_authorized", "resigned"] - example: authorized - cc_cold_hex: - type: string - description: Committee member cold key hash in hex format - example: 6095e643ea6f1cccb6e463ec34349026b3a48621aac5d512655ab1bf - cc_cold_has_script: - type: boolean - description: Flag which shows if this credential is a script hash - example: false - cc_hot_hex: - anyOf: - - type: string - - type: "null" - description: Committee member key hash from last valid hot key authorization certificate in hex format - example: 65d497b875c56ab213586a4006d4f6658970573ea8e2398893857472 - cc_hot_has_script: - anyOf: - - type: boolean - - type: "null" - description: Flag which shows if this credential is a script hash - example: false - expiration_epoch: - type: number - description: Epoch number in which the committee member vote rights expire - example: 324 - - script_info: - type: array - items: - description: Array of information for scripts - properties: - script_hash: - anyOf: - - type: string - - type: "null" - description: Hash of a script - example: bfa7ffa9b2e164873db6ac6d0528c82e212963bc62e10fd1d81da4af - creation_tx_hash: - type: string - description: Hash of the script creation transaction - example: 255f061502ad83230351fbcf2d9fade1b5d118d332f92c9861075010a1fe3fbe - type: - type: string - description: Type of the script - enum: ["plutusV1", "plutusV2", "timelock", "multisig"] - example: plutusV1 - value: - anyOf: - - type: object - - type: "null" - description: Data in JSON format - example: null - bytes: - anyOf: - - type: string - - type: "null" - description: Script bytes (cborSeq) - example: 5907f4010000332323232323232323233223232323232332232323232322223232533532533533355300712001323212330012233350052200200200100235001220011233001225335002101710010142325335333573466e3cd400488008d4020880080580544ccd5cd19b873500122001350082200101601510153500122002353500122002222222222200a101413357389201115554784f206e6f7420636f6e73756d6564000133333573466e1cd55cea8012400046644246600200600464646464646464646464646666ae68cdc39aab9d500a480008cccccccccc888888888848cccccccccc00402c02802402001c01801401000c008cd40508c8c8cccd5cd19b8735573aa0049000119910919800801801180f9aba150023019357426ae8940088c98d4cd5ce01581501481409aab9e5001137540026ae854028cd4050054d5d0a804999aa80bbae501635742a010666aa02eeb94058d5d0a80399a80a0109aba15006335014335502402275a6ae854014c8c8c8cccd5cd19b8735573aa00490001199109198008018011919191999ab9a3370e6aae754009200023322123300100300233502575a6ae854008c098d5d09aba2500223263533573805e05c05a05826aae7940044dd50009aba150023232323333573466e1cd55cea8012400046644246600200600466a04aeb4d5d0a80118131aba135744a004464c6a66ae700bc0b80b40b04d55cf280089baa001357426ae8940088c98d4cd5ce01581501481409aab9e5001137540026ae854010cd4051d71aba15003335014335502475c40026ae854008c070d5d09aba2500223263533573804e04c04a04826ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150023232323333573466e1d400520062321222230040053019357426aae79400c8cccd5cd19b875002480108c848888c008014c06cd5d09aab9e500423333573466e1d400d20022321222230010053015357426aae7940148cccd5cd19b875004480008c848888c00c014dd71aba135573ca00c464c6a66ae7008808408007c0780740704d55cea80089baa001357426ae8940088c98d4cd5ce00d80d00c80c080c89931a99ab9c4910350543500019018135573ca00226ea8004c8004d5405888448894cd40044d400c88004884ccd401488008c010008ccd54c01c4800401401000448c88c008dd6000990009aa80b111999aab9f00125009233500830043574200460066ae880080548c8c8c8cccd5cd19b8735573aa00690001199911091998008020018011919191999ab9a3370e6aae7540092000233221233001003002301735742a00466a01c02c6ae84d5d1280111931a99ab9c01b01a019018135573ca00226ea8004d5d0a801999aa803bae500635742a00466a014eb8d5d09aba2500223263533573802e02c02a02826ae8940044d55cf280089baa0011335500175ceb44488c88c008dd5800990009aa80a11191999aab9f0022500823350073355017300635573aa004600a6aae794008c010d5d100180a09aba100111220021221223300100400312232323333573466e1d4005200023212230020033005357426aae79400c8cccd5cd19b8750024800884880048c98d4cd5ce00980900880800789aab9d500113754002464646666ae68cdc39aab9d5002480008cc8848cc00400c008c014d5d0a8011bad357426ae8940088c98d4cd5ce00800780700689aab9e5001137540024646666ae68cdc39aab9d5001480008dd71aba135573ca004464c6a66ae7003803403002c4dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6a66ae7004404003c0380340304d55cea80089baa0012323333573466e1d40052002200523333573466e1d40092000200523263533573801a01801601401226aae74dd5000891001091000919191919191999ab9a3370ea002900610911111100191999ab9a3370ea004900510911111100211999ab9a3370ea00690041199109111111198008048041bae35742a00a6eb4d5d09aba2500523333573466e1d40112006233221222222233002009008375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846644244444446600c01201060186ae854024dd71aba135744a01246666ae68cdc3a8032400446424444444600e010601a6ae84d55cf280591999ab9a3370ea00e900011909111111180280418071aba135573ca018464c6a66ae7004c04804404003c03803403002c0284d55cea80209aab9e5003135573ca00426aae7940044dd50009191919191999ab9a3370ea002900111999110911998008028020019bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c8488c00800cc020d5d09aab9e500623263533573801801601401201026aae75400c4d5d1280089aab9e500113754002464646666ae68cdc3a800a400446424460020066eb8d5d09aab9e500323333573466e1d400920002321223002003375c6ae84d55cf280211931a99ab9c009008007006005135573aa00226ea800444888c8c8cccd5cd19b8735573aa0049000119aa80518031aba150023005357426ae8940088c98d4cd5ce00480400380309aab9e5001137540029309000a490350543100112212330010030021123230010012233003300200200133512233002489209366f09fe40eaaeb17d3cb6b0b61e087d664174c39a48a986f86b2b0ba6e2a7b00480008848cc00400c0088005 - size: - type: number - description: The size of the CBOR serialised script (in bytes) - example: 2039 - script_list: - description: List of script and creation tx hash pairs - type: array - items: - properties: - script_hash: - $ref: "#/components/schemas/script_info/items/properties/script_hash" - creation_tx_hash: - $ref: "#/components/schemas/script_info/items/properties/creation_tx_hash" - type: - $ref: "#/components/schemas/script_info/items/properties/type" - size: - $ref: "#/components/schemas/script_info/items/properties/size" - script_redeemers: - description: Array of all redeemers for a given script hash - type: array - items: - type: object - properties: - script_hash: - $ref: "#/components/schemas/script_info/items/properties/script_hash" - redeemers: - type: array - items: - type: object - properties: - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - tx_index: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" - unit_mem: - anyOf: - - type: string - - type: number - - type: "null" - description: The budget in Memory to run a script - example: 520448 - unit_steps: - anyOf: - - type: string - - type: number - - type: "null" - description: The budget in Cpu steps to run a script - example: 211535239 - fee: - type: string - description: The budget in fees to run a script - the fees depend on the ExUnits and the current prices - example: "45282" - purpose: - type: string - description: What kind of validation this redeemer is used for - enum: ["spend", "mint", "cert", "reward"] - example: spend - datum_hash: - anyOf: - - type: string - - type: "null" - description: The Hash of the Plutus Data - example: 5a595ce795815e81d22a1a522cf3987d546dc5bb016de61b002edd63a5413ec4 - datum_value: - $ref: "#/components/schemas/script_info/items/properties/value" - script_utxos: - description: List of all unspent utxos with a reference script matching given script hashes - type: array - items: - properties: - script_hash: - $ref: "#/components/schemas/script_info/items/properties/script_hash" - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - tx_index: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" - datum_info: - description: Array of datum information for given datum hashes - type: array - items: - type: object - properties: - datum_hash: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_hash" - creation_tx_hash: - $ref: "#/components/schemas/script_info/items/properties/creation_tx_hash" - value: - $ref: "#/components/schemas/script_info/items/properties/value" - bytes: - $ref: "#/components/schemas/script_info/items/properties/bytes" - - ogmiostip: - description: Current tip of the chain, identified by a slot and a block header hash. - type: object - properties: - jsonrpc: - type: string - description: Identifier for JSON-RPC 2.0 standard - example: "2.0" - method: - type: string - description: The Ogmios method that was called in the request - example: "queryNetwork/tip" - result: - anyOf: - - type: string - - type: number - - type: array - - type: object - - type: "null" - description: Result of the query - properties: - slot: - type: number - description: Absolute slot number on chain - example: 59886800 - id: - type: string - description: Block Hash (Blake2b 32-byte hash digest, encoded in base16) - example: "df5678c9774b7bc8c60a4c83b63c3676e618640ad05f7d1ee775b68939cf77d1" - example: - { - "slot": 59886800, - "id": "df5678c9774b7bc8c60a4c83b63c3676e618640ad05f7d1ee775b68939cf77d1", - } - headers: {} - responses: - NotFound: - description: The server does not recognise the combination of endpoint and parameters provided - Unauthorized: - description: Access token is missing or invalid - BadRequest: - description: The server cannot process the request due to invalid input -tags: - - name: Network - description: Query information about the network - x-tag-expanded: false - - name: Epoch - description: Query epoch-specific details - x-tag-expanded: false - - name: Block - description: Query information about particular block on chain - x-tag-expanded: false - - name: Transactions - description: Query blockchain transaction details - x-tag-expanded: false - - name: Stake Account - description: Query details about specific stake account addresses - x-tag-expanded: false - - name: Address - description: Query information about specific address(es) - x-tag-expanded: false - - name: Asset - description: Query Asset related informations - x-tag-expanded: false - - name: Governance - description: Query information about governance for network - x-tag-expanded: false - - name: Pool - description: Query information about specific pools - x-tag-expanded: false - - name: Script - description: Query information about specific scripts (Smart Contracts) - x-tag-expanded: false - - name: Ogmios - description: | - Various stateless queries against Ogmios v6 instance. Please note that ogmios follows JSON-RPC 2.0 method, the example spec on koios.rest is *ONLY* for `queryNetwork/tip`, - but all the methods listed below are all accepted. Instead of duplicating specs, we would refer you directly to Ogmios documentation [here](https://ogmios.dev/api) for complete specs. - -
    -
    - Note that for queries to be stateless across instances on the globe, we cannot acquire local state as successive calls will be across different instances. Additionally, `queryLedgerState/utxo` method is removed to avoid DDoS impacts. - Thus, we only expose the following methods from monitoring servers, instance providers can expose entire ogmios endpoints if desirable: -
    - - - ### Network - - [queryNetwork/blockHeight](https://ogmios.dev/api/#operation-publish-/?QueryNetworkBlockHeight) - - [queryNetwork/genesisConfiguration](https://ogmios.dev/api/#operation-publish-/?QueryNetworkGenesisConfiguration) - - [queryNetwork/startTime](https://ogmios.dev/api/#operation-publish-/?QueryNetworkStartTime) - - [queryNetwork/tip](https://ogmios.dev/api/#operation-publish-/?QueryNetworkTip) - ### Ledger-State - - [queryLedgerState/epoch](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateEpoch) - - [queryLedgerState/eraStart](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateEraStart) - - [queryLedgerState/eraSummaries](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateEraSummaries) - - [queryLedgerState/liveStakeDistribution](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateLiveStakeDistribution) - - [queryLedgerState/protocolParameters](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateProtocolParameters) - - [queryLedgerState/proposedProtocolParameters](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateProposedProtocolParameters) - - [queryLedgerState/stakePools](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateStakePools) - ### Transactions - - [submitTransaction](https://ogmios.dev/mini-protocols/local-tx-submission/#submitting-transactions) - - [evaluateTransaction](https://ogmios.dev/mini-protocols/local-tx-submission/#evaluating-transactions) - x-tag-expanded: true -security: - - {} - - bearerAuth: [] diff --git a/specs/results/koiosapi-mainnet.yaml b/specs/results/koiosapi-mainnet.yaml index c3a59a58..7089c2cf 100644 --- a/specs/results/koiosapi-mainnet.yaml +++ b/specs/results/koiosapi-mainnet.yaml @@ -152,8 +152,6 @@ servers: description: Preview Network - url: https://preprod.koios.rest/api/v1 description: Preprod Network - - url: https://sancho.koios.rest/api/v1 - description: Sanchonet Network paths: /tip: #RPC get: diff --git a/specs/results/koiosapi-preprod.yaml b/specs/results/koiosapi-preprod.yaml index a9cc9a30..55f0386b 100644 --- a/specs/results/koiosapi-preprod.yaml +++ b/specs/results/koiosapi-preprod.yaml @@ -152,8 +152,6 @@ servers: description: Preview Network - url: https://preprod.koios.rest/api/v1 description: Preprod Network - - url: https://sancho.koios.rest/api/v1 - description: Sanchonet Network paths: /tip: #RPC get: diff --git a/specs/results/koiosapi-preview.yaml b/specs/results/koiosapi-preview.yaml index 8b945202..b3e2e38d 100644 --- a/specs/results/koiosapi-preview.yaml +++ b/specs/results/koiosapi-preview.yaml @@ -152,8 +152,6 @@ servers: description: Preview Network - url: https://preprod.koios.rest/api/v1 description: Preprod Network - - url: https://sancho.koios.rest/api/v1 - description: Sanchonet Network paths: /tip: #RPC get: diff --git a/specs/template.yaml b/specs/template.yaml new file mode 100644 index 00000000..56839904 --- /dev/null +++ b/specs/template.yaml @@ -0,0 +1,93 @@ +openapi: 3.1.0 +#!info!# +servers: + - url: https://api.koios.rest/api/v1 + description: Mainnet + - url: https://preview.koios.rest/api/v1 + description: Preview Network + - url: https://preprod.koios.rest/api/v1 + description: Preprod Network +paths: +#!paths!# + +components: + #!parameters!# + #!requestBodies!# + securitySchemes: + bearerAuth: + type: http + scheme: bearer + bearerFormat: JWT + description: JWT Bearer Auth token generated via https://koios.rest Profile page. Using this token value allows consumers to use higher limits than public unauthenticated requests. + #!schemas!# + headers: {} + responses: + NotFound: + description: The server does not recognise the combination of endpoint and parameters provided + Unauthorized: + description: Access token is missing or invalid + BadRequest: + description: The server cannot process the request due to invalid input +tags: + - name: Network + description: Query information about the network + x-tag-expanded: false + - name: Epoch + description: Query epoch-specific details + x-tag-expanded: false + - name: Block + description: Query information about particular block on chain + x-tag-expanded: false + - name: Transactions + description: Query blockchain transaction details + x-tag-expanded: false + - name: Stake Account + description: Query details about specific stake account addresses + x-tag-expanded: false + - name: Address + description: Query information about specific address(es) + x-tag-expanded: false + - name: Asset + description: Query Asset related informations + x-tag-expanded: false + - name: Governance + description: Query information about governance for network + x-tag-expanded: false + - name: Pool + description: Query information about specific pools + x-tag-expanded: false + - name: Script + description: Query information about specific scripts (Smart Contracts) + x-tag-expanded: false + - name: Ogmios + description: | + Various stateless queries against Ogmios v6 instance. Please note that ogmios follows JSON-RPC 2.0 method, the example spec on koios.rest is *ONLY* for `queryNetwork/tip`, + but all the methods listed below are all accepted. Instead of duplicating specs, we would refer you directly to Ogmios documentation [here](https://ogmios.dev/api) for complete specs. + +
    +
    + Note that for queries to be stateless across instances on the globe, we cannot acquire local state as successive calls will be across different instances. Additionally, `queryLedgerState/utxo` method is removed to avoid DDoS impacts. + Thus, we only expose the following methods from monitoring servers, instance providers can expose entire ogmios endpoints if desirable: +
    + + + ### Network + - [queryNetwork/blockHeight](https://ogmios.dev/api/#operation-publish-/?QueryNetworkBlockHeight) + - [queryNetwork/genesisConfiguration](https://ogmios.dev/api/#operation-publish-/?QueryNetworkGenesisConfiguration) + - [queryNetwork/startTime](https://ogmios.dev/api/#operation-publish-/?QueryNetworkStartTime) + - [queryNetwork/tip](https://ogmios.dev/api/#operation-publish-/?QueryNetworkTip) + ### Ledger-State + - [queryLedgerState/epoch](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateEpoch) + - [queryLedgerState/eraStart](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateEraStart) + - [queryLedgerState/eraSummaries](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateEraSummaries) + - [queryLedgerState/liveStakeDistribution](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateLiveStakeDistribution) + - [queryLedgerState/protocolParameters](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateProtocolParameters) + - [queryLedgerState/proposedProtocolParameters](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateProposedProtocolParameters) + - [queryLedgerState/stakePools](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateStakePools) + ### Transactions + - [submitTransaction](https://ogmios.dev/mini-protocols/local-tx-submission/#submitting-transactions) + - [evaluateTransaction](https://ogmios.dev/mini-protocols/local-tx-submission/#evaluating-transactions) + x-tag-expanded: true +security: + - {} + - bearerAuth: [] diff --git a/specs/templates/4-api-schemas.yaml b/specs/templates/4-api-schemas.yaml deleted file mode 100644 index d5a23972..00000000 --- a/specs/templates/4-api-schemas.yaml +++ /dev/null @@ -1,3607 +0,0 @@ -schemas: - tip: - description: Current tip of the chain - type: array - items: - properties: - hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - era: - $ref: "#/components/schemas/era_summaries/items/properties/era" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - abs_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - epoch_slot: - $ref: "#/components/schemas/blocks/items/properties/epoch_slot" - block_no: - deprecated: true - type: number - description: DEPRECATED!! Use Block height instead - example: 1794506 - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - era_summaries: - description: Information about each era on the network alongwith it's start epoch - type: array - items: - properties: - era: - type: string - example: Conway - description: Cardano Era - protocol_major: - $ref: "#/components/schemas/epoch_params/items/properties/protocol_major" - protocol_minor: - $ref: "#/components/schemas/epoch_params/items/properties/protocol_minor" - ledger_protocol: - type: string - example: Praos - description: Protocol name that denotes collection of features sitting between consensus and ledger layer - consensus_mechanism: - type: string - example: Ouroboros Genesis/Praos - description: Consensus name that denotes collection of consensus features introduced at a hard fork - notes: - type: string - example: Plomin HF - description: Additional information about when this protocol update was pushed (if there is a fork name associated) - epoch_no: - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - first_block_time: - $ref: "#/components/schemas/epoch_info/items/properties/first_block_time" - first_block_hash: - $ref: "#/components/schemas/epoch_params/items/properties/block_hash" - genesis: - description: Array of genesis parameters used to start each era on chain - type: array - items: - properties: - networkmagic: - type: string - example: 764824073 - description: Unique network identifier for chain - networkid: - type: string - example: Mainnet - description: Network ID used at various CLI identification to distinguish between Mainnet and other networks - epochlength: - type: string - example: 432000 - description: Number of slots in an epoch - slotlength: - type: string - example: 1 - description: Duration of a single slot (in seconds) - maxlovelacesupply: - type: string - example: 45000000000000000 - description: Maximum smallest units (lovelaces) supply for the blockchain - systemstart: - type: number - description: UNIX timestamp of the first block (genesis) on chain - example: 1506203091 - activeslotcoeff: - type: string - example: 0.05 - description: "Active Slot Co-Efficient (f) - determines the _probability_ of number of slots in epoch that are expected to have blocks (so mainnet, this would be: 432000 * 0.05 = 21600 estimated blocks)" - slotsperkesperiod: - type: string - example: 129600 - description: Number of slots that represent a single KES period (a unit used for validation of KES key evolutions) - maxkesrevolutions: - type: string - example: 62 - description: Number of KES key evolutions that will automatically occur before a KES (hot) key is expired. This parameter is for security of a pool, in case an operator had access to his hot(online) machine compromised - securityparam: - type: string - example: 2160 - description: A unit (k) used to divide epochs to determine stability window (used in security checks like ensuring atleast 1 block was created in 3*k/f period, or to finalize next epoch's nonce at 4*k/f slots before end of epoch) - updatequorum: - type: string - example: 5 - description: Number of BFT members that need to approve (via vote) a Protocol Update Proposal - alonzogenesis: - type: string - example: '{\"lovelacePerUTxOWord\":34482,\"executionPrices\":{\"prSteps\":{\"numerator\":721,\"denominator\":10000000},...' - description: A JSON dump of Alonzo Genesis - totals: - description: Array of supply/reserves/utxo/fees/treasury stats - type: array - items: - properties: - epoch_no: - type: number - description: Epoch number - example: 294 - circulation: - type: string - description: Circulating UTxOs for given epoch (in numbers) - example: 32081169442642320 - treasury: - type: string - description: Funds in treasury for given epoch (in numbers) - example: 637024173474141 - reward: - type: string - description: Rewards accumulated as of given epoch (in numbers) - example: 506871250479840 - supply: - type: string - description: Total Active Supply (sum of treasury funds, rewards, UTxOs, deposits and fees) for given epoch (in numbers) - example: 33228495612391330 - reserves: - type: string - description: Total Reserves yet to be unlocked on chain - example: 11771504387608670 - fees: - type: string - description: The amount (in Lovelace) in the fee pot. - example: 92010214941 - deposits_stake: - type: string - description: The amount (in Lovelace) in the obligation pot coming from stake key and pool deposits. - example: 3338702000000 - deposits_drep: - type: string - description: The amount (in Lovelace) in the obligation pot coming from drep registrations deposits. - example: 0 - deposits_proposal: - type: string - description: The amount (in Lovelace) in the obligation pot coming from governance proposal deposits. - example: 0 - treasury_donation: - type: string - description: The amount (in Lovelace) donated to the treasury. - example: 0 - treasury_withdrawal: - type: string - description: The amount (in Lovelace) withdrawn from the treasury. - example: 0 - reserves_withdrawal: - type: string - description: The amount (in Lovelace) withdrawn from reserves. - example: 0 - param_updates: - description: Array of unique param update proposals submitted on chain - type: array - items: - properties: - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/tx_hash" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - epoch_no: - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - data: - type: string - description: JSON encoded data with details about the parameter update - example: { "decentralisation": 0.9 } - cli_protocol_params: - description: Get Current Protocol Parameters from node as published by cardano-cli in JSON format - type: object - example: - { - "collateralPercentage": 150, - "maxBlockBodySize": 90112, - "maxBlockHeaderSize": 1100, - "maxCollateralInputs": 3, - "maxTxSize": 16384, - "maxValueSize": 5000, - "minPoolCost": 170000000, - "minUTxOValue": null, - "monetaryExpansion": 3.0e-3, - "poolPledgeInfluence": 0.3, - "poolRetireMaxEpoch": 18, - "protocolVersion": { "major": 8, "minor": 0 }, - "...": "...", - "stakeAddressDeposit": 2000000, - "stakePoolDeposit": 500000000, - "stakePoolTargetNum": 500, - "treasuryCut": 0.2, - "txFeeFixed": 155381, - "txFeePerByte": 44, - "utxoCostPerByte": 4310, - } - reserve_withdrawals: - description: Array of withdrawals from reserves/treasury against stake accounts - type: array - items: - properties: - epoch_no: - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - epoch_slot: - $ref: "#/components/schemas/blocks/items/properties/epoch_slot" - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/tx_hash" - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - amount: - $ref: "#/components/schemas/pool_delegators/items/properties/amount" - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - earned_epoch: - description: Epoch where amount is earned - allOf: - - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - spendable_epoch: - description: Epoch where the earned amount can be spent - allOf: - - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - - pool_list: - description: Array of pool IDs and tickers - type: array - items: - properties: - pool_id_bech32: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" - pool_id_hex: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_hex" - active_epoch_no: - $ref: "#/components/schemas/pool_info/items/properties/active_epoch_no" - margin: - $ref: "#/components/schemas/pool_info/items/properties/margin" - fixed_cost: - $ref: "#/components/schemas/pool_info/items/properties/fixed_cost" - pledge: - $ref: "#/components/schemas/pool_info/items/properties/pledge" - deposit: - $ref: "#/components/schemas/pool_info/items/properties/deposit" - reward_addr: - $ref: "#/components/schemas/pool_info/items/properties/reward_addr" - owners: - $ref: "#/components/schemas/pool_info/items/properties/owners" - relays: - $ref: "#/components/schemas/pool_info/items/properties/relays" - ticker: - anyOf: - - type: string - - type: "null" - description: Pool ticker - example: AHL - pool_group: - $ref: "#/components/schemas/pool_groups/items/properties/pool_group" - meta_url: - $ref: "#/components/schemas/pool_info/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/pool_info/items/properties/meta_hash" - pool_status: - $ref: "#/components/schemas/pool_info/items/properties/pool_status" - active_stake: - $ref: "#/components/schemas/pool_info/items/properties/active_stake" - retiring_epoch: - $ref: "#/components/schemas/pool_info/items/properties/retiring_epoch" - pool_history_info: - description: Array of pool history information - type: array - items: - type: object - properties: - epoch_no: - type: number - description: Epoch for which the pool history data is shown - example: 312 - active_stake: - $ref: "#/components/schemas/pool_info/items/properties/active_stake" - active_stake_pct: - anyOf: - - type: number - - type: "null" - description: Active stake for the pool, expressed as a percentage of total active stake on network - example: 13.512182543475783 - saturation_pct: - type: number - description: Saturation percentage of a pool at the time of snapshot (2 decimals) - example: 45.32 - block_cnt: - anyOf: - - type: number - - type: "null" - description: Number of blocks pool created in that epoch - example: 14 - delegator_cnt: - type: number - description: Number of delegators to the pool for that epoch snapshot - example: 1432 - margin: - type: number - description: Margin (decimal format) - example: 0.125 - fixed_cost: - type: string - description: Pool fixed cost per epoch (in numbers) - example: "340000000" - pool_fees: - type: string - description: Total amount of fees earned by pool owners in that epoch (in numbers) - example: "123327382" - deleg_rewards: - type: string - description: Total amount of rewards earned by delegators in that epoch (in numbers) - example: "123456789123" - member_rewards: - anyOf: - - type: string - - type: "null" - description: Total amount of rewards earned by members (delegator - owner) in that epoch (in numbers) - example: "123456780123" - epoch_ros: - type: number - description: Annualized ROS (return on staking) for delegators for this epoch - example: 3.000340466 - pool_owner_history: - description: Array of pool owner's stake history - type: array - items: - type: object - properties: - pool_id_bech32: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" - stake_address: - type: string - description: Individual Stake account registered as (one of the) pool owner(s) - example: stake1uy6yzwsxxc28lfms0qmpxvyz9a7y770rtcqx9y96m42cttqwvp4m5 - declared_pledge: - $ref: "#/components/schemas/pool_info/items/properties/pledge" - epoch: - $ref: "#/components/schemas/pool_history_info/items/properties/epoch_no" - active_stake: - $ref: "#/components/schemas/pool_info/items/properties/active_stake" - pool_info: - description: Array of pool information - type: array - items: - type: object - properties: - pool_id_bech32: - type: string - description: Pool ID (bech32 format) - example: pool155efqn9xpcf73pphkk88cmlkdwx4ulkg606tne970qswczg3asc - pool_id_hex: - type: string - description: Pool ID (Hex format) - example: a532904ca60e13e88437b58e7c6ff66b8d5e7ec8d3f4b9e4be7820ec - active_epoch_no: - $ref: "#/components/schemas/pool_updates/items/properties/active_epoch_no" - vrf_key_hash: - anyOf: - - type: string - - type: "null" - description: Pool VRF key hash - example: 25efdad1bc12944d38e4e3c26c43565bec84973a812737b163b289e87d0d5ed3 - margin: - anyOf: - - type: number - - type: "null" - description: Margin (decimal format) - example: 0.1 - fixed_cost: - anyOf: - - type: string - - type: "null" - description: Pool fixed cost per epoch - example: "500000000" - pledge: - anyOf: - - type: string - - type: "null" - description: Pool pledge in number - example: "64000000000000" - deposit: - anyOf: - - type: string - - type: "null" - description: Pool's registration deposit in number - example: "500000000" - reward_addr: - anyOf: - - type: string - - type: "null" - description: Pool reward address - example: stake1uy6yzwsxxc28lfms0qmpxvyz9a7y770rtcqx9y96m42cttqwvp4m5 - reward_addr_delegated_drep: - anyOf: - - type: string - - type: "null" - description: Reward address' current delegation status to DRep ID in CIP-129 Bech32 format - example: drep1yfhyq6tztjksqqpd5lglc3zr2tn8vylgjh9xzz7n2p4l4lgk3qam3 - owners: - anyOf: - - type: array - - type: "null" - items: - type: string - description: Pool (co)owner address - example: stake1u8088wvudd7dp3rxl0v9xgng8r3j50s65ge3l3jvgd94keqfm3nv3 - relays: - type: array - items: - type: object - properties: - dns: - anyOf: - - type: string - - type: "null" - description: DNS name of the relay (nullable) - example: relays-new.cardano-mainnet.iohk.io - srv: - anyOf: - - type: string - - type: "null" - description: DNS service name of the relay (nullable) - example: biostakingpool3.hopto.org - ipv4: - anyOf: - - type: string - - type: "null" - description: IPv4 address of the relay (nullable) - example: "54.220.20.40" - ipv6: - anyOf: - - type: string - - type: "null" - description: IPv6 address of the relay (nullable) - example: 2604:ed40:1000:1711:6082:78ff:fe0c:ebf - port: - anyOf: - - type: number - - type: "null" - description: Port number of the relay (nullable) - example: 6000 - meta_url: - anyOf: - - type: string - - type: "null" - description: Pool metadata URL - example: https://pools.iohk.io/IOGP.json - meta_hash: - anyOf: - - type: string - - type: "null" - description: Pool metadata hash - example: 37eb004c0dd8a221ac3598ca1c6d6257fb5207ae9857b7c163ae0f39259d6cc0 - meta_json: - anyOf: - - type: object - - type: "null" - properties: - name: - type: string - description: Pool name - example: Input Output Global (IOHK) - Private - ticker: - type: string - description: Pool ticker - example: IOGP - homepage: - type: string - description: Pool homepage URL - example: https://iohk.io - description: - type: string - description: Pool description - example: Our mission is to provide economic identity to the billions of people who lack it. IOHK will not use the IOHK ticker. - pool_status: - type: string - description: Pool status - enum: ["registered", "retiring", "retired"] - example: registered - retiring_epoch: - anyOf: - - type: number - - type: "null" - description: Announced retiring epoch (nullable) - example: null - op_cert: - anyOf: - - type: string - - type: "null" - description: Pool latest operational certificate hash - example: 37eb004c0dd8a221ac3598ca1c6d6257fb5207ae9857b7c163ae0f39259d6cc0 - op_cert_counter: - anyOf: - - type: number - - type: "null" - description: Pool latest operational certificate counter value - example: 8 - active_stake: - anyOf: - - type: string - - type: "null" - description: Amount of delegated stake to this pool at the time of epoch snapshot - example: "64328627680963" - sigma: - anyOf: - - type: number - - type: "null" - description: Pool relative active stake share - example: 0.0034839235 - block_count: - anyOf: - - type: number - - type: "null" - description: Total pool blocks on chain - example: 4509 - live_pledge: - anyOf: - - type: string - - type: "null" - description: Summary of account balance for all pool owner's - example: "64328594406327" - live_stake: - anyOf: - - type: string - - type: "null" - description: Pool live stake - example: "64328627680963" - live_delegators: - type: number - description: Pool live delegator count - example: 5 - live_saturation: - anyOf: - - type: number - - type: "null" - description: Pool live saturation (decimal format) - example: 94.52 - voting_power: - anyOf: - - type: string - - type: "null" - description: Current voting power (lovelaces) of this stake pool - example: "123456789" - pool_snapshot: - type: array - items: - description: Array of pool stake information for 3 snapshots - type: object - properties: - snapshot: - type: string - description: Type of snapshot ("Mark", "Set" or "Go") - example: "Mark" - epoch_no: - type: number - description: Epoch number for the snapshot entry - example: 324 - nonce: - $ref: "#/components/schemas/epoch_params/items/properties/nonce" - pool_stake: - type: string - description: Pool's Active Stake for the given epoch - example: "100000000000" - active_stake: - type: string - description: Total Active Stake for the given epoch - example: "103703246364020" - pool_delegators: - description: Array of live pool delegators - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - amount: - type: string - description: Current delegator live stake (in number) - example: "64328591517480" - active_epoch_no: - type: number - description: Epoch number in which the delegation becomes active - example: 324 - latest_delegation_tx_hash: - type: string - description: Latest transaction hash used for delegation by the account - example: 368d08fe86804d637649341d3aec4a9baa7dffa6d00f16de2ba9dba814f1c948 - pool_registrations: - description: Array of pool registrations/retirements - type: array - items: - type: object - properties: - pool_id_bech32: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/tx_hash" - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - epoch_no: - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - epoch_slot: - $ref: "#/components/schemas/blocks/items/properties/epoch_slot" - active_epoch_no: - $ref: "#/components/schemas/pool_updates/items/properties/active_epoch_no" - pool_delegators_history: - description: Array of pool delegators (historical) - anyOf: - - type: array - - type: "null" - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - amount: - $ref: "#/components/schemas/pool_delegators/items/properties/amount" - epoch_no: - type: number - description: Epoch number for the delegation history - example: 324 - pool_invalid_delegators: - description: Array of pool delegators that are invalid for the specified epoch - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - epoch_no: - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - pool_blocks: - description: Array of blocks created by pool - type: array - items: - type: object - properties: - epoch_no: - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - epoch_slot: - $ref: "#/components/schemas/blocks/items/properties/epoch_slot" - abs_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - pool_updates: - description: Array of historical pool updates - type: array - items: - type: object - properties: - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/tx_hash" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - pool_id_bech32: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" - pool_id_hex: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_hex" - active_epoch_no: - anyOf: - - type: number - - type: "null" - description: Epoch number in which the update becomes active - example: 324 - vrf_key_hash: - $ref: "#/components/schemas/pool_info/items/properties/vrf_key_hash" - margin: - $ref: "#/components/schemas/pool_info/items/properties/margin" - fixed_cost: - $ref: "#/components/schemas/pool_info/items/properties/fixed_cost" - pledge: - $ref: "#/components/schemas/pool_info/items/properties/pledge" - reward_addr: - $ref: "#/components/schemas/pool_info/items/properties/reward_addr" - owners: - $ref: "#/components/schemas/pool_info/items/properties/owners" - relays: - $ref: "#/components/schemas/pool_info/items/properties/relays" - meta_url: - $ref: "#/components/schemas/pool_info/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/pool_info/items/properties/meta_hash" - meta_json: - $ref: "#/components/schemas/pool_info/items/properties/meta_json" - update_type: - type: string - description: Type of update task - enum: ["registration", "deregistration"] - example: registration - retiring_epoch: - $ref: "#/components/schemas/pool_info/items/properties/retiring_epoch" - pool_relays: - description: Array of pool relay information - type: array - items: - type: object - properties: - pool_id_bech32: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" - relays: - $ref: "#/components/schemas/pool_info/items/properties/relays" - pool_metadata: - description: Array of pool metadata - type: array - items: - type: object - properties: - pool_id_bech32: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" - meta_url: - $ref: "#/components/schemas/pool_info/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/pool_info/items/properties/meta_hash" - meta_json: - $ref: "#/components/schemas/pool_info/items/properties/meta_json" - pool_calidus_keys: - description: Array of valid calidus keys for all pools - type: array - items: - properties: - pool_id_bech32: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" - pool_status: - $ref: "#/components/schemas/pool_info/items/properties/pool_status" - calidus_nonce: - type: number - description: Unique nonce for pool's calidus key registration as per CIP-88 - example: 150720822 - calidus_pub_key: - type: string - description: Calidus public key as per CIP-88 - example: "dea2d81424a285f7fd2846beb39320543ba1df27b890789b2c152b64a352e2df" - calidus_id_bech32: - type: string - description: Calidus key in bech32 format as per CIP-88 - example: "calidus158w8ft8k4endw5q6m0rx2myl2ldvw5f5d8xmwyem6529fcgn575zh" - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/tx_hash" - epoch_no: - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - registered: - type: boolean - description: Flag to show if the pool has active calidus key as registered - example: true - bytes: - type: string - description: Raw Transaction metadata in hex - example: 19029a324512 - pool_groups: - description: Array of pools with their corresponding group information - type: array - items: - properties: - pool_id_bech32: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" - pool_group: - anyOf: - - type: string - - type: "null" - description: A group that the pool was identified to be associated with - example: IOG - ticker: - $ref: "#/components/schemas/pool_info/items/properties/meta_json/properties/ticker" - adastat_group: - anyOf: - - type: string - - type: "null" - description: The pool's group identification as per adastat.net - example: iohk.io - balanceanalytics_group: - anyOf: - - type: string - - type: "null" - description: The pool's group identification as per balanceanalytics.io - example: IOG - - epoch_info: - description: Array of detailed summary for each epoch - type: array - items: - type: object - properties: - epoch_no: - type: number - description: Epoch number - example: 294 - era: - $ref: "#/components/schemas/era_summaries/items/properties/era" - out_sum: - type: string - description: Total output value across all transactions in epoch - example: "15432725054364942" - fees: - type: string - description: Total fees incurred by transactions in epoch - example: "74325855210" - tx_count: - type: number - description: Number of transactions submitted in epoch - example: 357919 - blk_count: - type: number - description: Number of blocks created in epoch - example: 17321 - start_time: - type: number - description: UNIX timestamp of the epoch start - example: 1506203091 - end_time: - type: number - description: UNIX timestamp of the epoch end - example: 1506635091 - first_block_time: - type: number - description: UNIX timestamp of the epoch's first block - example: 1506635091 - last_block_time: - type: number - description: UNIX timestamp of the epoch's last block - example: 1506635091 - active_stake: - anyOf: - - type: string - - type: "null" - description: Total active stake in epoch stake snapshot (null for pre-Shelley epochs) - example: "23395112387185880" - total_rewards: - anyOf: - - type: string - - type: "null" - description: Total rewards earned in epoch (null for pre-Shelley epochs) - example: "252902897534230" - avg_blk_reward: - anyOf: - - type: string - - type: "null" - description: Average block reward for epoch (null for pre-Shelley epochs) - example: "660233450" - epoch_params: - description: Epoch parameters (all fields nullable for pre-Shelley/Gougen epochs except first block hash) - type: array - items: - properties: - epoch_no: - type: number - description: Epoch number - example: 294 - era: - $ref: "#/components/schemas/era_summaries/items/properties/era" - min_fee_a: - anyOf: - - type: number - - type: "null" - description: The 'a' parameter to calculate the minimum transaction fee - example: 44 - min_fee_b: - anyOf: - - type: number - - type: "null" - description: The 'b' parameter to calculate the minimum transaction fee - example: 155381 - max_block_size: - anyOf: - - type: number - - type: "null" - description: The maximum block size (in bytes) - example: 65536 - max_tx_size: - anyOf: - - type: number - - type: "null" - description: The maximum transaction size (in bytes) - example: 16384 - max_bh_size: - anyOf: - - type: number - - type: "null" - description: The maximum block header size (in bytes) - example: 1100 - key_deposit: - anyOf: - - type: string - - type: "null" - description: The amount (in number) required for a deposit to register a stake address - example: "2000000" - pool_deposit: - anyOf: - - type: string - - type: "null" - description: The amount (in number) required for a deposit to register a stake pool - example: "500000000" - max_epoch: - anyOf: - - type: number - - type: "null" - description: The maximum number of epochs in the future that a pool retirement is allowed to be scheduled for - example: 18 - optimal_pool_count: - anyOf: - - type: number - - type: "null" - description: The optimal number of stake pools - example: 500 - influence: - anyOf: - - type: number - - type: "null" - format: double - description: The pledge influence on pool rewards - example: 0.3 - monetary_expand_rate: - anyOf: - - type: number - - type: "null" - format: double - description: The monetary expansion rate - example: 0.003 - treasury_growth_rate: - anyOf: - - type: number - - type: "null" - format: double - description: The treasury growth rate - example: 0.2 - decentralisation: - anyOf: - - type: number - - type: "null" - format: double - description: The decentralisation parameter (1 fully centralised, 0 fully decentralised) - example: 0.1 - extra_entropy: - anyOf: - - type: string - - type: "null" - description: The hash of 32-byte string of extra random-ness added into the protocol's entropy pool - example: d982e06fd33e7440b43cefad529b7ecafbaa255e38178ad4189a37e4ce9bf1fa - protocol_major: - anyOf: - - type: number - - type: "null" - description: The protocol major version - example: 10 - protocol_minor: - anyOf: - - type: number - - type: "null" - description: The protocol minor version - example: 0 - min_utxo_value: - anyOf: - - type: string - - type: "null" - description: The minimum value of a UTxO entry - example: "34482" - min_pool_cost: - anyOf: - - type: string - - type: "null" - description: The minimum pool cost - example: "340000000" - nonce: - anyOf: - - type: string - - type: "null" - description: The nonce value for this epoch - example: 01304ddf5613166be96fce27be110747f2c8fcb38776618ee79225ccb59b81e2 - block_hash: - type: string - description: The hash of the first block where these parameters are valid - example: f9dc2a2fc3a2db09a71af007a740261de585afc9e3022b8e30535592ff4dd9e5 - cost_models: - anyOf: - - type: object - - type: "null" - description: The per language cost model in JSON - example: null - price_mem: - anyOf: - - type: number - - type: "null" - format: double - description: The per word cost of script memory usage - example: 0.0577 - price_step: - anyOf: - - type: number - - type: "null" - format: double - description: The cost of script execution step usage - example: 7.21e-05 - max_tx_ex_mem: - anyOf: - - type: number - - type: "null" - description: The maximum number of execution memory allowed to be used in a single transaction - example: 10000000 - max_tx_ex_steps: - anyOf: - - type: number - - type: "null" - description: The maximum number of execution steps allowed to be used in a single transaction - example: 10000000000 - max_block_ex_mem: - anyOf: - - type: number - - type: "null" - description: The maximum number of execution memory allowed to be used in a single block - example: 50000000 - max_block_ex_steps: - anyOf: - - type: number - - type: "null" - description: The maximum number of execution steps allowed to be used in a single block - example: 40000000000 - max_val_size: - anyOf: - - type: number - - type: "null" - description: The maximum Val size - example: 5000 - collateral_percent: - anyOf: - - type: number - - type: "null" - description: The percentage of the tx fee which must be provided as collateral when including non-native scripts - example: 150 - max_collateral_inputs: - anyOf: - - type: number - - type: "null" - description: The maximum number of collateral inputs allowed in a transaction - example: 3 - coins_per_utxo_size: - anyOf: - - type: string - - type: "null" - description: The cost per UTxO size - example: "34482" - pvt_motion_no_confidence: - anyOf: - - type: number - - type: "null" - description: Pool Voting threshold for motion of no-confidence. - example: 0.6 - pvt_committee_normal: - anyOf: - - type: number - - type: "null" - description: Pool Voting threshold for new committee/threshold (normal state). - example: 0.65 - pvt_committee_no_confidence: - anyOf: - - type: number - - type: "null" - description: Pool Voting threshold for new committee/threshold (state of no-confidence). - example: 0.65 - pvt_hard_fork_initiation: - anyOf: - - type: number - - type: "null" - description: Pool Voting threshold for hard-fork initiation. - example: 0.51 - dvt_motion_no_confidence: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for motion of no-confidence. - example: 0.67 - dvt_committee_normal: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for new committee/threshold (normal state). - example: 0.67 - dvt_committee_no_confidence: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for new committee/threshold (state of no-confidence). - example: 0.65 - dvt_update_to_constitution: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for update to the Constitution. - example: 0.75 - dvt_hard_fork_initiation: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for hard-fork initiation. - example: 0.6 - dvt_p_p_network_group: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for protocol parameter changes, network group. - example: 0.67 - dvt_p_p_economic_group: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for protocol parameter changes, economic group. - example: 0.67 - dvt_p_p_technical_group: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for protocol parameter changes, technical group. - example: 0.67 - dvt_p_p_gov_group: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for protocol parameter changes, governance group. - example: 0.75 - dvt_treasury_withdrawal: - anyOf: - - type: number - - type: "null" - description: DRep Vote threshold for treasury withdrawal. - example: 0.67 - committee_min_size: - anyOf: - - type: number - - type: "null" - description: Minimal constitutional committee size. - example: 5 - committee_max_term_length: - anyOf: - - type: number - - type: "null" - description: Constitutional committee term limits. - example: 146 - gov_action_lifetime: - anyOf: - - type: number - - type: "null" - description: Governance action expiration. - example: 14 - gov_action_deposit: - anyOf: - - type: string - - type: "null" - description: Governance action deposit. - example: 100000000000 - drep_deposit: - anyOf: - - type: string - - type: "null" - description: DRep deposit amount. - example: 500000000 - drep_activity: - anyOf: - - type: number - - type: "null" - description: DRep activity period. - example: 20 - pvtpp_security_group: - anyOf: - - type: number - - type: "null" - description: Pool Voting threshold for protocol parameter changes, security group. - example: 0.6 - min_fee_ref_script_cost_per_byte: - anyOf: - - type: number - - type: "null" - description: Minimum Fee for Reference Script cost pre byte - example: 15 - epoch_block_protocols: - description: Array of distinct block protocol versions counts in epoch - type: array - items: - properties: - proto_major: - type: number - description: Protocol major version - example: 6 - proto_minor: - type: number - description: Protocol major version - example: 2 - era: - $ref: "#/components/schemas/era_summaries/items/properties/era" - blocks: - type: number - description: Amount of blocks with specified major and protocol combination - example: 2183 - - blocks: - description: Array of block information - type: array - items: - type: object - properties: - hash: - type: string - description: Hash of the block - example: 2fa5178c5be950c7f40d6c74efe9b3dd12c4836dc3f3dd052cd1c2a12edd477f - epoch_no: - type: number - description: Epoch number of the block - example: 117 - abs_slot: - type: number - description: Absolute slot number of the block - example: 49073930 - epoch_slot: - type: number - description: Slot number of the block in epoch - example: 171530 - block_height: - type: number - description: Block height - example: 1794506 - block_size: - type: number - description: Block size in bytes - example: 2433 - block_time: - type: number - description: UNIX timestamp of the block - example: 1704757130 - tx_count: - type: number - description: Number of transactions in the block - example: 2 - vrf_key: - type: string - description: VRF key of the block producer - example: "vrf_vk1400ju08429se790upcvurdyqrhl8rhm7spm2jxg0lfnedqeaexfq7jsf2x" - pool: - anyOf: - - type: string - - type: "null" - description: Pool ID in bech32 format (null for pre-Shelley blocks) - example: pool13m26ky08vz205232k20u8ft5nrg8u68klhn0xfsk9m4gsqsc44v - op_cert_counter: - type: number - description: Counter value of the operational certificate used to create this block - example: 5 - proto_major: - $ref: "#/components/schemas/epoch_params/items/properties/protocol_major" - proto_minor: - $ref: "#/components/schemas/epoch_params/items/properties/protocol_minor" - parent_hash: - type: string - description: Previous Hash of the current block - example: 7eb8d62f9d6a5e7cf2d9635f0b531d2693fef55a717894e3a97baf6183b8d189 - block_info: - description: Array of detailed block information - type: array - items: - type: object - properties: - hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - era: - $ref: "#/components/schemas/era_summaries/items/properties/era" - abs_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - epoch_slot: - $ref: "#/components/schemas/blocks/items/properties/epoch_slot" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_size: - $ref: "#/components/schemas/blocks/items/properties/block_size" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - tx_count: - $ref: "#/components/schemas/blocks/items/properties/tx_count" - vrf_key: - $ref: "#/components/schemas/blocks/items/properties/vrf_key" - op_cert: - type: string - description: Hash of the block producers' operational certificate - example: "16bfc28a7127d11805fe02df67f8c3909ab7e2e2cd81b6954d90eeff1938614c" - op_cert_counter: - $ref: "#/components/schemas/blocks/items/properties/op_cert_counter" - pool: - $ref: "#/components/schemas/blocks/items/properties/pool" - proto_major: - $ref: "#/components/schemas/epoch_params/items/properties/protocol_major" - proto_minor: - $ref: "#/components/schemas/epoch_params/items/properties/protocol_minor" - total_output: - anyOf: - - type: string - - type: "null" - description: Total output of the block (in number) - example: "92384672389" - total_fees: - anyOf: - - type: string - - type: "null" - description: Total fees of the block (in number) - example: "2346834" - num_confirmations: - type: number - description: Number of confirmations for the block - example: 664275 - parent_hash: - type: string - description: Hash of the parent of this block - example: "16bfc28a7127d11805fe02df67f8c3909ab7e2e2cd81b6954d90eeff1938614c" - child_hash: - type: string - description: Hash of the child of this block (if present) - example: "a3b525ba0747ce9daa928fa28fbc680f95e6927943a1fbd6fa5394d96c9dc2fa" - block_txs: - description: Array of transactions hashes - type: array - items: - type: object - properties: - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/tx_hash" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - block_tx_cbor: - description: Array of raw transaction(s) in CBOR format - type: array - items: - type: object - properties: - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - absolute_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - tx_timestamp: - $ref: "#/components/schemas/tx_info/items/properties/tx_timestamp" - cbor: - $ref: "#/components/schemas/tx_cbor/items/properties/cbor" - block_tx_info: - description: Array of detailed information about transaction(s) - type: array - items: - type: object - properties: - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - epoch_slot: - $ref: "#/components/schemas/blocks/items/properties/epoch_slot" - absolute_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - tx_timestamp: - $ref: "#/components/schemas/tx_info/items/properties/tx_timestamp" - tx_block_index: - $ref: "#/components/schemas/tx_info/items/properties/tx_block_index" - tx_size: - $ref: "#/components/schemas/tx_info/items/properties/tx_size" - total_output: - $ref: "#/components/schemas/tx_info/items/properties/total_output" - fee: - $ref: "#/components/schemas/tx_info/items/properties/fee" - treasury_donation: - $ref: "#/components/schemas/tx_info/items/properties/treasury_donation" - deposit: - $ref: "#/components/schemas/tx_info/items/properties/deposit" - invalid_before: - $ref: "#/components/schemas/tx_info/items/properties/invalid_before" - invalid_after: - $ref: "#/components/schemas/tx_info/items/properties/invalid_after" - collateral_inputs: - $ref: "#/components/schemas/tx_info/items/properties/collateral_inputs" - collateral_output: - $ref: "#/components/schemas/tx_info/items/properties/collateral_output" - reference_inputs: - $ref: "#/components/schemas/tx_info/items/properties/reference_inputs" - inputs: - description: An array of UTxO inputs spent in the transaction - anyOf: - - $ref: "#/components/schemas/tx_info/items/properties/outputs" - - type: "null" - outputs: - $ref: "#/components/schemas/tx_info/items/properties/outputs" - withdrawals: - $ref: "#/components/schemas/tx_info/items/properties/withdrawals" - assets_minted: - $ref: "#/components/schemas/tx_info/items/properties/assets_minted" - metadata: - $ref: "#/components/schemas/tx_metadata/items/properties/metadata" - certificates: - $ref: "#/components/schemas/tx_info/items/properties/certificates" - native_scripts: - $ref: "#/components/schemas/tx_info/items/properties/native_scripts" - plutus_contracts: - $ref: "#/components/schemas/tx_info/items/properties/plutus_contracts" - - address_list: - description: Array of information for address(es) - type: array - items: - type: object - properties: - address: - $ref: "#/components/schemas/utxo_infos/items/properties/address" - address_hex: - type: string - description: Cardano address in hex format - example: 60f879af535c02e37bf77fb3b5f51d017229fe47995c37b9aca9e0091c - has_script: - $ref: "#/components/schemas/drep_info/items/properties/has_script" - payment_cred: - $ref: "#/components/schemas/utxo_infos/items/properties/payment_cred" - stake_address: - anyOf: - - $ref: "#/components/schemas/account_history/items/properties/stake_address" - - type: "null" - stake_address_hex: - anyOf: - - $ref: "#/components/schemas/account_list/items/properties/stake_address_hex" - - type: "null" - address_info: - description: Array of information for address(es) - type: array - items: - type: object - properties: - address: - $ref: "#/components/schemas/utxo_infos/items/properties/address" - balance: - type: string - description: Sum of all UTxO values beloning to address - example: "10723473983" - stake_address: - anyOf: - - $ref: "#/components/schemas/account_history/items/properties/stake_address" - - type: "null" - script_address: - type: boolean - description: Signifies whether the address is a script address - example: true - utxo_set: - type: array - items: - type: object - properties: - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - tx_index: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - value: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/value" - datum_hash: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_hash" - inline_datum: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/inline_datum" - reference_script: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/reference_script" - asset_list: - $ref: "#/components/schemas/utxo_infos/items/properties/asset_list" - address_txs: - description: Array of transaction hashes - type: array - items: - type: object - properties: - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/tx_hash" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - address_outputs: - description: Array of basic transaction output information - type: array - items: - type: object - properties: - address: - $ref: "#/components/schemas/utxo_infos/items/properties/address" - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - tx_index: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" - value: - $ref: "#/components/schemas/utxo_infos/items/properties/value" - stake_address: - $ref: "#/components/schemas/utxo_infos/items/properties/stake_address" - payment_cred: - $ref: "#/components/schemas/utxo_infos/items/properties/payment_cred" - epoch_no: - $ref: "#/components/schemas/utxo_infos/items/properties/epoch_no" - block_height: - $ref: "#/components/schemas/utxo_infos/items/properties/block_height" - block_time: - $ref: "#/components/schemas/utxo_infos/items/properties/block_time" - is_spent: - $ref: "#/components/schemas/utxo_infos/items/properties/is_spent" - address_assets: - description: Array of address-owned assets - type: array - items: - type: object - properties: - address: - $ref: "#/components/schemas/utxo_infos/items/properties/address" - policy_id: - $ref: "#/components/schemas/asset_info/items/properties/policy_id" - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - decimals: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" - quantity: - $ref: "#/components/schemas/asset_addresses/items/properties/quantity" - - account_list: - description: Array of account (stake address) IDs - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - stake_address_hex: - type: string - description: Cardano staking address (reward account) in hex format - example: e1c865f10d66a2e375242b5ef9f05abc8840d413421982f62c35ce4fbf - script_hash: - anyOf: - - type: string - - type: "null" - description: Script hash in case the stake address is locked by a script - example: bf357f5de69e4aad71954bebd64357a4813ea5233df12fce4a9de582 - account_info: - description: Array of stake account information - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - status: - type: string - description: Stake address status - enum: ["registered", "not registered"] - example: registered - delegated_drep: - anyOf: - - type: string - - type: "null" - description: Account's current delegation status to DRep ID in CIP-129 Bech32 format - example: drep1yfhyq6tztjksqqpd5lglc3zr2tn8vylgjh9xzz7n2p4l4lgk3qam3 - delegated_pool: - anyOf: - - $ref: "#/components/schemas/pool_list/items/properties/pool_id_bech32" - - type: "null" - total_balance: - type: string - description: Total balance of the account including UTxO, rewards and MIRs (in number) - example: "207116800428" - utxo: - type: string - description: Total UTxO balance of the account - example: "162764177131" - rewards: - type: string - description: Total rewards earned by the account - example: "56457728047" - withdrawals: - type: string - description: Total rewards withdrawn by the account - example: "12105104750" - rewards_available: - type: string - description: Total rewards available for withdrawal - example: "44352623297" - deposit: - type: string - description: Total deposit available for withdrawal - example: "2000000" - reserves: - type: string - description: Total reserves MIR value of the account - example: "0" - treasury: - type: string - description: Total treasury MIR value of the account - example: "0" - proposal-refund: - type: string - description: Total proposal refund for this account - example: "0" - account_rewards: - description: Array of reward history information - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - rewards: - type: array - items: - type: object - properties: - earned_epoch: - $ref: "#/components/schemas/reserve_withdrawals/items/properties/earned_epoch" - spendable_epoch: - $ref: "#/components/schemas/reserve_withdrawals/items/properties/spendable_epoch" - amount: - type: string - description: Amount of rewards earned (in number) - type: - type: string - description: The source of the rewards - enum: [member, leader, treasury, reserves, refund] - example: member - pool_id: - anyOf: - - $ref: "#/components/schemas/pool_list/items/properties/pool_id_bech32" - - type: "null" - account_reward_history: - description: Array of reward history information - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - earned_epoch: - $ref: "#/components/schemas/reserve_withdrawals/items/properties/earned_epoch" - spendable_epoch: - $ref: "#/components/schemas/reserve_withdrawals/items/properties/spendable_epoch" - amount: - type: string - description: Amount of rewards earned (in number) - type: - type: string - description: The source of the rewards - enum: [member, leader, treasury, reserves, refund] - example: member - pool_id_bech32: - anyOf: - - $ref: "#/components/schemas/pool_list/items/properties/pool_id_bech32" - - type: "null" - account_updates: - description: Array of account updates information - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - updates: - type: array - items: - type: object - properties: - action_type: - type: string - description: Type of certificate submitted - enum: - [ - "registration", - "delegation_pool", - "delegation_drep", - "withdrawal", - "deregistration", - ] - example: "registration" - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - epoch_slot: - $ref: "#/components/schemas/blocks/items/properties/epoch_slot" - absolute_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - account_update_history: - description: Array of account update history information - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - action_type: - type: string - description: Type of certificate submitted - enum: - [ - "registration", - "delegation_pool", - "delegation_drep", - "withdrawal", - "deregistration", - ] - example: "registration" - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - epoch_slot: - $ref: "#/components/schemas/blocks/items/properties/epoch_slot" - absolute_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - account_addresses: - description: Array of payment addresses - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - addresses: - type: array - items: - $ref: "#/components/schemas/utxo_infos/items/properties/address" - account_assets: - description: Array of assets owned by account - type: array - items: - type: object - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - policy_id: - $ref: "#/components/schemas/asset_info/items/properties/policy_id" - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - decimals: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" - quantity: - $ref: "#/components/schemas/asset_addresses/items/properties/quantity" - account_history: - description: Array of active stake values per epoch - type: array - items: - properties: - stake_address: - type: string - description: Cardano staking address (reward account) in bech32 format - example: stake1u8yxtugdv63wxafy9d00nuz6hjyyp4qnggvc9a3vxh8yl0ckml2uz - history: - type: array - items: - type: object - properties: - pool_id: - type: string - description: Bech32 representation of pool ID - example: pool1z5uqdk7dzdxaae5633fqfcu2eqzy3a3rgtuvy087fdld7yws0xt - epoch_no: - type: number - description: Epoch number - example: 301 - active_stake: - type: string - description: Active stake amount (in numbers) - example: 682334162 - account_stake_history: - description: Array of active stake values per epoch - type: array - items: - properties: - stake_address: - type: string - description: Cardano staking address (reward account) in bech32 format - example: stake1u8yxtugdv63wxafy9d00nuz6hjyyp4qnggvc9a3vxh8yl0ckml2uz - pool_id_bech32: - type: string - description: Bech32 representation of pool ID - example: pool1z5uqdk7dzdxaae5633fqfcu2eqzy3a3rgtuvy087fdld7yws0xt - epoch_no: - type: number - description: Epoch number - example: 301 - active_stake: - type: string - description: Active stake amount (in numbers) - example: 682334162 - - tx_info: - description: Array of detailed information about transaction(s) - type: array - items: - type: object - properties: - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - epoch_slot: - $ref: "#/components/schemas/blocks/items/properties/epoch_slot" - absolute_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - tx_timestamp: - type: number - description: UNIX timestamp of the transaction - example: 1506635091 - tx_block_index: - type: number - description: Index of transaction within block - example: 6 - tx_size: - type: number - description: Size in bytes of transaction - example: 391 - total_output: - type: string - description: Total sum of all transaction outputs (in numbers) - example: "157832856" - fee: - type: string - description: Total Transaction fee (in numbers) - example: "172761" - treasury_donation: - type: string - description: Total Donation to on-chain treasury (in numbers) - example: "0" - deposit: - type: string - description: Total Deposits included in transaction (for example, if it is registering a pool/key) - example: "0" - invalid_before: - anyOf: - - type: string - - type: "null" - description: Slot before which transaction cannot be validated (if supplied, else null) - example: "42331172" - invalid_after: - anyOf: - - type: string - - type: "null" - description: Slot after which transaction cannot be validated - example: "42332172" - collateral_inputs: - description: An array of collateral inputs needed for smart contracts in case of contract failure - anyOf: - - $ref: "#/components/schemas/tx_info/items/properties/outputs" - - type: "null" - collateral_output: - description: A collateral output for change if the smart contract fails to execute and collateral inputs are spent. (CIP-40) - anyOf: - - type: array - - type: "null" - items: - properties: - payment_addr: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/payment_addr" - stake_addr: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/stake_addr" - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/tx_hash" - tx_index: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/tx_index" - value: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/value" - datum_hash: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/datum_hash" - inline_datum: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/inline_datum" - reference_script: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/reference_script" - asset_list: - type: array - description: Brief asset description from ledger - reference_inputs: - description: An array of reference inputs. A reference input allows looking at an output without spending it. (CIP-31) - anyOf: - - $ref: "#/components/schemas/tx_info/items/properties/outputs" - - type: "null" - inputs: - $ref: "#/components/schemas/tx_info/items/properties/outputs" - #description: An array of UTxO inputs spent in the transaction - outputs: - type: array - description: An array of UTxO outputs created by the transaction - items: - type: object - properties: - payment_addr: - type: object - properties: - bech32: - $ref: "#/components/schemas/utxo_infos/items/properties/address" - cred: - type: string - description: Payment credential - example: de3c1c527e8826b9cd2030f88f75fc44cd4ce519b9ded9eb794b3794 - stake_addr: - $ref: "#/components/schemas/address_info/items/properties/stake_address" - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - tx_index: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" - value: - type: string - description: Total sum of ADA on the UTxO - example: "157832856" - datum_hash: - anyOf: - - type: string - - type: "null" - description: Hash of datum (if any) connected to UTxO - example: 30c16dd243324cf9d90ffcf211b9e0f2117a7dc28d17e85927dfe2af3328e5c9 - inline_datum: - anyOf: - - type: object - - type: "null" - description: Allows datums to be attached to UTxO (CIP-32) - properties: - bytes: - type: string - description: Datum bytes (hex) - example: 19029a - value: - type: object - description: Value (json) - example: { "int": 666 } - reference_script: - anyOf: - - type: object - - type: "null" - description: Allow reference scripts to be used to satisfy script requirements during validation, rather than requiring the spending transaction to do so. (CIP-33) - properties: - hash: - type: string - description: Hash of referenced script - example: 67f33146617a5e61936081db3b2117cbf59bd2123748f58ac9678656 - size: - type: number - description: Size in bytes - example: 14 - type: - type: string - description: Type of script - example: plutusV1 - bytes: - type: string - description: Script bytes (hex) - example: 4e4d01000033222220051200120011 - value: - anyOf: - - type: object - - type: "null" - description: Value (json) - example: null - asset_list: - $ref: "#/components/schemas/utxo_infos/items/properties/asset_list" - withdrawals: - anyOf: - - type: array - - type: "null" - description: Array of withdrawals with-in a transaction - items: - type: object - properties: - amount: - type: string - description: Withdrawal amount (in numbers) - example: "9845162" - stake_addr: - type: string - description: A Cardano staking address (reward account, bech32 encoded) - example: stake1uxggf4shfvpghcangm67ky0q4zlc3xn7gezy0auhxczu3pslm9wrj - assets_minted: - anyOf: - - type: array - - type: "null" - description: Array of minted assets with-in a transaction - items: - properties: - policy_id: - $ref: "#/components/schemas/asset_info/items/properties/policy_id" - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - decimals: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" - quantity: - type: string - description: Quantity of minted assets (negative on burn) - example: "1" - metadata: - $ref: "#/components/schemas/tx_metadata/items/properties/metadata" - certificates: - anyOf: - - type: array - - type: "null" - description: Certificates present with-in a transaction (if any) - items: - properties: - index: - anyOf: - - type: number - - type: "null" - description: Certificate index - example: 0 - type: - type: string - description: Type of certificate (could be delegation, stake_registration, stake_deregistraion, pool_update, pool_retire, param_proposal, reserve_MIR, treasury_MIR) - example: delegation - info: - anyOf: - - type: object - - type: "null" - description: A JSON array containing information from the certificate - example: - { - "stake_address": "stake1uxggf4shfvpghcangm67ky0q4zlc3xn7gezy0auhxczu3pslm9wrj", - "pool": "pool1k53pf4wzn263c08e3wr3gttndfecm9f4uzekgctcx947vt7fh2p", - } - native_scripts: - anyOf: - - type: array - - type: "null" - description: Native scripts present in a transaction (if any) - items: - properties: - script_hash: - $ref: "#/components/schemas/script_info/items/properties/script_hash" - script_json: - type: object - description: JSON representation of the timelock script (null for other script types) - example: - { - "type": "all", - "scripts": - [ - { - "type": "sig", - "keyHash": "a96da581c39549aeda81f539ac3940ac0cb53657e774ca7e68f15ed9", - }, - { - "type": "sig", - "keyHash": "ccfcb3fed004562be1354c837a4a4b9f4b1c2b6705229efeedd12d4d", - }, - { - "type": "sig", - "keyHash": "74fcd61aecebe36aa6b6cd4314027282fa4b41c3ce8af17d9b77d0d1", - }, - ], - } - plutus_contracts: - anyOf: - - type: array - - type: "null" - description: Plutus contracts present in transaction (if any) - items: - properties: - address: - anyOf: - - type: string - - type: "null" - description: Plutus script address - example: addr1w999n67e86jn6xal07pzxtrmqynspgx0fwmcmpua4wc6yzsxpljz3 - spends_input: - anyOf: - - type: object - - type: "null" - properties: - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - tx_index: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" - description: Input utxo this contract spends - script_hash: - $ref: "#/components/schemas/script_info/items/properties/script_hash" - bytecode: - $ref: "#/components/schemas/script_info/items/properties/bytes" - size: - $ref: "#/components/schemas/script_info/items/properties/size" - valid_contract: - type: boolean - description: True if the contract is valid or there is no contract - example: true - input: - type: object - properties: - redeemer: - type: object - properties: - purpose: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/purpose" - fee: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/fee" - unit: - type: object - properties: - steps: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/unit_steps" - mem: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/unit_mem" - datum: - type: object - properties: - hash: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_hash" - value: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_value" - datum: - type: object - properties: - hash: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_hash" - value: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_value" - voting_procedures: - anyOf: - - type: array - - type: "null" - description: Governance votes in a transaction (if any) - items: - properties: - proposal_tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - proposal_index: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_index" - voter_role: - $ref: "#/components/schemas/proposal_votes/items/properties/voter_role" - voter: - $ref: "#/components/schemas/proposal_votes/items/properties/voter_id" - voter_hex: - $ref: "#/components/schemas/proposal_votes/items/properties/voter_hex" - vote: - $ref: "#/components/schemas/drep_votes/items/properties/vote" - proposal_procedures: - anyOf: - - type: array - - type: "null" - description: Governance proposals in a transaction (if any) - items: - properties: - index: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_index" - type: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_type" - description: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_description" - deposit: - $ref: "#/components/schemas/drep_info/items/properties/deposit" - return_address: - $ref: "#/components/schemas/proposal_list/items/properties/return_address" - expiration: - $ref: "#/components/schemas/proposal_list/items/properties/expiration" - meta_url: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_hash" - withdrawal: - $ref: "#/components/schemas/proposal_list/items/properties/withdrawal" - param_proposal: - $ref: "#/components/schemas/proposal_list/items/properties/param_proposal" - tx_cbor: - description: Raw Transaction(s) in CBOR format - items: - properties: - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/tx_hash" - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - absolute_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - tx_timestamp: - $ref: "#/components/schemas/tx_info/items/properties/tx_timestamp" - cbor: - type: string - description: CBOR encoded raw transaction. - tx_utxos: - description: Array of inputs and outputs for given transaction(s) - type: array - items: - properties: - tx_hash: - $ref: "#/components/schemas/tx_info/items/properties/tx_hash" - inputs: - type: array - description: An array of UTxO inputs used by the transaction - items: - type: object - properties: - payment_addr: - type: object - properties: - bech32: - type: string - description: A Cardano payment/base address (bech32 encoded) where funds were sent or change to be returned - example: addr1q80rc8zj06yzdwwdyqc03rm4l3zv6n89rxuaak0t099n09yssntpwjcz303mx3h4avg7p29l3zd8u3jyglmewds9ezrqad9mkw - cred: - type: string - description: Payment credential - example: de3c1c527e8826b9cd2030f88f75fc44cd4ce519b9ded9eb794b3794 - stake_addr: - $ref: "#/components/schemas/address_info/items/properties/stake_address" - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - tx_index: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" - value: - type: string - description: Total sum of ADA on the UTxO - example: 157832856 - outputs: - description: An array of UTxO outputs created by the transaction - allOf: - - $ref: "#/components/schemas/tx_utxos/items/properties/inputs" - tx_metadata: - description: Array of metadata information present in each of the transactions queried - anyOf: - - type: array - - type: "null" - items: - properties: - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - metadata: - anyOf: - - type: object - - type: "null" - description: A JSON array containing details about metadata within transaction - example: - { - "721": - { - "version": 1, - "copyright": "...", - "publisher": ["p...o"], - "4bf184e01e0f163296ab253edd60774e2d34367d0e7b6cbc689b567d": - {}, - }, - } - tx_status: - description: Array of transaction confirmation counts - type: array - items: - properties: - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - num_confirmations: - anyOf: - - type: number - - type: "null" - description: Number of block confirmations - example: 17 - tx_metalabels: - description: Array of known metadata labels - type: array - items: - properties: - key: - type: string - description: A distinct known metalabel - example: "721" - tx_by_metalabel: - description: Array of transactions containing the queried metadata label - type: array - items: - type: object - properties: - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - absolute_slot: - $ref: "#/components/schemas/blocks/items/properties/abs_slot" - tx_timestamp: - $ref: "#/components/schemas/blocks/items/properties/block_time" - utxo_infos: - description: Array of complete UTxO information - type: array - items: - type: object - properties: - tx_hash: - type: string - description: Hash identifier of the transaction - example: f144a8264acf4bdfe2e1241170969c930d64ab6b0996a4a45237b623f1dd670e - tx_index: - type: number - description: Index of UTxO in the transaction - example: 0 - address: - type: string - description: A Cardano payment/base address (bech32 encoded) - example: addr1qxkfe8s6m8qt5436lec3f0320hrmpppwqgs2gah4360krvyssntpwjcz303mx3h4avg7p29l3zd8u3jyglmewds9ezrqdc3cxp - value: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/value" - stake_address: - $ref: "#/components/schemas/address_info/items/properties/stake_address" - payment_cred: - anyOf: - - type: string - - type: "null" - description: Payment credential - example: de3c1c527e8826b9cd2030f88f75fc44cd4ce519b9ded9eb794b3794 - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - datum_hash: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_hash" - inline_datum: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/inline_datum" - reference_script: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/reference_script" - asset_list: - anyOf: - - type: array - - type: "null" - description: An array of assets on the UTxO - items: - properties: - policy_id: - $ref: "#/components/schemas/asset_info/items/properties/policy_id" - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - decimals: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" - quantity: - type: string - description: Quantity of assets on the UTxO - example: "1" - is_spent: - type: boolean - description: True if the UTxO has been spent - example: true - tx_outs_epoch: - description: List of transaction outputs with basic details for requested epoch - type: array - items: - type: object - properties: - tx_hash: - type: string - description: Hash identifier of the transaction - example: f144a8264acf4bdfe2e1241170969c930d64ab6b0996a4a45237b623f1dd670e - tx_index: - type: number - description: Index of UTxO in the transaction - example: 0 - address: - type: string - description: A Cardano payment/base address (bech32 encoded) - example: addr1qxkfe8s6m8qt5436lec3f0320hrmpppwqgs2gah4360krvyssntpwjcz303mx3h4avg7p29l3zd8u3jyglmewds9ezrqdc3cxp - stake_address: - $ref: "#/components/schemas/address_info/items/properties/stake_address" - payment_cred: - anyOf: - - type: string - - type: "null" - description: Payment credential - example: de3c1c527e8826b9cd2030f88f75fc44cd4ce519b9ded9eb794b3794 - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - value: - $ref: "#/components/schemas/tx_info/items/properties/outputs/items/properties/value" - datum_hash: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_hash" - is_spent: - type: boolean - description: True if the UTxO has been spent - example: true - tx_treasury_donations_epoch: - description: List of treasury donation transactions for requested epoch (current if NULL) - type: array - items: - type: object - properties: - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - block_hash: - $ref: "#/components/schemas/blocks/items/properties/hash" - tx_block_index: - $ref: "#/components/schemas/tx_info/items/properties/tx_block_index" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - treasury_donation: - $ref: "#/components/schemas/tx_info/items/properties/treasury_donation" - - asset_list: - description: Array of policy IDs and asset names - type: array - items: - type: object - properties: - policy_id: - $ref: "#/components/schemas/asset_info/items/properties/policy_id" - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - asset_name_ascii: - $ref: "#/components/schemas/asset_info/items/properties/asset_name_ascii" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - asset_token_registry: - description: An array of token registry information (registered via github) for each asset - type: array - items: - type: object - properties: - policy_id: - $ref: "#/components/schemas/asset_info/items/properties/policy_id" - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - asset_name_ascii: - $ref: "#/components/schemas/asset_info/items/properties/asset_name_ascii" - ticker: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/ticker" - description: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/description" - url: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/url" - decimals: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" - logo: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/logo" - asset_addresses: - description: An array of payment addresses holding the given token (including balances) - type: array - items: - properties: - payment_address: - $ref: "#/components/schemas/utxo_infos/items/properties/address" - stake_address: - $ref: "#/components/schemas/address_info/items/properties/stake_address" - quantity: - type: string - description: Asset balance on the payment address - example: "23" - asset_nft_address: - description: An array of payment addresses holding the given token - type: array - items: - properties: - payment_address: - $ref: "#/components/schemas/utxo_infos/items/properties/address" - stake_address: - $ref: "#/components/schemas/address_info/items/properties/stake_address" - asset_summary: - description: Array of asset summary information - type: array - items: - properties: - policy_id: - $ref: "#/components/schemas/asset_info/items/properties/policy_id" - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - total_transactions: - type: number - description: Total number of transactions including the given asset - example: 89416 - staked_wallets: - type: number - description: Total number of registered wallets holding the given asset - example: 548 - unstaked_addresses: - type: number - description: Total number of payment addresses (not belonging to registered wallets) holding the given asset - example: 245 - addresses: - type: number - description: Total number of unique addresses holding the given asset - example: 812 - asset_info: - description: Array of detailed asset information - type: array - items: - properties: - policy_id: - type: string - description: Asset Policy ID (hex) - example: d3501d9531fcc25e3ca4b6429318c2cc374dbdbcf5e99c1c1e5da1ff - asset_name: - anyOf: - - type: string - - type: "null" - description: Asset Name (hex) - example: 444f4e545350414d - asset_name_ascii: - type: string - description: Asset Name (ASCII) - example: DONTSPAM - fingerprint: - type: string - description: The CIP14 fingerprint of the asset - example: asset1ua6pz3yd5mdka946z8jw2fld3f8d0mmxt75gv9 - minting_tx_hash: - type: string - description: Hash of the latest mint transaction (with metadata if found for asset) - example: cb07b7e51b77079776c4a78f2daf8f14f9945d2b047da7bfcb71d7fbb9f86712 - total_supply: - type: string - description: Total supply for the asset - example: "35000" - mint_cnt: - type: number - description: Count of total mint transactions - example: 1 - burn_cnt: - type: number - description: Count of total burn transactions - example: 5 - creation_time: - type: number - description: UNIX timestamp of the first asset mint - example: 1506635091 - minting_tx_metadata: - allOf: - - $ref: "#/components/schemas/tx_metadata/items/properties/metadata" - description: Latest minting transaction metadata (aligns with CIP-25) - token_registry_metadata: - anyOf: - - type: object - - type: "null" - description: Asset metadata registered on the Cardano Token Registry - properties: - name: - anyOf: - - type: string - - type: "null" - example: Rackmob - description: - anyOf: - - type: string - - type: "null" - example: Metaverse Blockchain Cryptocurrency. - ticker: - anyOf: - - type: string - - type: "null" - example: MOB - url: - anyOf: - - type: string - - type: "null" - example: https://www.rackmob.com/ - logo: - anyOf: - - type: string - - type: "null" - description: A PNG image file as a byte string - example: iVBORw0KGgoAAAANSUhEUgAAAPoAAAD6CAYAAACI7Fo9AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADnmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSfvu78nIGlkPSdXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQnPz4KPHg6eG1wbWV0YSB4bWxuczp4PSdhZG9iZTpuczptZXRhLyc - decimals: - type: number - example: 0 - cip68_metadata: - anyOf: - - type: object - - type: "null" - description: CIP 68 metadata if present for asset - example: - { - "222": - { - "fields": - [ - { - "map": - [ - { - "k": { "bytes": "6e616d65" }, - "v": { "bytes": "74657374" }, - }, - ], - }, - ], - "constructor": 0, - }, - } - asset_history: - description: Array of asset mint/burn history - type: array - items: - properties: - policy_id: - $ref: "#/components/schemas/asset_info/items/properties/policy_id" - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - minting_txs: - anyOf: - - type: array - - type: "null" - description: Array of all mint/burn transactions for an asset - items: - type: object - properties: - tx_hash: - type: string - description: Hash of minting/burning transaction - example: e1ecc517f95715bb87681cfde2c594dbc971739f84f8bfda16170b35d63d0ddf - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - quantity: - type: string - description: Quantity minted/burned (negative numbers indicate burn transactions) - example: "-10" - metadata: - type: array - description: Array of Transaction Metadata for given transaction - items: - $ref: "#/components/schemas/asset_info/items/properties/minting_tx_metadata" - - policy_asset_addresses: - description: Array of asset names and payment addresses for the given policy (including balances) - type: array - items: - properties: - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - payment_address: - $ref: "#/components/schemas/utxo_infos/items/properties/address" - stake_address: - $ref: "#/components/schemas/address_info/items/properties/stake_address" - quantity: - $ref: "#/components/schemas/asset_addresses/items/properties/quantity" - policy_asset_info: - description: Array of detailed information of assets under requested policies - type: array - items: - properties: - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - asset_name_ascii: - $ref: "#/components/schemas/asset_info/items/properties/asset_name_ascii" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - minting_tx_hash: - $ref: "#/components/schemas/asset_info/items/properties/minting_tx_hash" - total_supply: - $ref: "#/components/schemas/asset_info/items/properties/total_supply" - mint_cnt: - $ref: "#/components/schemas/asset_info/items/properties/mint_cnt" - burn_cnt: - $ref: "#/components/schemas/asset_info/items/properties/burn_cnt" - creation_time: - $ref: "#/components/schemas/asset_info/items/properties/creation_time" - minting_tx_metadata: - $ref: "#/components/schemas/asset_info/items/properties/minting_tx_metadata" - token_registry_metadata: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata" - policy_asset_mints: - description: Array of mint information for assets under requested policies - type: array - items: - properties: - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - asset_name_ascii: - $ref: "#/components/schemas/asset_info/items/properties/asset_name_ascii" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - minting_tx_hash: - $ref: "#/components/schemas/asset_info/items/properties/minting_tx_hash" - total_supply: - $ref: "#/components/schemas/asset_info/items/properties/total_supply" - mint_cnt: - $ref: "#/components/schemas/asset_info/items/properties/mint_cnt" - burn_cnt: - $ref: "#/components/schemas/asset_info/items/properties/burn_cnt" - creation_time: - $ref: "#/components/schemas/asset_info/items/properties/creation_time" - minting_tx_metadata: - $ref: "#/components/schemas/asset_info/items/properties/minting_tx_metadata" - decimals: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" - policy_asset_list: - description: Array of brief information of assets under the same policy - type: array - items: - properties: - asset_name: - $ref: "#/components/schemas/asset_info/items/properties/asset_name" - fingerprint: - $ref: "#/components/schemas/asset_info/items/properties/fingerprint" - total_supply: - $ref: "#/components/schemas/asset_info/items/properties/total_supply" - decimals: - $ref: "#/components/schemas/asset_info/items/properties/token_registry_metadata/properties/decimals" - - drep_info: - description: Get detailed information about requested delegated representatives (DReps) - type: array - items: - properties: - drep_id: - type: string - description: DRep ID in CIP-129 bech32 format - example: drep1yfhyq6tztjksqqpd5lglc3zr2tn8vylgjh9xzz7n2p4l4lgk3qam3 - hex: - type: string - description: DRep ID in hex format - example: 6e4069625cad00002da7d1fc444352e67613e895ca610bd3506bfafd - has_script: - type: boolean - description: Flag which shows if this credential is a script hash - example: false - drep_status: - type: string - enum: - - registered - - deregistered - - not_registered - description: DRep's current registration status - example: registered - deposit: - anyOf: - - type: string - - type: "null" - description: DRep's registration deposit in number - example: "500000000" - active: - type: boolean - description: Flag to show if the DRep is (i.e. not expired) - example: true - expires_epoch_no: - anyOf: - - type: number - - type: "null" - description: After which epoch DRep is considered inactive. - example: 410 - amount: - type: string - description: The total amount of voting power this DRep is delegated. - example: "599496769641" - meta_url: - anyOf: - - type: string - - type: "null" - description: A URL to a JSON payload of metadata - example: "https://hornan7.github.io/Vote_Context.jsonld" - meta_hash: - anyOf: - - type: string - - type: "null" - description: A hash of the contents of the metadata URL - example: dc208474e195442d07a5b6d42af19bb2db02229427dfb53ab23122e6b0e2487d - drep_epoch_summary: - description: Summary of voting power and DRep count for each epoch - type: array - items: - properties: - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - amount: - type: string - description: The total amount of voting power between all DReps including pre-defined roles for the epoch. - example: "599496769641" - dreps: - type: number - description: The total number of DReps with vote power for the epoch. - example: 324 - drep_list: - description: List of all active delegated representatives (DReps) - type: array - items: - properties: - drep_id: - $ref: "#/components/schemas/drep_info/items/properties/drep_id" - hex: - $ref: "#/components/schemas/drep_info/items/properties/hex" - has_script: - $ref: "#/components/schemas/drep_info/items/properties/has_script" - drep_status: - $ref: "#/components/schemas/drep_info/items/properties/drep_status" - drep_delegators: - description: List of all delegators by requested delegated representative (DRep) - type: array - items: - properties: - stake_address: - $ref: "#/components/schemas/account_list/items/properties/stake_address" - stake_address_hex: - $ref: "#/components/schemas/account_list/items/properties/stake_address_hex" - script_hash: - $ref: "#/components/schemas/account_list/items/properties/script_hash" - epoch_no: - description: Epoch when vote delegation was made - allOf: - - $ref: "#/components/schemas/epoch_info/items/properties/epoch_no" - amount: - $ref: "#/components/schemas/account_info/items/properties/total_balance" - drep_metadata: - description: List metadata for requested delegated representatives (DReps) - type: array - items: - properties: - drep_id: - $ref: "#/components/schemas/drep_info/items/properties/drep_id" - hex: - $ref: "#/components/schemas/drep_info/items/properties/hex" - has_script: - $ref: "#/components/schemas/drep_info/items/properties/has_script" - meta_url: - $ref: "#/components/schemas/drep_info/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/drep_info/items/properties/meta_hash" - meta_json: - anyOf: - - type: object - - type: "null" - description: The payload as JSON - example: - { - "body": - { - "title": "...", - "...": "...", - "references": - [ - { - "uri": "...", - "@type": "Other", - "label": "Hardfork to PV10", - }, - ], - }, - "authors": - [ - { - "name": "...", - "witness": - { - "publicKey": "...", - "signature": "...", - "witnessAlgorithm": "ed25519", - }, - }, - ], - "@context": - { - "body": - { - "@id": "CIP108:body", - "@context": - { - "title": "CIP108:title", - "abstract": "CIP108:abstract", - "rationale": "CIP108:rationale", - "motivation": "CIP108:motivation", - "references": - { - "@id": "CIP108:references", - "@context": - { - "uri": "CIP100:reference-uri", - "Other": "CIP100:OtherReference", - "label": "CIP100:reference-label", - "referenceHash": - { - "@id": "CIP108:referenceHash", - "@context": - { - "hashDigest": "CIP108:hashDigest", - "hashAlgorithm": "CIP100:hashAlgorithm", - }, - }, - "GovernanceMetadata": "CIP100:GovernanceMetadataReference", - }, - "@container": "@set", - }, - }, - }, - "CIP100": "https://github.com/cardano-foundation/CIPs/blob/master/CIP-0100/README.md#", - "CIP108": "https://github.com/cardano-foundation/CIPs/blob/master/CIP-0108/README.md#", - "authors": - { - "@id": "CIP100:authors", - "@context": - { - "name": "http://xmlns.com/foaf/0.1/name", - "witness": - { - "@id": "CIP100:witness", - "@context": - { - "publicKey": "CIP100:publicKey", - "signature": "CIP100:signature", - "witnessAlgorithm": "CIP100:witnessAlgorithm", - }, - }, - }, - "@container": "@set", - }, - "@language": "en-us", - "hashAlgorithm": "CIP100:hashAlgorithm", - }, - "hashAlgorithm": "blake2b-256", - } - bytes: - anyOf: - - type: string - - type: "null" - description: The raw bytes of the payload - example: 7b0a20202240636f6e74657874223a207b0a2020202022406c616e6775616765223a2022656e2d7573222c0a2020202022434950313030223a202268747470733a2f2f6769746875622e636f6d2f63617264616e6f2d666f756e646174696f6e2f434950732f626c6f622f6d61737465722f4349502d303130302f524541444d452e6d6423222c0a2020202022434950313038223a202268747470733a2f2f6769746875622e636f6d2f63617264616e6f2d666f756e646174696f6e2f434950732f626c6f622f6d61737465722f4349502d303130382f524541444d452e6d6423222c0a202020202268617368416c676f726974686d223a20224349503130303a68617368416c676f726974686d222c0a2020202022626f6479223a207b0a20202020202022406964223a20224349503130383a626f6479222c0a2020202020202240636f6e74657874223a207b0a2020202020202020227265666572656e636573223a207b0a2020202020202020202022406964223a20224349503130383a7265666572656e636573222c0a202020202020202020202240636f6e7461696e6572223a202240736574222c0a202020202020202020202240636f6e74657874223a207b0a20202020202020202020202022476f7665726e616e63654d65746164617461223a20224349503130303a476f7665726e616e63654d657461646174615265666572656e6365222c0a202020202020202020202020224f74686572223a20224349503130303a4f746865725265666572656e6365222c0a202020202020202020202020226c6162656c223a20224349503130303a7265666572656e63652d6c6162656c222c0a20202020202020202020202022757269223a20224349503130303a7265666572656e63652d757269222c0a202020202020202020202020227265666572656e636548617368223a207b0a202020202020202020202020202022406964223a20224349503130383a7265666572656e636548617368222c0a20202020202020202020202020202240636f6e74657874223a207b0a202020202020202020202020202020202268617368446967657374223a20224349503130383a68617368446967657374222c0a202020202020202020202020202020202268617368416c676f726974686d223a20224349503130303a68617368416c676f726974686d220a20202020202020202020202020207d0a2020202020202020202020207d0a202020202020202020207d0a20202020202020207d2c0a2020202020202020227469746c65223a20224349503130383a7469746c65222c0a2020202020202020226162737472616374223a20224349503130383a6162737472616374222c0a2020202020202020226d6f7469766174696f6e223a20224349503130383a6d6f7469766174696f6e222c0a202020202020202022726174696f6e616c65223a20224349503130383a726174696f6e616c65220a2020202020207d0a202020207d2c0a2020202022617574686f7273223a207b0a20202020202022406964223a20224349503130303a617574686f7273222c0a2020202020202240636f6e7461696e6572223a202240736574222c0a2020202020202240636f6e74657874223a207b0a2020202020202020226e616d65223a2022687474703a2f2f786d6c6e732e636f6d2f666f61662f302e312f6e616d65222c0a2020202020202020227769746e657373223a207b0a2020202020202020202022406964223a20224349503130303a7769746e657373222c0a202020202020202020202240636f6e74657874223a207b0a202020202020202020202020227769746e657373416c676f726974686d223a20224349503130303a7769746e657373416c676f726974686d222c0a202020202020202020202020227075626c69634b6579223a20224349503130303a7075626c69634b6579222c0a202020202020202020202020227369676e6174757265223a20224349503130303a7369676e6174757265220a202020202020202020207d0a20202020202020207d0a2020202020207d0a202020207d0a20207d2c0a20202268617368416c676f726974686d223a2022626c616b6532622d323536222c0a202022626f6479223a207b0a20202020227469746c65223a202248617264666f726b20746f2050726f746f636f6c2076657273696f6e203130222c0a20202020226162737472616374223a20224c6574277320686176652073616e63686f4e657420696e2066756c6c20676f7665726e616e636520617320736f6f6e20617320706f737369626c65222c0a20202020226d6f7469766174696f6e223a2022505639206973206e6f742061732066756e2061732050563130222c0a2020202022726174696f6e616c65223a20224c65742773206b6565702074657374696e67207374756666222c0a20202020227265666572656e636573223a205b0a2020202020207b0a2020202020202020224074797065223a20224f74686572222c0a2020202020202020226c6162656c223a202248617264666f726b20746f2050563130222c0a202020202020202022757269223a2022220a2020202020207d0a202020205d0a20207d2c0a202022617574686f7273223a205b0a202020207b0a202020202020226e616d65223a20224361726c6f73222c0a202020202020227769746e657373223a207b0a2020202020202020227769746e657373416c676f726974686d223a202265643235353139222c0a2020202020202020227075626c69634b6579223a202237656130396133346165626231336339383431633731333937623163616266656335646466393530343035323933646565343936636163326634333734383061222c0a2020202020202020227369676e6174757265223a20226134373639383562346363306434353766323437373937363131373939613666366138306663386362376563396463623561383232333838386430363138653330646531363566336438363963346130643931303764386135623631326164376335653432343431393037663562393137393666306437313837643634613031220a2020202020207d0a202020207d0a20205d0a7d - warning: - anyOf: - - type: string - - type: "null" - description: A warning that occured while validating the metadata - language: - anyOf: - - type: string - - type: "null" - description: The language described in the context of the metadata as per CIP-100 - example: en-us - comment: - anyOf: - - type: string - - type: "null" - description: Comment attached to the metadata - is_valid: - anyOf: - - type: boolean - - type: "null" - description: Indicate whether data is invalid - example: null - drep_updates: - description: List of updates for requested (or all) delegated representatives (DReps) - type: array - items: - properties: - drep_id: - $ref: "#/components/schemas/drep_info/items/properties/drep_id" - hex: - $ref: "#/components/schemas/drep_info/items/properties/hex" - has_script: - $ref: "#/components/schemas/drep_info/items/properties/has_script" - update_tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - cert_index: - type: number - description: The index of this certificate within the the transaction. - example: 1 - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - action: - type: string - description: Effective action for this DRep Update certificate - enum: ["updated", "registered", "deregistered"] - example: registered - deposit: - $ref: "#/components/schemas/drep_info/items/properties/deposit" - meta_url: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_hash" - meta_json: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_json" - drep_voting_power_history: - description: History of DReps voting power against each (or requested) epoch - type: array - items: - properties: - drep_id: - $ref: "#/components/schemas/drep_info/items/properties/drep_id" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - amount: - anyOf: - - type: string - - type: "null" - description: The voting power for the DRep - example: "14231445553" - drep_votes: - description: List of all votes casted by requested delegated representative (DRep) - type: array - items: - properties: - proposal_id: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_id" - proposal_tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - proposal_index: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_index" - vote_tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - vote: - type: string - enum: ["Yes", "No", "Abstain"] - description: Actual Vote casted - example: "Yes" - meta_url: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_hash" - pool_voting_power_history: - description: History of Pool's voting power against each (or requested) epoch - type: array - items: - properties: - pool_id_bech32: - $ref: "#/components/schemas/pool_info/items/properties/pool_id_bech32" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - amount: - anyOf: - - type: string - - type: "null" - description: The voting power for the pool for the epoch - example: "11231445553" - pool_votes: - description: List of all votes casted by requested pool - type: array - items: - $ref: "#/components/schemas/drep_votes/items" - committee_votes: - description: List of all votes casted by requested delegated representative (DRep) - type: array - items: - $ref: "#/components/schemas/drep_votes/items" - proposal_list: - description: List of all governance action proposals - type: array - items: - properties: - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - proposal_id: - type: string - description: Proposal Action ID in accordance with CIP-129 format - example: "gov_action17m93skslaxyd45gpr6ernkdzs852h564wsterr8l6lheu7hu7kvsqecyqdh" - proposal_tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - proposal_index: - type: number - description: Index of governance proposal in transaction - example: 0 - proposal_type: - type: string - enum: - [ - "ParameterChange", - "HardForkInitiation", - "TreasuryWithdrawals", - "NoConfidence", - "NewCommittee", - "NewConstitution", - "InfoAction", - ] - description: Proposal Action Type - example: ParameterChange - proposal_description: - type: object - description: Description for Proposal Action - example: '{"tag": "InfoAction"}' - deposit: - $ref: "#/components/schemas/drep_info/items/properties/deposit" - return_address: - type: string - description: The StakeAddress index of the reward address to receive the deposit when it is repaid. - example: stake1uy6yzwsxxc28lfms0qmpxvyz9a7y770rtcqx9y96m42cttqwvp4m5 - proposed_epoch: - type: number - description: Shows the epoch at which this governance action was proposed. - example: 660 - ratified_epoch: - anyOf: - - type: number - - type: "null" - description: If not null, then this proposal has been ratified at the specified epoch. - example: 670 - enacted_epoch: - anyOf: - - type: number - - type: "null" - description: If not null, then this proposal has been enacted at the specified epoch. - example: 675 - dropped_epoch: - anyOf: - - type: number - - type: "null" - description: If not null, then this proposal has been dropped (expired/enacted) at the specified epoch. - example: 680 - expired_epoch: - anyOf: - - type: number - - type: "null" - description: If not null, then this proposal has been expired at the specified epoch. - example: 680 - expiration: - anyOf: - - type: number - - type: "null" - description: Shows the epoch at which this governance action is expected to expire. - meta_url: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_hash" - meta_json: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_json" - meta_comment: - $ref: "#/components/schemas/drep_metadata/items/properties/comment" - meta_language: - $ref: "#/components/schemas/drep_metadata/items/properties/language" - meta_is_valid: - $ref: "#/components/schemas/drep_metadata/items/properties/is_valid" - withdrawal: - type: array - description: The array of amounts withdrawn from treasury into specified stake addresses by this proposal - items: - properties: - stake_address: - $ref: "#/components/schemas/account_history/items/properties/stake_address" - amount: - type: string - example: "31235800000" - param_proposal: - description: If not null, the proposed new parameter set - anyOf: - - type: object - - type: "null" - example: { "key_deposit": 1000000 } - voter_proposal_list: - description: List of all governance action proposals where specified credential(DRep, SPO or Committee member) has cast a vote - type: array - items: - $ref: "#/components/schemas/proposal_list/items" - proposal_voting_summary: - description: Summary of votes for given proposal - type: array - items: - properties: - proposal_type: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_type" - epoch_no: - type: number - description: Epoch for which data was collated - example: 441 - drep_yes_votes_cast: - type: number - description: Number of 'yes' votes casted by dreps - example: 7 - drep_active_yes_vote_power: - type: string - description: Power of 'yes' votes that were explicitly cast - example: "31231231231" - drep_yes_vote_power: - type: string - description: Power of 'yes' votes from dreps (includes explicit yes and inferred via other means) - example: "31146839512742" - drep_yes_pct: - type: number - description: Percentage of 'yes' votes from dreps - example: 60.72 - drep_no_votes_cast: - type: number - description: Number of 'no' votes casted by dreps - example: 0 - drep_active_no_vote_power: - type: string - description: Power of 'no' votes that were explicitly cast - example: "2012312393392" - drep_no_vote_power: - type: string - description: Power of 'no' votes from dreps (includes explicit no and inferred via other means) - example: "20148194577715" - drep_no_pct: - type: number - description: Percentage of 'no' votes from dreps - example: 39.28 - drep_abstain_votes_cast: - type: number - description: Number of active 'abstain' votes from dreps - example: 5 - drep_active_abstain_vote_power: - type: string - description: Power of 'abstain' votes that were explicitly cast - example: "123321123321" - drep_always_no_confidence_vote_power: - type: string - description: Power of votes delegated to 'always_no_confidence' predefined drep - example: "9999" - drep_always_abstain_vote_power: - type: string - description: Power of votes delegated to 'always_abstain' predefined drep - example: "87654321" - pool_yes_votes_cast: - type: number - description: Number of 'yes' votes casted by pools - example: 1 - pool_active_yes_vote_power: - type: string - description: Power of 'yes' pool votes that were explicitly cast - example: "123123123" - pool_yes_vote_power: - type: string - description: Power of 'yes' votes from pools (includes explicit yes and inferred via other means) - example: "5234000000" - pool_yes_pct: - type: number - description: Percentage of 'yes' votes from pools - example: 13.12 - pool_no_votes_cast: - type: number - description: Number of 'no' votes casted by pools - example: 0 - pool_active_no_vote_power: - type: string - description: Power of 'no' pool votes that were explicitly cast - example: "0" - pool_no_vote_power: - type: string - description: Power of 'no' votes from pools (includes explicit no and inferred via other means) - example: "0" - pool_no_pct: - type: number - description: Percentage of 'no' votes from pools - example: 0 - pool_abstain_votes_cast: - type: number - description: Percentage of 'abstain' votes from pools - example: 0 - pool_active_abstain_vote_power: - type: string - description: Power of 'abstain' pool votes that were explicitly cast - example: "12312312312" - pool_passive_always_abstain_votes_assigned: - type: number - description: Number of non-voting SPO pool reward addresses delegating to 'always_abstain' drep - example: 1 - pool_passive_always_abstain_vote_power: - type: string - description: Combined power of non-voting SPO pool votes where reward addresses delegate to 'always_abstain' - example: "12312312" - pool_passive_always_no_confidence_votes_assigned: - type: number - description: Number of non-voting SPO pool reward addresses delegating to 'always_no_confidence' drep - example: 10 - pool_passive_always_no_confidence_vote_power: - type: string - description: Combined power of non-voting SPO pool votes where reward addresses delegate to 'always_no_confidence' - example: "321321" - committee_yes_votes_cast: - type: number - description: Number of 'yes' votes casted by committee - example: 5 - committee_yes_pct: - type: number - description: Percentage of 'yes' votes from committee - example: 71.43 - committee_no_votes_cast: - type: number - description: Number of 'no' votes casted by committee - example: 1 - committee_no_pct: - type: number - description: Percentage of 'no' votes from committee - example: 28.57 - committee_abstain_votes_cast: - type: number - description: Percentage of 'abstain' votes from committee - proposal_votes: - type: array - description: List of all votes cast on specified governance action - items: - properties: - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - voter_role: - type: string - description: The role of the voter - enum: ["ConstitutionalCommittee", "DRep", "SPO"] - example: DRep - voter_id: - type: string - description: Voter's DRep ID (CIP-129 bech32 format), pool ID (bech32 format) or committee hot ID (CIP-129 bech32 format) - example: drep1yfhyq6tztjksqqpd5lglc3zr2tn8vylgjh9xzz7n2p4l4lgk3qam3 - voter_hex: - type: string - description: Voter's DRep ID , pool ID or committee hash in hex format - example: 6e4069625cad00002da7d1fc444352e67613e895ca610bd3506bfafd - voter_has_script: - $ref: "#/components/schemas/drep_info/items/properties/has_script" - vote: - $ref: "#/components/schemas/drep_votes/items/properties/vote" - meta_url: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_hash" - vote_list: - type: array - description: List of all votes cast on specified governance action - items: - properties: - vote_tx_hash: - type: string - description: The transaction hash where-in vote was posted - example: e239058473ab5ab1f5829b9058a93cbd0daaf72f9252cc16b34925cd87b37d35 - voter_role: - $ref: "#/components/schemas/proposal_votes/items/properties/voter_role" - voter_id: - $ref: "#/components/schemas/proposal_votes/items/properties/voter_id" - proposal_id: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_id" - proposal_tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - proposal_index: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_index" - proposal_type: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_type" - epoch_no: - $ref: "#/components/schemas/blocks/items/properties/epoch_no" - block_height: - $ref: "#/components/schemas/blocks/items/properties/block_height" - block_time: - $ref: "#/components/schemas/blocks/items/properties/block_time" - vote: - $ref: "#/components/schemas/drep_votes/items/properties/vote" - meta_url: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_url" - meta_hash: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_hash" - meta_json: - $ref: "#/components/schemas/drep_metadata/items/properties/meta_json" - committee_info: - description: Current governance committee - type: object - properties: - proposal_id: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_id" - proposal_tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - proposal_index: - $ref: "#/components/schemas/proposal_list/items/properties/proposal_index" - quorum_numerator: - type: number - example: 67 - quorum_denominator: - type: number - example: 100 - members: - description: Array of all members part of active governance committee - type: array - items: - type: object - properties: - status: - type: string - description: Member authentication status - enum: ["authorized", "not_authorized", "resigned"] - example: authorized - cc_cold_hex: - type: string - description: Committee member cold key hash in hex format - example: 6095e643ea6f1cccb6e463ec34349026b3a48621aac5d512655ab1bf - cc_cold_has_script: - type: boolean - description: Flag which shows if this credential is a script hash - example: false - cc_hot_hex: - anyOf: - - type: string - - type: "null" - description: Committee member key hash from last valid hot key authorization certificate in hex format - example: 65d497b875c56ab213586a4006d4f6658970573ea8e2398893857472 - cc_hot_has_script: - anyOf: - - type: boolean - - type: "null" - description: Flag which shows if this credential is a script hash - example: false - expiration_epoch: - type: number - description: Epoch number in which the committee member vote rights expire - example: 324 - - script_info: - type: array - items: - description: Array of information for scripts - properties: - script_hash: - anyOf: - - type: string - - type: "null" - description: Hash of a script - example: bfa7ffa9b2e164873db6ac6d0528c82e212963bc62e10fd1d81da4af - creation_tx_hash: - type: string - description: Hash of the script creation transaction - example: 255f061502ad83230351fbcf2d9fade1b5d118d332f92c9861075010a1fe3fbe - type: - type: string - description: Type of the script - enum: ["plutusV1", "plutusV2", "timelock", "multisig"] - example: plutusV1 - value: - anyOf: - - type: object - - type: "null" - description: Data in JSON format - example: null - bytes: - anyOf: - - type: string - - type: "null" - description: Script bytes (cborSeq) - example: 5907f4010000332323232323232323233223232323232332232323232322223232533532533533355300712001323212330012233350052200200200100235001220011233001225335002101710010142325335333573466e3cd400488008d4020880080580544ccd5cd19b873500122001350082200101601510153500122002353500122002222222222200a101413357389201115554784f206e6f7420636f6e73756d6564000133333573466e1cd55cea8012400046644246600200600464646464646464646464646666ae68cdc39aab9d500a480008cccccccccc888888888848cccccccccc00402c02802402001c01801401000c008cd40508c8c8cccd5cd19b8735573aa0049000119910919800801801180f9aba150023019357426ae8940088c98d4cd5ce01581501481409aab9e5001137540026ae854028cd4050054d5d0a804999aa80bbae501635742a010666aa02eeb94058d5d0a80399a80a0109aba15006335014335502402275a6ae854014c8c8c8cccd5cd19b8735573aa00490001199109198008018011919191999ab9a3370e6aae754009200023322123300100300233502575a6ae854008c098d5d09aba2500223263533573805e05c05a05826aae7940044dd50009aba150023232323333573466e1cd55cea8012400046644246600200600466a04aeb4d5d0a80118131aba135744a004464c6a66ae700bc0b80b40b04d55cf280089baa001357426ae8940088c98d4cd5ce01581501481409aab9e5001137540026ae854010cd4051d71aba15003335014335502475c40026ae854008c070d5d09aba2500223263533573804e04c04a04826ae8940044d5d1280089aba25001135744a00226ae8940044d5d1280089aba25001135744a00226aae7940044dd50009aba150023232323333573466e1d400520062321222230040053019357426aae79400c8cccd5cd19b875002480108c848888c008014c06cd5d09aab9e500423333573466e1d400d20022321222230010053015357426aae7940148cccd5cd19b875004480008c848888c00c014dd71aba135573ca00c464c6a66ae7008808408007c0780740704d55cea80089baa001357426ae8940088c98d4cd5ce00d80d00c80c080c89931a99ab9c4910350543500019018135573ca00226ea8004c8004d5405888448894cd40044d400c88004884ccd401488008c010008ccd54c01c4800401401000448c88c008dd6000990009aa80b111999aab9f00125009233500830043574200460066ae880080548c8c8c8cccd5cd19b8735573aa00690001199911091998008020018011919191999ab9a3370e6aae7540092000233221233001003002301735742a00466a01c02c6ae84d5d1280111931a99ab9c01b01a019018135573ca00226ea8004d5d0a801999aa803bae500635742a00466a014eb8d5d09aba2500223263533573802e02c02a02826ae8940044d55cf280089baa0011335500175ceb44488c88c008dd5800990009aa80a11191999aab9f0022500823350073355017300635573aa004600a6aae794008c010d5d100180a09aba100111220021221223300100400312232323333573466e1d4005200023212230020033005357426aae79400c8cccd5cd19b8750024800884880048c98d4cd5ce00980900880800789aab9d500113754002464646666ae68cdc39aab9d5002480008cc8848cc00400c008c014d5d0a8011bad357426ae8940088c98d4cd5ce00800780700689aab9e5001137540024646666ae68cdc39aab9d5001480008dd71aba135573ca004464c6a66ae7003803403002c4dd500089119191999ab9a3370ea00290021091100091999ab9a3370ea00490011190911180180218031aba135573ca00846666ae68cdc3a801a400042444004464c6a66ae7004404003c0380340304d55cea80089baa0012323333573466e1d40052002200523333573466e1d40092000200523263533573801a01801601401226aae74dd5000891001091000919191919191999ab9a3370ea002900610911111100191999ab9a3370ea004900510911111100211999ab9a3370ea00690041199109111111198008048041bae35742a00a6eb4d5d09aba2500523333573466e1d40112006233221222222233002009008375c6ae85401cdd71aba135744a00e46666ae68cdc3a802a400846644244444446600c01201060186ae854024dd71aba135744a01246666ae68cdc3a8032400446424444444600e010601a6ae84d55cf280591999ab9a3370ea00e900011909111111180280418071aba135573ca018464c6a66ae7004c04804404003c03803403002c0284d55cea80209aab9e5003135573ca00426aae7940044dd50009191919191999ab9a3370ea002900111999110911998008028020019bad35742a0086eb4d5d0a8019bad357426ae89400c8cccd5cd19b875002480008c8488c00800cc020d5d09aab9e500623263533573801801601401201026aae75400c4d5d1280089aab9e500113754002464646666ae68cdc3a800a400446424460020066eb8d5d09aab9e500323333573466e1d400920002321223002003375c6ae84d55cf280211931a99ab9c009008007006005135573aa00226ea800444888c8c8cccd5cd19b8735573aa0049000119aa80518031aba150023005357426ae8940088c98d4cd5ce00480400380309aab9e5001137540029309000a490350543100112212330010030021123230010012233003300200200133512233002489209366f09fe40eaaeb17d3cb6b0b61e087d664174c39a48a986f86b2b0ba6e2a7b00480008848cc00400c0088005 - size: - type: number - description: The size of the CBOR serialised script (in bytes) - example: 2039 - script_list: - description: List of script and creation tx hash pairs - type: array - items: - properties: - script_hash: - $ref: "#/components/schemas/script_info/items/properties/script_hash" - creation_tx_hash: - $ref: "#/components/schemas/script_info/items/properties/creation_tx_hash" - type: - $ref: "#/components/schemas/script_info/items/properties/type" - size: - $ref: "#/components/schemas/script_info/items/properties/size" - script_redeemers: - description: Array of all redeemers for a given script hash - type: array - items: - type: object - properties: - script_hash: - $ref: "#/components/schemas/script_info/items/properties/script_hash" - redeemers: - type: array - items: - type: object - properties: - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - tx_index: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" - unit_mem: - anyOf: - - type: string - - type: number - - type: "null" - description: The budget in Memory to run a script - example: 520448 - unit_steps: - anyOf: - - type: string - - type: number - - type: "null" - description: The budget in Cpu steps to run a script - example: 211535239 - fee: - type: string - description: The budget in fees to run a script - the fees depend on the ExUnits and the current prices - example: "45282" - purpose: - type: string - description: What kind of validation this redeemer is used for - enum: ["spend", "mint", "cert", "reward"] - example: spend - datum_hash: - anyOf: - - type: string - - type: "null" - description: The Hash of the Plutus Data - example: 5a595ce795815e81d22a1a522cf3987d546dc5bb016de61b002edd63a5413ec4 - datum_value: - $ref: "#/components/schemas/script_info/items/properties/value" - script_utxos: - description: List of all unspent utxos with a reference script matching given script hashes - type: array - items: - properties: - script_hash: - $ref: "#/components/schemas/script_info/items/properties/script_hash" - tx_hash: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_hash" - tx_index: - $ref: "#/components/schemas/utxo_infos/items/properties/tx_index" - datum_info: - description: Array of datum information for given datum hashes - type: array - items: - type: object - properties: - datum_hash: - $ref: "#/components/schemas/script_redeemers/items/properties/redeemers/items/properties/datum_hash" - creation_tx_hash: - $ref: "#/components/schemas/script_info/items/properties/creation_tx_hash" - value: - $ref: "#/components/schemas/script_info/items/properties/value" - bytes: - $ref: "#/components/schemas/script_info/items/properties/bytes" - - ogmiostip: - description: Current tip of the chain, identified by a slot and a block header hash. - type: object - properties: - jsonrpc: - type: string - description: Identifier for JSON-RPC 2.0 standard - example: "2.0" - method: - type: string - description: The Ogmios method that was called in the request - example: "queryNetwork/tip" - result: - anyOf: - - type: string - - type: number - - type: array - - type: object - - type: "null" - description: Result of the query - properties: - slot: - type: number - description: Absolute slot number on chain - example: 59886800 - id: - type: string - description: Block Hash (Blake2b 32-byte hash digest, encoded in base16) - example: "df5678c9774b7bc8c60a4c83b63c3676e618640ad05f7d1ee775b68939cf77d1" - example: - { - "slot": 59886800, - "id": "df5678c9774b7bc8c60a4c83b63c3676e618640ad05f7d1ee775b68939cf77d1", - } diff --git a/specs/templates/api-main.yaml b/specs/templates/api-main.yaml deleted file mode 100644 index c47e28c4..00000000 --- a/specs/templates/api-main.yaml +++ /dev/null @@ -1,2395 +0,0 @@ -openapi: 3.1.0 -#!info!# -servers: - - url: https://api.koios.rest/api/v1 - description: Mainnet - - url: https://preview.koios.rest/api/v1 - description: Preview Network - - url: https://preprod.koios.rest/api/v1 - description: Preprod Network - - url: https://sancho.koios.rest/api/v1 - description: Sanchonet Network -paths: - /tip: #RPC - get: - tags: - - Network - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/tip" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Query Chain Tip - description: Get the tip info about the latest block seen by chain - operationId: tip - /era_summaries: #RPC - get: - tags: - - Network - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/era_summaries" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Get Era Summaries - description: Get some information about each era on the network alongwith it's start epoch - operationId: era_summaries - /genesis: #RPC - get: - tags: - - Network - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/genesis" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Get Genesis info - description: Get the Genesis parameters used to start specific era on chain - operationId: genesis - /totals: #RPC - get: - tags: - - Network - parameters: - - $ref: "#/components/parameters/_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/totals" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Get historical tokenomic stats - description: >- - Get the circulating utxo, treasury, rewards, supply and reserves in - lovelace for specified epoch, all epochs if empty - operationId: totals - /param_updates: #RPC - get: - tags: - - Network - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/param_updates" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Param Update Proposals - description: Get all parameter update proposals submitted to the chain starting Shelley era - operationId: param_updates - /cli_protocol_params: #RPC - get: - tags: - - Network - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/cli_protocol_params" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: CLI Protocol Parameters - description: >- - Get Current Protocol Parameters as published by cardano-cli. Note that - the output schema of this command is unfortunately fluid on cardano-node - and may vary between CLI versions/era. Accordingly, the returned output for - this endpoint is left as raw JSON (single row) and any filtering to output should - be done on client-side - operationId: cli_protocol_params - /reserve_withdrawals: #RPC - get: - tags: - - Network - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/reserve_withdrawals" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Reserve Withdrawals - description: List of all withdrawals from reserves against stake accounts - operationId: reserve_withdrawals - /treasury_withdrawals: #RPC - get: - tags: - - Network - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/reserve_withdrawals" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Treasury Withdrawals - description: List of all withdrawals from treasury against stake accounts - operationId: treasury_withdrawals - - /epoch_info: #RPC - get: - tags: - - Epoch - parameters: - - $ref: "#/components/parameters/_epoch_no" - - $ref: "#/components/parameters/_include_next_epoch" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/epoch_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Epoch Information - description: Get the epoch information, all epochs if no epoch specified - operationId: epoch_info - /epoch_params: #RPC - get: - tags: - - Epoch - parameters: - - $ref: "#/components/parameters/_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/epoch_params" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Epoch's Protocol Parameters - description: >- - Get the protocol parameters for specific epoch, returns information - about all epochs if no epoch specified - operationId: epoch_params - /epoch_block_protocols: #RPC - get: - tags: - - Epoch - parameters: - - $ref: "#/components/parameters/_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/epoch_block_protocols" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Epoch's Block Protocols - description: >- - Get the information about block protocol distribution in epoch - operationId: epoch_block_protocols - - /blocks: #RPC - get: - tags: - - Block - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/blocks" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Block List - description: Get summarised details about all blocks (paginated - latest first) - operationId: blocks - /block_info: #RPC - post: - tags: - - Block - requestBody: - $ref: "#/components/requestBodies/block_hashes" - responses: - "200": - description: Success - content: - application/json: - schema: - $ref: "#/components/schemas/block_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Block Information - description: Get detailed information about a specific block - operationId: block_info - /block_txs: #RPC - post: - tags: - - Block - requestBody: - $ref: "#/components/requestBodies/block_hashes" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/block_txs" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Block Transactions - description: Get a list of all transactions included in provided blocks - operationId: block_txs - /block_tx_cbor: #RPC - post: - tags: - - Block - requestBody: - $ref: "#/components/requestBodies/block_hashes" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/block_tx_cbor" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Block Transactions (Raw CBOR) - description: Get raw CBOR data for all transaction(s) within requested blocks - operationId: block_tx_cbor - /block_tx_info: #RPC - post: - deprecated: true - tags: - - Block - requestBody: - $ref: "#/components/requestBodies/block_tx_info" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/block_tx_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Block Transactions (Detailed Info) - description: Get detailed information about transaction(s) for requested blocks - operationId: block_tx_info - x-badges: - - color: red - label: "Deprecated" - - /utxo_info: #RPC - post: - tags: - - Transactions - requestBody: - $ref: "#/components/requestBodies/utxo_refs_with_extended" - responses: - "200": - description: Success! - content: - application/json: - schema: - $ref: "#/components/schemas/utxo_infos" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: UTxO Info - description: Get UTxO set for requested UTxO references - operationId: utxo_info - /tx_cbor: #RPC - post: - tags: - - Transactions - requestBody: - $ref: "#/components/requestBodies/tx_ids" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/tx_cbor" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Raw Transaction (CBOR) - description: Get raw transaction(s) in CBOR format - operationId: tx_cbor - /tx_info: #RPC - post: - tags: - - Transactions - requestBody: - $ref: "#/components/requestBodies/tx_info" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/tx_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Transaction Information - description: Get detailed information about transaction(s) - operationId: tx_info - /tx_metadata: #RPC - post: - tags: - - Transactions - requestBody: - $ref: "#/components/requestBodies/tx_ids" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/tx_metadata" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Transaction Metadata - description: Get metadata information (if any) for given transaction(s) - operationId: tx_metadata - /tx_metalabels: #RPC - get: - tags: - - Transactions - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/tx_metalabels" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Transaction Metadata Labels - description: Get a list of all transaction metalabels - operationId: tx_metalabels - /tx_by_metalabel: #RPC - get: - tags: - - Transactions - parameters: - - $ref: "#/components/parameters/_label" - - $ref: "#/components/parameters/_after_block_height" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/tx_by_metalabel" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Transactions by Metadata Label - description: Get a list of all transactions that include a specific metadata label (key) - operationId: tx_by_metalabel - /submittx: #submit-api - post: - tags: - - Transactions - requestBody: - $ref: "#/components/requestBodies/txbin" - x-code-samples: - - lang: "Shell" - source: | - # Assuming ${data} is a raw binary serialized transaction on the file-system. - # If using a CLI-generated tx file, please ensure to deserialise (using `xxd -p -r <<< $(jq .cborHex ${tx.signed}) > ${data}`) first before submitting. - curl -X POST \ - --header "Content-Type: application/cbor" \ - --data-binary @${data} https://api.koios.rest/api/v1/submittx - responses: - "202": - description: OK - content: - application/json: - schema: - description: The transaction id. - type: string - format: hex - minLength: 64 - maxLength: 64 - example: 92bcd06b25dfbd89b578d536b4d3b7dd269b7c2aa206ed518012cffe0444d67f - "400": - description: An error occured while submitting transaction. - summary: Submit Transaction - description: Submit an already serialized transaction to the network. - operationId: submittx - /tx_status: #RPC - post: - tags: - - Transactions - requestBody: - $ref: "#/components/requestBodies/tx_ids" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/tx_status" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Transaction Status - description: Get the number of block confirmations for a given transaction hash list - operationId: tx_status - /tx_outs_epoch: #RPC - get: - tags: - - Transactions - parameters: - - $ref: "#/components/parameters/_epoch_no_reqd" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/tx_outs_epoch" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Transaction outputs by epoch - description: Get a list of all transaction outputs for requested epoch - operationId: tx_outs_epoch - /tx_utxos: #RPC - post: - deprecated: true - tags: - - Transactions - requestBody: - $ref: "#/components/requestBodies/tx_ids" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/tx_utxos" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Transaction UTxOs - description: Get UTxO set (inputs/outputs) of transactions [DEPRECATED - Use /utxo_info instead]. - operationId: tx_utxos - x-badges: - - color: red - label: "Deprecated" - - /address_list: #RPC - get: - tags: - - Address - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/address_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Address List - description: Get a list of all used address on blockchain - operationId: account_list - /address_info: #RPC - post: - tags: - - Address - requestBody: - $ref: "#/components/requestBodies/payment_addresses" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/address_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Address Information - description: Get address info - balance, associated stake address (if any) and UTxO set for given addresses - operationId: address_info - /address_utxos: #RPC - post: - tags: - - Address - requestBody: - $ref: "#/components/requestBodies/payment_addresses_with_extended" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/utxo_infos" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Address UTxOs - description: Get UTxO set for given addresses - operationId: address_utxos - /address_outputs: #RPC - post: - tags: - - Address - requestBody: - $ref: "#/components/requestBodies/address_txs" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/address_outputs" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Address Outputs - description: Basic transaction output info for given addresses - operationId: address_outputs - /credential_utxos: #RPC - post: - tags: - - Address - requestBody: - $ref: "#/components/requestBodies/credential_utxos" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/utxo_infos" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: UTxOs from payment credentials - description: Get UTxO details for requested payment credentials - operationId: credential_utxos - /address_txs: #RPC - post: - tags: - - Address - requestBody: - $ref: "#/components/requestBodies/address_txs" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/address_txs" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Address Transactions - description: Get the transaction hash list of input address array, optionally filtering after specified block height (inclusive) - operationId: address_txs - /credential_txs: #RPC - post: - tags: - - Address - requestBody: - $ref: "#/components/requestBodies/credential_txs" - responses: - "200": - description: Array of transaction hashes for given credential(s) - content: - application/json: - schema: - $ref: "#/components/schemas/address_txs" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Transactions from payment credentials - description: Get the transaction hash list of input payment credential array, optionally filtering after specified block height (inclusive) - operationId: credential_txs - /address_assets: #RPC - post: - tags: - - Address - requestBody: - $ref: "#/components/requestBodies/payment_addresses" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/address_assets" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Address Assets - description: Get the list of all the assets (policy, name and quantity) for given addresses - operationId: address_assets - - /account_list: #RPC - get: - tags: - - Stake Account - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account List - description: Get a list of all stake addresses that have atleast 1 transaction - operationId: account_list - /account_info: #RPC - post: - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Information - description: Get the account information for given stake addresses - operationId: account_info - /account_info_cached: #RPC - post: - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Information (Cached) - description: Get the cached account information for given stake addresses (effective for performance query against registered accounts) - operationId: account_info_cached - /account_utxos: #RPC - post: - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses_with_extended" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/utxo_infos" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: UTxOs for stake addresses (accounts) - description: Get a list of all UTxOs for given stake addresses (account)s - operationId: account_utxos - /account_txs: #RPC - get: - tags: - - Stake Account - parameters: - - $ref: "#/components/parameters/_stake_address" - - $ref: "#/components/parameters/_after_block_height" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/address_txs" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Txs - description: Get a list of all Txs for a given stake address (account) - operationId: account_txs - /account_rewards: #RPC - post: - deprecated: true - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses_with_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_rewards" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Rewards - description: >- - Get the full rewards history (including MIR) for given stake addresses - operationId: account_rewards - x-badges: - - color: red - label: "Deprecated" - /account_reward_history: #RPC - post: - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses_with_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_reward_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Reward History - description: >- - Get the full rewards history (including MIR) for given stake addresses - operationId: account_reward_history - /account_updates: #RPC - post: - deprecated: true - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_updates" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Updates - description: >- - Get the account updates (registration, deregistration, delegation and - withdrawals) for given stake addresses - operationId: account_updates - /account_update_history: #RPC - post: - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_update_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Update History - description: >- - Get the account updates (registration, deregistration, delegation and - withdrawals) for given stake addresses - operationId: account_update_history - /account_addresses: #RPC - post: - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses_with_first_only_and_empty" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_addresses" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Addresses - description: Get all addresses associated with given staking accounts - operationId: account_addresses - /account_assets: #RPC - post: - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_assets" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Assets - description: Get the native asset balance for a given stake address - operationId: account_assets - /account_history: #RPC - post: - deprecated: true - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account History - description: Get the staking history of given stake addresses (accounts) - operationId: account_history - x-badges: - - color: red - label: "Deprecated" - /account_stake_history: #RPC - post: - tags: - - Stake Account - requestBody: - $ref: "#/components/requestBodies/stake_addresses" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/account_stake_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Account Stake History - description: Get the staking history of given stake addresses (accounts) - operationId: account_stake_history - - /asset_list: #RPC - get: - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy" - - $ref: "#/components/parameters/_asset_name" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/asset_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Asset List - description: Get the list of all native assets (paginated). Use the optional parameters to filter efficiently, bypassing the performance cost of filtering the encoded output. Results are pre-sorted by policy ID and then asset name. - operationId: asset_list - /policy_asset_list: #RPC - get: - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy" - responses: - "200": - description: Array of brief information of assets under the same policy - content: - application/json: - schema: - $ref: "#/components/schemas/policy_asset_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Policy Asset List - description: Get the list of asset under the given policy (including balances) - operationId: policy_asset_list - /asset_token_registry: #RPC - get: - tags: - - Asset - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/asset_token_registry" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Asset Token Registry - description: Get a list of assets registered via token registry on github - operationId: asset_token_registry - /asset_info: #RPC - post: - tags: - - Asset - requestBody: - $ref: "#/components/requestBodies/asset_list" - responses: - "200": - description: Array of detailed asset information - content: - application/json: - schema: - $ref: "#/components/schemas/asset_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Asset Information (Bulk) - description: Get the information of a list of assets including first minting & token registry metadata - operationId: asset_info - /asset_utxos: #RPC - post: - tags: - - Asset - requestBody: - $ref: "#/components/requestBodies/asset_list_with_extended" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/utxo_infos" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Asset UTxOs - description: Get the UTxO information of a list of assets including - operationId: asset_utxos - /asset_history: #RPC - get: - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy" - - $ref: "#/components/parameters/_asset_name" - responses: - "200": - description: Array of asset mint/burn history - content: - application/json: - schema: - $ref: "#/components/schemas/asset_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Asset History - description: Get the mint/burn history of an asset - operationId: asset_history - /asset_addresses: #RPC - get: - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy" - - $ref: "#/components/parameters/_asset_name" - responses: - "200": - description: Success! - content: - application/json: - schema: - $ref: "#/components/schemas/asset_addresses" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Asset Addresses - description: Get the list of all addresses holding a given asset

    - `Note - Due to cardano's UTxO design and usage from projects, asset to addresses map can be infinite. Thus, for a small subset of active projects - with millions of transactions, these might end up with timeouts (HTTP code 504) on free layer. Such large-scale projects are free to subscribe to - query layers to have a dedicated cache table for themselves served via Koios.` - operationId: asset_addresses - /asset_nft_address: #RPC - get: - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy_nft" - - $ref: "#/components/parameters/_asset_name_nft" - responses: - "200": - description: Payment addresses currently holding the given NFT - content: - application/json: - schema: - $ref: "#/components/schemas/asset_nft_address" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: NFT Address - description: Get the address where specified NFT currently reside on. - operationId: asset_nft_address - /policy_asset_addresses: #RPC - get: - deprecated: true - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy" - responses: - "200": - description: Array of asset names and payment addresses for the given policy (including balances) - content: - application/json: - schema: - $ref: "#/components/schemas/policy_asset_addresses" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Policy Asset Address List - description: - Get the list of addresses with quantity for each asset on the given policy

    - `Note - Due to cardano's UTxO design and usage from projects, asset to addresses map can be infinite. Thus, for a small subset of active projects - with millions of transactions, these might end up with timeouts (HTTP code 504) on free layer. Such large-scale projects are free to subscribe to - query layers to have a dedicated cache table for themselves served via Koios.` - operationId: policy_asset_addresses - /policy_asset_info: #RPC - get: - deprecated: true - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy" - responses: - "200": - description: Array of detailed information of assets under the same policy - content: - application/json: - schema: - $ref: "#/components/schemas/policy_asset_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Policy Asset Information - description: Get the information for all assets under the same policy - operationId: policy_asset_info - /policy_asset_mints: #RPC - get: - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy" - responses: - "200": - description: Get a list of mint or burn count details for all assets minted under a policy - content: - application/json: - schema: - $ref: "#/components/schemas/policy_asset_mints" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Policy Asset Mints - description: Get a list of mint or burn count details for all assets minted under a policy - operationId: policy_asset_mints - /asset_summary: #RPC - get: - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy" - - $ref: "#/components/parameters/_asset_name" - responses: - "200": - description: Array of asset summary information - content: - application/json: - schema: - $ref: "#/components/schemas/asset_summary" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Asset Summary - description: Get the summary of an asset (total transactions exclude minting/total wallets include only wallets with asset balance) - operationId: asset_summary - /asset_txs: #RPC - get: - tags: - - Asset - parameters: - - $ref: "#/components/parameters/_asset_policy" - - $ref: "#/components/parameters/_asset_name" - - $ref: "#/components/parameters/_after_block_height" - - $ref: "#/components/parameters/_history" - responses: - "200": - description: An array of Tx hashes that included the given asset (latest first) - content: - application/json: - schema: - $ref: "#/components/schemas/address_txs" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Asset Transactions - description: Get the list of current or all asset transaction hashes (newest first) - operationId: asset_txs - - /drep_epoch_summary: #RPC - get: - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/drep_epoch_summary" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: DReps Epoch Summary - description: Summary of voting power and DRep count for each epoch - operationId: drep_epoch_summary - /drep_list: #RPC - get: - tags: - - Governance - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/drep_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: DReps List - description: List of all active delegated representatives (DReps) - operationId: drep_list - /drep_info: #RPC - post: - tags: - - Governance - requestBody: - $ref: "#/components/requestBodies/drep_id_bulk" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/drep_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: DReps Info - description: Get detailed information about requested delegated representatives (DReps) - operationId: drep_info - /drep_metadata: #RPC - post: - tags: - - Governance - requestBody: - $ref: "#/components/requestBodies/drep_id_bulk" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/drep_metadata" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: DReps Metadata - description: List metadata for requested delegated representatives (DReps) - operationId: drep_metadata - /drep_updates: #RPC - get: - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_drep_id_optional" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/drep_updates" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: DReps Updates - description: List of updates for requested (or all) delegated representatives (DReps) - operationId: drep_updates - /drep_history: #RPC - get: - deprecated: true - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_epoch_no" - - $ref: "#/components/parameters/_drep_id_optional" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/drep_voting_power_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: DReps Voting Power History - description: History of DReps voting power against each (or requested) epoch - operationId: drep_history - x-badges: - - color: red - label: "Deprecated" - /drep_voting_power_history: #RPC - get: - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_epoch_no" - - $ref: "#/components/parameters/_drep_id_optional" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/drep_voting_power_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: DReps Voting Power History - description: History of DReps voting power against each (or requested) epoch - operationId: drep_voting_power_history - /drep_votes: #RPC - get: - deprecated: true - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_drep_id" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/drep_votes" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: DReps Votes - description: List of all votes casted by requested delegated representative (DRep) - operationId: drep_votes - x-badges: - - color: red - label: "Deprecated" - /drep_delegators: #RPC - get: - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_drep_id" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/drep_delegators" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: DReps Delegators - description: List of all delegators to requested delegated representative (DRep). - operationId: drep_delegators - /committee_info: #RPC - get: - tags: - - Governance - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/committee_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Committee Information - description: Information about active committee and its members - operationId: committee_info - /committee_votes: #RPC - get: - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_cc_hot_id" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/committee_votes" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Committee Votes - description: List of all votes casted by given committee member or collective - operationId: committee_votes - /proposal_list: #RPC - get: - tags: - - Governance - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/proposal_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Proposals List - description: List of all governance proposals - operationId: proposal_list - /voter_proposal_list: #RPC - get: - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_voter_id" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/proposal_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Voter's Proposal List - description: List of all governance proposals for specified DRep, SPO or Committee credential - operationId: voter_proposal_list - /proposal_voting_summary: #RPC - get: - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_proposal_id" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/proposal_voting_summary" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Proposal Voting Summary - description: Summary of votes for given proposal - operationId: proposal_voting_summary - /proposal_votes: #RPC - get: - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_proposal_id" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/proposal_votes" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Proposal Votes - description: List of all votes cast on specified governance action - operationId: proposal_votes - /vote_list: #RPC - get: - tags: - - Governance - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/vote_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Vote List - description: List of all votes posted on-chain - operationId: vote_list - - /pool_list: #RPC - get: - tags: - - Pool - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool List - description: List of brief info for all pools - operationId: pool_list - /pool_info: #RPC - post: - tags: - - Pool - requestBody: - $ref: "#/components/requestBodies/pool_ids" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Information - description: Current pool statuses and details for a specified list of pool ids - operationId: pool_info - /pool_stake_snapshot: #RPC - get: - tags: - - Pool - parameters: - - $ref: "#/components/parameters/_pool_bech32" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_snapshot" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Stake Snapshot - description: Returns Mark, Set and Go stake snapshots for the selected pool, useful for leaderlog calculation - operationId: pool_stake_snapshot - /pool_delegators: #RPC - get: - tags: - - Pool - parameters: - - $ref: "#/components/parameters/_pool_bech32" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_delegators" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Delegators List - description: Return information about live delegators for a given pool. - operationId: pool_delegators - /pool_delegators_history: #RPC - get: - tags: - - Pool - parameters: - - $ref: "#/components/parameters/_pool_bech32" - - $ref: "#/components/parameters/_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_delegators_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Delegators History - description: Return information about active delegators (incl. history) for a given pool and epoch number (all epochs if not specified). - operationId: pool_delegators_history - /pool_invalid_delegators: #RPC - get: - tags: - - Pool - parameters: - - $ref: "#/components/parameters/_pool_bech32" - - $ref: "#/components/parameters/_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_invalid_delegators" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Invalid Delegators - description: Return information about delegators for a given pool that are invalid for the specified epoch. - operationId: pool_invalid_delegators - /pool_blocks: #RPC - get: - tags: - - Pool - parameters: - - $ref: "#/components/parameters/_pool_bech32" - - $ref: "#/components/parameters/_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_blocks" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Blocks - description: >- - Return information about blocks minted by a given pool for all epochs - (or _epoch_no if provided) - operationId: pool_blocks - /pool_owner_history: #RPC - post: - tags: - - Pool - requestBody: - $ref: "#/components/requestBodies/pool_ids" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_owner_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Owner History - description: >- - Return information about pool owner's historical stake and their promised pledge to their pools - operationId: pool_owner_history - /pool_history: #RPC - get: - tags: - - Pool - parameters: - - $ref: "#/components/parameters/_pool_bech32" - - $ref: "#/components/parameters/_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_history_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Stake, Block and Reward History - description: >- - Return information about pool stake, block and reward history in a given epoch _epoch_no - (or all epochs that pool existed for, in descending order if no _epoch_no was provided) - operationId: pool_history - /pool_updates: #RPC - get: - tags: - - Pool - parameters: - - $ref: "#/components/parameters/_pool_bech32_optional" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_updates" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Updates (History) - description: Return all pool updates for all pools or only updates for specific pool if specified - operationId: pool_updates - /pool_registrations: #RPC - get: - tags: - - Pool - parameters: - - $ref: "#/components/parameters/_pool_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_registrations" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Registrations - description: Return all pool registrations initiated in the requested epoch - operationId: pool_registrations - /pool_retirements: #RPC - get: - tags: - - Pool - parameters: - - $ref: "#/components/parameters/_epoch_no" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_registrations" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Retirements - description: Return all pool retirements initiated in the requested epoch - operationId: pool_retirements - /pool_relays: #RPC - get: - tags: - - Pool - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_relays" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Relays - description: A list of registered relays for all pools - operationId: pool_relays - /pool_voting_power_history: #RPC - get: - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_epoch_no" - - $ref: "#/components/parameters/_pool_bech32_optional" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_voting_power_history" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool's Voting Power History - description: History of Pool voting power against each (or requested) epoch - operationId: pool_voting_power_history - /pool_votes: #RPC - get: - deprecated: true - tags: - - Governance - parameters: - - $ref: "#/components/parameters/_pool_bech32" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_votes" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Votes - description: List of all votes casted by a pool - operationId: pool_votes - x-badges: - - color: red - label: "Deprecated" - - /pool_groups: #RPC - get: - tags: - - Pool - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_groups" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Groups - description: List of all registered pool and their groups across sources from [pool_groups](https://github.com/cardano-community/pool_groups) repository. This is only relevant for mainnet - operationId: pool_groups - /pool_metadata: #RPC - post: - tags: - - Pool - requestBody: - $ref: "#/components/requestBodies/pool_ids_optional" - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_metadata" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Metadata - description: Metadata (on & off-chain) for all pools - operationId: pool_metadata - /pool_calidus_keys: #RPC - get: - tags: - - Pool - responses: - "200": - description: Success!! - content: - application/json: - schema: - $ref: "#/components/schemas/pool_calidus_keys" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Pool Calidus Keys - description: List of valid calidus keys for all pools - operationId: pool_calidus_keys - - /script_info: #RPC - post: - tags: - - Script - requestBody: - $ref: "#/components/requestBodies/script_hashes" - responses: - "200": - description: Array of information for scripts requested - content: - application/json: - schema: - $ref: "#/components/schemas/script_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Script Information - description: List of script information for given script hashes - operationId: script_info - /native_script_list: #RPC - get: - tags: - - Script - responses: - "200": - description: List of native script and creation tx hash pairs - content: - application/json: - schema: - $ref: "#/components/schemas/script_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Native Script List - description: List of all existing native script hashes along with their creation transaction hashes - operationId: native_script_list - /plutus_script_list: #RPC - get: - tags: - - Script - responses: - "200": - description: List of Plutus script and creation tx hash pairs - content: - application/json: - schema: - $ref: "#/components/schemas/script_list" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Plutus Script List - description: List of all existing Plutus script hashes along with their creation transaction hashes - operationId: plutus_script_list - /script_redeemers: #RPC - get: - tags: - - Script - parameters: - - $ref: "#/components/parameters/_script_hash" - responses: - "200": - description: Array of all redeemers for a given script hash - content: - application/json: - schema: - $ref: "#/components/schemas/script_redeemers" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Script Redeemers - description: List of all redeemers for a given script hash - operationId: script_redeemers - /reference_script_utxos: #RPC - post: - tags: - - Script - requestBody: - $ref: "#/components/requestBodies/script_hashes" - responses: - "200": - description: Array of information for scripts requested - content: - application/json: - schema: - $ref: "#/components/schemas/script_utxos" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Reference Script UTxOs - description: List of all unspent UTxOs with a reference script matching given script hashes - operationId: reference_script_utxos - /script_utxos: #RPC - get: - deprecated: true - tags: - - Script - parameters: - - $ref: "#/components/parameters/_script_hash" - - $ref: "#/components/parameters/_extended" - responses: - "200": - description: List of UTxOs for a given script hash - content: - application/json: - schema: - $ref: "#/components/schemas/utxo_infos" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Script UTxOs - description: List of all UTxOs for a given script hash - operationId: script_utxos - /datum_info: #RPC - post: - tags: - - Script - requestBody: - $ref: "#/components/requestBodies/datum_hashes" - responses: - "200": - description: Array of datum information for given datum hashes - content: - application/json: - schema: - $ref: "#/components/schemas/datum_info" - "400": - $ref: "#/components/responses/BadRequest" - "401": - $ref: "#/components/responses/Unauthorized" - "404": - $ref: "#/components/responses/NotFound" - summary: Datum Information - description: List of datum information for given datum hashes - operationId: datum_info - - /ogmios: #ogmios-api - post: - tags: - - Ogmios - requestBody: - $ref: "#/components/requestBodies/ogmios" - responses: - "200": - description: Current tip of the chain, identified by a slot and a block header hash. - content: - application/json: - schema: - $ref: "#/components/schemas/ogmiostip" - "400": - $ref: "#/components/responses/BadRequest" - summary: Query Example - description: | - Query the current tip of the Network. - -
    -
    - We do support transparent forwarding for various methods from Ogmios, you can read about those here. -
    - operationId: ogmios - -components: - #!params!# - #!requestBodies!# - securitySchemes: - bearerAuth: - type: http - scheme: bearer - bearerFormat: JWT - description: JWT Bearer Auth token generated via https://koios.rest Profile page. Using this token value allows consumers to use higher limits than public unauthenticated requests. - #!schemas!# - headers: {} - responses: - NotFound: - description: The server does not recognise the combination of endpoint and parameters provided - Unauthorized: - description: Access token is missing or invalid - BadRequest: - description: The server cannot process the request due to invalid input -tags: - - name: Network - description: Query information about the network - x-tag-expanded: false - - name: Epoch - description: Query epoch-specific details - x-tag-expanded: false - - name: Block - description: Query information about particular block on chain - x-tag-expanded: false - - name: Transactions - description: Query blockchain transaction details - x-tag-expanded: false - - name: Stake Account - description: Query details about specific stake account addresses - x-tag-expanded: false - - name: Address - description: Query information about specific address(es) - x-tag-expanded: false - - name: Asset - description: Query Asset related informations - x-tag-expanded: false - - name: Governance - description: Query information about governance for network - x-tag-expanded: false - - name: Pool - description: Query information about specific pools - x-tag-expanded: false - - name: Script - description: Query information about specific scripts (Smart Contracts) - x-tag-expanded: false - - name: Ogmios - description: | - Various stateless queries against Ogmios v6 instance. Please note that ogmios follows JSON-RPC 2.0 method, the example spec on koios.rest is *ONLY* for `queryNetwork/tip`, - but all the methods listed below are all accepted. Instead of duplicating specs, we would refer you directly to Ogmios documentation [here](https://ogmios.dev/api) for complete specs. - -
    -
    - Note that for queries to be stateless across instances on the globe, we cannot acquire local state as successive calls will be across different instances. Additionally, `queryLedgerState/utxo` method is removed to avoid DDoS impacts. - Thus, we only expose the following methods from monitoring servers, instance providers can expose entire ogmios endpoints if desirable: -
    - - - ### Network - - [queryNetwork/blockHeight](https://ogmios.dev/api/#operation-publish-/?QueryNetworkBlockHeight) - - [queryNetwork/genesisConfiguration](https://ogmios.dev/api/#operation-publish-/?QueryNetworkGenesisConfiguration) - - [queryNetwork/startTime](https://ogmios.dev/api/#operation-publish-/?QueryNetworkStartTime) - - [queryNetwork/tip](https://ogmios.dev/api/#operation-publish-/?QueryNetworkTip) - ### Ledger-State - - [queryLedgerState/epoch](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateEpoch) - - [queryLedgerState/eraStart](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateEraStart) - - [queryLedgerState/eraSummaries](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateEraSummaries) - - [queryLedgerState/liveStakeDistribution](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateLiveStakeDistribution) - - [queryLedgerState/protocolParameters](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateProtocolParameters) - - [queryLedgerState/proposedProtocolParameters](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateProposedProtocolParameters) - - [queryLedgerState/stakePools](https://ogmios.dev/api/#operation-publish-/?QueryLedgerStateStakePools) - ### Transactions - - [submitTransaction](https://ogmios.dev/mini-protocols/local-tx-submission/#submitting-transactions) - - [evaluateTransaction](https://ogmios.dev/mini-protocols/local-tx-submission/#evaluating-transactions) - x-tag-expanded: true -security: - - {} - - bearerAuth: [] diff --git a/specs/templates/example-map.json b/specs/templates/example-map.json deleted file mode 100644 index 24757cb6..00000000 --- a/specs/templates/example-map.json +++ /dev/null @@ -1,241 +0,0 @@ -{ - "params": { - "_block_hash": { - "m": "f6192a1aaa6d3d05b4703891a6b66cd757801c61ace86cbe5ab0d66e07f601ab", - "pv": "6d6e3722c81a1b9bca9dd9b7f63cae096bd1f97f6ef1d67c178bacab1a248483", - "pp": "021486aaa71f3c20c9fb26864fc8b00f7966a9007ff21e0753f16b9532450aa8" - }, - "_epoch_no": { - "m": "320", - "pv": "675", - "pp": "166" - }, - "_earned_epoch_no": { - "m": "320", - "pv": "8", - "pp": "23" - }, - "_any_address": { - "m": "stake1u8yxtugdv63wxafy9d00nuz6hjyyp4qnggvc9a3vxh8yl0ckml2uz", - "pv": "stake_test1uqd2nz8ugrn6kwkflvmt9he8dr966dszfmm5lt66qdmn28qt4wff9", - "pp": "stake_test1uqc6cmh4um4t7x9p0nh5chlmf4txwhpw7572u8utuvgg80g47wc6x" - }, - "_address_assets": { - "m": "addr1q8h22z0n3zqecr9n4q9ysds2m2ms3dqesz575accjpc3jclw55yl8zypnsxt82q2fqmq4k4hpz6pnq9fafm33yr3r93sgnpdw6", - "pv": "addr_test1qphcrpt99pu2g2pwv32k8xqxa86pqswv2sa4tqefvruyfzeg3292mxuf3kq7nysjumlxjrlsfn9tp85r0l54l29x3qcsxxn580", - "pp": "addr_test1qps7qvkjm6dxa6pnd65surma3qkpng02cc0xfyh6zjksge343f8yzpwq3av7gauswp5ec7nj2e5fxve0nptaknn5904s7zmvuh" - }, - "_address": { - "m": "addr1qyp9kz50sh9c53hpmk3l4ewj9ur794t2hdqpngsjn3wkc5sztv9glpwt3frwrhdrltjaytc8ut2k4w6qrx3p98zad3fq07xe9g", - "pv": "addr_test1qzrxlwtmf4zzqndw6trwlgmyhnk8hncdx9w6ls9vvgy4xa0am5at75hv9zravxzwf5wlalxqm4jlr6u8qkp4t2unmdpsjvpe2n", - "pp": "addr_test1qr33ynuc6yg4w56mccww3kcwqn54el84225xhvgkukf6wm32ah6gtt8ca4g0jdjcw50fk5ng5kpuc5uz4qula3gdlywssd3nq3" - }, - "_stake_address": { - "m": "stake1u8yxtugdv63wxafy9d00nuz6hjyyp4qnggvc9a3vxh8yl0ckml2uz", - "pv": "stake_test1uzs5rxys8qy5jnr9g0mkj860ms5n92nrykmrgyumpf2ytmsejj4m6", - "pp": "stake_test1urkzeud48zxwnjc54emzmmc3gkg2r6d6tm2sd799jxjnqxqlfzmvk" - }, - "_tx_hash": { - "m": "f144a8264acf4bdfe2e1241170969c930d64ab6b0996a4a45237b623f1dd670e", - "pv": "f1592b29b79ae85d753913dd25644c60925a4a0683979faa33832fead4b4bd9c", - "pp": "d10133964da9e443b303917fd0b7644ae3d01c133deff85b4f59416c2d00f530" - }, - "_asset_policy": { - "m": "750900e4999ebe0d58f19b634768ba25e525aaf12403bfe8fe130501", - "pv": "065270479316f1d92e00f7f9f095ebeaac9d009c878dc35ce36d3404", - "pp": "c6e65ba7878b2f8ea0ad39287d3e2fd256dc5c4160fc19bdf4c4d87e" - }, - "_asset_name": { - "m": "424f4f4b", - "pv": "433374", - "pp": "7447454e53" - }, - "_asset_policy_nft": { - "m": "f0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9a", - "pv": "005b8ca355aec6125531ebea89bf9ef8df90121ea5717f0c55027e35", - "pp": "002126e5e7cb2f5b6ac52ef2cdb9308ff58bf6e3b62e29df447cec72" - }, - "_asset_name_nft": { - "m": "68616e646c65", - "pv": "4d43", - "pp": "74657374" - }, - "_drep_id": { - "m": "drep17l6sywnwqu9aedd6aumev42w39ln5zfl9nw7j4ak6u8swyrwvz3", - "pv": "drep17rksqsgqx8ej3rtc3x4gjm8a44u6w3qcshfm46yc9tq4zeffuzj", - "pp": "drep1ydmraa6kv8cvmry059v608tehl50nfmg0z764lmsqkvwurs40sw2z" - }, - "_cc_hot_id": { - "m": "cc_hot1qgqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqvcdjk7", - "pv": "cc_hot1qgqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqvcdjk7", - "pp": "cc_hot1qgqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqvcdjk7" - }, - "_proposal_id": { - "m": "gov_action1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpzklpgpf", - "pv": "gov_action17m93skslaxyd45gpr6ernkdzs852h564wsterr8l6lheu7hu7kvsqecyqdh", - "pp": "gov_action14lefp8upwhhq92xph7t075txshf9huxxh9d2ey05ml2n5hqgvlxqqp92kfl" - }, - "_voter_id": { - "m": "['pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg', 'drep1yt76he02dprm2af6x26vg76mhs2vajlg43cr9jh9dq3f2qs68ts3s']", - "pv": "['pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg', 'drep1yt76he02dprm2af6x26vg76mhs2vajlg43cr9jh9dq3f2qs68ts3s']", - "pp": "['pool1w83ux7vrwafrsuz044knxl9xxtr38q5jj2l3p28fl3g26faqqwg', 'drep1yt76he02dprm2af6x26vg76mhs2vajlg43cr9jh9dq3f2qs68ts3s']" - }, - "_pool_bech32": { - "m": "pool155efqn9xpcf73pphkk88cmlkdwx4ulkg606tne970qswczg3asc", - "pv": "pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q", - "pp": "pool1vw6fr9agt58djrp3w0t0lsn6t329t6eusqxz5ugd9w7ecyedsdv" - }, - "_pool_bech32_optional": { - "m": "pool155efqn9xpcf73pphkk88cmlkdwx4ulkg606tne970qswczg3asc", - "pv": "pool1leml52hm4fcp3hhe4zye08qz27llhj7d339p3gs0tl85cstx59q", - "pp": "pool1vw6fr9agt58djrp3w0t0lsn6t329t6eusqxz5ugd9w7ecyedsdv" - }, - "_pool_epoch_no": { - "m": "320", - "pv": "12", - "pp": "31" - }, - "_script_hash": { - "m": "d8480dc869b94b80e81ec91b0abe307279311fe0e7001a9488f61ff8", - "pv": "f758cf422ca0cbed7d9d6fad1eb5a3c70537d62e661ad450dd2a3810", - "pp": "14abafb323de75b7266fd0eab29b6ef562305e8a0dfbb64b07ef32c7" - } - }, - "requestBodies": { - "epoch_no": { - "m": "409", - "pv": "11", - "pp": "30" - }, - "asset1": { - "m": "['750900e4999ebe0d58f19b634768ba25e525aaf12403bfe8fe130501','424f4f4b']", - "pv": "['065270479316f1d92e00f7f9f095ebeaac9d009c878dc35ce36d3404','433374']", - "pp": "['c6e65ba7878b2f8ea0ad39287d3e2fd256dc5c4160fc19bdf4c4d87e','7447454e53']" - }, - "asset2": { - "m": "['f0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9a','6b6f696f732e72657374']", - "pv": "['189e2c53985411addb8df0f3e09f70e343da69f06746c408aba672a8','15fc257714a51769e192761d674db2ee2e80137428e522f9b914debb5f785301']", - "pp": "['777e6b4903dab74963ae581d39875c5dac16c09bb1f511c0af1ddda8','6141414441']" - }, - "stake_addresses1": { - "m": "stake1uyrx65wjqjgeeksd8hptmcgl5jfyrqkfq0xe8xlp367kphsckq250", - "pv": "stake_test1urqntq4wexjylnrdnp97qq79qkxxvrsa9lcnwr7ckjd6w0cr04y4p", - "pp": "stake_test1urq4rcynzj4uxqc74c852zky7wa6epgmn9r6k3j3gv7502q8jks0l" - }, - "stake_addresses2": { - "m": "stake1uxpdrerp9wrxunfh6ukyv5267j70fzxgw0fr3z8zeac5vyqhf9jhy", - "pv": "stake_test1up6wqzrw2h9vvjy5zfkjn0dwtymy5r29zyhf8fyhm6fat9c2am5hl", - "pp": "stake_test1ur4t5nhceyn2amfuj7z74uxmmj8jf9fmgd2egqw8c98ve3cp2g4wx" - }, - "payment_addresses1": { - "m": "addr1qy2jt0qpqz2z2z9zx5w4xemekkce7yderz53kjue53lpqv90lkfa9sgrfjuz6uvt4uqtrqhl2kj0a9lnr9ndzutx32gqleeckv", - "pv": "addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc", - "pp": "addr_test1vzpwq95z3xyum8vqndgdd9mdnmafh3djcxnc6jemlgdmswcve6tkw" - }, - "payment_addresses2": { - "m": "addr1q9xvgr4ehvu5k5tmaly7ugpnvekpqvnxj8xy50pa7kyetlnhel389pa4rnq6fmkzwsaynmw0mnldhlmchn2sfd589fgsz9dd0y", - "pv": "addr_test1vqneq3v0dqh3x3muv6ee3lt8e5729xymnxuavx6tndcjc2cv24ef9", - "pp": "addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc" - }, - "address_txs_after_block_height": { - "m": "6238675", - "pv": "40356", - "pp": "9417" - }, - "block_info1": { - "m": "fb9087c9f1408a7bbd7b022fd294ab565fec8dd3a8ef091567482722a1fa4e30", - "pv": "a4504e2495ed03b48be36676f430c54dca0769d29f72ebf18d493abf42d2167b", - "pp": "2abeb8d1c1227139763be30ddb7a2fd79abd7d44195fca87a7c836a510b2802d" - }, - "block_info2": { - "m": "60188a8dcb6db0d80628815be2cf626c4d17cb3e826cebfca84adaff93ad492a", - "pv": "8e7a6206d2b21ae4f26e7e09353fadae17f838a63d095c2be51acbd16e9b7716", - "pp": "4e790b758c495953bb33c4aad4a4b4c1b98f7c2ec135ebd3db21f32059481718" - }, - "block_info3": { - "m": "c6646214a1f377aa461a0163c213fc6b86a559a2d6ebd647d54c4eb00aaab015", - "pv": "1baaf7812ed48e663adb9eeaa68fe25034e5e30b4f8e56cc8600cac5e9d42ce7", - "pp": "389da613316d2aec61edc34d51f1b3d004891ab38c9419771e5e0a3b12de3ef6" - }, - "credential_txs_payment_credentials1": { - "m": "025b0a8f85cb8a46e1dda3fae5d22f07e2d56abb4019a2129c5d6c52", - "pv": "33c378cee41b2e15ac848f7f6f1d2f78155ab12d93b713de898d855f", - "pp": "b429738bd6cc58b5c7932d001aa2bd05cfea47020a556c8c753d4436" - }, - "credential_txs_payment_credentials2": { - "m": "13f6870c5e4f3b242463e4dc1f2f56b02a032d3797d933816f15e555", - "pv": "52e63f22c5107ed776b70f7b92248b02552fd08f3e747bc745099441", - "pp": "82e016828989cd9d809b50d6976d9efa9bc5b2c1a78d4b3bfa1bb83b" - }, - "drep_ids1": { - "m": "drep1yglrf4el8gghum239fggvfrau25k2576y4dvcz65r2ukj8sqpsc2k", - "pv": "drep1yt76he02dprm2af6x26vg76mhs2vajlg43cr9jh9dq3f2qs68ts3s", - "pp": "drep1ydmraa6kv8cvmry059v608tehl50nfmg0z764lmsqkvwurs40sw2z" - }, - "drep_ids2": { - "m": "drep1ytf9f78k7rkwk4cu6l2nvna22keu9yus4kqzc0hqspd36uszu0xc2", - "pv": "drep1g5vl99xcpv8uce5hhh50xe3fh68tl9f8hcprleekw0c6jhhr45f", - "pp": "drep1y25j98kvqf7t3tj4pvxwrjr2728dsrfekptgg3kxqrr56qqcny8sn" - }, - "tx_ids_tx_hashes1": { - "m": "f144a8264acf4bdfe2e1241170969c930d64ab6b0996a4a45237b623f1dd670e", - "pv": "f1592b29b79ae85d753913dd25644c60925a4a0683979faa33832fead4b4bd9c", - "pp": "d10133964da9e443b303917fd0b7644ae3d01c133deff85b4f59416c2d00f530" - }, - "tx_ids_tx_hashes2": { - "m": "0b8ba3bed976fa4913f19adc9f6dd9063138db5b4dd29cecde369456b5155e94", - "pv": "206f6da5b0b0de45605a95f5ce7e172be9674550f7dde3838c45cbf24bab8b00", - "pp": "145688d3619e7524510ea64c0ec6363b77a9b8da179ef9bb0273a0940d57d576" - }, - "txbin": { - "m": "f144a8264acf4bdfe2e1241170969c930d64ab6b0996a4a45237b623f1dd670e", - "pv": "f1592b29b79ae85d753913dd25644c60925a4a0683979faa33832fead4b4bd9c", - "pp": "d10133964da9e443b303917fd0b7644ae3d01c133deff85b4f59416c2d00f530" - }, - "utxo_ref1": { - "m": "f144a8264acf4bdfe2e1241170969c930d64ab6b0996a4a45237b623f1dd670e#0", - "pv": "206f6da5b0b0de45605a95f5ce7e172be9674550f7dde3838c45cbf24bab8b00#0", - "pp": "d10133964da9e443b303917fd0b7644ae3d01c133deff85b4f59416c2d00f530#0" - }, - "utxo_ref2": { - "m": "0b8ba3bed976fa4913f19adc9f6dd9063138db5b4dd29cecde369456b5155e94#0", - "pv": "f1592b29b79ae85d753913dd25644c60925a4a0683979faa33832fead4b4bd9c#0", - "pp": "145688d3619e7524510ea64c0ec6363b77a9b8da179ef9bb0273a0940d57d576#0" - }, - "pool_ids_pool_bech32_ids1": { - "m": "pool100wj94uzf54vup2hdzk0afng4dhjaqggt7j434mtgm8v2gfvfgp", - "pv": "pool1p90428kec03mjdya3k4gv5d20w7lmed7ca0snknef5j977l3y8l", - "pp": "pool1ext7qrwjzaxcdfhdnkq5mth59ukuu2atcg6tgqpmevpt7ratkta" - }, - "pool_ids_pool_bech32_ids2": { - "m": "pool102s2nqtea2hf5q0s4amj0evysmfnhrn4apyyhd4azcmsclzm96m", - "pv": "pool1wwh3k3ldzujdvgxllfwlnnkxyheafkacqlufnvpr77n5q72f9hw", - "pp": "pool1vw6fr9agt58djrp3w0t0lsn6t329t6eusqxz5ugd9w7ecyedsdv" - }, - "pool_ids_pool_bech32_ids3": { - "m": "pool102vsulhfx8ua2j9fwl2u7gv57fhhutc3tp6juzaefgrn7ae35wm", - "pv": "pool1p835jxsj8py5n34lrgk6fvpgpxxvh585qm8dzvp7ups37vdet5a", - "pp": "pool1ws42l6rawqjv58crs5l32v0eem3qnngpnjfd7epwd4lmjccc5cg" - }, - "script_hashes1": { - "m": "bd2119ee2bfb8c8d7c427e8af3c35d537534281e09e23013bca5b138", - "pv": "c6d963e8892916ab8753d3c342037cd122123c4dd783a07af21f8dac", - "pp": "a8e9f8f34fd631b1d5b9f41a90f4abc0d3935cea7baba0bb34c96f59" - }, - "script_hashes2": { - "m": "c0c671fba483641a71bb92d3a8b7c52c90bf1c01e2b83116ad7d4536", - "pv": "c0c671fba483641a71bb92d3a8b7c52c90bf1c01e2b83116ad7d4536", - "pp": "b4fd6dfe4a643aeec5d75dbb1f27198fc2aabf30bf92ed5470253792" - }, - "datum_hashes1": { - "m": "818ee3db3bbbd04f9f2ce21778cac3ac605802a4fcb00c8b3a58ee2dafc17d46", - "pv": "6181b3dc623cd8812caf027a3507e9b3095388a7cf3db65983e1fddd3a84c88c", - "pp": "5571e2c3549f15934a38382d1318707a86751fb70827f4cbd29b104480f1be9b" - }, - "datum_hashes2": { - "m": "45b0cfc220ceec5b7c1c62c4d4193d38e4eba48e8815729ce75f9c0ab0e4c1c0", - "pv": "f8ae55ff89e1f5366f23e16bcaf2073252337b96031a02d79e41d653b5f0a978", - "pp": "5f7212f546d7e7308ce99b925f05538db19981f4ea3084559c0b28a363245826" - } - } -} From be5af7b52657e4938089188622827791751b8431 Mon Sep 17 00:00:00 2001 From: KoT_B_KocMoce <49576827+hodlonaut@users.noreply.github.com> Date: Tue, 30 Jun 2026 20:57:07 +1000 Subject: [PATCH 02/13] Adding HardForkInitiation logic for pool votes (#404) ## Description As reported by API user, the proposal_voting_summary endpoint was reporting over 50% yes for pools votes for most recent HardForkInitiation proposals, when in fact more accurate total is in the 30s - due to 'always_abstain' logic not being supposedly applicable for hard fork gov actions (i.e. even if pool's reward address is delegating to always_abstain predefined Drep, unless they actively vote they are counted as 'no' voting power) ## Which issue it fixes? --- files/grest/rpc/governance/proposal_voting_summary.sql | 3 +++ 1 file changed, 3 insertions(+) diff --git a/files/grest/rpc/governance/proposal_voting_summary.sql b/files/grest/rpc/governance/proposal_voting_summary.sql index 1fdc7e57..54777d9b 100644 --- a/files/grest/rpc/governance/proposal_voting_summary.sql +++ b/files/grest/rpc/governance/proposal_voting_summary.sql @@ -306,6 +306,7 @@ BEGIN WHEN y.proposal_type IN ('TreasuryWithdrawals', 'NewConstitution') THEN 0 WHEN y.proposal_type IN ('NoConfidence') THEN ROUND((y.pool_yes_vote_power + y.pool_passive_always_no_confidence_vote_power) * 100 / y.pool_non_abstain_total, 2) WHEN y.proposal_type in ('ParameterChange') AND NOT grest.has_security_param(y.description) THEN 0 + WHEN y.proposal_type in ('HardForkInitiation') THEN ROUND(y.pool_yes_vote_power * 100 / (y.tot_pool_power - y.pool_abstain_vote_power), 2) ELSE ROUND(y.pool_yes_vote_power * 100 / y.pool_non_abstain_total, 2) END) AS pool_yes_pct, (CASE @@ -318,12 +319,14 @@ BEGIN WHEN y.proposal_type IN ('TreasuryWithdrawals', 'NewConstitution') THEN 0 WHEN y.proposal_type IN ('NoConfidence') THEN (y.pool_non_abstain_total - y.pool_yes_vote_power - y.pool_passive_always_no_confidence_vote_power) WHEN y.proposal_type in ('ParameterChange') AND NOT grest.has_security_param(y.description) THEN 0 + WHEN y.proposal_type in ('HardForkInitiation') THEN (y.tot_pool_power - y.pool_abstain_vote_power - y.pool_yes_vote_power) ELSE (y.pool_non_abstain_total - y.pool_yes_vote_power) END)::text AS pool_no_vote_power, (CASE WHEN y.proposal_type IN ('TreasuryWithdrawals', 'NewConstitution') THEN 0 WHEN y.proposal_type IN ('NoConfidence') THEN ROUND((y.pool_non_abstain_total - y.pool_yes_vote_power - y.pool_passive_always_no_confidence_vote_power) * 100 / y.pool_non_abstain_total, 2) WHEN y.proposal_type in ('ParameterChange') AND NOT grest.has_security_param(y.description) THEN 0 + WHEN y.proposal_type in ('HardForkInitiation') THEN ROUND((y.tot_pool_power - y.pool_abstain_vote_power - y.pool_yes_vote_power) * 100 / (y.tot_pool_power - y.pool_abstain_vote_power), 2) ELSE ROUND((y.pool_non_abstain_total - y.pool_yes_vote_power) * 100 / y.pool_non_abstain_total, 2) END) AS pool_no_pct, (SELECT COALESCE(SUM(pool_votes_cast), 0)::integer FROM active_prop_pool_votes WHERE vote = 'Abstain') AS pool_abstain_votes_cast, From c1a0769726a122fcaae902cb24ea2dcac3c5fef6 Mon Sep 17 00:00:00 2001 From: KoT_B_KocMoce <49576827+hodlonaut@users.noreply.github.com> Date: Fri, 3 Jul 2026 09:30:16 +1000 Subject: [PATCH 03/13] Committee vote calculation fixes (#405) Only join on latest committee registration record; disregard resigned members when calculating total committee size Follows a report from API user that current data for a proposal like ratified Tweag one is showing incorrect values both for numerator and denominator used in calculating the 'yes' % for committee --- .../governance/proposal_voting_summary.sql | 38 ++++++++++++++----- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/files/grest/rpc/governance/proposal_voting_summary.sql b/files/grest/rpc/governance/proposal_voting_summary.sql index 54777d9b..6b451740 100644 --- a/files/grest/rpc/governance/proposal_voting_summary.sql +++ b/files/grest/rpc/governance/proposal_voting_summary.sql @@ -72,6 +72,15 @@ BEGIN FROM gov_action_proposal AS gap WHERE proposal_id = gap.id ), + last_tx_id_of_interest AS ( + SELECT CASE + WHEN (SELECT MAX(no) FROM epoch) = ped.epoch_of_interest THEN + (SELECT t.id FROM tx AS t ORDER BY id DESC LIMIT 1) + ELSE + (SELECT MAX(i_last_tx_id) FROM grest.epoch_info_cache AS eic WHERE eic.epoch_no <= ped.epoch_of_interest) + END AS tx_id + FROM proposal_epoch_data ped + ), tot_drep_power AS ( SELECT ped.gov_action_proposal_id, SUM(amount) AS tot_drep_power FROM drep_distr AS dd @@ -183,18 +192,13 @@ BEGIN SUM(pstat.voting_power) passive_pool_vote_total, COUNT(*) AS pool_votes_cast FROM _all_non_voted_pool_info AS api + CROSS JOIN last_tx_id_of_interest INNER JOIN proposal_epoch_data AS ped ON true INNER JOIN public.pool_update AS pu ON pu.id = api.update_id INNER JOIN public.stake_address AS sa ON pu.reward_addr_id = sa.id INNER JOIN delegation_vote AS dv on dv.addr_id = sa.id AND dv.tx_id = (SELECT MAX(tx_id) FROM delegation_vote dv2 WHERE dv2.addr_id = sa.id -- get the details of most recent vote delegation for this addr before last tx of epoch-of-interest - AND tx_id <= -- TODO - maybe calculate these once off in the early CTE and use it from there - (CASE - WHEN (SELECT MAX(no) FROM epoch) = ped.epoch_of_interest THEN - (SELECT t.id FROM tx AS t ORDER BY id DESC LIMIT 1) - ELSE - (SELECT MAX(i_last_tx_id) FROM grest.epoch_info_cache AS eic WHERE eic.epoch_no <= ped.epoch_of_interest) - END) + AND tx_id <= last_tx_id_of_interest.tx_id ) INNER JOIN drep_hash AS dh on dh.id = dv.drep_hash_id and dh.view like 'drep_always%' @@ -211,7 +215,13 @@ BEGIN INNER JOIN latest_votes AS vp ON vp.voter_role = 'ConstitutionalCommittee' -- TODO: add logic to only count valid committee member votes, need a way to get committee ids for a given epoch... - INNER JOIN committee_registration cr ON cr.hot_key_id = vp.committee_voter + INNER JOIN LATERAL ( + -- avoid joining on multiple rows if committee member had multiple registrations + SELECT * FROM committee_registration + WHERE hot_key_id = vp.committee_voter + ORDER BY id DESC + LIMIT 1 + ) cr on true INNER JOIN committee_member cm ON cr.cold_key_id = cm.committee_hash_id INNER JOIN committee c ON c.id = cm.committee_id AND c.id = (SELECT id FROM committee @@ -233,11 +243,21 @@ BEGIN tot_committee_size AS ( SELECT ped.gov_action_proposal_id, - count(cm.id) AS committee_size + count(distinct cm.id) AS committee_size FROM epoch_state AS epstate + CROSS JOIN last_tx_id_of_interest INNER JOIN proposal_epoch_data AS ped on epstate.epoch_no = ped.epoch_of_interest LEFT OUTER JOIN committee AS c on epstate.committee_id = c.id LEFT OUTER JOIN committee_member AS cm on cm.committee_id = c.id + LEFT OUTER JOIN public.committee_hash AS ch_cold ON ch_cold.id = cm.committee_hash_id + -- check that committee member hasn't deregistered since last registration, before cutoff epoch's end + WHERE NOT EXISTS ( + SELECT true + FROM committee_de_registration AS cdr + WHERE cdr.cold_key_id = ch_cold.id + AND cdr.tx_id <= last_tx_id_of_interest.tx_id + AND cdr.tx_id > (SELECT MAX(tx_id) FROM public.committee_registration WHERE cold_key_id = ch_cold.id and tx_id <= last_tx_id_of_interest.tx_id) + ) GROUP BY ped.gov_action_proposal_id ), combined_data AS ( From 05f9a528338b0ae8d2715187a10d4c8bc6fa7468 Mon Sep 17 00:00:00 2001 From: KoT_B_KocMoce <49576827+hodlonaut@users.noreply.github.com> Date: Mon, 6 Jul 2026 12:10:20 +1000 Subject: [PATCH 04/13] Fixing retiring pool updates and changing retired status trigger (#406) Epoch is moving from table to view, so relocating previous trigger to epoch_state table; added extra block of logic to cater for simplistic pool schedule retirement actions. Will also use this PR to correct return data type on epoch_no in proposal_voting_summary function ## Description ## Which issue it fixes? --- .../rpc/00_cached_tables/pool_info_cache.sql | 29 +++++++++++++++++-- .../governance/proposal_voting_summary.sql | 2 +- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/files/grest/rpc/00_cached_tables/pool_info_cache.sql b/files/grest/rpc/00_cached_tables/pool_info_cache.sql index 14e6710b..9eff6cdb 100644 --- a/files/grest/rpc/00_cached_tables/pool_info_cache.sql +++ b/files/grest/rpc/00_cached_tables/pool_info_cache.sql @@ -31,6 +31,7 @@ DECLARE _current_epoch_no word31type; _pool_info_cache_last_block_height bigint; _pool_info_cache_last_tx_id bigint; + _updated_count bigint; BEGIN SELECT MAX(block_no) FROM public.block WHERE block_no IS NOT NULL INTO _current_block_height; @@ -150,6 +151,28 @@ BEGIN pool_status = EXCLUDED.pool_status, retiring_epoch = EXCLUDED.retiring_epoch; + -- following is needed because simple retirement cert submission doesn't seem to generate new pool_update row in latest db syncs + WITH latest_scheduled_retirements AS ( + SELECT DISTINCT ON (pr.hash_id) + pr.hash_id, + pr.retiring_epoch + FROM public.pool_retire AS pr + WHERE pr.announced_tx_id > _pool_info_cache_last_tx_id + -- only looking at pool_retirement requests not followed by update or that are part of update + AND NOT EXISTS + ( SELECT null + FROM public.pool_update pu + WHERE pu.hash_id = pr.hash_id AND pu.registered_tx_id >= pr.announced_tx_id ) + ORDER BY hash_id, announced_tx_id DESC, cert_index DESC + ) + UPDATE grest.pool_info_cache + SET pool_status = 'retiring', retiring_epoch = latest_scheduled_retirements.retiring_epoch + FROM latest_scheduled_retirements + WHERE grest.pool_info_cache.pool_hash_id = latest_scheduled_retirements.hash_id; + + GET DIAGNOSTICS _updated_count = ROW_COUNT; + RAISE NOTICE 'Updated % records for scheduled retirement', _updated_count; + INSERT INTO grest.control_table (key, last_value) VALUES ( 'pool_info_cache_last_block_height', @@ -222,17 +245,17 @@ BEGIN UPDATE grest.pool_info_cache SET pool_status = 'retired' WHERE pool_status = 'retiring' - AND retiring_epoch <= new.no; + AND retiring_epoch <= new.epoch_no; RETURN NULL; END; $$; COMMENT ON FUNCTION grest.pool_info_retire_status IS 'Internal function to update pool_info_cache with new retire status based ON epoch switch'; -- noqa: LT01 -DROP TRIGGER IF EXISTS pool_info_retire_status_trigger ON public.epoch; +DROP TRIGGER IF EXISTS pool_info_retire_status_trigger ON public.epoch_state; CREATE TRIGGER pool_info_retire_status_trigger -AFTER INSERT ON public.epoch +AFTER INSERT ON public.epoch_state FOR EACH ROW EXECUTE FUNCTION grest.pool_info_retire_status(); diff --git a/files/grest/rpc/governance/proposal_voting_summary.sql b/files/grest/rpc/governance/proposal_voting_summary.sql index 6b451740..c5aaafc8 100644 --- a/files/grest/rpc/governance/proposal_voting_summary.sql +++ b/files/grest/rpc/governance/proposal_voting_summary.sql @@ -1,7 +1,7 @@ CREATE OR REPLACE FUNCTION grest.proposal_voting_summary(_proposal_id text) RETURNS TABLE ( proposal_type text, - epoch_no integer, + epoch_no bigint, drep_yes_votes_cast integer, drep_active_yes_vote_power text, drep_yes_vote_power text, From 1f8e62c59ee8d3370ae1f4cdadeecc30f1d2e173 Mon Sep 17 00:00:00 2001 From: rdlrt <3169068+rdlrt@users.noreply.github.com> Date: Mon, 6 Jul 2026 12:33:27 +1000 Subject: [PATCH 05/13] Add previous_gov_action_proposal_id field to proposal_list, closes #402 --- files/grest/rpc/governance/proposal_list.sql | 7 +++++++ specs/fragments/info.yaml | 2 +- specs/fragments/schemas/governance.yaml | 6 ++++++ specs/results/koiosapi-mainnet.yaml | 10 ++++++++-- specs/results/koiosapi-preprod.yaml | 10 ++++++++-- specs/results/koiosapi-preview.yaml | 10 ++++++++-- 6 files changed, 38 insertions(+), 7 deletions(-) diff --git a/files/grest/rpc/governance/proposal_list.sql b/files/grest/rpc/governance/proposal_list.sql index 20549ae3..d0e3ceb1 100644 --- a/files/grest/rpc/governance/proposal_list.sql +++ b/files/grest/rpc/governance/proposal_list.sql @@ -6,6 +6,7 @@ RETURNS TABLE ( proposal_index integer, proposal_type text, proposal_description jsonb, + previous_gov_action_proposal_id text, deposit text, return_address text, proposed_epoch integer, @@ -32,6 +33,10 @@ AS $$ gap.index, gap.type, gap.description, + CASE + WHEN gap.prev_gov_action_proposal IS NULL THEN NULL + ELSE grest.cip129_to_gov_action_id(prev_tx.hash, prev_gap.index) + END AS previous_gov_action_proposal_id, gap.deposit::text, grest.cip5_hex_to_stake_addr(sa.hash_raw)::text, b.epoch_no, @@ -68,6 +73,8 @@ AS $$ LEFT JOIN public.cost_model AS cm ON cm.id = pp.cost_model_id LEFT JOIN public.voting_anchor AS va ON gap.voting_anchor_id = va.id LEFT JOIN public.off_chain_vote_data AS ocvd ON va.id = ocvd.voting_anchor_id + LEFT JOIN public.gov_action_proposal AS prev_gap ON gap.prev_gov_action_proposal = prev_gap.id + LEFT JOIN public.tx AS prev_tx ON prev_gap.tx_id = prev_tx.id ORDER BY b.time DESC; $$; diff --git a/specs/fragments/info.yaml b/specs/fragments/info.yaml index d2ed7093..408b9325 100644 --- a/specs/fragments/info.yaml +++ b/specs/fragments/info.yaml @@ -7,7 +7,7 @@ info: license: name: Creative Commons Attribution 4.0 International url: https://github.com/cardano-community/koios-artifacts/blob/main/LICENSE - version: v1.4.1 + version: v1.4.2 description: | Koios is best described as a Decentralized and Elastic RESTful query layer for exploring data on Cardano blockchain to consume within applications/wallets/explorers/etc. This page not only provides an OpenAPI Spec for live implementation, but also ability to execute live demo from client browser against each endpoint with pre-filled examples. diff --git a/specs/fragments/schemas/governance.yaml b/specs/fragments/schemas/governance.yaml index 3bb9980a..890c7689 100644 --- a/specs/fragments/schemas/governance.yaml +++ b/specs/fragments/schemas/governance.yaml @@ -366,6 +366,12 @@ type: object description: Description for Proposal Action example: '{"tag": "InfoAction"}' + previous_gov_action_proposal_id: + anyOf: + - type: string + - type: "null" + description: If not null, the CIP-129 formatted governance action ID of the previous governance action in a chain of actions (e.g. for NewConstitution or HardForkInitiation) + example: "gov_action17m93skslaxyd45gpr6ernkdzs852h564wsterr8l6lheu7hu7kvsqecyqdh" deposit: $ref: "#/components/schemas/drep_info/items/properties/deposit" return_address: diff --git a/specs/results/koiosapi-mainnet.yaml b/specs/results/koiosapi-mainnet.yaml index 7089c2cf..32a3f1f5 100644 --- a/specs/results/koiosapi-mainnet.yaml +++ b/specs/results/koiosapi-mainnet.yaml @@ -8,7 +8,7 @@ info: license: name: Creative Commons Attribution 4.0 International url: https://github.com/cardano-community/koios-artifacts/blob/main/LICENSE - version: v1.4.1 + version: v1.4.2 description: | Koios is best described as a Decentralized and Elastic RESTful query layer for exploring data on Cardano blockchain to consume within applications/wallets/explorers/etc. This page not only provides an OpenAPI Spec for live implementation, but also ability to execute live demo from client browser against each endpoint with pre-filled examples. @@ -144,7 +144,7 @@ info: A big thank you to the following projects who are already starting to use Koios from early days. A list of tools, libraries and projects utilising Koios (atleast those who'd like to be named) can be found [here](https://www.koios.rest/community.html) x-logo: - url: "https://api.koios.rest/images/koios.png" + url: "https://api.koios.rest/images/koios.svg" servers: - url: https://api.koios.rest/api/v1 description: Mainnet @@ -6441,6 +6441,12 @@ components: type: object description: Description for Proposal Action example: '{"tag": "InfoAction"}' + previous_gov_action_proposal_id: + anyOf: + - type: string + - type: "null" + description: If not null, the CIP-129 formatted governance action ID of the previous governance action in a chain of actions (e.g. for NewConstitution or HardForkInitiation) + example: "gov_action17m93skslaxyd45gpr6ernkdzs852h564wsterr8l6lheu7hu7kvsqecyqdh" deposit: $ref: "#/components/schemas/drep_info/items/properties/deposit" return_address: diff --git a/specs/results/koiosapi-preprod.yaml b/specs/results/koiosapi-preprod.yaml index 55f0386b..c4f54473 100644 --- a/specs/results/koiosapi-preprod.yaml +++ b/specs/results/koiosapi-preprod.yaml @@ -8,7 +8,7 @@ info: license: name: Creative Commons Attribution 4.0 International url: https://github.com/cardano-community/koios-artifacts/blob/main/LICENSE - version: v1.4.1 + version: v1.4.2 description: | Koios is best described as a Decentralized and Elastic RESTful query layer for exploring data on Cardano blockchain to consume within applications/wallets/explorers/etc. This page not only provides an OpenAPI Spec for live implementation, but also ability to execute live demo from client browser against each endpoint with pre-filled examples. @@ -144,7 +144,7 @@ info: A big thank you to the following projects who are already starting to use Koios from early days. A list of tools, libraries and projects utilising Koios (atleast those who'd like to be named) can be found [here](https://www.koios.rest/community.html) x-logo: - url: "https://api.koios.rest/images/koios.png" + url: "https://api.koios.rest/images/koios.svg" servers: - url: https://api.koios.rest/api/v1 description: Mainnet @@ -6441,6 +6441,12 @@ components: type: object description: Description for Proposal Action example: '{"tag": "InfoAction"}' + previous_gov_action_proposal_id: + anyOf: + - type: string + - type: "null" + description: If not null, the CIP-129 formatted governance action ID of the previous governance action in a chain of actions (e.g. for NewConstitution or HardForkInitiation) + example: "gov_action17m93skslaxyd45gpr6ernkdzs852h564wsterr8l6lheu7hu7kvsqecyqdh" deposit: $ref: "#/components/schemas/drep_info/items/properties/deposit" return_address: diff --git a/specs/results/koiosapi-preview.yaml b/specs/results/koiosapi-preview.yaml index b3e2e38d..c3647783 100644 --- a/specs/results/koiosapi-preview.yaml +++ b/specs/results/koiosapi-preview.yaml @@ -8,7 +8,7 @@ info: license: name: Creative Commons Attribution 4.0 International url: https://github.com/cardano-community/koios-artifacts/blob/main/LICENSE - version: v1.4.1 + version: v1.4.2 description: | Koios is best described as a Decentralized and Elastic RESTful query layer for exploring data on Cardano blockchain to consume within applications/wallets/explorers/etc. This page not only provides an OpenAPI Spec for live implementation, but also ability to execute live demo from client browser against each endpoint with pre-filled examples. @@ -144,7 +144,7 @@ info: A big thank you to the following projects who are already starting to use Koios from early days. A list of tools, libraries and projects utilising Koios (atleast those who'd like to be named) can be found [here](https://www.koios.rest/community.html) x-logo: - url: "https://api.koios.rest/images/koios.png" + url: "https://api.koios.rest/images/koios.svg" servers: - url: https://api.koios.rest/api/v1 description: Mainnet @@ -6441,6 +6441,12 @@ components: type: object description: Description for Proposal Action example: '{"tag": "InfoAction"}' + previous_gov_action_proposal_id: + anyOf: + - type: string + - type: "null" + description: If not null, the CIP-129 formatted governance action ID of the previous governance action in a chain of actions (e.g. for NewConstitution or HardForkInitiation) + example: "gov_action17m93skslaxyd45gpr6ernkdzs852h564wsterr8l6lheu7hu7kvsqecyqdh" deposit: $ref: "#/components/schemas/drep_info/items/properties/deposit" return_address: From 27fe6e34439c35d54d9e356b9d200e5725b4192b Mon Sep 17 00:00:00 2001 From: KoT_B_KocMoce <49576827+hodlonaut@users.noreply.github.com> Date: Mon, 6 Jul 2026 14:40:09 +1000 Subject: [PATCH 06/13] Update pool_info_cache.sql --- files/grest/rpc/00_cached_tables/pool_info_cache.sql | 1 + 1 file changed, 1 insertion(+) diff --git a/files/grest/rpc/00_cached_tables/pool_info_cache.sql b/files/grest/rpc/00_cached_tables/pool_info_cache.sql index 9eff6cdb..89dd101b 100644 --- a/files/grest/rpc/00_cached_tables/pool_info_cache.sql +++ b/files/grest/rpc/00_cached_tables/pool_info_cache.sql @@ -158,6 +158,7 @@ BEGIN pr.retiring_epoch FROM public.pool_retire AS pr WHERE pr.announced_tx_id > _pool_info_cache_last_tx_id + AND pr.retiring_epoch > _current_epoch_no -- this is needed to cater for cache rebuilds -- only looking at pool_retirement requests not followed by update or that are part of update AND NOT EXISTS ( SELECT null From d395e60556ecd637426cce30c70d176e1d1b23cf Mon Sep 17 00:00:00 2001 From: KoT_B_KocMoce <49576827+hodlonaut@users.noreply.github.com> Date: Tue, 7 Jul 2026 21:15:24 +1000 Subject: [PATCH 07/13] Update epoch_info_cache.sql --- files/grest/rpc/00_cached_tables/epoch_info_cache.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/grest/rpc/00_cached_tables/epoch_info_cache.sql b/files/grest/rpc/00_cached_tables/epoch_info_cache.sql index a0f7ba22..14cf3d4a 100644 --- a/files/grest/rpc/00_cached_tables/epoch_info_cache.sql +++ b/files/grest/rpc/00_cached_tables/epoch_info_cache.sql @@ -47,7 +47,7 @@ BEGIN IF _latest_epoch_no_in_cache = 0 THEN RAISE NOTICE 'Epoch info cache table is empty, starting initial population...'; - PERFORM grest.epoch_summary_corrections_update(); + -- commenting out for now, epoch is now view and hopefully bugs have been fixed: PERFORM grest.epoch_summary_corrections_update(); PERFORM grest.epoch_info_cache_update(0); RETURN; END IF; From 9f56be92431c920220bb02d05c561e7ed13dea28 Mon Sep 17 00:00:00 2001 From: KoT_B_KocMoce <49576827+hodlonaut@users.noreply.github.com> Date: Thu, 9 Jul 2026 11:04:42 +1000 Subject: [PATCH 08/13] Max epoch calculated via epoch param (#408) ## Description Due to performance issues with new 'epoch' view, changes to utilize max(epoch_no) from epoch_param instead --------- Co-authored-by: Greg Beresnev --- .../grest/cron/jobs/populate-next-epoch-nonce.sh | 2 +- .../rpc/000_utilities/is_dangling_delegation.sql | 2 +- .../rpc/00_cached_tables/epoch_info_cache.sql | 4 ++-- .../rpc/00_cached_tables/pool_history_cache.sql | 2 +- .../rpc/00_cached_tables/pool_info_cache.sql | 2 +- .../stake_distribution_cache.sql | 6 +++--- files/grest/rpc/account/account_info.sql | 16 ++++++++-------- files/grest/rpc/account/account_info_cached.sql | 12 ++++++------ files/grest/rpc/epoch/epoch_block_protocols.sql | 2 +- files/grest/rpc/epoch/epoch_info.sql | 2 +- files/grest/rpc/epoch/epoch_params.sql | 2 +- .../epoch/epoch_summary_corrections_update.sql | 2 +- files/grest/rpc/governance/drep_info.sql | 2 +- .../rpc/governance/drep_voting_power_history.sql | 2 +- .../rpc/governance/proposal_voting_summary.sql | 8 ++++---- files/grest/rpc/pool/pool_delegators.sql | 4 ++-- files/grest/rpc/pool/pool_history.sql | 2 +- files/grest/rpc/pool/pool_info.sql | 2 +- files/grest/rpc/pool/pool_list.sql | 2 +- files/grest/rpc/pool/pool_stake_snapshot.sql | 2 +- files/grest/rpc/pool/pool_updates.sql | 2 +- .../transactions/tx_treasury_donations_epoch.sql | 2 +- 22 files changed, 41 insertions(+), 41 deletions(-) diff --git a/files/grest/cron/jobs/populate-next-epoch-nonce.sh b/files/grest/cron/jobs/populate-next-epoch-nonce.sh index 0475e1b4..9aaf08be 100755 --- a/files/grest/cron/jobs/populate-next-epoch-nonce.sh +++ b/files/grest/cron/jobs/populate-next-epoch-nonce.sh @@ -9,7 +9,7 @@ export CARDANO_NODE_SOCKET_PATH= echo "$(date +%F_%H:%M:%S) Running next epoch nonce calculation..." # TODO possibly initialize EPOCH_LENGTH from database as well -PROTO_MAJ=$(psql ${DB_NAME} -c "select protocol_major from epoch_param where epoch_no = (select max(no) from epoch);" -t) +PROTO_MAJ=$(psql ${DB_NAME} -c "select protocol_major from epoch_param where epoch_no = (select max(epoch_no) from public.epoch_param);" -t) SECURITY_PARAM=$(psql ${DB_NAME} -c "select securityparam from grest.genesis;" -t) ACTIVE_SLOT_COEFF=$(psql ${DB_NAME} -c "select activeslotcoeff from grest.genesis;" -t) WINDOW_SIZE=2 diff --git a/files/grest/rpc/000_utilities/is_dangling_delegation.sql b/files/grest/rpc/000_utilities/is_dangling_delegation.sql index 5280c430..2c9f2ee4 100644 --- a/files/grest/rpc/000_utilities/is_dangling_delegation.sql +++ b/files/grest/rpc/000_utilities/is_dangling_delegation.sql @@ -8,7 +8,7 @@ DECLARE BEGIN - SELECT INTO curr_epoch MAX(no) FROM epoch; + SELECT INTO curr_epoch MAX(epoch_param.epoch_no) FROM public.epoch_param; -- revised logic: -- check for any pool retirement record exists for the pool corresponding to given delegation -- pool retiring epoch is current or in the past (future scheduled retirements don't count) diff --git a/files/grest/rpc/00_cached_tables/epoch_info_cache.sql b/files/grest/rpc/00_cached_tables/epoch_info_cache.sql index 14cf3d4a..77b5c08a 100644 --- a/files/grest/rpc/00_cached_tables/epoch_info_cache.sql +++ b/files/grest/rpc/00_cached_tables/epoch_info_cache.sql @@ -37,8 +37,8 @@ BEGIN RAISE EXCEPTION 'Previous epoch_info_cache_update query still running but should have completed! Exiting...'; END IF; - SELECT MAX(no) INTO _curr_epoch - FROM public.epoch; + SELECT MAX(epoch_no) INTO _curr_epoch + FROM public.epoch_param; IF _epoch_no_to_insert_from IS NULL THEN SELECT COALESCE(MAX(epoch_no), 0) INTO _latest_epoch_no_in_cache diff --git a/files/grest/rpc/00_cached_tables/pool_history_cache.sql b/files/grest/rpc/00_cached_tables/pool_history_cache.sql index be9c7b88..d66331dd 100644 --- a/files/grest/rpc/00_cached_tables/pool_history_cache.sql +++ b/files/grest/rpc/00_cached_tables/pool_history_cache.sql @@ -214,7 +214,7 @@ BEGIN END IF; SELECT COALESCE(MAX(epoch_no), 0) INTO _latest_epoch_no_in_cache FROM grest.pool_history_cache; - SELECT MAX(no) INTO _curr_epoch FROM epoch; + SELECT MAX(epoch_param.epoch_no) INTO _curr_epoch FROM public.epoch_param; IF _epoch_no_to_insert_from IS NULL THEN IF _latest_epoch_no_in_cache = 0 THEN diff --git a/files/grest/rpc/00_cached_tables/pool_info_cache.sql b/files/grest/rpc/00_cached_tables/pool_info_cache.sql index 89dd101b..42502c0b 100644 --- a/files/grest/rpc/00_cached_tables/pool_info_cache.sql +++ b/files/grest/rpc/00_cached_tables/pool_info_cache.sql @@ -35,7 +35,7 @@ DECLARE BEGIN SELECT MAX(block_no) FROM public.block WHERE block_no IS NOT NULL INTO _current_block_height; - SELECT MAX(no) FROM public.epoch into _current_epoch_no; + SELECT MAX(epoch_param.epoch_no) FROM public.epoch_param into _current_epoch_no; SELECT COALESCE(last_value::bigint, 0) INTO _pool_info_cache_last_block_height FROM grest.control_table WHERE key = 'pool_info_cache_last_block_height'; SELECT COALESCE(MAX(tx.id), 0) INTO _pool_info_cache_last_tx_id diff --git a/files/grest/rpc/00_cached_tables/stake_distribution_cache.sql b/files/grest/rpc/00_cached_tables/stake_distribution_cache.sql index e4d19d98..cdb8fef5 100644 --- a/files/grest/rpc/00_cached_tables/stake_distribution_cache.sql +++ b/files/grest/rpc/00_cached_tables/stake_distribution_cache.sql @@ -28,7 +28,7 @@ BEGIN SELECT (eic.i_last_tx_id) INTO _last_account_tx_id FROM grest.epoch_info_cache AS eic WHERE eic.epoch_no = _active_stake_epoch; - SELECT MAX(no) INTO _latest_epoch FROM public.epoch WHERE no IS NOT NULL; + SELECT MAX(epoch_param.epoch_no) INTO _latest_epoch FROM public.epoch_param WHERE epoch_param.epoch_no IS NOT NULL; WITH dangling_delegations AS ( @@ -316,14 +316,14 @@ BEGIN FROM grest.control_table WHERE key = 'last_active_stake_validated_epoch' ) OR ( - SELECT ((SELECT MAX(no) FROM epoch) - COALESCE((last_value::integer - 2)::integer, 0 )) > 2 + SELECT ((SELECT MAX(epoch_param.epoch_no) FROM public.epoch_param) - COALESCE((last_value::integer - 2)::integer, 0 )) > 2 FROM grest.control_table WHERE key = 'last_active_stake_validated_epoch' ) THEN RAISE EXCEPTION 'Active Stake cache too far, skipping...'; ELSIF ( SELECT - ((SELECT MAX(no) FROM epoch) - (SELECT MAX(epoch_no)::integer FROM grest.epoch_info_cache))::integer > 0 + ((SELECT MAX(epoch_param.epoch_no) FROM public.epoch_param) - (SELECT MAX(epoch_no)::integer FROM grest.epoch_info_cache))::integer > 0 ) THEN RAISE EXCEPTION 'Epoch Info cache wasnt run yet, skipping...'; END IF; diff --git a/files/grest/rpc/account/account_info.sql b/files/grest/rpc/account/account_info.sql index 43af9c8a..864e95c7 100644 --- a/files/grest/rpc/account/account_info.sql +++ b/files/grest/rpc/account/account_info.sql @@ -142,8 +142,8 @@ BEGIN FROM reward WHERE reward.addr_id = ANY(sa_id_list) AND reward.spendable_epoch <= ( - SELECT MAX(no) - FROM epoch + SELECT MAX(epoch_param.epoch_no) + FROM public.epoch_param ) GROUP BY reward.addr_id @@ -165,8 +165,8 @@ BEGIN WHERE r.addr_id = ANY(sa_id_list) AND r.type = 'reserves' AND r.spendable_epoch <= ( - SELECT MAX(no) - FROM epoch + SELECT MAX(epoch_param.epoch_no) + FROM public.epoch_param ) GROUP BY r.addr_id @@ -179,8 +179,8 @@ BEGIN WHERE t.addr_id = ANY(sa_id_list) AND t.type = 'treasury' AND t.spendable_epoch <= ( - SELECT MAX(no) - FROM epoch + SELECT MAX(epoch_param.epoch_no) + FROM public.epoch_param ) GROUP BY t.addr_id @@ -193,8 +193,8 @@ BEGIN WHERE pr.addr_id = ANY(sa_id_list) AND pr.type = 'proposal_refund' AND pr.spendable_epoch <= ( - SELECT MAX(no) - FROM epoch + SELECT MAX(epoch_param.epoch_no) + FROM public.epoch_param ) GROUP BY pr.addr_id diff --git a/files/grest/rpc/account/account_info_cached.sql b/files/grest/rpc/account/account_info_cached.sql index e7e7847a..0500b100 100644 --- a/files/grest/rpc/account/account_info_cached.sql +++ b/files/grest/rpc/account/account_info_cached.sql @@ -115,8 +115,8 @@ BEGIN WHERE r.addr_id = ANY(sa_id_list) AND r.type = 'reserves' AND r.spendable_epoch <= ( - SELECT MAX(no) - FROM epoch + SELECT MAX(epoch_param.epoch_no) + FROM public.epoch_param ) GROUP BY r.addr_id @@ -129,8 +129,8 @@ BEGIN WHERE t.addr_id = ANY(sa_id_list) AND t.type = 'treasury' AND t.spendable_epoch <= ( - SELECT MAX(no) - FROM epoch + SELECT MAX(epoch_param.epoch_no) + FROM public.epoch_param ) GROUP BY t.addr_id @@ -143,8 +143,8 @@ BEGIN WHERE pr.addr_id = ANY(sa_id_list) AND pr.type = 'treasury' AND pr.spendable_epoch <= ( - SELECT MAX(no) - FROM epoch + SELECT MAX(epoch_param.epoch_no) + FROM public.epoch_param ) GROUP BY pr.addr_id diff --git a/files/grest/rpc/epoch/epoch_block_protocols.sql b/files/grest/rpc/epoch/epoch_block_protocols.sql index a8fba4dc..1fca5ff8 100644 --- a/files/grest/rpc/epoch/epoch_block_protocols.sql +++ b/files/grest/rpc/epoch/epoch_block_protocols.sql @@ -31,7 +31,7 @@ BEGIN FROM public.block AS b LEFT JOIN public.epoch_param AS ep ON ep.epoch_no = b.epoch_no LEFT JOIN grest.era_map AS em ON ep.protocol_major::text = em.protocol_major::text AND ep.protocol_minor::text = em.protocol_minor::text - WHERE b.epoch_no = (SELECT MAX(no) FROM epoch) + WHERE b.epoch_no = (SELECT MAX(epoch_param.epoch_no) FROM public.epoch_param) GROUP BY b.proto_major, b.proto_minor, em.era; END IF; diff --git a/files/grest/rpc/epoch/epoch_info.sql b/files/grest/rpc/epoch/epoch_info.sql index 98134d11..aa5d4f2f 100644 --- a/files/grest/rpc/epoch/epoch_info.sql +++ b/files/grest/rpc/epoch/epoch_info.sql @@ -52,7 +52,7 @@ BEGIN LEFT JOIN grest.epoch_active_stake_cache AS eas ON eas.epoch_no = ei.epoch_no WHERE CASE - WHEN _epoch_no IS NULL THEN ei.epoch_no <= (SELECT MAX(epoch.no) FROM public.epoch) + WHEN _epoch_no IS NULL THEN ei.epoch_no <= (SELECT MAX(epoch_param.epoch_no) FROM public.epoch_param) ELSE ei.epoch_no = _epoch_no END AND diff --git a/files/grest/rpc/epoch/epoch_params.sql b/files/grest/rpc/epoch/epoch_params.sql index 8a6eed7b..a7082a7a 100644 --- a/files/grest/rpc/epoch/epoch_params.sql +++ b/files/grest/rpc/epoch/epoch_params.sql @@ -122,7 +122,7 @@ BEGIN LEFT JOIN public.cost_model AS cm ON cm.id = ep.cost_model_id WHERE CASE - WHEN _epoch_no IS NULL THEN ep.epoch_no <= (SELECT MAX(epoch.no) FROM public.epoch) + WHEN _epoch_no IS NULL THEN ep.epoch_no <= (SELECT MAX(epoch_param.epoch_no) FROM public.epoch_param) ELSE ep.epoch_no = _epoch_no END ORDER BY diff --git a/files/grest/rpc/epoch/epoch_summary_corrections_update.sql b/files/grest/rpc/epoch/epoch_summary_corrections_update.sql index 0346ad83..34664bfd 100644 --- a/files/grest/rpc/epoch/epoch_summary_corrections_update.sql +++ b/files/grest/rpc/epoch/epoch_summary_corrections_update.sql @@ -4,7 +4,7 @@ LANGUAGE plpgsql AS $$ DECLARE curr_epoch_record record := null; - latest_epoch bigint = (SELECT MAX(no) FROM epoch); + latest_epoch bigint = (SELECT MAX(epoch_param.epoch_no) FROM public.epoch_param); last_epoch_checked bigint = coalesce((SELECT last_value::bigint FROM grest.control_table WHERE key = 'last_epoch_summary_data_checked'), -1); BEGIN RAISE NOTICE 'Last validated epoch was %', last_epoch_checked; diff --git a/files/grest/rpc/governance/drep_info.sql b/files/grest/rpc/governance/drep_info.sql index 8aa4e795..b6f732ea 100644 --- a/files/grest/rpc/governance/drep_info.sql +++ b/files/grest/rpc/governance/drep_info.sql @@ -19,7 +19,7 @@ DECLARE drep_activity word64type; BEGIN - SELECT INTO curr_epoch MAX(epoch_no) FROM public.block; + SELECT INTO curr_epoch MAX(epoch_param.epoch_no) FROM public.epoch_param; SELECT INTO drep_activity ep.drep_activity FROM public.epoch_param AS ep WHERE ep.epoch_no = curr_epoch; diff --git a/files/grest/rpc/governance/drep_voting_power_history.sql b/files/grest/rpc/governance/drep_voting_power_history.sql index 13ec326a..efa28a8c 100644 --- a/files/grest/rpc/governance/drep_voting_power_history.sql +++ b/files/grest/rpc/governance/drep_voting_power_history.sql @@ -37,7 +37,7 @@ AS $$ WHEN ((SELECT deposit FROM drep_registration dr WHERE dr.drep_hash_id = dh.id ORDER BY id DESC LIMIT 1) < 0) THEN (SELECT b.epoch_no FROM block b INNER JOIN tx t ON b.id = t.block_id and t.id = (SELECT tx_id FROM drep_registration dr WHERE dr.drep_hash_id = dh.id ORDER BY id DESC LIMIT 1)) - ELSE (SELECT MAX(no) FROM epoch) + ELSE (SELECT MAX(epoch_param.epoch_no) FROM public.epoch_param) END ) -- previously was doing INNER JOIN of drep_distr with drep_hash but if zero voting power drep_distr not created diff --git a/files/grest/rpc/governance/proposal_voting_summary.sql b/files/grest/rpc/governance/proposal_voting_summary.sql index c5aaafc8..85da9a37 100644 --- a/files/grest/rpc/governance/proposal_voting_summary.sql +++ b/files/grest/rpc/governance/proposal_voting_summary.sql @@ -1,7 +1,7 @@ CREATE OR REPLACE FUNCTION grest.proposal_voting_summary(_proposal_id text) RETURNS TABLE ( proposal_type text, - epoch_no bigint, + epoch_no integer, drep_yes_votes_cast integer, drep_active_yes_vote_power text, drep_yes_vote_power text, @@ -68,13 +68,13 @@ BEGIN expired_epoch, ratified_epoch, dropped_epoch, - (coalesce(ratified_epoch, expired_epoch, dropped_epoch, ( SELECT MAX(no) FROM epoch))) AS epoch_of_interest + (coalesce(ratified_epoch, expired_epoch, dropped_epoch, ( SELECT MAX(epoch_param.epoch_no) FROM public.epoch_param))) AS epoch_of_interest FROM gov_action_proposal AS gap WHERE proposal_id = gap.id ), last_tx_id_of_interest AS ( SELECT CASE - WHEN (SELECT MAX(no) FROM epoch) = ped.epoch_of_interest THEN + WHEN (SELECT MAX(epoch_param.epoch_no) FROM public.epoch_param) = ped.epoch_of_interest THEN (SELECT t.id FROM tx AS t ORDER BY id DESC LIMIT 1) ELSE (SELECT MAX(i_last_tx_id) FROM grest.epoch_info_cache AS eic WHERE eic.epoch_no <= ped.epoch_of_interest) @@ -121,7 +121,7 @@ BEGIN SELECT i_last_tx_id FROM grest.epoch_info_cache AS eic WHERE eic.epoch_no = - (coalesce(ped.ratified_epoch, ped.expired_epoch, ped.dropped_epoch, (SELECT MAX(no) + 1 FROM epoch)) - 1) + (coalesce(ped.ratified_epoch, ped.expired_epoch, ped.dropped_epoch, (SELECT MAX(epoch_param.epoch_no) + 1 FROM public.epoch_param)) - 1) ) ) GROUP BY ped.gov_action_proposal_id, vote diff --git a/files/grest/rpc/pool/pool_delegators.sql b/files/grest/rpc/pool/pool_delegators.sql index 7a547ccb..6db8754d 100644 --- a/files/grest/rpc/pool/pool_delegators.sql +++ b/files/grest/rpc/pool/pool_delegators.sql @@ -13,7 +13,7 @@ DECLARE _current_epoch bigint; BEGIN SELECT id INTO _pool_id FROM pool_hash WHERE pool_hash.hash_raw = cardano.bech32_decode_data(_pool_bech32); - SELECT MAX(no) INTO _current_epoch FROM epoch; + SELECT MAX(epoch_param.epoch_no) INTO _current_epoch FROM public.epoch_param; RETURN QUERY WITH @@ -83,7 +83,7 @@ DECLARE _current_epoch bigint; BEGIN SELECT id INTO _pool_id FROM pool_hash WHERE pool_hash.hash_raw = cardano.bech32_decode_data(_pool_bech32); - SELECT MAX(no) INTO _current_epoch FROM epoch; + SELECT MAX(epoch_param.epoch_no) INTO _current_epoch FROM public.epoch_param; RETURN QUERY WITH diff --git a/files/grest/rpc/pool/pool_history.sql b/files/grest/rpc/pool/pool_history.sql index 37c41468..5a1879bc 100644 --- a/files/grest/rpc/pool/pool_history.sql +++ b/files/grest/rpc/pool/pool_history.sql @@ -20,7 +20,7 @@ DECLARE _curr_epoch word31type; BEGIN - SELECT MAX(no) INTO _curr_epoch FROM epoch; + SELECT MAX(epoch_param.epoch_no) INTO _curr_epoch FROM public.epoch_param; RETURN QUERY SELECT x.* diff --git a/files/grest/rpc/pool/pool_info.sql b/files/grest/rpc/pool/pool_info.sql index f0ea6194..f818af93 100644 --- a/files/grest/rpc/pool/pool_info.sql +++ b/files/grest/rpc/pool/pool_info.sql @@ -35,7 +35,7 @@ DECLARE _epoch_no bigint; _saturation_limit bigint; BEGIN - SELECT MAX(epoch.no) INTO _epoch_no FROM public.epoch; + SELECT MAX(epoch_param.epoch_no) INTO _epoch_no FROM public.epoch_param; SELECT FLOOR(supply::bigint / ( SELECT ep.optimal_pool_count FROM epoch_param AS ep diff --git a/files/grest/rpc/pool/pool_list.sql b/files/grest/rpc/pool/pool_list.sql index ae14046d..9e1b37c4 100644 --- a/files/grest/rpc/pool/pool_list.sql +++ b/files/grest/rpc/pool/pool_list.sql @@ -56,7 +56,7 @@ AS $$ FROM grest.pool_info_cache AS pic INNER JOIN public.pool_hash AS ph ON ph.id = pic.pool_hash_id LEFT JOIN grest.pool_groups AS pgrp ON pgrp.pool_id_bech32 = ph.view - LEFT JOIN pool_stat AS pstat ON pstat.pool_hash_id = pic.pool_hash_id AND pstat.epoch_no < (select max(no) from epoch) AND pstat.epoch_no > (select max(no) - 3 from epoch) + LEFT JOIN pool_stat AS pstat ON pstat.pool_hash_id = pic.pool_hash_id AND pstat.epoch_no < (select max(epoch_no) from public.epoch_param) AND pstat.epoch_no > (select max(epoch_no) - 3 from public.epoch_param) LEFT JOIN public.pool_update AS pu ON pu.id = pic.update_id LEFT JOIN public.stake_address AS sa ON pu.reward_addr_id = sa.id LEFT JOIN public.pool_metadata_ref AS pmr ON pmr.id = pic.meta_id diff --git a/files/grest/rpc/pool/pool_stake_snapshot.sql b/files/grest/rpc/pool/pool_stake_snapshot.sql index 12c198d1..f702cb7e 100644 --- a/files/grest/rpc/pool/pool_stake_snapshot.sql +++ b/files/grest/rpc/pool/pool_stake_snapshot.sql @@ -14,7 +14,7 @@ DECLARE _set bigint; _go bigint; BEGIN - SELECT MAX(epoch.no) INTO _epoch_no FROM public.epoch; + SELECT MAX(epoch_param.epoch_no) INTO _epoch_no FROM public.epoch_param; _mark := (_epoch_no+1); _set := (_epoch_no); _go := (_epoch_no-1); diff --git a/files/grest/rpc/pool/pool_updates.sql b/files/grest/rpc/pool/pool_updates.sql index 83cfd82a..1cfb9f58 100644 --- a/files/grest/rpc/pool/pool_updates.sql +++ b/files/grest/rpc/pool/pool_updates.sql @@ -23,7 +23,7 @@ AS $$ DECLARE _current_epoch_no word31type; BEGIN - SELECT COALESCE(MAX(no), 0) INTO _current_epoch_no FROM public.epoch; + SELECT COALESCE(MAX(epoch_param.epoch_no), 0) INTO _current_epoch_no FROM public.epoch_param; RETURN QUERY WITH pool_reg AS ( diff --git a/files/grest/rpc/transactions/tx_treasury_donations_epoch.sql b/files/grest/rpc/transactions/tx_treasury_donations_epoch.sql index 7ff1df91..058d1fcd 100644 --- a/files/grest/rpc/transactions/tx_treasury_donations_epoch.sql +++ b/files/grest/rpc/transactions/tx_treasury_donations_epoch.sql @@ -20,7 +20,7 @@ AS $$ tx.treasury_donation::text FROM public.tx AS tx INNER JOIN public.block AS b ON b.id = tx.block_id - WHERE b.epoch_no = COALESCE(_epoch_no, (SELECT MAX(no) FROM epoch))::word31type + WHERE b.epoch_no = COALESCE(_epoch_no, (SELECT MAX(epoch_param.epoch_no) FROM public.epoch_param))::word31type AND tx.treasury_donation > 0 GROUP BY tx.id, tx.block_index, b.block_no, b.epoch_no, b.hash, b.time ORDER BY tx.id ASC; From 4239978f9c1e02d2f17bd144ee36c0d29a07f83a Mon Sep 17 00:00:00 2001 From: KoT_B_KocMoce <49576827+hodlonaut@users.noreply.github.com> Date: Sat, 11 Jul 2026 12:12:32 +1000 Subject: [PATCH 09/13] =?UTF-8?q?Added=20live=5Fdelegator=5Fcount=20to=20d?= =?UTF-8?q?rep=5Finfo=20endpoint,=20updated=20specs=20-=20add=E2=80=A6=20(?= =?UTF-8?q?#410)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …ed extra index on voting_procedure to help with performance issue observed on preprod ## Description ## Which issue it fixes? Co-authored-by: hodlonaut --- files/grest/rpc/02_indexes/13_7.sql | 1 + files/grest/rpc/governance/drep_info.sql | 34 ++++++++++++++++++++++-- specs/fragments/schemas/governance.yaml | 4 +++ specs/results/koiosapi-mainnet.yaml | 4 +++ specs/results/koiosapi-preprod.yaml | 4 +++ specs/results/koiosapi-preview.yaml | 4 +++ 6 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 files/grest/rpc/02_indexes/13_7.sql diff --git a/files/grest/rpc/02_indexes/13_7.sql b/files/grest/rpc/02_indexes/13_7.sql new file mode 100644 index 00000000..d93a71d8 --- /dev/null +++ b/files/grest/rpc/02_indexes/13_7.sql @@ -0,0 +1 @@ +CREATE INDEX IF NOT EXISTS idx_voting_procedure_drep_voter ON voting_procedure (drep_voter) WHERE drep_voter IS NOT NULL; diff --git a/files/grest/rpc/governance/drep_info.sql b/files/grest/rpc/governance/drep_info.sql index b6f732ea..0eaeb27b 100644 --- a/files/grest/rpc/governance/drep_info.sql +++ b/files/grest/rpc/governance/drep_info.sql @@ -9,7 +9,8 @@ RETURNS TABLE ( expires_epoch_no numeric, amount text, meta_url varchar, - meta_hash text + meta_hash text, + live_delegator_count bigint ) LANGUAGE plpgsql AS $$ @@ -115,6 +116,33 @@ BEGIN ) AS drep_state INNER JOIN tx on drep_state.last_tx_id = tx.id INNER JOIN block AS b ON tx.block_id = b.id + ), + + _latest_deleg AS ( -- global latest delegation per addr, computed once + SELECT DISTINCT ON (dv.addr_id) + dv.addr_id, dv.tx_id, dv.drep_hash_id + FROM public.delegation_vote AS dv + ORDER BY dv.addr_id, dv.tx_id DESC + ), + + _all_delegations AS ( + SELECT latest.addr_id, latest.tx_id, latest.drep_hash_id + FROM _latest_deleg AS latest + -- only interested in delegations since last registration for normal + -- dreps, and all latest delegations for predefined ones + LEFT JOIN _last_registration lr ON lr.drep = latest.drep_hash_id + WHERE latest.drep_hash_id = ANY(drep_list) + AND (lr.tx_id IS NULL OR latest.tx_id >= lr.tx_id) + AND NOT EXISTS ( + SELECT 1 FROM public.stake_deregistration sd + WHERE sd.addr_id = latest.addr_id AND sd.tx_id > latest.tx_id + ) + ), + + _deleg_counts AS ( -- one row per drep, computed once + SELECT drep_hash_id, count(*) AS live_delegator_count + FROM _all_delegations + GROUP BY drep_hash_id ) SELECT DISTINCT ON (dh.view) @@ -136,12 +164,14 @@ BEGIN (CASE WHEN COALESCE(dr.deposit, 0) >= 0 THEN GREATEST(ds.expires_epoch_no, COALESCE(dd.active_until, 0)) ELSE NULL END) AS expires_epoch_no, COALESCE(dd.amount, 0)::text AS amount, va.url AS meta_url, - ENCODE(va.data_hash, 'hex') AS meta_hash + ENCODE(va.data_hash, 'hex') AS meta_hash, + COALESCE(dc.live_deleg_count, 0) AS live_delegator_count FROM public.drep_hash AS dh LEFT JOIN public.drep_registration AS dr ON dh.id = dr.drep_hash_id LEFT JOIN public.voting_anchor AS va ON dr.voting_anchor_id = va.id LEFT JOIN public.drep_distr AS dd ON dh.id = dd.hash_id AND dd.epoch_no = curr_epoch LEFT JOIN _drep_state AS ds ON dh.id = ds.drep + LEFT JOIN _deleg_counts AS dc ON dc.drep_hash_id = dh.id WHERE dh.id = ANY(drep_list) ORDER BY dh.view, dr.tx_id DESC diff --git a/specs/fragments/schemas/governance.yaml b/specs/fragments/schemas/governance.yaml index 890c7689..97015402 100644 --- a/specs/fragments/schemas/governance.yaml +++ b/specs/fragments/schemas/governance.yaml @@ -55,6 +55,10 @@ - type: "null" description: A hash of the contents of the metadata URL example: dc208474e195442d07a5b6d42af19bb2db02229427dfb53ab23122e6b0e2487d + live_delegator_count: + type: number + description: Number of delegators whose last voting power delegation was to this DRep + example: 55 drep_epoch_summary: description: Summary of voting power and DRep count for each epoch type: array diff --git a/specs/results/koiosapi-mainnet.yaml b/specs/results/koiosapi-mainnet.yaml index 32a3f1f5..503952e0 100644 --- a/specs/results/koiosapi-mainnet.yaml +++ b/specs/results/koiosapi-mainnet.yaml @@ -6130,6 +6130,10 @@ components: - type: "null" description: A hash of the contents of the metadata URL example: dc208474e195442d07a5b6d42af19bb2db02229427dfb53ab23122e6b0e2487d + live_delegator_count: + type: number + description: Number of delegators whose last voting power delegation was to this DRep + example: 55 drep_epoch_summary: description: Summary of voting power and DRep count for each epoch type: array diff --git a/specs/results/koiosapi-preprod.yaml b/specs/results/koiosapi-preprod.yaml index c4f54473..86dc20e3 100644 --- a/specs/results/koiosapi-preprod.yaml +++ b/specs/results/koiosapi-preprod.yaml @@ -6130,6 +6130,10 @@ components: - type: "null" description: A hash of the contents of the metadata URL example: dc208474e195442d07a5b6d42af19bb2db02229427dfb53ab23122e6b0e2487d + live_delegator_count: + type: number + description: Number of delegators whose last voting power delegation was to this DRep + example: 55 drep_epoch_summary: description: Summary of voting power and DRep count for each epoch type: array diff --git a/specs/results/koiosapi-preview.yaml b/specs/results/koiosapi-preview.yaml index c3647783..fba5bb1c 100644 --- a/specs/results/koiosapi-preview.yaml +++ b/specs/results/koiosapi-preview.yaml @@ -6130,6 +6130,10 @@ components: - type: "null" description: A hash of the contents of the metadata URL example: dc208474e195442d07a5b6d42af19bb2db02229427dfb53ab23122e6b0e2487d + live_delegator_count: + type: number + description: Number of delegators whose last voting power delegation was to this DRep + example: 55 drep_epoch_summary: description: Summary of voting power and DRep count for each epoch type: array From e5335ddec517cd9f91be1c97c46ac5d5e90bbbd6 Mon Sep 17 00:00:00 2001 From: rdlrt <3169068+rdlrt@users.noreply.github.com> Date: Tue, 14 Jul 2026 10:59:53 +1000 Subject: [PATCH 10/13] Add specs update for error messages due to limits --- files/grest/rpc/governance/drep_info.sql | 2 +- specs/fragments/macros.yaml | 4 + specs/results/koiosapi-mainnet.yaml | 404 +++++++++++++++++++++++ specs/results/koiosapi-preprod.yaml | 404 +++++++++++++++++++++++ specs/results/koiosapi-preview.yaml | 404 +++++++++++++++++++++++ specs/template.yaml | 4 + 6 files changed, 1221 insertions(+), 1 deletion(-) diff --git a/files/grest/rpc/governance/drep_info.sql b/files/grest/rpc/governance/drep_info.sql index 0eaeb27b..d2955f51 100644 --- a/files/grest/rpc/governance/drep_info.sql +++ b/files/grest/rpc/governance/drep_info.sql @@ -160,7 +160,7 @@ BEGIN ELSE 'registered' END) AS drep_status, (CASE WHEN (dr.deposit < 0) OR starts_with(dh.view,'drep_always') THEN NULL ELSE ds.deposit END)::text AS deposit, - (CASE WHEN starts_with(dh.view,'drep_always') THEN TRUE ELSE COALESCE(dr.deposit, 0) >= 0 AND (ds.active OR COALESCE(dd.active_until, 0) > curr_epoch) END) AS active, + COALESCE(starts_with(dh.view,'drep_always') OR (COALESCE(dr.deposit, 0) >= 0 AND (ds.active OR COALESCE(dd.active_until, 0) > curr_epoch)), FALSE) AS active, (CASE WHEN COALESCE(dr.deposit, 0) >= 0 THEN GREATEST(ds.expires_epoch_no, COALESCE(dd.active_until, 0)) ELSE NULL END) AS expires_epoch_no, COALESCE(dd.amount, 0)::text AS amount, va.url AS meta_url, diff --git a/specs/fragments/macros.yaml b/specs/fragments/macros.yaml index af4de1e2..530d19a3 100644 --- a/specs/fragments/macros.yaml +++ b/specs/fragments/macros.yaml @@ -5,3 +5,7 @@ koios_errors: | $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" \ No newline at end of file diff --git a/specs/results/koiosapi-mainnet.yaml b/specs/results/koiosapi-mainnet.yaml index 503952e0..d130d607 100644 --- a/specs/results/koiosapi-mainnet.yaml +++ b/specs/results/koiosapi-mainnet.yaml @@ -170,6 +170,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Query Chain Tip description: Get the tip info about the latest block seen by chain operationId: tip @@ -190,6 +194,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Get Era Summaries description: Get some information about each era on the network alongwith it's start epoch operationId: era_summaries @@ -210,6 +218,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Get Genesis info description: Get the Genesis parameters used to start specific era on chain operationId: genesis @@ -232,6 +244,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Get historical tokenomic stats description: >- Get the circulating utxo, treasury, rewards, supply and reserves in @@ -254,6 +270,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Param Update Proposals description: Get all parameter update proposals submitted to the chain starting Shelley era operationId: param_updates @@ -274,6 +294,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: CLI Protocol Parameters description: >- Get Current Protocol Parameters as published by cardano-cli. Note that @@ -299,6 +323,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Reserve Withdrawals description: List of all withdrawals from reserves against stake accounts operationId: reserve_withdrawals @@ -319,6 +347,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Treasury Withdrawals description: List of all withdrawals from treasury against stake accounts operationId: treasury_withdrawals @@ -343,6 +375,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Epoch Information description: Get the epoch information, all epochs if no epoch specified operationId: epoch_info @@ -365,6 +401,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Epoch's Protocol Parameters description: >- Get the protocol parameters for specific epoch, returns information @@ -389,6 +429,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Epoch's Block Protocols description: >- Get the information about block protocol distribution in epoch @@ -411,6 +455,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Block List description: Get summarised details about all blocks (paginated - latest first) operationId: blocks @@ -433,6 +481,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Block Information description: Get detailed information about a specific block operationId: block_info @@ -455,6 +507,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Block Transactions description: Get a list of all transactions included in provided blocks operationId: block_txs @@ -477,6 +533,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Block Transactions (Raw CBOR) description: Get raw CBOR data for all transaction(s) within requested blocks operationId: block_tx_cbor @@ -500,6 +560,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Block Transactions (Detailed Info) description: Get detailed information about transaction(s) for requested blocks operationId: block_tx_info @@ -526,6 +590,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: UTxO Info description: Get UTxO set for requested UTxO references operationId: utxo_info @@ -548,6 +616,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Raw Transaction (CBOR) description: Get raw transaction(s) in CBOR format operationId: tx_cbor @@ -570,6 +642,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transaction Information description: Get detailed information about transaction(s) operationId: tx_info @@ -592,6 +668,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transaction Metadata description: Get metadata information (if any) for given transaction(s) operationId: tx_metadata @@ -612,6 +692,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transaction Metadata Labels description: Get a list of all transaction metalabels operationId: tx_metalabels @@ -635,6 +719,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transactions by Metadata Label description: Get a list of all transactions that include a specific metadata label (key) operationId: tx_by_metalabel @@ -688,6 +776,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transaction Status description: Get the number of block confirmations for a given transaction hash list operationId: tx_status @@ -710,6 +802,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transaction outputs by epoch description: Get a list of all transaction outputs for requested epoch operationId: tx_outs_epoch @@ -733,6 +829,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transaction UTxOs description: Get UTxO set (inputs/outputs) of transactions [DEPRECATED - Use /utxo_info instead]. operationId: tx_utxos @@ -757,6 +857,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Address List description: Get a list of all used address on blockchain operationId: account_list @@ -779,6 +883,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Address Information description: Get address info - balance, associated stake address (if any) and UTxO set for given addresses operationId: address_info @@ -801,6 +909,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Address UTxOs description: Get UTxO set for given addresses operationId: address_utxos @@ -823,6 +935,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Address Outputs description: Basic transaction output info for given addresses operationId: address_outputs @@ -845,6 +961,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: UTxOs from payment credentials description: Get UTxO details for requested payment credentials operationId: credential_utxos @@ -867,6 +987,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Address Transactions description: Get the transaction hash list of input address array, optionally filtering after specified block height (inclusive) operationId: address_txs @@ -889,6 +1013,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transactions from payment credentials description: Get the transaction hash list of input payment credential array, optionally filtering after specified block height (inclusive) operationId: credential_txs @@ -911,6 +1039,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Address Assets description: Get the list of all the assets (policy, name and quantity) for given addresses operationId: address_assets @@ -932,6 +1064,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account List description: Get a list of all stake addresses that have atleast 1 transaction operationId: account_list @@ -954,6 +1090,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Information description: Get the account information for given stake addresses operationId: account_info @@ -976,6 +1116,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Information (Cached) description: Get the cached account information for given stake addresses (effective for performance query against registered accounts) operationId: account_info_cached @@ -998,6 +1142,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: UTxOs for stake addresses (accounts) description: Get a list of all UTxOs for given stake addresses (account)s operationId: account_utxos @@ -1021,6 +1169,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Txs description: Get a list of all Txs for a given stake address (account) operationId: account_txs @@ -1044,6 +1196,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Rewards description: >- Get the full rewards history (including MIR) for given stake addresses @@ -1070,6 +1226,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Reward History description: >- Get the full rewards history (including MIR) for given stake addresses @@ -1094,6 +1254,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Updates description: >- Get the account updates (registration, deregistration, delegation and @@ -1118,6 +1282,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Update History description: >- Get the account updates (registration, deregistration, delegation and @@ -1142,6 +1310,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Addresses description: Get all addresses associated with given staking accounts operationId: account_addresses @@ -1164,6 +1336,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Assets description: Get the native asset balance for a given stake address operationId: account_assets @@ -1187,6 +1363,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account History description: Get the staking history of given stake addresses (accounts) operationId: account_history @@ -1212,6 +1392,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Stake History description: Get the staking history of given stake addresses (accounts) operationId: account_stake_history @@ -1236,6 +1420,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset List description: Get the list of all native assets (paginated). Use the optional parameters to filter efficiently, bypassing the performance cost of filtering the encoded output. Results are pre-sorted by policy ID and then asset name. operationId: asset_list @@ -1258,6 +1446,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Policy Asset List description: Get the list of asset under the given policy (including balances) operationId: policy_asset_list @@ -1278,6 +1470,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset Token Registry description: Get a list of assets registered via token registry on github operationId: asset_token_registry @@ -1300,6 +1496,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset Information (Bulk) description: Get the information of a list of assets including first minting & token registry metadata operationId: asset_info @@ -1322,6 +1522,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset UTxOs description: Get the UTxO information of a list of assets including operationId: asset_utxos @@ -1345,6 +1549,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset History description: Get the mint/burn history of an asset operationId: asset_history @@ -1368,6 +1576,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset Addresses description: Get the list of all addresses holding a given asset

    `Note - Due to cardano's UTxO design and usage from projects, asset to addresses map can be infinite. Thus, for a small subset of active projects @@ -1394,6 +1606,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: NFT Address description: Get the address where specified NFT currently reside on. operationId: asset_nft_address @@ -1417,6 +1633,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Policy Asset Address List description: Get the list of addresses with quantity for each asset on the given policy

    @@ -1444,6 +1664,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Policy Asset Information description: Get the information for all assets under the same policy operationId: policy_asset_info @@ -1466,6 +1690,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Policy Asset Mints description: Get a list of mint or burn count details for all assets minted under a policy operationId: policy_asset_mints @@ -1489,6 +1717,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset Summary description: Get the summary of an asset (total transactions exclude minting/total wallets include only wallets with asset balance) operationId: asset_summary @@ -1514,6 +1746,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset Transactions description: Get the list of current or all asset transaction hashes (newest first) operationId: asset_txs @@ -1537,6 +1773,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Epoch Summary description: Summary of voting power and DRep count for each epoch operationId: drep_epoch_summary @@ -1557,6 +1797,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps List description: List of all active delegated representatives (DReps) operationId: drep_list @@ -1579,6 +1823,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Info description: Get detailed information about requested delegated representatives (DReps) operationId: drep_info @@ -1601,6 +1849,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Metadata description: List metadata for requested delegated representatives (DReps) operationId: drep_metadata @@ -1623,6 +1875,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Updates description: List of updates for requested (or all) delegated representatives (DReps) operationId: drep_updates @@ -1647,6 +1903,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Voting Power History description: History of DReps voting power against each (or requested) epoch operationId: drep_history @@ -1673,6 +1933,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Voting Power History description: History of DReps voting power against each (or requested) epoch operationId: drep_voting_power_history @@ -1696,6 +1960,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Votes description: List of all votes casted by requested delegated representative (DRep) operationId: drep_votes @@ -1721,6 +1989,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Delegators description: List of all delegators to requested delegated representative (DRep). operationId: drep_delegators @@ -1741,6 +2013,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Committee Information description: Information about active committee and its members operationId: committee_info @@ -1763,6 +2039,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Committee Votes description: List of all votes casted by given committee member or collective operationId: committee_votes @@ -1783,6 +2063,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Proposals List description: List of all governance proposals operationId: proposal_list @@ -1805,6 +2089,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Voter's Proposal List description: List of all governance proposals for specified DRep, SPO or Committee credential operationId: voter_proposal_list @@ -1827,6 +2115,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Proposal Voting Summary description: Summary of votes for given proposal operationId: proposal_voting_summary @@ -1849,6 +2141,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Proposal Votes description: List of all votes cast on specified governance action operationId: proposal_votes @@ -1869,6 +2165,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Vote List description: List of all votes posted on-chain operationId: vote_list @@ -1890,6 +2190,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool List description: List of brief info for all pools operationId: pool_list @@ -1912,6 +2216,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Information description: Current pool statuses and details for a specified list of pool ids operationId: pool_info @@ -1934,6 +2242,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Stake Snapshot description: Returns Mark, Set and Go stake snapshots for the selected pool, useful for leaderlog calculation operationId: pool_stake_snapshot @@ -1956,6 +2268,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Delegators List description: Return information about live delegators for a given pool. operationId: pool_delegators @@ -1979,6 +2295,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Delegators History description: Return information about active delegators (incl. history) for a given pool and epoch number (all epochs if not specified). operationId: pool_delegators_history @@ -2002,6 +2322,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Invalid Delegators description: Return information about delegators for a given pool that are invalid for the specified epoch. operationId: pool_invalid_delegators @@ -2025,6 +2349,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Blocks description: >- Return information about blocks minted by a given pool for all epochs @@ -2049,6 +2377,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Owner History description: >- Return information about pool owner's historical stake and their promised pledge to their pools @@ -2073,6 +2405,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Stake, Block and Reward History description: >- Return information about pool stake, block and reward history in a given epoch _epoch_no @@ -2097,6 +2433,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Updates (History) description: Return all pool updates for all pools or only updates for specific pool if specified operationId: pool_updates @@ -2119,6 +2459,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Registrations description: Return all pool registrations initiated in the requested epoch operationId: pool_registrations @@ -2141,6 +2485,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Retirements description: Return all pool retirements initiated in the requested epoch operationId: pool_retirements @@ -2161,6 +2509,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Relays description: A list of registered relays for all pools operationId: pool_relays @@ -2184,6 +2536,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool's Voting Power History description: History of Pool voting power against each (or requested) epoch operationId: pool_voting_power_history @@ -2207,6 +2563,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Votes description: List of all votes casted by a pool operationId: pool_votes @@ -2231,6 +2591,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Groups description: List of all registered pool and their groups across sources from [pool_groups](https://github.com/cardano-community/pool_groups) repository. This is only relevant for mainnet operationId: pool_groups @@ -2253,6 +2617,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Metadata description: Metadata (on & off-chain) for all pools operationId: pool_metadata @@ -2273,6 +2641,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Calidus Keys description: List of valid calidus keys for all pools operationId: pool_calidus_keys @@ -2296,6 +2668,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Script Information description: List of script information for given script hashes operationId: script_info @@ -2316,6 +2692,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Native Script List description: List of all existing native script hashes along with their creation transaction hashes operationId: native_script_list @@ -2336,6 +2716,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Plutus Script List description: List of all existing Plutus script hashes along with their creation transaction hashes operationId: plutus_script_list @@ -2358,6 +2742,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Script Redeemers description: List of all redeemers for a given script hash operationId: script_redeemers @@ -2380,6 +2768,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Reference Script UTxOs description: List of all unspent UTxOs with a reference script matching given script hashes operationId: reference_script_utxos @@ -2404,6 +2796,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Script UTxOs description: List of all UTxOs for a given script hash operationId: script_utxos @@ -2426,6 +2822,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Datum Information description: List of datum information for given datum hashes operationId: datum_info @@ -6937,6 +7337,10 @@ components: description: Access token is missing or invalid BadRequest: description: The server cannot process the request due to invalid input + TooManyRequests: + description: Too many requests were sent in a short period, the tier-based cap can be referred to at https://koios.rest/tiers.html + PayloadTooLarge: + description: The payload attached to your request is too large, please ensure your request packet is less than 5kb. tags: - name: Network description: Query information about the network diff --git a/specs/results/koiosapi-preprod.yaml b/specs/results/koiosapi-preprod.yaml index 86dc20e3..9f854368 100644 --- a/specs/results/koiosapi-preprod.yaml +++ b/specs/results/koiosapi-preprod.yaml @@ -170,6 +170,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Query Chain Tip description: Get the tip info about the latest block seen by chain operationId: tip @@ -190,6 +194,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Get Era Summaries description: Get some information about each era on the network alongwith it's start epoch operationId: era_summaries @@ -210,6 +218,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Get Genesis info description: Get the Genesis parameters used to start specific era on chain operationId: genesis @@ -232,6 +244,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Get historical tokenomic stats description: >- Get the circulating utxo, treasury, rewards, supply and reserves in @@ -254,6 +270,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Param Update Proposals description: Get all parameter update proposals submitted to the chain starting Shelley era operationId: param_updates @@ -274,6 +294,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: CLI Protocol Parameters description: >- Get Current Protocol Parameters as published by cardano-cli. Note that @@ -299,6 +323,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Reserve Withdrawals description: List of all withdrawals from reserves against stake accounts operationId: reserve_withdrawals @@ -319,6 +347,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Treasury Withdrawals description: List of all withdrawals from treasury against stake accounts operationId: treasury_withdrawals @@ -343,6 +375,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Epoch Information description: Get the epoch information, all epochs if no epoch specified operationId: epoch_info @@ -365,6 +401,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Epoch's Protocol Parameters description: >- Get the protocol parameters for specific epoch, returns information @@ -389,6 +429,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Epoch's Block Protocols description: >- Get the information about block protocol distribution in epoch @@ -411,6 +455,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Block List description: Get summarised details about all blocks (paginated - latest first) operationId: blocks @@ -433,6 +481,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Block Information description: Get detailed information about a specific block operationId: block_info @@ -455,6 +507,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Block Transactions description: Get a list of all transactions included in provided blocks operationId: block_txs @@ -477,6 +533,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Block Transactions (Raw CBOR) description: Get raw CBOR data for all transaction(s) within requested blocks operationId: block_tx_cbor @@ -500,6 +560,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Block Transactions (Detailed Info) description: Get detailed information about transaction(s) for requested blocks operationId: block_tx_info @@ -526,6 +590,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: UTxO Info description: Get UTxO set for requested UTxO references operationId: utxo_info @@ -548,6 +616,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Raw Transaction (CBOR) description: Get raw transaction(s) in CBOR format operationId: tx_cbor @@ -570,6 +642,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transaction Information description: Get detailed information about transaction(s) operationId: tx_info @@ -592,6 +668,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transaction Metadata description: Get metadata information (if any) for given transaction(s) operationId: tx_metadata @@ -612,6 +692,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transaction Metadata Labels description: Get a list of all transaction metalabels operationId: tx_metalabels @@ -635,6 +719,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transactions by Metadata Label description: Get a list of all transactions that include a specific metadata label (key) operationId: tx_by_metalabel @@ -688,6 +776,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transaction Status description: Get the number of block confirmations for a given transaction hash list operationId: tx_status @@ -710,6 +802,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transaction outputs by epoch description: Get a list of all transaction outputs for requested epoch operationId: tx_outs_epoch @@ -733,6 +829,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transaction UTxOs description: Get UTxO set (inputs/outputs) of transactions [DEPRECATED - Use /utxo_info instead]. operationId: tx_utxos @@ -757,6 +857,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Address List description: Get a list of all used address on blockchain operationId: account_list @@ -779,6 +883,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Address Information description: Get address info - balance, associated stake address (if any) and UTxO set for given addresses operationId: address_info @@ -801,6 +909,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Address UTxOs description: Get UTxO set for given addresses operationId: address_utxos @@ -823,6 +935,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Address Outputs description: Basic transaction output info for given addresses operationId: address_outputs @@ -845,6 +961,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: UTxOs from payment credentials description: Get UTxO details for requested payment credentials operationId: credential_utxos @@ -867,6 +987,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Address Transactions description: Get the transaction hash list of input address array, optionally filtering after specified block height (inclusive) operationId: address_txs @@ -889,6 +1013,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transactions from payment credentials description: Get the transaction hash list of input payment credential array, optionally filtering after specified block height (inclusive) operationId: credential_txs @@ -911,6 +1039,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Address Assets description: Get the list of all the assets (policy, name and quantity) for given addresses operationId: address_assets @@ -932,6 +1064,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account List description: Get a list of all stake addresses that have atleast 1 transaction operationId: account_list @@ -954,6 +1090,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Information description: Get the account information for given stake addresses operationId: account_info @@ -976,6 +1116,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Information (Cached) description: Get the cached account information for given stake addresses (effective for performance query against registered accounts) operationId: account_info_cached @@ -998,6 +1142,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: UTxOs for stake addresses (accounts) description: Get a list of all UTxOs for given stake addresses (account)s operationId: account_utxos @@ -1021,6 +1169,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Txs description: Get a list of all Txs for a given stake address (account) operationId: account_txs @@ -1044,6 +1196,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Rewards description: >- Get the full rewards history (including MIR) for given stake addresses @@ -1070,6 +1226,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Reward History description: >- Get the full rewards history (including MIR) for given stake addresses @@ -1094,6 +1254,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Updates description: >- Get the account updates (registration, deregistration, delegation and @@ -1118,6 +1282,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Update History description: >- Get the account updates (registration, deregistration, delegation and @@ -1142,6 +1310,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Addresses description: Get all addresses associated with given staking accounts operationId: account_addresses @@ -1164,6 +1336,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Assets description: Get the native asset balance for a given stake address operationId: account_assets @@ -1187,6 +1363,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account History description: Get the staking history of given stake addresses (accounts) operationId: account_history @@ -1212,6 +1392,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Stake History description: Get the staking history of given stake addresses (accounts) operationId: account_stake_history @@ -1236,6 +1420,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset List description: Get the list of all native assets (paginated). Use the optional parameters to filter efficiently, bypassing the performance cost of filtering the encoded output. Results are pre-sorted by policy ID and then asset name. operationId: asset_list @@ -1258,6 +1446,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Policy Asset List description: Get the list of asset under the given policy (including balances) operationId: policy_asset_list @@ -1278,6 +1470,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset Token Registry description: Get a list of assets registered via token registry on github operationId: asset_token_registry @@ -1300,6 +1496,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset Information (Bulk) description: Get the information of a list of assets including first minting & token registry metadata operationId: asset_info @@ -1322,6 +1522,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset UTxOs description: Get the UTxO information of a list of assets including operationId: asset_utxos @@ -1345,6 +1549,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset History description: Get the mint/burn history of an asset operationId: asset_history @@ -1368,6 +1576,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset Addresses description: Get the list of all addresses holding a given asset

    `Note - Due to cardano's UTxO design and usage from projects, asset to addresses map can be infinite. Thus, for a small subset of active projects @@ -1394,6 +1606,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: NFT Address description: Get the address where specified NFT currently reside on. operationId: asset_nft_address @@ -1417,6 +1633,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Policy Asset Address List description: Get the list of addresses with quantity for each asset on the given policy

    @@ -1444,6 +1664,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Policy Asset Information description: Get the information for all assets under the same policy operationId: policy_asset_info @@ -1466,6 +1690,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Policy Asset Mints description: Get a list of mint or burn count details for all assets minted under a policy operationId: policy_asset_mints @@ -1489,6 +1717,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset Summary description: Get the summary of an asset (total transactions exclude minting/total wallets include only wallets with asset balance) operationId: asset_summary @@ -1514,6 +1746,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset Transactions description: Get the list of current or all asset transaction hashes (newest first) operationId: asset_txs @@ -1537,6 +1773,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Epoch Summary description: Summary of voting power and DRep count for each epoch operationId: drep_epoch_summary @@ -1557,6 +1797,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps List description: List of all active delegated representatives (DReps) operationId: drep_list @@ -1579,6 +1823,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Info description: Get detailed information about requested delegated representatives (DReps) operationId: drep_info @@ -1601,6 +1849,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Metadata description: List metadata for requested delegated representatives (DReps) operationId: drep_metadata @@ -1623,6 +1875,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Updates description: List of updates for requested (or all) delegated representatives (DReps) operationId: drep_updates @@ -1647,6 +1903,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Voting Power History description: History of DReps voting power against each (or requested) epoch operationId: drep_history @@ -1673,6 +1933,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Voting Power History description: History of DReps voting power against each (or requested) epoch operationId: drep_voting_power_history @@ -1696,6 +1960,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Votes description: List of all votes casted by requested delegated representative (DRep) operationId: drep_votes @@ -1721,6 +1989,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Delegators description: List of all delegators to requested delegated representative (DRep). operationId: drep_delegators @@ -1741,6 +2013,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Committee Information description: Information about active committee and its members operationId: committee_info @@ -1763,6 +2039,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Committee Votes description: List of all votes casted by given committee member or collective operationId: committee_votes @@ -1783,6 +2063,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Proposals List description: List of all governance proposals operationId: proposal_list @@ -1805,6 +2089,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Voter's Proposal List description: List of all governance proposals for specified DRep, SPO or Committee credential operationId: voter_proposal_list @@ -1827,6 +2115,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Proposal Voting Summary description: Summary of votes for given proposal operationId: proposal_voting_summary @@ -1849,6 +2141,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Proposal Votes description: List of all votes cast on specified governance action operationId: proposal_votes @@ -1869,6 +2165,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Vote List description: List of all votes posted on-chain operationId: vote_list @@ -1890,6 +2190,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool List description: List of brief info for all pools operationId: pool_list @@ -1912,6 +2216,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Information description: Current pool statuses and details for a specified list of pool ids operationId: pool_info @@ -1934,6 +2242,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Stake Snapshot description: Returns Mark, Set and Go stake snapshots for the selected pool, useful for leaderlog calculation operationId: pool_stake_snapshot @@ -1956,6 +2268,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Delegators List description: Return information about live delegators for a given pool. operationId: pool_delegators @@ -1979,6 +2295,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Delegators History description: Return information about active delegators (incl. history) for a given pool and epoch number (all epochs if not specified). operationId: pool_delegators_history @@ -2002,6 +2322,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Invalid Delegators description: Return information about delegators for a given pool that are invalid for the specified epoch. operationId: pool_invalid_delegators @@ -2025,6 +2349,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Blocks description: >- Return information about blocks minted by a given pool for all epochs @@ -2049,6 +2377,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Owner History description: >- Return information about pool owner's historical stake and their promised pledge to their pools @@ -2073,6 +2405,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Stake, Block and Reward History description: >- Return information about pool stake, block and reward history in a given epoch _epoch_no @@ -2097,6 +2433,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Updates (History) description: Return all pool updates for all pools or only updates for specific pool if specified operationId: pool_updates @@ -2119,6 +2459,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Registrations description: Return all pool registrations initiated in the requested epoch operationId: pool_registrations @@ -2141,6 +2485,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Retirements description: Return all pool retirements initiated in the requested epoch operationId: pool_retirements @@ -2161,6 +2509,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Relays description: A list of registered relays for all pools operationId: pool_relays @@ -2184,6 +2536,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool's Voting Power History description: History of Pool voting power against each (or requested) epoch operationId: pool_voting_power_history @@ -2207,6 +2563,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Votes description: List of all votes casted by a pool operationId: pool_votes @@ -2231,6 +2591,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Groups description: List of all registered pool and their groups across sources from [pool_groups](https://github.com/cardano-community/pool_groups) repository. This is only relevant for mainnet operationId: pool_groups @@ -2253,6 +2617,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Metadata description: Metadata (on & off-chain) for all pools operationId: pool_metadata @@ -2273,6 +2641,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Calidus Keys description: List of valid calidus keys for all pools operationId: pool_calidus_keys @@ -2296,6 +2668,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Script Information description: List of script information for given script hashes operationId: script_info @@ -2316,6 +2692,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Native Script List description: List of all existing native script hashes along with their creation transaction hashes operationId: native_script_list @@ -2336,6 +2716,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Plutus Script List description: List of all existing Plutus script hashes along with their creation transaction hashes operationId: plutus_script_list @@ -2358,6 +2742,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Script Redeemers description: List of all redeemers for a given script hash operationId: script_redeemers @@ -2380,6 +2768,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Reference Script UTxOs description: List of all unspent UTxOs with a reference script matching given script hashes operationId: reference_script_utxos @@ -2404,6 +2796,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Script UTxOs description: List of all UTxOs for a given script hash operationId: script_utxos @@ -2426,6 +2822,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Datum Information description: List of datum information for given datum hashes operationId: datum_info @@ -6937,6 +7337,10 @@ components: description: Access token is missing or invalid BadRequest: description: The server cannot process the request due to invalid input + TooManyRequests: + description: Too many requests were sent in a short period, the tier-based cap can be referred to at https://koios.rest/tiers.html + PayloadTooLarge: + description: The payload attached to your request is too large, please ensure your request packet is less than 5kb. tags: - name: Network description: Query information about the network diff --git a/specs/results/koiosapi-preview.yaml b/specs/results/koiosapi-preview.yaml index fba5bb1c..04bb45f4 100644 --- a/specs/results/koiosapi-preview.yaml +++ b/specs/results/koiosapi-preview.yaml @@ -170,6 +170,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Query Chain Tip description: Get the tip info about the latest block seen by chain operationId: tip @@ -190,6 +194,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Get Era Summaries description: Get some information about each era on the network alongwith it's start epoch operationId: era_summaries @@ -210,6 +218,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Get Genesis info description: Get the Genesis parameters used to start specific era on chain operationId: genesis @@ -232,6 +244,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Get historical tokenomic stats description: >- Get the circulating utxo, treasury, rewards, supply and reserves in @@ -254,6 +270,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Param Update Proposals description: Get all parameter update proposals submitted to the chain starting Shelley era operationId: param_updates @@ -274,6 +294,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: CLI Protocol Parameters description: >- Get Current Protocol Parameters as published by cardano-cli. Note that @@ -299,6 +323,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Reserve Withdrawals description: List of all withdrawals from reserves against stake accounts operationId: reserve_withdrawals @@ -319,6 +347,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Treasury Withdrawals description: List of all withdrawals from treasury against stake accounts operationId: treasury_withdrawals @@ -343,6 +375,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Epoch Information description: Get the epoch information, all epochs if no epoch specified operationId: epoch_info @@ -365,6 +401,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Epoch's Protocol Parameters description: >- Get the protocol parameters for specific epoch, returns information @@ -389,6 +429,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Epoch's Block Protocols description: >- Get the information about block protocol distribution in epoch @@ -411,6 +455,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Block List description: Get summarised details about all blocks (paginated - latest first) operationId: blocks @@ -433,6 +481,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Block Information description: Get detailed information about a specific block operationId: block_info @@ -455,6 +507,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Block Transactions description: Get a list of all transactions included in provided blocks operationId: block_txs @@ -477,6 +533,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Block Transactions (Raw CBOR) description: Get raw CBOR data for all transaction(s) within requested blocks operationId: block_tx_cbor @@ -500,6 +560,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Block Transactions (Detailed Info) description: Get detailed information about transaction(s) for requested blocks operationId: block_tx_info @@ -526,6 +590,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: UTxO Info description: Get UTxO set for requested UTxO references operationId: utxo_info @@ -548,6 +616,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Raw Transaction (CBOR) description: Get raw transaction(s) in CBOR format operationId: tx_cbor @@ -570,6 +642,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transaction Information description: Get detailed information about transaction(s) operationId: tx_info @@ -592,6 +668,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transaction Metadata description: Get metadata information (if any) for given transaction(s) operationId: tx_metadata @@ -612,6 +692,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transaction Metadata Labels description: Get a list of all transaction metalabels operationId: tx_metalabels @@ -635,6 +719,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transactions by Metadata Label description: Get a list of all transactions that include a specific metadata label (key) operationId: tx_by_metalabel @@ -688,6 +776,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transaction Status description: Get the number of block confirmations for a given transaction hash list operationId: tx_status @@ -710,6 +802,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transaction outputs by epoch description: Get a list of all transaction outputs for requested epoch operationId: tx_outs_epoch @@ -733,6 +829,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transaction UTxOs description: Get UTxO set (inputs/outputs) of transactions [DEPRECATED - Use /utxo_info instead]. operationId: tx_utxos @@ -757,6 +857,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Address List description: Get a list of all used address on blockchain operationId: account_list @@ -779,6 +883,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Address Information description: Get address info - balance, associated stake address (if any) and UTxO set for given addresses operationId: address_info @@ -801,6 +909,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Address UTxOs description: Get UTxO set for given addresses operationId: address_utxos @@ -823,6 +935,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Address Outputs description: Basic transaction output info for given addresses operationId: address_outputs @@ -845,6 +961,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: UTxOs from payment credentials description: Get UTxO details for requested payment credentials operationId: credential_utxos @@ -867,6 +987,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Address Transactions description: Get the transaction hash list of input address array, optionally filtering after specified block height (inclusive) operationId: address_txs @@ -889,6 +1013,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Transactions from payment credentials description: Get the transaction hash list of input payment credential array, optionally filtering after specified block height (inclusive) operationId: credential_txs @@ -911,6 +1039,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Address Assets description: Get the list of all the assets (policy, name and quantity) for given addresses operationId: address_assets @@ -932,6 +1064,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account List description: Get a list of all stake addresses that have atleast 1 transaction operationId: account_list @@ -954,6 +1090,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Information description: Get the account information for given stake addresses operationId: account_info @@ -976,6 +1116,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Information (Cached) description: Get the cached account information for given stake addresses (effective for performance query against registered accounts) operationId: account_info_cached @@ -998,6 +1142,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: UTxOs for stake addresses (accounts) description: Get a list of all UTxOs for given stake addresses (account)s operationId: account_utxos @@ -1021,6 +1169,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Txs description: Get a list of all Txs for a given stake address (account) operationId: account_txs @@ -1044,6 +1196,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Rewards description: >- Get the full rewards history (including MIR) for given stake addresses @@ -1070,6 +1226,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Reward History description: >- Get the full rewards history (including MIR) for given stake addresses @@ -1094,6 +1254,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Updates description: >- Get the account updates (registration, deregistration, delegation and @@ -1118,6 +1282,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Update History description: >- Get the account updates (registration, deregistration, delegation and @@ -1142,6 +1310,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Addresses description: Get all addresses associated with given staking accounts operationId: account_addresses @@ -1164,6 +1336,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Assets description: Get the native asset balance for a given stake address operationId: account_assets @@ -1187,6 +1363,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account History description: Get the staking history of given stake addresses (accounts) operationId: account_history @@ -1212,6 +1392,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Account Stake History description: Get the staking history of given stake addresses (accounts) operationId: account_stake_history @@ -1236,6 +1420,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset List description: Get the list of all native assets (paginated). Use the optional parameters to filter efficiently, bypassing the performance cost of filtering the encoded output. Results are pre-sorted by policy ID and then asset name. operationId: asset_list @@ -1258,6 +1446,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Policy Asset List description: Get the list of asset under the given policy (including balances) operationId: policy_asset_list @@ -1278,6 +1470,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset Token Registry description: Get a list of assets registered via token registry on github operationId: asset_token_registry @@ -1300,6 +1496,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset Information (Bulk) description: Get the information of a list of assets including first minting & token registry metadata operationId: asset_info @@ -1322,6 +1522,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset UTxOs description: Get the UTxO information of a list of assets including operationId: asset_utxos @@ -1345,6 +1549,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset History description: Get the mint/burn history of an asset operationId: asset_history @@ -1368,6 +1576,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset Addresses description: Get the list of all addresses holding a given asset

    `Note - Due to cardano's UTxO design and usage from projects, asset to addresses map can be infinite. Thus, for a small subset of active projects @@ -1394,6 +1606,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: NFT Address description: Get the address where specified NFT currently reside on. operationId: asset_nft_address @@ -1417,6 +1633,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Policy Asset Address List description: Get the list of addresses with quantity for each asset on the given policy

    @@ -1444,6 +1664,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Policy Asset Information description: Get the information for all assets under the same policy operationId: policy_asset_info @@ -1466,6 +1690,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Policy Asset Mints description: Get a list of mint or burn count details for all assets minted under a policy operationId: policy_asset_mints @@ -1489,6 +1717,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset Summary description: Get the summary of an asset (total transactions exclude minting/total wallets include only wallets with asset balance) operationId: asset_summary @@ -1514,6 +1746,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Asset Transactions description: Get the list of current or all asset transaction hashes (newest first) operationId: asset_txs @@ -1537,6 +1773,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Epoch Summary description: Summary of voting power and DRep count for each epoch operationId: drep_epoch_summary @@ -1557,6 +1797,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps List description: List of all active delegated representatives (DReps) operationId: drep_list @@ -1579,6 +1823,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Info description: Get detailed information about requested delegated representatives (DReps) operationId: drep_info @@ -1601,6 +1849,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Metadata description: List metadata for requested delegated representatives (DReps) operationId: drep_metadata @@ -1623,6 +1875,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Updates description: List of updates for requested (or all) delegated representatives (DReps) operationId: drep_updates @@ -1647,6 +1903,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Voting Power History description: History of DReps voting power against each (or requested) epoch operationId: drep_history @@ -1673,6 +1933,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Voting Power History description: History of DReps voting power against each (or requested) epoch operationId: drep_voting_power_history @@ -1696,6 +1960,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Votes description: List of all votes casted by requested delegated representative (DRep) operationId: drep_votes @@ -1721,6 +1989,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: DReps Delegators description: List of all delegators to requested delegated representative (DRep). operationId: drep_delegators @@ -1741,6 +2013,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Committee Information description: Information about active committee and its members operationId: committee_info @@ -1763,6 +2039,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Committee Votes description: List of all votes casted by given committee member or collective operationId: committee_votes @@ -1783,6 +2063,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Proposals List description: List of all governance proposals operationId: proposal_list @@ -1805,6 +2089,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Voter's Proposal List description: List of all governance proposals for specified DRep, SPO or Committee credential operationId: voter_proposal_list @@ -1827,6 +2115,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Proposal Voting Summary description: Summary of votes for given proposal operationId: proposal_voting_summary @@ -1849,6 +2141,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Proposal Votes description: List of all votes cast on specified governance action operationId: proposal_votes @@ -1869,6 +2165,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Vote List description: List of all votes posted on-chain operationId: vote_list @@ -1890,6 +2190,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool List description: List of brief info for all pools operationId: pool_list @@ -1912,6 +2216,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Information description: Current pool statuses and details for a specified list of pool ids operationId: pool_info @@ -1934,6 +2242,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Stake Snapshot description: Returns Mark, Set and Go stake snapshots for the selected pool, useful for leaderlog calculation operationId: pool_stake_snapshot @@ -1956,6 +2268,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Delegators List description: Return information about live delegators for a given pool. operationId: pool_delegators @@ -1979,6 +2295,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Delegators History description: Return information about active delegators (incl. history) for a given pool and epoch number (all epochs if not specified). operationId: pool_delegators_history @@ -2002,6 +2322,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Invalid Delegators description: Return information about delegators for a given pool that are invalid for the specified epoch. operationId: pool_invalid_delegators @@ -2025,6 +2349,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Blocks description: >- Return information about blocks minted by a given pool for all epochs @@ -2049,6 +2377,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Owner History description: >- Return information about pool owner's historical stake and their promised pledge to their pools @@ -2073,6 +2405,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Stake, Block and Reward History description: >- Return information about pool stake, block and reward history in a given epoch _epoch_no @@ -2097,6 +2433,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Updates (History) description: Return all pool updates for all pools or only updates for specific pool if specified operationId: pool_updates @@ -2119,6 +2459,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Registrations description: Return all pool registrations initiated in the requested epoch operationId: pool_registrations @@ -2141,6 +2485,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Retirements description: Return all pool retirements initiated in the requested epoch operationId: pool_retirements @@ -2161,6 +2509,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Relays description: A list of registered relays for all pools operationId: pool_relays @@ -2184,6 +2536,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool's Voting Power History description: History of Pool voting power against each (or requested) epoch operationId: pool_voting_power_history @@ -2207,6 +2563,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Votes description: List of all votes casted by a pool operationId: pool_votes @@ -2231,6 +2591,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Groups description: List of all registered pool and their groups across sources from [pool_groups](https://github.com/cardano-community/pool_groups) repository. This is only relevant for mainnet operationId: pool_groups @@ -2253,6 +2617,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Metadata description: Metadata (on & off-chain) for all pools operationId: pool_metadata @@ -2273,6 +2641,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Pool Calidus Keys description: List of valid calidus keys for all pools operationId: pool_calidus_keys @@ -2296,6 +2668,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Script Information description: List of script information for given script hashes operationId: script_info @@ -2316,6 +2692,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Native Script List description: List of all existing native script hashes along with their creation transaction hashes operationId: native_script_list @@ -2336,6 +2716,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Plutus Script List description: List of all existing Plutus script hashes along with their creation transaction hashes operationId: plutus_script_list @@ -2358,6 +2742,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Script Redeemers description: List of all redeemers for a given script hash operationId: script_redeemers @@ -2380,6 +2768,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Reference Script UTxOs description: List of all unspent UTxOs with a reference script matching given script hashes operationId: reference_script_utxos @@ -2404,6 +2796,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Script UTxOs description: List of all UTxOs for a given script hash operationId: script_utxos @@ -2426,6 +2822,10 @@ paths: $ref: "#/components/responses/Unauthorized" "404": $ref: "#/components/responses/NotFound" + "429": + $ref: "#/components/responses/TooManyRequests" + "413": + $ref: "#/components/responses/PayloadTooLarge" summary: Datum Information description: List of datum information for given datum hashes operationId: datum_info @@ -6937,6 +7337,10 @@ components: description: Access token is missing or invalid BadRequest: description: The server cannot process the request due to invalid input + TooManyRequests: + description: Too many requests were sent in a short period, the tier-based cap can be referred to at https://koios.rest/tiers.html + PayloadTooLarge: + description: The payload attached to your request is too large, please ensure your request packet is less than 5kb. tags: - name: Network description: Query information about the network diff --git a/specs/template.yaml b/specs/template.yaml index 56839904..027af864 100644 --- a/specs/template.yaml +++ b/specs/template.yaml @@ -28,6 +28,10 @@ components: description: Access token is missing or invalid BadRequest: description: The server cannot process the request due to invalid input + TooManyRequests: + description: Too many requests were sent in a short period, the tier-based cap can be referred to at https://koios.rest/tiers.html + PayloadTooLarge: + description: The payload attached to your request is too large, please ensure your request packet is less than 5kb. tags: - name: Network description: Query information about the network From c56a4378caa55fe81d05c22041b806c4b49c93e0 Mon Sep 17 00:00:00 2001 From: KoT_B_KocMoce <49576827+hodlonaut@users.noreply.github.com> Date: Tue, 14 Jul 2026 12:02:42 +1000 Subject: [PATCH 11/13] Update drep_info.sql --- files/grest/rpc/governance/drep_info.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/files/grest/rpc/governance/drep_info.sql b/files/grest/rpc/governance/drep_info.sql index d2955f51..c497ab03 100644 --- a/files/grest/rpc/governance/drep_info.sql +++ b/files/grest/rpc/governance/drep_info.sql @@ -165,7 +165,7 @@ BEGIN COALESCE(dd.amount, 0)::text AS amount, va.url AS meta_url, ENCODE(va.data_hash, 'hex') AS meta_hash, - COALESCE(dc.live_deleg_count, 0) AS live_delegator_count + COALESCE(dc.live_delegator_count, 0) AS live_delegator_count FROM public.drep_hash AS dh LEFT JOIN public.drep_registration AS dr ON dh.id = dr.drep_hash_id LEFT JOIN public.voting_anchor AS va ON dr.voting_anchor_id = va.id From 2799dd6fc316e483d4a207b0555adce8c5a9791f Mon Sep 17 00:00:00 2001 From: rdlrt <3169068+rdlrt@users.noreply.github.com> Date: Tue, 14 Jul 2026 15:46:02 +1000 Subject: [PATCH 12/13] Add a temporary pathway for querying pool_list as numeric without a breaking change --- files/grest/rpc/pool/pool_list.sql | 69 ++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) diff --git a/files/grest/rpc/pool/pool_list.sql b/files/grest/rpc/pool/pool_list.sql index 9e1b37c4..d95d9497 100644 --- a/files/grest/rpc/pool/pool_list.sql +++ b/files/grest/rpc/pool/pool_list.sql @@ -66,3 +66,72 @@ AS $$ pstat.epoch_no DESC ; $$; + +CREATE OR REPLACE FUNCTION grest.pool_list(_lovelace_numeric boolean) +RETURNS TABLE ( + pool_id_bech32 varchar, + pool_id_hex text, + active_epoch_no bigint, + margin double precision, + fixed_cost numeric, + pledge numeric, + deposit numeric, + reward_addr varchar, + owners varchar [], + relays jsonb [], + ticker varchar, + pool_group text, + meta_url varchar, + meta_hash text, + pool_status text, + active_stake numeric, + retiring_epoch word31type +) +LANGUAGE sql STABLE +AS $$ + SELECT DISTINCT ON (pic.pool_hash_id) + cardano.bech32_encode('pool', ph.hash_raw)::varchar AS pool_id_bech32, + ENCODE(ph.hash_raw,'hex') as pool_id_hex, + pu.active_epoch_no, + pu.margin, + pu.fixed_cost::numeric, + pu.pledge::numeric, + pu.deposit::numeric, + grest.cip5_hex_to_stake_addr(sa.hash_raw)::varchar AS reward_addr, + ARRAY( + SELECT grest.cip5_hex_to_stake_addr(sa.hash_raw)::varchar + FROM public.pool_owner AS po + INNER JOIN public.stake_address AS sa ON sa.id = po.addr_id + WHERE po.pool_update_id = pic.update_id + ) AS owners, + ARRAY( + SELECT JSONB_BUILD_OBJECT( + 'ipv4', pr.ipv4, + 'ipv6', pr.ipv6, + 'dns', pr.dns_name, + 'srv', pr.dns_srv_name, + 'port', pr.port + ) relay + FROM public.pool_relay AS pr + WHERE pr.update_id = pic.update_id + ) AS relays, + ocpd.ticker_name, + pgrp.pool_group, + pmr.url AS meta_url, + pmr.hash AS meta_hash, + pic.pool_status, + pstat.stake::numeric AS active_stake, + pic.retiring_epoch + FROM grest.pool_info_cache AS pic + INNER JOIN public.pool_hash AS ph ON ph.id = pic.pool_hash_id + LEFT JOIN grest.pool_groups AS pgrp ON pgrp.pool_id_bech32 = ph.view + LEFT JOIN pool_stat AS pstat ON pstat.pool_hash_id = pic.pool_hash_id AND pstat.epoch_no < (select max(epoch_no) from public.epoch_param) AND pstat.epoch_no > (select max(epoch_no) - 3 from public.epoch_param) + LEFT JOIN public.pool_update AS pu ON pu.id = pic.update_id + LEFT JOIN public.stake_address AS sa ON pu.reward_addr_id = sa.id + LEFT JOIN public.pool_metadata_ref AS pmr ON pmr.id = pic.meta_id + LEFT JOIN public.off_chain_pool_data AS ocpd ON ocpd.pmr_id = pic.meta_id + ORDER BY + pic.pool_hash_id, + pstat.epoch_no DESC + ; +$$; From c7b9a20e367bf9de7929719cb030f56603a80308 Mon Sep 17 00:00:00 2001 From: KoT_B_KocMoce <49576827+hodlonaut@users.noreply.github.com> Date: Tue, 14 Jul 2026 23:05:32 +1000 Subject: [PATCH 13/13] Update 13_7.sql Extra index to speed up proposal voting summary calculations (helps non-treasury withdrawal proposals the most seemingly using mainnet data) --- files/grest/rpc/02_indexes/13_7.sql | 2 ++ 1 file changed, 2 insertions(+) diff --git a/files/grest/rpc/02_indexes/13_7.sql b/files/grest/rpc/02_indexes/13_7.sql index d93a71d8..605488ba 100644 --- a/files/grest/rpc/02_indexes/13_7.sql +++ b/files/grest/rpc/02_indexes/13_7.sql @@ -1 +1,3 @@ CREATE INDEX IF NOT EXISTS idx_voting_procedure_drep_voter ON voting_procedure (drep_voter) WHERE drep_voter IS NOT NULL; + +CREATE INDEX IF NOT EXISTS delegation_vote_addr_id_idx ON public.delegation_vote (addr_id, tx_id);