GET Open Interest
/open-interest
/open-interestExample Query:
https://base-hedger82.rasa.capital/open-interestExample Response:
{
  "total_cap": "2438560.667955634347925220",
  "used": "111969.991183710650000000"
}Data Source
All values are configured and managed exclusively by the hedger. This data reflects the hedger’s internal risk management settings and is not derived from on-chain contracts or user positions.
Response Fields
- total_cap: The maximum total open interest across all assets (in collateral, e.g., USDT).
- used: The portion of the total capacity currently utilized by open positions across all assets.
Open Interest Implementation (Rasa)
Router
@common_router.get(
    '/open-interest',
    responses={status.HTTP_200_OK: {"model": OpenInterestResponseSchema}},
    response_model=OpenInterestResponseSchema,
    dependencies=[
        Depends(CustomRateLimiter(times=1, seconds=1)),
        Depends(CustomRateLimiter(times=40, minutes=1)),
        Depends(CustomRateLimiter(times=1500, hours=1)),
    ]
)
@with_context_db_session
async def get_open_interest():
    # 1. Compute hedger’s capacity and usage
    total_cap, used = await OpenCapEngine.get_total_cap_and_used_amount_async(from_stats=True)
    # 2. Emit metrics for monitoring
    apm.label(total_cap=total_cap, used=used)
    # 3. Return JSON response
    return {
        "total_cap": total_cap,
        "used": used
    }- Path: - GET /open-interest
- Rate‐limits: 1 req/sec, 40 req/min, 1 500 req/hr 
- DB session: injected via - @with_context_db_session(in case the capacity engine reads from SQL)
Logic
- Call Capacity Engine - total_cap, used = await OpenCapEngine.get_total_cap_and_used_amount_async(from_stats=True)- Invokes your hedger’s internal risk‐management component to compute: - total_cap: how much notional collateral the hedger is willing to allow in aggregate. 
- used: how much of that allowance is currently locked up by open positions. 
 
 
- Instrumentation - apm.label(total_cap=total_cap, used=used)- Sends metrics (via your APM/tracing tool) for observability. 
 
- Return Payload - return {"total_cap": total_cap, "used": used}- FastAPI serializes this to JSON matching - OpenInterestResponseSchema.
 - class OpenInterestResponseSchema(BaseModel): total_cap: Decimal used: Decimal
Steps to Implement Your Own Version
- Define the Response Schema - class OpenInterestResponseSchema(BaseModel): total_cap: Decimal used: Decimal
- Build or Wire Up Your Capacity Engine - Implement - OpenCapEngine.get_total_cap_and_used_amount_async(from_stats: bool) → Tuple[Decimal, Decimal].
- Internally, read from your own data sources: - Configuration table (max capacities per asset or global). 
- Positions table (sum up open positions’ collateral needs). 
 
- Return - (total_cap, used).
 
- Add the FastAPI Route - In your - common_router, add the- @common_router.get("/open-interest")handler shown above.
- Import - OpenInterestResponseSchemaand- OpenCapEngine.
- Include your rate‐limiting dependencies and - @with_context_db_sessionif your engine needs DB access.
 
- Instrumentation (Optional) - If you have an APM or metrics library, record these values on each call. 
 
Last updated
