130 lines
3.4 KiB
JSON
130 lines
3.4 KiB
JSON
{
|
|
"openapi": "3.0.0",
|
|
"info": {
|
|
"title": "CryptoWallet API",
|
|
"version": "2.0.0",
|
|
"description": "Multi-chain cryptocurrency wallet API with blockchain proxy services"
|
|
},
|
|
"servers": [
|
|
{ "url": "/api", "description": "API" }
|
|
],
|
|
"components": {
|
|
"securitySchemes": {
|
|
"bearerAuth": {
|
|
"type": "http",
|
|
"scheme": "bearer",
|
|
"bearerFormat": "JWT"
|
|
}
|
|
},
|
|
"schemas": {
|
|
"Error": {
|
|
"type": "object",
|
|
"properties": {
|
|
"success": { "type": "boolean", "example": false },
|
|
"error": { "type": "string" }
|
|
}
|
|
},
|
|
"Wallet": {
|
|
"type": "object",
|
|
"properties": {
|
|
"chain": { "type": "string", "enum": ["ETH", "BTC", "SOL", "TRX", "BSC"] },
|
|
"address": { "type": "string" },
|
|
"derivationPath": { "type": "string" }
|
|
}
|
|
},
|
|
"HealthResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"success": { "type": "boolean", "example": true },
|
|
"data": {
|
|
"type": "object",
|
|
"properties": {
|
|
"status": { "type": "string", "example": "ok" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"paths": {
|
|
"/csrf/token": {
|
|
"get": {
|
|
"summary": "Issue CSRF token (sets cookie, returns token for X-CSRF-Token header)",
|
|
"tags": ["System"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "CSRF token issued",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"success": { "type": "boolean", "example": true },
|
|
"data": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": { "type": "string" },
|
|
"header_name": { "type": "string", "example": "X-CSRF-Token" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/health": {
|
|
"get": {
|
|
"summary": "Health check",
|
|
"tags": ["System"],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Service is healthy",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": { "$ref": "#/components/schemas/HealthResponse" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/wallets": {
|
|
"get": {
|
|
"summary": "Get user wallets",
|
|
"tags": ["Wallets"],
|
|
"security": [{ "bearerAuth": [] }],
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of wallets",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"success": { "type": "boolean", "example": true },
|
|
"data": {
|
|
"type": "array",
|
|
"items": { "$ref": "#/components/schemas/Wallet" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"401": {
|
|
"description": "Not authenticated",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": { "$ref": "#/components/schemas/Error" }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|