{
  "openapi" : "3.1.0",
  "info" : {
    "title" : "External API Server",
    "description" : "Use this API with a great respect",
    "contact" : {
      "name" : "Dmytro Nasyrov | Ludo CTO",
      "url" : "https://www.linkedin.com/in/dmytronasyrov",
      "email" : "dmytro@pharosproduction.com"
    },
    "version" : "1.0.0"
  },
  "externalDocs" : {
    "description" : "User docs",
    "url" : "https://ludo.ninja/docs"
  },
  "servers" : [ {
    "url" : "https://rest-v1.ludo.ninja",
    "description" : "API server URL"
  } ],
  "security" : [ {
    "api-key-schema" : [ ]
  } ],
  "tags" : [ {
    "name" : "AI",
    "description" : "AI classifiers"
  }, {
    "name" : "Info",
    "description" : "Ludo Blockchain API"
  }, {
    "name" : "ENS",
    "description" : "Ludo ENS API"
  }, {
    "name" : "NFT",
    "description" : "Ludo NFT API"
  }, {
    "name" : "Projects",
    "description" : "Ludo Projects API"
  }, {
    "name" : "Markets",
    "description" : "Ludo Markets API"
  }, {
    "name" : "Opportunities",
    "description" : "Ludo Opportunities API"
  }, {
    "name" : "Transfers",
    "description" : "Ludo Transfer API"
  }, {
    "name" : "Collections",
    "description" : "Ludo Collections API"
  }, {
    "name" : "Wallet",
    "description" : "Ludo Wallet API"
  } ],
  "paths" : {
    "/wallets/raw-ranks" : {
      "post" : {
        "tags" : [ "Wallet" ],
        "summary" : "Get raw rankings",
        "description" : "Endpoint to fetch raw Ludo ranks",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getRawRanks",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "string"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Raw Ludo ranks",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "object"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/wallets/ranks/batch" : {
      "post" : {
        "tags" : [ "Wallet" ],
        "summary" : "Get wallet ranks batch",
        "description" : "Endpoint to fetch Ludo wallet ranks",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getWalletRanksBatch",
        "parameters" : [ {
          "name" : "blockchain",
          "in" : "query",
          "description" : "Blockchain to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "ethereum", "avalanche", "binance", "polygon", "optimism", "immutablex", "skale", "klaytn", "moonbeam", "arbitrum", "tezos", "solana", "elrond", "flow", "arbitrum-nova", "cronos", "near", "wax", "base", "polygonzkevm", "ton" ]
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/WalletKey"
                }
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "Ludo wallet ranks",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/WalletRank"
                  }
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/nfts/{blockchain}/ranks/batch" : {
      "post" : {
        "tags" : [ "NFT" ],
        "summary" : "Get NFT ranks batch",
        "description" : "Endpoint to fetch NFT ranks batch",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getNFTRanksBatch",
        "parameters" : [ {
          "name" : "blockchain",
          "in" : "path",
          "description" : "Blockchain to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "ethereum", "avalanche", "binance", "polygon", "optimism", "immutablex", "skale", "klaytn", "moonbeam", "arbitrum", "tezos", "solana", "elrond", "flow", "arbitrum-nova", "cronos", "near", "wax", "base", "polygonzkevm", "ton" ]
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "type" : "array",
                "items" : {
                  "$ref" : "#/components/schemas/NftInput"
                }
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "NFT ranks batch",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/NftRank"
                  }
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "404" : {
            "description" : "Not found"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/ai/classifications" : {
      "post" : {
        "tags" : [ "AI" ],
        "summary" : "Classify NFTs",
        "description" : "Endpoint to get NFTs classification predictions",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "predictClassifications",
        "parameters" : [ {
          "name" : "labels",
          "in" : "query",
          "description" : "Labels for prediction",
          "required" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }, {
          "name" : "strategy",
          "in" : "query",
          "description" : "Prediction strategy, e.g. AVERAGE/TEXT/IMAGE, defines the type of NFT embeddings to use during classification. AVERAGE is used when no other option is selected.",
          "required" : false,
          "schema" : {
            "type" : "string",
            "default" : "AVERAGE",
            "enum" : [ "TEXT", "IMAGE", "AVERAGE" ]
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/NftClassificationPredictionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "List of predictions",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ClassificationPredictionResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "415" : {
            "description" : "Unsupported media type"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/wallets/{walletAddress}/user" : {
      "get" : {
        "tags" : [ "Wallet" ],
        "summary" : "Get user wallet ranks",
        "description" : "Endpoint to fetch Ludo rank of user's wallets",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getUserRank",
        "parameters" : [ {
          "name" : "walletAddress",
          "in" : "path",
          "description" : "Wallet address to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Ludo user rank",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WalletRank"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/wallets/{walletAddress}/rank" : {
      "get" : {
        "tags" : [ "Wallet" ],
        "summary" : "Get wallet rank",
        "description" : "Endpoint to fetch Ludo rank of a wallet",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getWalletRank",
        "parameters" : [ {
          "name" : "walletAddress",
          "in" : "path",
          "description" : "Wallet address to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Ludo wallet rank",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WalletRank"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/wallets/{blockchain}/{walletAddress}" : {
      "get" : {
        "tags" : [ "Wallet" ],
        "summary" : "Get all wallet NFTs",
        "description" : "Endpoint to fetch all NFTs, which are owned by a wallet. Paginated",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getAllWalletAssets",
        "parameters" : [ {
          "name" : "blockchain",
          "in" : "path",
          "description" : "Blockchain to search for. Supported blockchains: tezos, solana, elrond, ethereum, binance, avalanche, polygon, wax",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "ethereum", "avalanche", "binance", "polygon", "optimism", "immutablex", "skale", "klaytn", "moonbeam", "arbitrum", "tezos", "solana", "elrond", "flow", "arbitrum-nova", "cronos", "near", "wax", "base", "polygonzkevm", "ton" ]
          }
        }, {
          "name" : "walletAddress",
          "in" : "path",
          "description" : "Wallet address to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "type",
          "in" : "query",
          "description" : "Wallet address type to search for, e.g. all/owned/created",
          "required" : false,
          "schema" : {
            "type" : "string",
            "default" : "all",
            "enum" : [ "all", "created", "owned" ]
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of items to fetch",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50,
            "maximum" : 100,
            "minimum" : 1
          }
        }, {
          "name" : "pageToken",
          "in" : "query",
          "description" : "Next page token from a previous request's response to fetch the next page, null if the request is being sent the first time",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 60
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "NFTs paginated list",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/NftsPage"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/wallets/{blockchain}/{walletAddress}/transfers" : {
      "get" : {
        "tags" : [ "Wallet" ],
        "summary" : "Get all wallet NFT transfers",
        "description" : "Endpoint to fetch all NFT transfers of a wallet. Paginated",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getAllWalletAssetTransfers",
        "parameters" : [ {
          "name" : "blockchain",
          "in" : "path",
          "description" : "Blockchain to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "ethereum", "avalanche", "binance", "polygon", "optimism", "immutablex", "skale", "klaytn", "moonbeam", "arbitrum", "tezos", "solana", "elrond", "flow", "arbitrum-nova", "cronos", "near", "wax", "base", "polygonzkevm", "ton" ]
          }
        }, {
          "name" : "walletAddress",
          "in" : "path",
          "description" : "Wallet address to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "party",
          "in" : "query",
          "description" : "Transfer interaction to search for, e.g. all/seller/buyer",
          "required" : false,
          "schema" : {
            "type" : "string",
            "default" : "all",
            "enum" : [ "all", "seller", "buyer" ]
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of items to fetch",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50,
            "maximum" : 100,
            "minimum" : 1
          }
        }, {
          "name" : "pageToken",
          "in" : "query",
          "description" : "Next page token from a previous request's response to fetch the next page, null if the request is being sent the first time",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 60
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "NFT transfers paginated list",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TransfersPage"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/wallets/analysis" : {
      "get" : {
        "tags" : [ "Wallet" ],
        "summary" : "Get wallet analysis",
        "description" : "Endpoint to fetch Ludo wallet analysis",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getWalletAnalysis",
        "parameters" : [ {
          "name" : "blockchain",
          "in" : "query",
          "description" : "Blockchain to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "ethereum", "avalanche", "binance", "polygon", "optimism", "immutablex", "skale", "klaytn", "moonbeam", "arbitrum", "tezos", "solana", "elrond", "flow", "arbitrum-nova", "cronos", "near", "wax", "base", "polygonzkevm", "ton" ]
          }
        }, {
          "name" : "walletAddress",
          "in" : "query",
          "description" : "Wallet address to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Ludo wallet analysis",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WalletAnalysis"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/transfers/{blockchain}/{tx}" : {
      "get" : {
        "tags" : [ "Transfers" ],
        "summary" : "Get NFT transfer",
        "description" : "Endpoint to fetch NFT transfer.",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getTransferByTx",
        "parameters" : [ {
          "name" : "blockchain",
          "in" : "path",
          "description" : "Blockchain to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "ethereum", "avalanche", "binance", "polygon", "optimism", "immutablex", "skale", "klaytn", "moonbeam", "arbitrum", "tezos", "solana", "elrond", "flow", "arbitrum-nova", "cronos", "near", "wax", "base", "polygonzkevm", "ton" ]
          }
        }, {
          "name" : "tx",
          "in" : "path",
          "description" : "Transaction hash",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "NFT transfer",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Transfer"
                }
              }
            }
          },
          "404" : {
            "description" : "No such transfer"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/transfers/{blockchain}/{contractAddress}/{tokenId}" : {
      "get" : {
        "tags" : [ "Transfers" ],
        "summary" : "Get NFT transfers",
        "description" : "Endpoint to fetch NFT transfers of a particular NFT. Paginated",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getNFTTransfers",
        "parameters" : [ {
          "name" : "blockchain",
          "in" : "path",
          "description" : "Blockchain to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "ethereum", "avalanche", "binance", "polygon", "optimism", "immutablex", "skale", "klaytn", "moonbeam", "arbitrum", "tezos", "solana", "elrond", "flow", "arbitrum-nova", "cronos", "near", "wax", "base", "polygonzkevm", "ton" ]
          }
        }, {
          "name" : "contractAddress",
          "in" : "path",
          "description" : "Contract address to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "tokenId",
          "in" : "path",
          "description" : "Token ID to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 1
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of items to fetch",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50,
            "maximum" : 100,
            "minimum" : 1
          }
        }, {
          "name" : "pageToken",
          "in" : "query",
          "description" : "Next page token from a previous request's response to fetch the next page, null if the request is being sent the first time",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 60
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "NFT transfers paginated list",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TransfersPage"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "404" : {
            "description" : "No such NFT"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/transfers/search/{blockchain}" : {
      "get" : {
        "tags" : [ "Transfers" ],
        "summary" : "Search NFT transfers",
        "description" : "Endpoint to search NFT transfers by blockchain, contractAddress, tokenId, seller, buyer, blockHeight and blockTime. Paginated",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "searchTransfers",
        "parameters" : [ {
          "name" : "blockchain",
          "in" : "path",
          "description" : "Blockchain to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "ethereum", "avalanche", "binance", "polygon", "optimism", "immutablex", "skale", "klaytn", "moonbeam", "arbitrum", "tezos", "solana", "elrond", "flow", "arbitrum-nova", "cronos", "near", "wax", "base", "polygonzkevm", "ton" ]
          }
        }, {
          "name" : "contractAddress",
          "in" : "query",
          "description" : "Contract address to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "tokenId",
          "in" : "query",
          "description" : "Token ID or Solana ID to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 1
          }
        }, {
          "name" : "seller",
          "in" : "query",
          "description" : "Seller address to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "buyer",
          "in" : "query",
          "description" : "Buyer address to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "startBlockHeight",
          "in" : "query",
          "description" : "Block to search from",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "minimum" : 0
          }
        }, {
          "name" : "endBlockHeight",
          "in" : "query",
          "description" : "Block to search up to",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "minimum" : 0
          }
        }, {
          "name" : "startBlockTime",
          "in" : "query",
          "description" : "Block time to search from",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "minimum" : 0
          }
        }, {
          "name" : "endBlockTime",
          "in" : "query",
          "description" : "Block time to search up to",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "minimum" : 0
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of items to fetch",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50,
            "maximum" : 100,
            "minimum" : 1
          }
        }, {
          "name" : "pageToken",
          "in" : "query",
          "description" : "Next page token from a previous request's response to fetch the next page, null if the request is being sent the first time",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 60
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "NFT transfers paginated list",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TransfersPage"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/projects/{projectId}/smarts-history" : {
      "get" : {
        "tags" : [ "Projects" ],
        "summary" : "Get smarts history of project",
        "description" : "Endpoint to fetch smarts history of project by its blockchain and contract",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getSmartsHistory",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "description" : "ID of the project in form blockchain.contract. Example: base.0xa88594d404727625a9437c3f886c7643872296ae",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Smarts history of project",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SmartsHistory"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/projects/{projectId}/alerts" : {
      "get" : {
        "tags" : [ "Projects" ],
        "summary" : "Get alerts of project",
        "description" : "Endpoint to fetch alerts of project by its blockchain and contract",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getAlertsOfProject",
        "parameters" : [ {
          "name" : "projectId",
          "in" : "path",
          "description" : "ID of the project in form blockchain.contract. Example: base.0xa88594d404727625a9437c3f886c7643872296ae",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Alerts of project",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProjectAlerts"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/projects/alerts" : {
      "get" : {
        "tags" : [ "Projects" ],
        "summary" : "Get alerts list",
        "description" : "Endpoint to fetch alerts for projects. Sort is newest first.",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getAlerts",
        "parameters" : [ {
          "name" : "limit",
          "in" : "query",
          "description" : "Maximum number of items to return in a single request. Value must be positive, max is 500. Defaults to 100.",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        }, {
          "name" : "timeframe",
          "in" : "query",
          "description" : "Timeframe for searching. Supported values: HALF_DAY, DAY and WEEK. Defaults to DAY.",
          "required" : false,
          "schema" : {
            "type" : "string",
            "enum" : [ "HALF_DAY", "DAY", "WEEK" ]
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "List of alerts for projects",
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ProjectAlertExtended"
                  }
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/opportunities/search" : {
      "get" : {
        "tags" : [ "Opportunities" ],
        "summary" : "Search opportunities",
        "description" : "Endpoint to search opportunities by name, description and blockchain. Paginated",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "searchOpportunities",
        "parameters" : [ {
          "name" : "term",
          "in" : "query",
          "description" : "Term to search for in any opportunity fields. If it's present, other parameters are ignored",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 100,
            "minLength" : 2
          }
        }, {
          "name" : "blockchain",
          "in" : "query",
          "description" : "Blockchain to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "enum" : [ "ethereum", "avalanche", "binance", "polygon", "optimism", "immutablex", "skale", "klaytn", "moonbeam", "arbitrum", "tezos", "solana", "elrond", "flow", "arbitrum-nova", "cronos", "near", "wax", "base", "polygonzkevm", "ton" ]
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number from 1 to 100 with the page size (default 50)",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50,
            "maximum" : 100,
            "minimum" : 1
          }
        }, {
          "name" : "pageToken",
          "in" : "query",
          "description" : "Next page token from a previous request's response to fetch the next page, null if the request is being sent the first time",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 60
          }
        }, {
          "name" : "sortBy",
          "in" : "query",
          "description" : "Creation date desc (latest first)",
          "required" : false,
          "schema" : {
            "type" : "string",
            "enum" : [ "newest", "oldest" ]
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Opportunities paginated list",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/OpportunitiesPage"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/nfts/{blockchain}/ranks" : {
      "get" : {
        "tags" : [ "NFT" ],
        "summary" : "Get NFT ranks",
        "description" : "Endpoint to fetch NFT ranks. Paginated",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getNFTRanks",
        "parameters" : [ {
          "name" : "blockchain",
          "in" : "path",
          "description" : "Blockchain to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "ethereum", "avalanche", "binance", "polygon", "optimism", "immutablex", "skale", "klaytn", "moonbeam", "arbitrum", "tezos", "solana", "elrond", "flow", "arbitrum-nova", "cronos", "near", "wax", "base", "polygonzkevm", "ton" ]
          }
        }, {
          "name" : "elrondid",
          "in" : "query",
          "description" : "Elrond ID to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "contractAddress",
          "in" : "query",
          "description" : "Contract address to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 50,
            "minLength" : 3
          }
        }, {
          "name" : "tokenId",
          "in" : "query",
          "description" : "Token ID to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 1
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of items to fetch",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50,
            "maximum" : 100,
            "minimum" : 1
          }
        }, {
          "name" : "pageToken",
          "in" : "query",
          "description" : "Next page token from a previous request's response to fetch the next page, null if the request is being sent the first time",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 60
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "NFT ranks paginated list",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/NftRanksPage"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "404" : {
            "description" : "Not found"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/nfts/{blockchain}/medias" : {
      "get" : {
        "tags" : [ "NFT" ],
        "summary" : "Get NFT cached medias",
        "description" : "Endpoint to fetch NFT cached medias. Paginated",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getNFTCachedMedias",
        "parameters" : [ {
          "name" : "blockchain",
          "in" : "path",
          "description" : "Blockchain to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "ethereum", "avalanche", "binance", "polygon", "optimism", "immutablex", "skale", "klaytn", "moonbeam", "arbitrum", "tezos", "solana", "elrond", "flow", "arbitrum-nova", "cronos", "near", "wax", "base", "polygonzkevm", "ton" ]
          }
        }, {
          "name" : "elrondid",
          "in" : "query",
          "description" : "Elrond ID to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "contractAddress",
          "in" : "query",
          "description" : "Contract address to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 50,
            "minLength" : 3
          }
        }, {
          "name" : "tokenId",
          "in" : "query",
          "description" : "Token ID to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 1
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of items to fetch",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50,
            "maximum" : 100,
            "minimum" : 1
          }
        }, {
          "name" : "pageToken",
          "in" : "query",
          "description" : "Next page token from a previous request's response to fetch the next page, null if the request is being sent the first time",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 60
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "NFT cached media paginated list",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/NftMediasPage"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "404" : {
            "description" : "Not found"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/nfts/search" : {
      "get" : {
        "tags" : [ "NFT" ],
        "summary" : "Search NFTs",
        "description" : "Endpoint to search NFTs by name, contractAddress, ownerAddress, creatorAddress and blockchain. Paginated",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "searchNFTs",
        "parameters" : [ {
          "name" : "term",
          "in" : "query",
          "description" : "Term to search for in any NFT fields. If it's present, other parameters are ignored",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 100,
            "minLength" : 2
          }
        }, {
          "name" : "blockchain",
          "in" : "query",
          "description" : "Blockchain to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "enum" : [ "ethereum", "avalanche", "binance", "polygon", "optimism", "immutablex", "skale", "klaytn", "moonbeam", "arbitrum", "tezos", "solana", "elrond", "flow", "arbitrum-nova", "cronos", "near", "wax", "base", "polygonzkevm", "ton" ]
          }
        }, {
          "name" : "name",
          "in" : "query",
          "description" : "NFT name to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 50,
            "minLength" : 2
          }
        }, {
          "name" : "elrondid",
          "in" : "query",
          "description" : "Elrond ID to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "contractAddress",
          "in" : "query",
          "description" : "Contract address to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "tokenId",
          "in" : "query",
          "description" : "Token ID or Solana ID to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 1
          }
        }, {
          "name" : "ownerAddress",
          "in" : "query",
          "description" : "Owner address to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "creatorAddress",
          "in" : "query",
          "description" : "Creator address to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "startBlockHeight",
          "in" : "query",
          "description" : "Block to search from",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "minimum" : 0
          }
        }, {
          "name" : "endBlockHeight",
          "in" : "query",
          "description" : "Block to search up to",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "minimum" : 0
          }
        }, {
          "name" : "startBlockTimestamp",
          "in" : "query",
          "description" : "Block timestamp to search from",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "minimum" : 0
          }
        }, {
          "name" : "endBlockTimestamp",
          "in" : "query",
          "description" : "Block timestamp to search up to",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "minimum" : 0
          }
        }, {
          "name" : "related",
          "in" : "query",
          "description" : "Should the search return NFTs with similar name/term",
          "required" : false,
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of items to fetch",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50,
            "maximum" : 100,
            "minimum" : 1
          }
        }, {
          "name" : "pageToken",
          "in" : "query",
          "description" : "Next page token from a previous request's response to fetch the next page, null if the request is being sent the first time",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 60
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "NFTs paginated list",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/NftsPage"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/markets/search" : {
      "get" : {
        "tags" : [ "Markets" ],
        "summary" : "Search markets",
        "description" : "Endpoint to search markets by domain, blockchain, contract address, token ID. Paginated",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "searchMarkets",
        "parameters" : [ {
          "name" : "term",
          "in" : "query",
          "description" : "Term to search for in any market fields. If it's present, other parameters are ignored",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 100,
            "minLength" : 2
          }
        }, {
          "name" : "market",
          "in" : "query",
          "description" : "Marketplace to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "enum" : [ "opensea", "solanart", "nftrade", "rarible", "solsea", "deadrare", "scvfinance", "magiceden", "teia", "objkt", "binance", "billionhappiness", "niftygateway", "sudoswap", "x2y2", "blur", "looksrare", "ghostmarket", "scv", "market", "async", "okx", "xoxno" ]
          }
        }, {
          "name" : "blockchain",
          "in" : "query",
          "description" : "Blockchain to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "enum" : [ "ethereum", "avalanche", "binance", "polygon", "optimism", "immutablex", "skale", "klaytn", "moonbeam", "arbitrum", "tezos", "solana", "elrond", "flow", "arbitrum-nova", "cronos", "near", "wax", "base", "polygonzkevm", "ton" ]
          }
        }, {
          "name" : "contractAddress",
          "in" : "query",
          "description" : "Contract address to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "tokenId",
          "in" : "query",
          "description" : "Token ID or Solana ID to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 1
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of items to fetch",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50,
            "maximum" : 100,
            "minimum" : 1
          }
        }, {
          "name" : "pageToken",
          "in" : "query",
          "description" : "Next page token from a previous request's response to fetch the next page, null if the request is being sent the first time",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 60
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Markets paginated list",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MarketsPage"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/info/markets" : {
      "get" : {
        "tags" : [ "Info" ],
        "summary" : "Get all supported markets",
        "description" : "Endpoint to fetch all supported markets",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getMarketsList",
        "responses" : {
          "200" : {
            "description" : "Markets list",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MarketsInfoList"
                }
              }
            }
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/info/boosts" : {
      "get" : {
        "tags" : [ "Info" ],
        "summary" : "Get user boosts count",
        "description" : "Endpoint to fetch user boosts count",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getBoostsCount",
        "responses" : {
          "200" : {
            "description" : "User boosts count",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/UserBoostCount"
                }
              }
            }
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/info/blockchains" : {
      "get" : {
        "tags" : [ "Info" ],
        "summary" : "Get all supported blockchains",
        "description" : "Endpoint to fetch all supported blockchains",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getBlockchainsList",
        "responses" : {
          "200" : {
            "description" : "Blockchain list",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BlockchainsInfoList"
                }
              }
            }
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/ens/{name}" : {
      "get" : {
        "tags" : [ "ENS" ],
        "summary" : "Get owner address by ENS",
        "description" : "Endpoint to get owner address by ENS",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getAddress",
        "parameters" : [ {
          "name" : "name",
          "in" : "path",
          "description" : "ENS domain to fetch owner's address for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 5
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "ENS",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Ens"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad input parameters"
          },
          "404" : {
            "description" : "No such ENS"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/contracts/{blockchain}/{contractAddress}" : {
      "get" : {
        "tags" : [ "NFT" ],
        "summary" : "Get contract details",
        "description" : "Endpoint to fetch contract details",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getContractDetails",
        "parameters" : [ {
          "name" : "blockchain",
          "in" : "path",
          "description" : "Blockchain to search for. Supported blockchains: ethereum, binance, avalanche, polygon, arbitrum, optimism",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "ethereum", "avalanche", "binance", "polygon", "optimism", "immutablex", "skale", "klaytn", "moonbeam", "arbitrum", "tezos", "solana", "elrond", "flow", "arbitrum-nova", "cronos", "near", "wax", "base", "polygonzkevm", "ton" ]
          }
        }, {
          "name" : "contractAddress",
          "in" : "path",
          "description" : "Contract address to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Contract details",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Contract"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "404" : {
            "description" : "No such contract"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/contracts/{blockchain}/{contractAddress}/transfers" : {
      "get" : {
        "tags" : [ "NFT" ],
        "summary" : "Get all contract NFT transfers",
        "description" : "Endpoint to fetch all NFT transfers, which are owned by a contract. Paginated",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getAllContractNFTTransfers",
        "parameters" : [ {
          "name" : "blockchain",
          "in" : "path",
          "description" : "Blockchain to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "ethereum", "avalanche", "binance", "polygon", "optimism", "immutablex", "skale", "klaytn", "moonbeam", "arbitrum", "tezos", "solana", "elrond", "flow", "arbitrum-nova", "cronos", "near", "wax", "base", "polygonzkevm", "ton" ]
          }
        }, {
          "name" : "contractAddress",
          "in" : "path",
          "description" : "Contract address to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of items to fetch",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50,
            "maximum" : 100,
            "minimum" : 1
          }
        }, {
          "name" : "pageToken",
          "in" : "query",
          "description" : "Next page token from a previous request's response to fetch the next page, null if the request is being sent the first time",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 60
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "NFT transfers paginated list",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TransfersPage"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "404" : {
            "description" : "No such contract"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/contracts/{blockchain}/{contractAddress}/nfts" : {
      "get" : {
        "tags" : [ "NFT" ],
        "summary" : "Get all contract NFTs",
        "description" : "Endpoint to fetch all NFTs, which are owned by a contract. Paginated",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getAllContractAssets",
        "parameters" : [ {
          "name" : "blockchain",
          "in" : "path",
          "description" : "Blockchain to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "ethereum", "avalanche", "binance", "polygon", "optimism", "immutablex", "skale", "klaytn", "moonbeam", "arbitrum", "tezos", "solana", "elrond", "flow", "arbitrum-nova", "cronos", "near", "wax", "base", "polygonzkevm", "ton" ]
          }
        }, {
          "name" : "contractAddress",
          "in" : "path",
          "description" : "Contract address to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of items to fetch",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50,
            "maximum" : 100,
            "minimum" : 1
          }
        }, {
          "name" : "pageToken",
          "in" : "query",
          "description" : "Next page token from a previous request's response to fetch the next page, null if the request is being sent the first time",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 60
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "NFTs paginated list",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/NftsPage"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "404" : {
            "description" : "No such contract"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/collections" : {
      "get" : {
        "tags" : [ "Collections" ],
        "summary" : "Search Collections",
        "description" : "Endpoint to search Collections by title, blockchain, contract address, token ID. Paginated",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "searchCollections",
        "parameters" : [ {
          "name" : "term",
          "in" : "query",
          "description" : "Term to search for in any collection fields. If it's present, term's value will be used to search for a match with omitted parameters",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 100,
            "minLength" : 2
          }
        }, {
          "name" : "title",
          "in" : "query",
          "description" : "Collection title to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 50,
            "minLength" : 2
          }
        }, {
          "name" : "blockchain",
          "in" : "query",
          "description" : "Blockchain to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "enum" : [ "ethereum", "avalanche", "binance", "polygon", "optimism", "immutablex", "skale", "klaytn", "moonbeam", "arbitrum", "tezos", "solana", "elrond", "flow", "arbitrum-nova", "cronos", "near", "wax", "base", "polygonzkevm", "ton" ]
          }
        }, {
          "name" : "elrondid",
          "in" : "query",
          "description" : "Elrond ID to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "contractAddress",
          "in" : "query",
          "description" : "Contract address to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "solanatokenid",
          "in" : "query",
          "description" : "Solana ID to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 1
          }
        }, {
          "name" : "related",
          "in" : "query",
          "description" : "Should the search return collections with similar name/term",
          "required" : false,
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of items to fetch",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50,
            "maximum" : 100,
            "minimum" : 1
          }
        }, {
          "name" : "pageToken",
          "in" : "query",
          "description" : "Next page token from a previous request's response to fetch the next page, null if the request is being sent the first time",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 120,
            "minLength" : 60
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Collections paginated list",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/CollectionsPage"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "404" : {
            "description" : "No such collections"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/collections/{blockchain}" : {
      "get" : {
        "tags" : [ "Collections" ],
        "summary" : "Get all collection NFTs",
        "description" : "Endpoint to fetch all NFTs from a collection. Paginated",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getAllCollectionAssets",
        "parameters" : [ {
          "name" : "blockchain",
          "in" : "path",
          "description" : "Blockchain to search for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "enum" : [ "ethereum", "avalanche", "binance", "polygon", "optimism", "immutablex", "skale", "klaytn", "moonbeam", "arbitrum", "tezos", "solana", "elrond", "flow", "arbitrum-nova", "cronos", "near", "wax", "base", "polygonzkevm", "ton" ]
          }
        }, {
          "name" : "title",
          "in" : "query",
          "description" : "Collection title to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 50,
            "minLength" : 2
          }
        }, {
          "name" : "elrondid",
          "in" : "query",
          "description" : "Elrond ID to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "contractAddress",
          "in" : "query",
          "description" : "Contract address to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        }, {
          "name" : "solanatokenid",
          "in" : "query",
          "description" : "Solana ID to search for",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 1
          }
        }, {
          "name" : "pageSize",
          "in" : "query",
          "description" : "Number of items to fetch",
          "required" : false,
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 50,
            "maximum" : 100,
            "minimum" : 1
          }
        }, {
          "name" : "pageToken",
          "in" : "query",
          "description" : "Next page token from a previous request's response to fetch the next page, null if the request is being sent the first time",
          "required" : false,
          "schema" : {
            "type" : "string",
            "maxLength" : 110,
            "minLength" : 60
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "NFTs paginated list",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/NftsPage"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad arguments"
          },
          "404" : {
            "description" : "No such collections"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    },
    "/addresses/{address}/ens" : {
      "get" : {
        "tags" : [ "ENS" ],
        "summary" : "Get ENS by owner address",
        "description" : "Endpoint to get ENS by owner address",
        "externalDocs" : {
          "description" : "This is an external documentation reference",
          "url" : "https://ludo.ninja/docs/ens"
        },
        "operationId" : "getEns",
        "parameters" : [ {
          "name" : "address",
          "in" : "path",
          "description" : "Owner address to fetch ENS for",
          "required" : true,
          "schema" : {
            "type" : "string",
            "maxLength" : 70,
            "minLength" : 3
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "ENS",
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Ens"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad input parameters"
          },
          "404" : {
            "description" : "No such address"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "500" : {
            "description" : "Server error"
          },
          "503" : {
            "description" : "Service unavailable"
          },
          "504" : {
            "description" : "Gateway timeout"
          }
        }
      }
    }
  },
  "components" : {
    "schemas" : {
      "Extra" : {
        "type" : "object",
        "properties" : {
          "nativeBalance" : {
            "type" : "number",
            "format" : "float"
          },
          "nativeBalanceUsd" : {
            "type" : "number",
            "format" : "float"
          },
          "tokenBalanceUsd" : {
            "type" : "number",
            "format" : "float"
          },
          "balanceUpdatedAt" : {
            "type" : "string",
            "format" : "date-time"
          }
        }
      },
      "WalletKey" : {
        "type" : "object",
        "properties" : {
          "address" : {
            "type" : "string"
          },
          "extra" : {
            "$ref" : "#/components/schemas/Extra"
          }
        }
      },
      "WalletRank" : {
        "type" : "object",
        "description" : "Ludo wallet ranking",
        "properties" : {
          "walletAddress" : {
            "type" : "string",
            "description" : "Wallet address"
          },
          "rank" : {
            "type" : "number",
            "format" : "float",
            "description" : "Rank value"
          },
          "rankVersion" : {
            "type" : "string",
            "description" : "Rank algorithm version"
          }
        }
      },
      "NftInput" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "address" : {
            "type" : "string"
          },
          "tokenId" : {
            "type" : "string"
          }
        }
      },
      "NftRank" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "address" : {
            "type" : "string"
          },
          "tokenId" : {
            "type" : "string"
          },
          "blockchain" : {
            "type" : "string"
          },
          "rank" : {
            "type" : "number",
            "format" : "float"
          },
          "rankUpdatedAt" : {
            "type" : "integer",
            "format" : "int64"
          },
          "rankVersion" : {
            "type" : "string"
          }
        }
      },
      "ClassificationNftInput" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "title" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "collectionTitle" : {
            "type" : "string"
          },
          "collectionDescription" : {
            "type" : "string"
          },
          "image" : {
            "type" : "string"
          }
        }
      },
      "NftClassificationPredictionRequest" : {
        "type" : "object",
        "properties" : {
          "nfts" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ClassificationNftInput"
            },
            "minItems" : 1
          }
        },
        "required" : [ "nfts" ]
      },
      "ClassificationPredictionResponse" : {
        "type" : "object",
        "properties" : {
          "results" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ClassificationPredictionResult"
            }
          }
        }
      },
      "ClassificationPredictionResult" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "prediction" : {
            "type" : "string"
          },
          "source" : {
            "type" : "string"
          },
          "scores" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ClassificationScore"
            }
          }
        }
      },
      "ClassificationScore" : {
        "type" : "object",
        "properties" : {
          "value" : {
            "type" : "string"
          },
          "score" : {
            "type" : "number",
            "format" : "double"
          }
        }
      },
      "Attribute" : {
        "type" : "object",
        "description" : "NFT attribute pair",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Attribute name"
          },
          "value" : {
            "type" : "string",
            "description" : "Attribute value"
          }
        }
      },
      "Media" : {
        "type" : "object",
        "description" : "NFT media information",
        "properties" : {
          "originalUrl" : {
            "type" : "string",
            "description" : "Original media URL"
          },
          "url" : {
            "type" : "string",
            "description" : "Proxy URL served by API"
          },
          "mimeType" : {
            "type" : "string",
            "description" : "MIME type of original media"
          },
          "sizeRatio" : {
            "type" : "number",
            "format" : "float",
            "description" : "Width to height ratio"
          },
          "fileSize" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Media file size in bytes"
          },
          "nsfw" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "NSFW score of media"
          },
          "originalS3Key" : {
            "type" : "string",
            "description" : "S3 storage key of original file"
          },
          "originalMimeType" : {
            "type" : "string",
            "description" : "Original MIME type if converted"
          }
        }
      },
      "Nft" : {
        "type" : "object",
        "description" : "NFT representation",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Unique NFT identifier"
          },
          "address" : {
            "type" : "string",
            "description" : "Contract address"
          },
          "tokenId" : {
            "type" : "string",
            "description" : "Token ID within the contract"
          },
          "blockchain" : {
            "type" : "string",
            "description" : "Blockchain name"
          },
          "blockHeight" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Minted block height"
          },
          "blockTimestamp" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Block timestamp in seconds"
          },
          "name" : {
            "type" : "string",
            "description" : "NFT name"
          },
          "description" : {
            "type" : "string",
            "description" : "NFT description"
          },
          "symbol" : {
            "type" : "string",
            "description" : "NFT collection symbol"
          },
          "links" : {
            "type" : "array",
            "description" : "External links",
            "items" : {
              "type" : "string"
            }
          },
          "medias" : {
            "type" : "array",
            "description" : "Associated media",
            "items" : {
              "$ref" : "#/components/schemas/Media"
            }
          },
          "nsfw" : {
            "type" : "integer",
            "format" : "int32",
            "description" : "NSFW score"
          },
          "ownersAddresses" : {
            "type" : "array",
            "description" : "Current owners",
            "items" : {
              "type" : "string"
            }
          },
          "ownersProfiles" : {
            "type" : "array",
            "description" : "Owner profiles",
            "items" : {
              "$ref" : "#/components/schemas/Profile"
            }
          },
          "creatorsAddresses" : {
            "type" : "array",
            "description" : "Contract creators",
            "items" : {
              "type" : "string"
            }
          },
          "creatorsProfiles" : {
            "type" : "array",
            "description" : "Creator profiles",
            "items" : {
              "$ref" : "#/components/schemas/Profile"
            }
          },
          "attributes" : {
            "type" : "array",
            "description" : "List of NFT attributes",
            "items" : {
              "$ref" : "#/components/schemas/Attribute"
            }
          },
          "rank" : {
            "type" : "number",
            "format" : "float",
            "description" : "Ludo rank score"
          },
          "rankUpdatedAt" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Rank last update timestamp"
          },
          "rankVersion" : {
            "type" : "string",
            "description" : "Rank algorithm version"
          }
        }
      },
      "NftsPage" : {
        "type" : "object",
        "description" : "Paginated NFT result",
        "properties" : {
          "nfts" : {
            "type" : "array",
            "description" : "NFT list",
            "items" : {
              "$ref" : "#/components/schemas/Nft"
            }
          },
          "nextPageToken" : {
            "type" : "string",
            "description" : "Token for the next page"
          },
          "totalResults" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Total number of results"
          }
        }
      },
      "Profile" : {
        "type" : "object",
        "description" : "Profile information for wallet",
        "properties" : {
          "wallet" : {
            "type" : "string"
          },
          "username" : {
            "type" : "string"
          },
          "website" : {
            "type" : "string"
          },
          "about" : {
            "type" : "string"
          },
          "userpic" : {
            "type" : "string"
          }
        }
      },
      "Transfer" : {
        "type" : "object",
        "description" : "NFT transfer event",
        "properties" : {
          "tx" : {
            "type" : "string",
            "description" : "Transaction hash"
          },
          "blockchain" : {
            "type" : "string",
            "description" : "Blockchain name"
          },
          "blockHeight" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Block number"
          },
          "blockTime" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Block timestamp"
          },
          "seller" : {
            "type" : "string",
            "description" : "Seller wallet"
          },
          "buyer" : {
            "type" : "string",
            "description" : "Buyer wallet"
          },
          "tokenAmount" : {
            "type" : "string",
            "description" : "Amount of tokens transferred"
          },
          "address" : {
            "type" : "string",
            "description" : "Contract address"
          },
          "tokenId" : {
            "type" : "string",
            "description" : "Token identifier"
          },
          "paidAmount" : {
            "type" : "number",
            "format" : "float",
            "description" : "Paid amount"
          },
          "paidCurrency" : {
            "type" : "string",
            "description" : "Payment currency"
          }
        }
      },
      "TransfersPage" : {
        "type" : "object",
        "description" : "Paginated transfer result",
        "properties" : {
          "transfers" : {
            "type" : "array",
            "description" : "Transfer list",
            "items" : {
              "$ref" : "#/components/schemas/Transfer"
            }
          },
          "nextPageToken" : {
            "type" : "string",
            "description" : "Token for the next page"
          },
          "totalResults" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Total number of results"
          }
        }
      },
      "DataSourceStatus" : {
        "type" : "object",
        "properties" : {
          "solrWalletData" : {
            "type" : "boolean"
          },
          "solrNftData" : {
            "type" : "boolean"
          },
          "solrTransactionData" : {
            "type" : "boolean"
          },
          "cassandraData" : {
            "type" : "boolean"
          },
          "scalersData" : {
            "type" : "boolean"
          },
          "warnings" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "errors" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "RankContributionStatus" : {
        "type" : "object",
        "properties" : {
          "implemented" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "notImplemented" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "estimated" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "maxedOut" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "RankContributions" : {
        "type" : "object",
        "properties" : {
          "nftPortfolioQuality" : {
            "type" : "number",
            "format" : "float"
          },
          "tokenBalanceScore" : {
            "type" : "number",
            "format" : "float"
          },
          "balanceBonus" : {
            "type" : "number",
            "format" : "float"
          },
          "scaledNativeUsd" : {
            "type" : "number",
            "format" : "float"
          },
          "scaledTokenBalance" : {
            "type" : "number",
            "format" : "float"
          },
          "communitySocial" : {
            "type" : "number",
            "format" : "float"
          },
          "growthDevelopment" : {
            "type" : "number",
            "format" : "float"
          },
          "total" : {
            "type" : "number",
            "format" : "float"
          },
          "actualRank" : {
            "type" : "number",
            "format" : "float"
          },
          "difference" : {
            "type" : "number",
            "format" : "float"
          },
          "contributionStatus" : {
            "$ref" : "#/components/schemas/RankContributionStatus"
          },
          "dataSourceStatus" : {
            "$ref" : "#/components/schemas/DataSourceStatus"
          }
        }
      },
      "WalletAnalysis" : {
        "type" : "object",
        "properties" : {
          "blockchain" : {
            "type" : "string"
          },
          "walletAddress" : {
            "type" : "string"
          },
          "rankVersion" : {
            "type" : "string"
          },
          "walletDetails" : {
            "$ref" : "#/components/schemas/WalletDetails"
          },
          "rankContributions" : {
            "$ref" : "#/components/schemas/RankContributions"
          },
          "dataSourceStatus" : {
            "$ref" : "#/components/schemas/DataSourceStatus"
          },
          "analysisTimestamp" : {
            "type" : "integer",
            "format" : "int64"
          },
          "analysisReliability" : {
            "type" : "string"
          }
        }
      },
      "WalletDetails" : {
        "type" : "object",
        "properties" : {
          "nativeBalanceUsd" : {
            "type" : "number",
            "format" : "float"
          },
          "tokenBalanceUsd" : {
            "type" : "number",
            "format" : "float"
          },
          "totalBalanceUsd" : {
            "type" : "number",
            "format" : "float"
          },
          "totalNftsFound" : {
            "type" : "integer",
            "format" : "int32"
          },
          "nftsUsedForRanking" : {
            "type" : "integer",
            "format" : "int32"
          },
          "nftUsageProportion" : {
            "type" : "number",
            "format" : "float"
          },
          "minNftRank" : {
            "type" : "number",
            "format" : "float"
          },
          "maxNftRank" : {
            "type" : "number",
            "format" : "float"
          },
          "avgNftRank" : {
            "type" : "number",
            "format" : "float"
          },
          "kvalue" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "SmartsCounter" : {
        "type" : "object",
        "properties" : {
          "date" : {
            "type" : "integer",
            "format" : "int64"
          },
          "count" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "SmartsHistory" : {
        "type" : "object",
        "description" : "History of changes for project's smarts count",
        "properties" : {
          "blockchain" : {
            "type" : "string",
            "description" : "Project's blockchain"
          },
          "contract" : {
            "type" : "string",
            "description" : "Project's contract"
          },
          "history" : {
            "type" : "array",
            "description" : "Dataset with changes by smarts count",
            "items" : {
              "$ref" : "#/components/schemas/SmartsCounter"
            }
          }
        }
      },
      "ProjectAlert" : {
        "type" : "object",
        "properties" : {
          "date" : {
            "type" : "integer",
            "format" : "int64"
          },
          "description" : {
            "type" : "string"
          }
        }
      },
      "ProjectAlerts" : {
        "type" : "object",
        "description" : "Dataset with alerts of specific project",
        "properties" : {
          "blockchain" : {
            "type" : "string",
            "description" : "Project's blockchain"
          },
          "contract" : {
            "type" : "string",
            "description" : "Project's contract"
          },
          "alerts" : {
            "type" : "array",
            "description" : "List of project's alerts",
            "items" : {
              "$ref" : "#/components/schemas/ProjectAlert"
            }
          }
        }
      },
      "ProjectAlertExtended" : {
        "type" : "object",
        "description" : "Dataset with projects alerts",
        "properties" : {
          "projectId" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "date" : {
            "type" : "integer",
            "format" : "int64"
          }
        }
      },
      "OpportunitiesPage" : {
        "type" : "object",
        "description" : "Paginated opportunities",
        "properties" : {
          "opportunities" : {
            "type" : "array",
            "description" : "Opportunity list",
            "items" : {
              "$ref" : "#/components/schemas/Opportunity"
            }
          },
          "nextPageToken" : {
            "type" : "string",
            "description" : "Token for the next page"
          },
          "totalResults" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Total number of results"
          }
        }
      },
      "Opportunity" : {
        "type" : "object",
        "properties" : {
          "opportunityId" : {
            "type" : "string"
          },
          "brandId" : {
            "type" : "string"
          },
          "categoryId" : {
            "type" : "string"
          },
          "opportunityStatus" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "brandName" : {
            "type" : "string"
          },
          "brandDescription" : {
            "type" : "string"
          },
          "brandMedia" : {
            "type" : "string"
          },
          "brandUrl" : {
            "type" : "string"
          },
          "brandIndustry" : {
            "type" : "string"
          },
          "categoryName" : {
            "type" : "string"
          },
          "projectUrl" : {
            "type" : "string"
          },
          "activeFrom" : {
            "type" : "integer",
            "format" : "int64"
          },
          "activeUntil" : {
            "type" : "integer",
            "format" : "int64"
          },
          "media" : {
            "type" : "string"
          },
          "blockchain" : {
            "type" : "string"
          },
          "createdAt" : {
            "type" : "integer",
            "format" : "int64"
          }
        }
      },
      "NftRanksPage" : {
        "type" : "object",
        "description" : "Paginated NFT ranks",
        "properties" : {
          "ranks" : {
            "type" : "array",
            "description" : "Rank entries",
            "items" : {
              "$ref" : "#/components/schemas/NftRank"
            }
          },
          "nextPageToken" : {
            "type" : "string",
            "description" : "Token for the next page"
          }
        }
      },
      "NftMedia" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "address" : {
            "type" : "string"
          },
          "tokenId" : {
            "type" : "string"
          },
          "blockchain" : {
            "type" : "string"
          },
          "medias" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Media"
            }
          }
        }
      },
      "NftMediasPage" : {
        "type" : "object",
        "description" : "Paginated NFT media list",
        "properties" : {
          "medias" : {
            "type" : "array",
            "description" : "NFT media entries",
            "items" : {
              "$ref" : "#/components/schemas/NftMedia"
            }
          },
          "nextPageToken" : {
            "type" : "string",
            "description" : "Token for the next page"
          },
          "totalResults" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Total number of results"
          }
        }
      },
      "Address" : {
        "type" : "object",
        "description" : "Wallet addresses involved",
        "properties" : {
          "creators" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Wallet"
            }
          },
          "owners" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Wallet"
            }
          },
          "associateAddresses" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Wallet"
            }
          }
        }
      },
      "Asset" : {
        "type" : "object",
        "description" : "Detailed asset info",
        "properties" : {
          "mediaUrls" : {
            "type" : "array",
            "description" : "NFT media URLs",
            "items" : {
              "type" : "string"
            }
          },
          "collectionUrl" : {
            "type" : "string",
            "description" : "Collection page URL"
          },
          "rank" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string"
          },
          "mintedAt" : {
            "type" : "string"
          },
          "tags" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "url" : {
            "type" : "string"
          },
          "traits" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Trait"
            }
          },
          "listedAt" : {
            "type" : "string"
          },
          "lastSoldAt" : {
            "type" : "string"
          },
          "symbol" : {
            "type" : "string"
          },
          "supply" : {
            "type" : "string"
          },
          "price" : {
            "type" : "number",
            "format" : "double"
          },
          "score" : {
            "type" : "string"
          },
          "collectionTitle" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string",
            "description" : "NFT name"
          }
        }
      },
      "Event" : {
        "type" : "object",
        "description" : "Transaction event",
        "properties" : {
          "event" : {
            "type" : "string",
            "description" : "Event type"
          },
          "price" : {
            "type" : "number",
            "format" : "double",
            "description" : "Sale price"
          },
          "to" : {
            "$ref" : "#/components/schemas/Wallet"
          },
          "from" : {
            "$ref" : "#/components/schemas/Wallet"
          }
        }
      },
      "Factor" : {
        "type" : "object",
        "description" : "Listing popularity factors",
        "properties" : {
          "favorites" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Number of favorites"
          },
          "highestOffer" : {
            "type" : "number",
            "format" : "double",
            "description" : "Current highest offer"
          },
          "verified" : {
            "type" : "boolean",
            "description" : "Is the listing verified"
          }
        }
      },
      "Fee" : {
        "type" : "object",
        "description" : "Marketplace fee information",
        "properties" : {
          "service" : {
            "type" : "number",
            "format" : "double"
          },
          "royalties" : {
            "type" : "number",
            "format" : "double"
          },
          "extra" : {
            "type" : "number",
            "format" : "double"
          },
          "creators" : {
            "type" : "number",
            "format" : "double"
          }
        }
      },
      "History" : {
        "type" : "object",
        "description" : "Historical events",
        "properties" : {
          "offers" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Offer"
            }
          },
          "events" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Event"
            }
          }
        }
      },
      "Market" : {
        "type" : "object",
        "description" : "Marketplace listing",
        "properties" : {
          "tokenId" : {
            "type" : "string",
            "description" : "Token identifier"
          },
          "contractAddress" : {
            "type" : "string",
            "description" : "NFT contract address"
          },
          "blockchain" : {
            "type" : "string",
            "description" : "Blockchain name"
          },
          "factors" : {
            "$ref" : "#/components/schemas/Factor"
          },
          "asset" : {
            "$ref" : "#/components/schemas/Asset"
          },
          "addresses" : {
            "$ref" : "#/components/schemas/Address"
          },
          "histories" : {
            "$ref" : "#/components/schemas/History"
          },
          "marketData" : {
            "$ref" : "#/components/schemas/MarketData"
          },
          "fees" : {
            "$ref" : "#/components/schemas/Fee"
          }
        }
      },
      "MarketData" : {
        "type" : "object",
        "description" : "Market platform data",
        "properties" : {
          "marketName" : {
            "type" : "string"
          },
          "marketUpdatedAt" : {
            "type" : "string"
          },
          "domain" : {
            "type" : "string"
          }
        }
      },
      "MarketsPage" : {
        "type" : "object",
        "description" : "Paginated market result",
        "properties" : {
          "markets" : {
            "type" : "array",
            "description" : "Markets list",
            "items" : {
              "$ref" : "#/components/schemas/Market"
            }
          },
          "nextPageToken" : {
            "type" : "string",
            "description" : "Token for the next page"
          },
          "totalResults" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Total number of results"
          }
        }
      },
      "Offer" : {
        "type" : "object",
        "description" : "Offer information",
        "properties" : {
          "status" : {
            "type" : "string",
            "description" : "Offer status"
          },
          "price" : {
            "type" : "number",
            "format" : "double",
            "description" : "Offer price"
          },
          "floorDifference" : {
            "type" : "number",
            "format" : "double"
          },
          "from" : {
            "$ref" : "#/components/schemas/Wallet"
          }
        }
      },
      "Trait" : {
        "type" : "object",
        "description" : "Attribute trait data",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "value" : {
            "type" : "string"
          },
          "rarity" : {
            "type" : "number",
            "format" : "double"
          }
        }
      },
      "Wallet" : {
        "type" : "object",
        "description" : "Wallet information",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "address" : {
            "type" : "string"
          },
          "url" : {
            "type" : "string"
          }
        }
      },
      "MarketInfo" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "domain" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "logo" : {
            "type" : "string"
          },
          "blockchains" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "MarketsInfoList" : {
        "type" : "object",
        "properties" : {
          "markets" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/MarketInfo"
            }
          }
        }
      },
      "UserBoostCount" : {
        "type" : "object",
        "properties" : {
          "ambassadors" : {
            "type" : "integer",
            "format" : "int32"
          },
          "educators" : {
            "type" : "integer",
            "format" : "int32"
          },
          "users" : {
            "type" : "integer",
            "format" : "int32"
          },
          "referredUsers" : {
            "type" : "integer",
            "format" : "int32"
          },
          "shootingStars" : {
            "type" : "integer",
            "format" : "int32"
          },
          "totalXpEarned" : {
            "type" : "integer",
            "format" : "int32"
          },
          "totalXpSpent" : {
            "type" : "integer",
            "format" : "int32"
          },
          "totalCreditsEarned" : {
            "type" : "integer",
            "format" : "int32"
          },
          "totalCreditsSpent" : {
            "type" : "integer",
            "format" : "int32"
          },
          "totalProjectsActivated" : {
            "type" : "integer",
            "format" : "int32"
          },
          "totalProjectsSubscribers" : {
            "type" : "integer",
            "format" : "int32"
          },
          "totalOpportunityReferred" : {
            "type" : "integer",
            "format" : "int32"
          },
          "totalActiveOpportunities" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "BlockchainInfo" : {
        "type" : "object",
        "description" : "Supported blockchain metadata",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Blockchain name"
          },
          "symbol" : {
            "type" : "string",
            "description" : "Ticker symbol"
          },
          "logo" : {
            "type" : "string",
            "description" : "Logo URL"
          }
        }
      },
      "BlockchainsInfoList" : {
        "type" : "object",
        "properties" : {
          "blockchains" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/BlockchainInfo"
            }
          }
        }
      },
      "Ens" : {
        "type" : "object",
        "properties" : {
          "address" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          }
        }
      },
      "Contract" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "symbol" : {
            "type" : "string"
          },
          "creators" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "Collection" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "blockchain" : {
            "type" : "string"
          },
          "contractAddress" : {
            "type" : "string"
          },
          "tokenId" : {
            "type" : "string"
          },
          "collectionTitle" : {
            "type" : "string"
          },
          "collectionUrl" : {
            "type" : "string"
          },
          "verified" : {
            "type" : "boolean"
          }
        }
      },
      "CollectionsPage" : {
        "type" : "object",
        "description" : "Paginated collections result",
        "properties" : {
          "collections" : {
            "type" : "array",
            "description" : "Collections list",
            "items" : {
              "$ref" : "#/components/schemas/Collection"
            }
          },
          "nextPageToken" : {
            "type" : "string",
            "description" : "Token for the next page"
          },
          "results" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Total number of results"
          }
        }
      }
    },
    "securitySchemes" : {
      "api-key-schema" : {
        "type" : "apiKey",
        "name" : "x-client-authorization",
        "in" : "header"
      }
    }
  }
}