344 lines
9.1 KiB
JSON
344 lines
9.1 KiB
JSON
{
|
|
"openapi": "3.0.1",
|
|
"info": {
|
|
"title": "Farmer",
|
|
"description": "API for managing farms and nodes, tracking rewards, capacity, and location.",
|
|
"version": "1.0.0"
|
|
},
|
|
"servers": [
|
|
{
|
|
"url": "http://localhost:8080",
|
|
"description": "Local development server"
|
|
}
|
|
],
|
|
"components": {
|
|
"schemas": {
|
|
"Farm": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"example": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"example": "Amsterdam Data Center"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"example": "Enterprise-grade data center with renewable energy focus"
|
|
},
|
|
"owner": {
|
|
"type": "string",
|
|
"example": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"owner"
|
|
]
|
|
},
|
|
"Node": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"example": "n47ac10b-58cc-4372-a567-0e02b2c3d479"
|
|
},
|
|
"description": {
|
|
"type": "string",
|
|
"example": "High-performance GPU compute node with 4x NVIDIA A100"
|
|
},
|
|
"farm_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"example": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
|
|
},
|
|
"location": {
|
|
"$ref": "#/components/schemas/Location"
|
|
},
|
|
"capacity": {
|
|
"$ref": "#/components/schemas/Capacity"
|
|
},
|
|
"grid_version": {
|
|
"type": "string",
|
|
"example": "3.16.2"
|
|
},
|
|
"reward": {
|
|
"$ref": "#/components/schemas/Reward"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"description",
|
|
"farm_id",
|
|
"location",
|
|
"capacity",
|
|
"reward"
|
|
]
|
|
},
|
|
"Location": {
|
|
"type": "object",
|
|
"properties": {
|
|
"coordinates": {
|
|
"type": "string",
|
|
"example": "52.3740, 4.8897"
|
|
},
|
|
"continent": {
|
|
"type": "string",
|
|
"example": "Europe"
|
|
},
|
|
"country": {
|
|
"type": "string",
|
|
"example": "Netherlands"
|
|
}
|
|
},
|
|
"required": [
|
|
"coordinates",
|
|
"continent",
|
|
"country"
|
|
]
|
|
},
|
|
"Capacity": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cpu": {
|
|
"type": "integer",
|
|
"example": 128
|
|
},
|
|
"memory_gb": {
|
|
"type": "integer",
|
|
"example": 1024
|
|
},
|
|
"storage_tb": {
|
|
"type": "integer",
|
|
"example": 100
|
|
}
|
|
},
|
|
"required": [
|
|
"cpu",
|
|
"memory_gb",
|
|
"storage_tb"
|
|
]
|
|
},
|
|
"Reward": {
|
|
"type": "object",
|
|
"properties": {
|
|
"reward_promised": {
|
|
"type": "number",
|
|
"format": "double",
|
|
"example": 25000.50
|
|
},
|
|
"reward_given": {
|
|
"type": "number",
|
|
"format": "double",
|
|
"example": 12500.25
|
|
},
|
|
"duration_months": {
|
|
"type": "integer",
|
|
"example": 36
|
|
}
|
|
},
|
|
"required": [
|
|
"reward_promised",
|
|
"reward_given",
|
|
"duration_months"
|
|
]
|
|
},
|
|
"NodeStats": {
|
|
"type": "object",
|
|
"properties": {
|
|
"node_id": {
|
|
"type": "integer",
|
|
"format": "uint32",
|
|
"example": "42"
|
|
},
|
|
"uptime_hours": {
|
|
"type": "integer",
|
|
"example": 8760
|
|
},
|
|
"bandwidth_gb": {
|
|
"type": "integer",
|
|
"example": 25000
|
|
}
|
|
},
|
|
"required": [
|
|
"node_id",
|
|
"uptime_hours",
|
|
"bandwidth_gb"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"paths": {
|
|
"/farms": {
|
|
"get": {
|
|
"summary": "List all farms",
|
|
"operationId": "getFarms",
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of farms",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Farm"
|
|
}
|
|
},
|
|
"example": [
|
|
{
|
|
"id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
|
|
"name": "Amsterdam Data Center",
|
|
"description": "Enterprise-grade data center with renewable energy focus",
|
|
"owner": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
|
|
},
|
|
{
|
|
"id": "d47ac10b-58cc-4372-a567-0e02b2c3d480",
|
|
"name": "Dubai Compute Hub",
|
|
"description": "High-density compute farm with advanced cooling",
|
|
"owner": "0x842d35Cc6634C0532925a3b844Bc454e4438f55f"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/farms/{farmId}/nodes": {
|
|
"get": {
|
|
"summary": "List nodes in a farm",
|
|
"operationId": "getNodesByFarm",
|
|
"parameters": [
|
|
{
|
|
"name": "farmId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"format": "uuid"
|
|
},
|
|
"example": "f47ac10b-58cc-4372-a567-0e02b2c3d479"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "List of nodes in the farm",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Node"
|
|
}
|
|
},
|
|
"example": [
|
|
{
|
|
"id": "n47ac10b-58cc-4372-a567-0e02b2c3d479",
|
|
"description": "High-performance GPU compute node with 4x NVIDIA A100",
|
|
"farm_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
|
|
"location": {
|
|
"coordinates": "52.3740, 4.8897",
|
|
"continent": "Europe",
|
|
"country": "Netherlands"
|
|
},
|
|
"capacity": {
|
|
"cpu": 128,
|
|
"memory_gb": 1024,
|
|
"storage_tb": 100
|
|
},
|
|
"grid_version": "3.16.2",
|
|
"reward": {
|
|
"reward_promised": 25000.50,
|
|
"reward_given": 12500.25,
|
|
"duration_months": 36
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Farm not found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": 404
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"example": "Farm with ID f47ac10b-58cc-4372-a567-0e02b2c3d479 not found"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/nodes/{nodeId}/stats": {
|
|
"get": {
|
|
"summary": "Get node statistics",
|
|
"operationId": "getNodeStats",
|
|
"parameters": [
|
|
{
|
|
"name": "nodeId",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "uint32"
|
|
},
|
|
"example": "42"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Node statistics",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/NodeStats"
|
|
},
|
|
"example": {
|
|
"node_id": "42",
|
|
"uptime_hours": 8760,
|
|
"bandwidth_gb": 25000
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"404": {
|
|
"description": "Node not found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"example": 404
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"example": "Node with ID n47ac10b-58cc-4372-a567-0e02b2c3d479 not found"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |