{
  "openapi": "3.1.0",
  "info": {
    "title": "CheapCryptoAPI",
    "version": "1.0.0",
    "description": "Unified REST API — 26 endpoints, credit billing"
  },
  "servers": [
    {
      "url": "/api/v1"
    }
  ],
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "API key"
      },
      "apiKeyHeader": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Api-Key"
      },
      "apiKeyQuery": {
        "type": "apiKey",
        "in": "query",
        "name": "api_key"
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "paths": {
    "/getCryptoList": {
      "get": {
        "summary": "List of available coins",
        "tags": [
          "Market Data"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getConversion": {
      "get": {
        "summary": "Conversion",
        "tags": [
          "Market Data"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getConversion"
          },
          {
            "name": "convert",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param convert for getConversion"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getFearGreed": {
      "get": {
        "summary": "Fear & Greed index",
        "tags": [
          "Market Data"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getPerformance": {
      "get": {
        "summary": "Performance",
        "tags": [
          "Analytics"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getPerformance"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getVolatility": {
      "get": {
        "summary": "Volatility",
        "tags": [
          "Analytics"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getVolatility"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getATHATL": {
      "get": {
        "summary": "ATH / ATL",
        "tags": [
          "Analytics"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getATHATL"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getTechnicalAnalysis": {
      "get": {
        "summary": "Technical analysis (10)",
        "tags": [
          "Technical Analysis"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getTechnicalAnalysis"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getNews": {
      "get": {
        "summary": "News (10)",
        "tags": [
          "News"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getNews"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getCorrelation": {
      "get": {
        "summary": "Correlation (100)",
        "tags": [
          "Technical Analysis"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getCorrelation"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getSupportResistance": {
      "get": {
        "summary": "Support/Resistance levels (100)",
        "tags": [
          "Technical Analysis"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getSupportResistance"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getMARibbon": {
      "get": {
        "summary": "MA Ribbon (100)",
        "tags": [
          "Technical Analysis"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getMARibbon"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getBollinger": {
      "get": {
        "summary": "Bollinger Bands (100)",
        "tags": [
          "Technical Analysis"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getBollinger"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getIchimoku": {
      "get": {
        "summary": "Ichimoku (100)",
        "tags": [
          "Technical Analysis"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getIchimoku"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getATR": {
      "get": {
        "summary": "ATR (100)",
        "tags": [
          "Technical Analysis"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getATR"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getSupertrend": {
      "get": {
        "summary": "Supertrend (100)",
        "tags": [
          "Technical Analysis"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getSupertrend"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getData": {
      "get": {
        "summary": "Quotes per coin (variable per coin)",
        "tags": [
          "Market Data"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getData"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getDataCurrency": {
      "get": {
        "summary": "Quotes in specified currency",
        "tags": [
          "Market Data"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getDataCurrency"
          },
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param currency for getDataCurrency"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getTop": {
      "get": {
        "summary": "Top coins by market cap",
        "tags": [
          "Market Data"
        ],
        "parameters": [
          {
            "name": "top",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param top for getTop"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getExchange": {
      "get": {
        "summary": "Exchange data",
        "tags": [
          "Market Data"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getExchange"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getHistory": {
      "get": {
        "summary": "Historical data",
        "tags": [
          "Market Data"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getHistory"
          },
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param date for getHistory"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getTimeframe": {
      "get": {
        "summary": "Timeframe data",
        "tags": [
          "Market Data"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getTimeframe"
          },
          {
            "name": "interval",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param interval for getTimeframe"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getBreakouts": {
      "get": {
        "summary": "Breakouts",
        "tags": [
          "Analytics"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getBreakouts"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getMarketBreadth": {
      "get": {
        "summary": "Market breadth",
        "tags": [
          "Analytics"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getMarketBreadth"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getOHLC": {
      "get": {
        "summary": "OHLC candles",
        "tags": [
          "Market Data"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getOHLC"
          },
          {
            "name": "interval",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param interval for getOHLC"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getOHLCIntraday": {
      "get": {
        "summary": "Intraday candles (yearly, caps per interval)",
        "tags": [
          "Market Data"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getOHLCIntraday"
          },
          {
            "name": "interval",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param interval for getOHLCIntraday"
          },
          {
            "name": "bars",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param bars for getOHLCIntraday"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/getTickers": {
      "get": {
        "summary": "Tickers (variable per coin)",
        "tags": [
          "Market Data"
        ],
        "parameters": [
          {
            "name": "symbol",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "param symbol for getTickers"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          },
          "401": {
            "description": "Missing/Invalid key"
          },
          "402": {
            "description": "Yearly required"
          },
          "404": {
            "description": "Unknown endpoint"
          },
          "429": {
            "description": "Rate limit / Quota exceeded"
          },
          "502": {
            "description": "Upstream unavailable"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    }
  }
}