- 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
314 lines
4.9 KiB
Markdown
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=..."
|
|
}
|
|
```
|