localgreenchain/docs/api/rest-api.md
Claude 4111c3acf1
Add complete documentation suite for LocalGreenChain
- Add guides: quick-start, installation, configuration, grower, consumer, transport, vertical-farm
- Add API references: REST, demand, vertical-farming
- Add concepts: blockchain, seasonal-planning, carbon-footprint
- Add architecture: data-flow, transport-tracking
- Add vertical-farming: environmental-control, automation, integration
- Add examples: seed-to-harvest, demand-driven-planting, vertical-farm-setup

Completes Agent_5 documentation tasks from AGENT_REPORT.md
2025-11-22 18:48:42 +00:00

314 lines
4.9 KiB
Markdown

# REST API Reference
Complete API reference for LocalGreenChain.
## Base URL
```
Development: http://localhost:3001/api
Production: https://api.localgreenchain.org/api
```
## Authentication
Most endpoints require authentication via API key or session token:
```http
Authorization: Bearer <your-api-token>
```
Or via cookie for web sessions.
## Response Format
All responses follow this structure:
```json
{
"success": true,
"data": { ... },
"error": null
}
```
Error responses:
```json
{
"success": false,
"data": null,
"error": {
"code": "VALIDATION_ERROR",
"message": "Invalid plant ID format"
}
}
```
## HTTP Status Codes
| Code | Description |
|------|-------------|
| 200 | Success |
| 201 | Created |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Not Found |
| 500 | Internal Server Error |
---
## Plants API
### Register Plant
```http
POST /api/plants/register
Content-Type: application/json
{
"commonName": "Tomato",
"scientificName": "Solanum lycopersicum",
"location": {
"latitude": 40.7128,
"longitude": -74.0060,
"city": "New York",
"country": "USA"
},
"owner": {
"id": "user-123",
"name": "John Doe"
}
}
```
Response:
```json
{
"success": true,
"data": {
"id": "plant-abc123",
"blockHash": "0x1234...",
"timestamp": "2024-06-01T10:00:00Z"
}
}
```
### Clone Plant
```http
POST /api/plants/clone
Content-Type: application/json
{
"parentPlantId": "plant-abc123",
"propagationType": "clone",
"newPlant": {
"location": { ... },
"owner": { ... }
}
}
```
### Get Plant by ID
```http
GET /api/plants/{plantId}
```
### Get Plant Lineage
```http
GET /api/plants/lineage/{plantId}
```
### Find Nearby Plants
```http
GET /api/plants/nearby?lat=40.7128&lon=-74.0060&radius=50
```
Query Parameters:
- `lat` (required): Latitude
- `lon` (required): Longitude
- `radius` (optional): Search radius in km (default: 50)
### Search Plants
```http
GET /api/plants/search?q=tomato&type=species
```
Query Parameters:
- `q` (required): Search query
- `type` (optional): `species`, `location`, `owner`
### Get Network Statistics
```http
GET /api/plants/network
```
Response:
```json
{
"success": true,
"data": {
"totalPlants": 15234,
"chainLength": 15235,
"difficulty": 3,
"activeGrowers": 892,
"countriesRepresented": 45
}
}
```
---
## Transport API
See [Transport API Reference](./transport-api.md) for full details.
### Key Endpoints
```http
POST /api/transport/seed-acquisition
POST /api/transport/planting
POST /api/transport/growing
POST /api/transport/harvest
POST /api/transport/distribution
POST /api/transport/seed-saving
POST /api/transport/seed-sharing
GET /api/transport/journey/{plantId}
GET /api/transport/footprint/{userId}
GET /api/transport/verify/{blockHash}
GET /api/transport/qr/{id}
```
---
## Demand API
See [Demand API Reference](./demand-api.md) for full details.
### Key Endpoints
```http
POST /api/demand/preferences
GET /api/demand/preferences/{consumerId}
POST /api/demand/signal
GET /api/demand/recommendations
GET /api/demand/forecast
POST /api/demand/supply
POST /api/demand/match
```
---
## Vertical Farming API
See [Vertical Farming API Reference](./vertical-farming-api.md) for full details.
### Key Endpoints
```http
POST /api/vertical-farm/register
GET /api/vertical-farm/{farmId}
GET /api/vertical-farm/{farmId}/zones
POST /api/vertical-farm/{farmId}/zones
GET /api/vertical-farm/{farmId}/analytics
POST /api/vertical-farm/batch/start
GET /api/vertical-farm/batch/{batchId}
PUT /api/vertical-farm/batch/{batchId}/environment
POST /api/vertical-farm/batch/{batchId}/harvest
GET /api/vertical-farm/recipes
```
---
## Error Codes
| Code | Description |
|------|-------------|
| `VALIDATION_ERROR` | Input validation failed |
| `NOT_FOUND` | Resource not found |
| `UNAUTHORIZED` | Authentication required |
| `FORBIDDEN` | Insufficient permissions |
| `CHAIN_ERROR` | Blockchain operation failed |
| `DUPLICATE` | Resource already exists |
| `RATE_LIMITED` | Too many requests |
---
## Rate Limiting
Default limits:
- 100 requests per minute per IP
- 1000 requests per hour per user
Headers returned:
```http
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1625097600
```
---
## Pagination
List endpoints support pagination:
```http
GET /api/plants/search?q=tomato&page=1&limit=20
```
Response includes:
```json
{
"data": [...],
"pagination": {
"page": 1,
"limit": 20,
"total": 150,
"totalPages": 8
}
}
```
---
## Webhooks
Register webhooks for events:
```http
POST /api/webhooks
Content-Type: application/json
{
"url": "https://yourdomain.com/webhook",
"events": ["plant.registered", "transport.completed"],
"secret": "your-webhook-secret"
}
```
Webhook payload:
```json
{
"event": "plant.registered",
"timestamp": "2024-06-01T10:00:00Z",
"data": {
"plantId": "plant-abc123",
"commonName": "Tomato"
},
"signature": "sha256=..."
}
```