Files
KisStock/backend/app/api/endpoints/kis.py

42 lines
1.3 KiB
Python

from fastapi import APIRouter, Depends, HTTPException, Query
from pydantic import BaseModel
from typing import Literal
from app.services.kis_client import kis_client
router = APIRouter()
class OrderRequest(BaseModel):
market: Literal["Domestic", "Overseas"]
side: Literal["buy", "sell"]
code: str
quantity: int
price: float = 0 # 0 for Market Price (if supported)
@router.get("/price")
async def get_current_price(market: Literal["Domestic", "Overseas"], code: str):
"""
Get Real-time Price (REST). Prefer WebSocket for streaming.
"""
try:
price = await kis_client.get_current_price(market, code)
return {"code": code, "price": price}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.get("/balance")
async def get_balance(market: Literal["Domestic", "Overseas"]):
try:
data = await kis_client.get_balance(market)
return data
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
@router.post("/order")
async def place_order(order: OrderRequest):
try:
res = await kis_client.place_order(order.market, order.side, order.code, order.quantity, order.price)
return res
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))