mirror of
https://github.com/SamyRai/turash.git
synced 2025-12-26 23:01:33 +00:00
Repository Structure:
- Move files from cluttered root directory into organized structure
- Create archive/ for archived data and scraper results
- Create bugulma/ for the complete application (frontend + backend)
- Create data/ for sample datasets and reference materials
- Create docs/ for comprehensive documentation structure
- Create scripts/ for utility scripts and API tools
Backend Implementation:
- Implement 3 missing backend endpoints identified in gap analysis:
* GET /api/v1/organizations/{id}/matching/direct - Direct symbiosis matches
* GET /api/v1/users/me/organizations - User organizations
* POST /api/v1/proposals/{id}/status - Update proposal status
- Add complete proposal domain model, repository, and service layers
- Create database migration for proposals table
- Fix CLI server command registration issue
API Documentation:
- Add comprehensive proposals.md API documentation
- Update README.md with Users and Proposals API sections
- Document all request/response formats, error codes, and business rules
Code Quality:
- Follow existing Go backend architecture patterns
- Add proper error handling and validation
- Match frontend expected response schemas
- Maintain clean separation of concerns (handler -> service -> repository)
5.7 KiB
5.7 KiB
API Overview
Architecture Overview
Turash uses a RESTful API architecture with the following key components:
Core Entities
- Organizations - Companies, facilities, and institutions
- Sites - Physical locations where organizations operate
- Resource Flows - Supply and demand of industrial resources
- Matches - Potential resource exchanges between organizations
API Design Principles
- RESTful: Standard HTTP methods (GET, POST, PUT, DELETE)
- JSON: All data exchange in JSON format
- Versioned: API versioning via URL paths (
/api/v1/) - Consistent: Standardized response formats and error handling
- Documented: Comprehensive OpenAPI/Swagger documentation
Authentication & Authorization
Current Status: Authentication framework implemented but not fully activated.
Future Implementation:
- JWT-based authentication
- Role-based access control (RBAC)
- Organization-based permissions
- API key authentication for integrations
Request/Response Patterns
Successful Response
{
"data": { /* Primary response data */ },
"message": "Optional success message",
"pagination": { /* For list endpoints */ }
}
Error Response
{
"error": "Human-readable error message",
"code": "MACHINE_READABLE_ERROR_CODE",
"details": { /* Additional error context */ }
}
Common HTTP Status Codes
200 OK- Successful request201 Created- Resource created successfully400 Bad Request- Invalid request data401 Unauthorized- Authentication required403 Forbidden- Insufficient permissions404 Not Found- Resource not found422 Unprocessable Entity- Validation failed429 Too Many Requests- Rate limit exceeded500 Internal Server Error- Server error
Pagination
All list endpoints support pagination:
{
"data": [/* array of items */],
"pagination": {
"total": 1250,
"limit": 50,
"offset": 0,
"hasMore": true
}
}
Parameters:
limit(optional): Items per page (default: 50, max: 100)offset(optional): Starting position (default: 0)
Filtering & Searching
Query Parameters
- Use snake_case for parameter names
- Support multiple values for array parameters
- Boolean parameters accept
true/falseor1/0
Search Syntax
- Full-text search on relevant fields
- Support for field-specific searches
- Fuzzy matching for organization names
Data Types & Validation
Common Data Types
UUID
- Format: RFC 4122 UUID v4
- Example:
550e8400-e29b-41d4-a716-446655440000
Timestamps
- Format: ISO 8601
- Example:
2025-01-15T10:30:00Z
Geographic Coordinates
- Latitude: -90.0 to 90.0
- Longitude: -180.0 to 180.0
Monetary Values
- Currency: ISO 4217 codes (EUR, USD, etc.)
- Precision: 2 decimal places
Validation Rules
Required Fields
- Clearly marked in API documentation
- Return
422 Unprocessable Entityfor missing required fields
Field Constraints
- Type validation (string, number, boolean)
- Range validation (min/max values)
- Format validation (email, URL, phone)
- Business rule validation (cross-field dependencies)
Rate Limiting
Public Endpoints:
- 100 requests per minute per IP address
Authenticated Endpoints:
- 1000 requests per minute per user
File Uploads:
- 10 uploads per minute per user
- Maximum file size: 10MB per file
File Uploads
Supported Formats
- Images: JPEG, PNG, WebP
- Documents: PDF, DOC, DOCX
- Spreadsheets: XLS, XLSX
Upload Process
- POST to upload endpoint with
multipart/form-data - Receive file URL in response
- File served from CDN/static hosting
Security
- File type validation
- Virus scanning (planned)
- Size limits enforced
- Secure URLs with expiration (planned)
WebSocket Support
Real-time updates via WebSocket connections:
Endpoint: ws://api.turash.com/api/v1/ws
Events:
match_created: New resource match foundorganization_updated: Organization profile modifiedresource_flow_changed: Resource availability changednegotiation_updated: Match negotiation progress
API Versioning
- URL-based versioning:
/api/v1/ - Breaking changes require new version
- Deprecation warnings for sunsetted endpoints
- Minimum 6-month migration period for breaking changes
SDKs & Libraries
Planned:
- JavaScript/TypeScript SDK
- Python SDK
- Go SDK
- Postman collection
- OpenAPI/Swagger specification
Testing
Sandbox Environment
- Full API replica for testing
- Mock data for development
- Rate limiting disabled
- Debug logging enabled
API Keys
- Separate keys for sandbox and production
- Usage monitoring and analytics
- Key rotation support
Support & Documentation
Help Resources
- API Reference - Complete endpoint documentation
- Interactive API Explorer - Try API calls
- Developer Forum - Community support
- Status Page - API uptime and incidents
Getting Help
- Check this documentation first
- Search existing issues and discussions
- Create detailed bug reports with request/response examples
- Contact support with API key and request IDs
Changelog
Version 1.0.0 (Current)
- Complete organization management API
- Resource flow CRUD operations
- Advanced matching algorithms
- Geospatial analysis endpoints
- Real-time WebSocket support
Upcoming Features
- Enhanced authentication system
- Advanced analytics API
- Bulk operations support
- GraphQL API (optional)
- Mobile SDKs
This overview provides the foundation for understanding and using the Turash API effectively. Refer to specific endpoint documentation for detailed implementation guidance.