{"openapi": "3.0.0", "info": {"title": "GateArb API", "version": "1.0.0", "description": "AI Model Arbitrage Gateway — Smart routing across DeepSeek, GPT-3.5, GPT-4o at optimal cost."}, "servers": [{"url": "/api/v1"}], "paths": {"/chat/completions": {"post": {"summary": "Chat Completion", "description": "Send a chat completion request. Auto-routes to cheapest available model unless 'model' is specified.", "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "required": ["messages"], "properties": {"model": {"type": "string", "description": "Model to use: auto, deepseek-chat, gpt-35-turbo, gpt-4o-mini"}, "messages": {"type": "array", "description": "Array of chat messages"}, "temperature": {"type": "number", "default": 0.7}, "max_tokens": {"type": "integer", "default": 2048}}}}}}, "responses": {"200": {"description": "Chat completion response"}}}}, "/models": {"get": {"summary": "List Models", "responses": {"200": {"description": "Available models list"}}}}, "/key/info": {"get": {"summary": "API Key Info", "parameters": [{"name": "key", "in": "query", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"description": "Key usage info"}}}}, "/stats": {"get": {"summary": "Usage Statistics", "parameters": [{"name": "key", "in": "query", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"description": "Usage stats for the key"}}}}, "/transactions/recent": {"get": {"summary": "Recent Transactions", "parameters": [{"name": "key", "in": "query", "required": true, "schema": {"type": "string"}}, {"name": "limit", "in": "query", "schema": {"type": "integer", "default": 50}}], "responses": {"200": {"description": "Recent transaction list"}}}}, "/api_logs/recent": {"get": {"summary": "Recent API Logs", "parameters": [{"name": "key", "in": "query", "required": true, "schema": {"type": "string"}}, {"name": "limit", "in": "query", "schema": {"type": "integer", "default": 50}}], "responses": {"200": {"description": "Recent API call logs"}}}}, "/usage": {"get": {"summary": "Usage Metrics", "parameters": [{"name": "key", "in": "query", "required": true, "schema": {"type": "string"}}], "responses": {"200": {"description": "Detailed usage metrics"}}}}, "/keys": {"get": {"summary": "List API Keys", "description": "List all API keys for the authenticated user", "responses": {"200": {"description": "List of API keys"}}}, "post": {"summary": "Create API Key", "description": "Create a new API key with optional label", "requestBody": {"content": {"application/json": {"schema": {"type": "object", "properties": {"label": {"type": "string"}}}}}}, "responses": {"200": {"description": "New API key created"}}}}, "/keys/revoke": {"post": {"summary": "Revoke API Key", "requestBody": {"content": {"application/json": {"schema": {"type": "object", "required": ["key_id"], "properties": {"key_id": {"type": "integer"}}}}}}, "responses": {"200": {"description": "Key revoked"}}}}, "/pnl-summary": {"get": {"summary": "PnL Summary", "parameters": [{"name": "key", "in": "query", "required": true, "schema": {"type": "string"}}, {"name": "days", "in": "query", "schema": {"type": "integer", "default": 30}}], "responses": {"200": {"description": "PnL summary"}}}}, "/health": {"get": {"summary": "Health Check", "responses": {"200": {"description": "System health status"}}}}, "/channels/status": {"get": {"summary": "Channel Status", "responses": {"200": {"description": "Channel health and availability"}}}}}}