| # API Documentation |
|
|
| ## REST API Endpoints |
|
|
| ### Base URL |
| ``` |
| http://localhost:5000 |
| ``` |
|
|
| ### Authentication |
| Currently, the API is unauthenticated (for demo purposes). |
|
|
| --- |
|
|
| ## Endpoints |
|
|
| ### 1. Generate Configuration |
|
|
| **Endpoint**: `POST /api/generate` |
|
|
| **Description**: Generate a complete application configuration from a natural language prompt. |
|
|
| **Request Body**: |
| ```json |
| { |
| "prompt": "Build a CRM with login, contacts, dashboard, and role-based access" |
| } |
| ``` |
|
|
| **Query Parameters**: None |
|
|
| **Headers**: |
| ``` |
| Content-Type: application/json |
| ``` |
|
|
| **Response (Success)**: |
| ```json |
| { |
| "success": true, |
| "config": { |
| "app_name": "CRM", |
| "app_description": "...", |
| "database_schema": [...], |
| "api_schema": [...], |
| "ui_schema": [...], |
| "auth_config": {...}, |
| "roles": [...], |
| "business_logic": {...} |
| }, |
| "execution_log": { |
| "timestamp": "2026-05-06T07:52:40.123456", |
| "stages": {...} |
| }, |
| "executable_report": { |
| "is_executable": true, |
| "errors": [], |
| "warnings": [], |
| "simulation_log": [...] |
| }, |
| "is_executable": true |
| } |
| ``` |
|
|
| **Response (Error)**: |
| ```json |
| { |
| "success": false, |
| "error": "Prompt is required" |
| } |
| ``` |
|
|
| **Status Codes**: |
| - `200`: Successful generation |
| - `400`: Bad request (invalid prompt) |
| - `500`: Server error |
|
|
| **Constraints**: |
| - Prompt length: max 2,000 characters |
| - Rate limit: None (local deployment) |
|
|
| **Example**: |
| ```bash |
| curl -X POST http://localhost:5000/api/generate \ |
| -H "Content-Type: application/json" \ |
| -d '{"prompt":"Build a todo app with users, tasks, and sharing"}' |
| ``` |
|
|
| --- |
|
|
| ### 2. Validate Configuration |
|
|
| **Endpoint**: `POST /api/validate` |
|
|
| **Description**: Validate an existing configuration against schema rules. |
|
|
| **Request Body**: |
| ```json |
| { |
| "config": { |
| "app_name": "MyApp", |
| "app_description": "...", |
| "database_schema": [...], |
| ... |
| } |
| } |
| ``` |
|
|
| **Response (Success)**: |
| ```json |
| { |
| "success": true, |
| "is_executable": true, |
| "report": { |
| "is_executable": true, |
| "errors": [], |
| "warnings": [], |
| "simulation_log": [ |
| "✓ Database table 'users' initialized", |
| "✓ API endpoint 'GET /api/users' registered", |
| ... |
| ], |
| "total_checks": 12 |
| } |
| } |
| ``` |
|
|
| **Response (Error)**: |
| ```json |
| { |
| "success": false, |
| "error": "Internal server error" |
| } |
| ``` |
|
|
| **Status Codes**: |
| - `200`: Validation complete (executable or not) |
| - `400`: Bad request (invalid config) |
| - `500`: Server error |
|
|
| --- |
|
|
| ### 3. Get Recent Requests |
|
|
| **Endpoint**: `GET /api/recent` |
|
|
| **Description**: Get list of recent generation requests (last 10). |
|
|
| **Query Parameters**: None |
|
|
| **Response**: |
| ```json |
| { |
| "recent": [ |
| { |
| "timestamp": "2026-05-06T07:52:40.123456", |
| "prompt": "Build a CRM with login, contacts, dashboard...", |
| "success": true, |
| "executable": true |
| }, |
| ... |
| ] |
| } |
| ``` |
|
|
| **Status Codes**: |
| - `200`: Success |
|
|
| --- |
|
|
| ### 4. Get Example Generation |
|
|
| **Endpoint**: `GET /api/example` |
|
|
| **Description**: Get a pre-generated example configuration. |
|
|
| **Query Parameters**: None |
|
|
| **Response**: |
| ```json |
| { |
| "prompt": "Build a CRM with login, contacts, dashboard, role-based access...", |
| "config": {...}, |
| "executable": true |
| } |
| ``` |
|
|
| **Status Codes**: |
| - `200`: Success |
|
|
| --- |
|
|
| ### 5. Health Check |
|
|
| **Endpoint**: `GET /api/health` |
|
|
| **Description**: Check if the API is running and get system status. |
|
|
| **Query Parameters**: None |
|
|
| **Response**: |
| ```json |
| { |
| "status": "healthy", |
| "timestamp": "2026-05-06T07:52:40.123456", |
| "total_requests": 15 |
| } |
| ``` |
|
|
| **Status Codes**: |
| - `200`: Healthy |
| - `503`: Service unavailable |
|
|
| --- |
|
|
| ## Error Responses |
|
|
| ### Common Error Codes |
|
|
| **400 - Bad Request** |
| ```json |
| { |
| "error": "Prompt is required" |
| } |
| ``` |
|
|
| **413 - Payload Too Large** |
| ```json |
| { |
| "error": "Prompt is too long (max 2000 chars)" |
| } |
| ``` |
|
|
| **404 - Not Found** |
| ```json |
| { |
| "error": "Not found" |
| } |
| ``` |
|
|
| **500 - Internal Server Error** |
| ```json |
| { |
| "error": "Internal server error" |
| } |
| ``` |
|
|
| --- |
|
|
| ## Configuration Object Format |
|
|
| ### Top-Level Fields |
|
|
| ```json |
| { |
| "app_name": "string", |
| "app_description": "string", |
| "database_schema": [...], |
| "api_schema": [...], |
| "ui_schema": [...], |
| "auth_config": {...}, |
| "roles": [...], |
| "business_logic": {...}, |
| "validation_metadata": {...} |
| } |
| ``` |
|
|
| ### Database Schema |
|
|
| ```json |
| { |
| "name": "users", |
| "fields": [ |
| { |
| "name": "id", |
| "type": "string", |
| "required": true, |
| "description": "User ID" |
| }, |
| { |
| "name": "email", |
| "type": "email", |
| "required": true, |
| "validation_rules": { |
| "unique": true |
| } |
| } |
| ], |
| "primary_key": "id", |
| "relations": { |
| "role_id": "roles" |
| }, |
| "indexes": ["id", "email"] |
| } |
| ``` |
|
|
| ### API Schema |
|
|
| ```json |
| { |
| "path": "/api/users", |
| "method": "GET", |
| "description": "Get list of users", |
| "request_body": { |
| "page": { |
| "name": "page", |
| "type": "number", |
| "required": false |
| } |
| }, |
| "response_body": { |
| "users": { |
| "name": "users", |
| "type": "array", |
| "required": true |
| } |
| }, |
| "required_role": "user", |
| "validation_rules": ["Pagination required", "Min page size: 10"] |
| } |
| ``` |
|
|
| ### UI Schema |
|
|
| ```json |
| { |
| "path": "/users", |
| "title": "Users Page", |
| "components": [ |
| { |
| "name": "header", |
| "type": "header" |
| }, |
| { |
| "name": "user-table", |
| "type": "table", |
| "fields": ["id", "name", "email", "role"] |
| } |
| ], |
| "required_role": "user", |
| "data_source": "/api/users" |
| } |
| ``` |
|
|
| ### Auth Config |
|
|
| ```json |
| { |
| "type": "jwt", |
| "secret_key": "your-secret-key", |
| "expiry": 3600, |
| "refresh_token_expiry": 86400, |
| "algorithm": "HS256" |
| } |
| ``` |
|
|
| ### Roles |
|
|
| ```json |
| [ |
| { |
| "name": "admin", |
| "permissions": ["read_all", "write_all", "delete_all", "manage_users"], |
| "description": "Administrator with full access" |
| }, |
| { |
| "name": "user", |
| "permissions": ["read_own", "write_own", "delete_own"], |
| "description": "Regular user with personal access" |
| } |
| ] |
| ``` |
|
|
| --- |
|
|
| ## Code Examples |
|
|
| ### Python (requests) |
|
|
| ```python |
| import requests |
| import json |
| |
| # Generate configuration |
| response = requests.post( |
| 'http://localhost:5000/api/generate', |
| json={ |
| 'prompt': 'Build a CRM with contacts, dashboard, and analytics' |
| } |
| ) |
| |
| config = response.json() |
| |
| if config['success']: |
| print(f"Generated: {config['config']['app_name']}") |
| print(f"Executable: {config['is_executable']}") |
| print(json.dumps(config['config'], indent=2)) |
| ``` |
|
|
| ### JavaScript (fetch) |
|
|
| ```javascript |
| const prompt = "Build a CRM with contacts, dashboard, and analytics"; |
| |
| const response = await fetch('http://localhost:5000/api/generate', { |
| method: 'POST', |
| headers: { |
| 'Content-Type': 'application/json' |
| }, |
| body: JSON.stringify({ prompt }) |
| }); |
| |
| const data = await response.json(); |
| |
| if (data.success) { |
| console.log('Generated:', data.config.app_name); |
| console.log('Executable:', data.is_executable); |
| console.log(JSON.stringify(data.config, null, 2)); |
| } |
| ``` |
|
|
| ### cURL |
|
|
| ```bash |
| # Generate config |
| curl -X POST http://localhost:5000/api/generate \ |
| -H "Content-Type: application/json" \ |
| -d '{ |
| "prompt": "Build a CRM with contacts, dashboard, and analytics" |
| }' | jq . |
| |
| # Health check |
| curl http://localhost:5000/api/health | jq . |
| |
| # Get recent requests |
| curl http://localhost:5000/api/recent | jq . |
| |
| # Get example |
| curl http://localhost:5000/api/example | jq . |
| ``` |
|
|
| --- |
|
|
| ## Rate Limiting |
|
|
| Currently disabled. For production deployment, implement: |
| - 100 requests/minute per IP |
| - 10,000 requests/day per API key |
| - Exponential backoff on rate limit errors (429) |
|
|
| --- |
|
|
| ## Webhooks (Future) |
|
|
| Support for event notifications: |
| - `generation.started` |
| - `generation.completed` |
| - `generation.failed` |
| - `validation.warning` |
|
|
| --- |
|
|
| ## Version History |
|
|
| ### v1.0 (Current) |
| - Basic generation pipeline |
| - Validation and repair |
| - REST API |
| - Web interface |
|
|
| ### v1.1 (Planned) |
| - Advanced LLM selection |
| - Extended schema types |
| - Webhook support |
| - Rate limiting |
|
|
| ### v2.0 (Future) |
| - Direct app scaffolding |
| - Framework selection |
| - Deployment integration |
|
|
| --- |
|
|
| ## Support |
|
|
| For API issues or questions: |
| 1. Check ARCHITECTURE.md for system design |
| 2. Review quickstart.py for examples |
| 3. Run evaluation framework for diagnostics |
| 4. Check execution logs in API responses |
|
|