More dev wiki
This commit is contained in:
@@ -0,0 +1,554 @@
|
||||
<div class="row">
|
||||
<div class="col-lg-8">
|
||||
<!-- API Overview -->
|
||||
<div class="mb-5">
|
||||
<h5 style="color: var(--primary-color);" class="mb-3">RESTful API Documentation</h5>
|
||||
<p class="text-muted lead">
|
||||
DocuPulse provides a comprehensive RESTful API with 50+ endpoints for file management, user collaboration,
|
||||
and system administration. The API supports both web-based interactions and external integrations with
|
||||
proper authentication and authorization controls.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<!-- Authentication -->
|
||||
<div class="mb-5">
|
||||
<h5 style="color: var(--primary-color);" class="mb-4">Authentication</h5>
|
||||
<div class="row g-4">
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100 border-0 shadow-sm">
|
||||
<div class="card-body">
|
||||
<h6 style="color: var(--primary-color);" class="card-title mb-3">Web Authentication</h6>
|
||||
<ul class="list-unstyled mb-0">
|
||||
<li class="mb-2">• Flask-Login session-based</li>
|
||||
<li class="mb-2">• CSRF token protection</li>
|
||||
<li class="mb-2">• Secure cookie handling</li>
|
||||
<li class="mb-2">• Automatic session timeout</li>
|
||||
<li class="mb-2">• Remember me functionality</li>
|
||||
<li class="mb-2">• Password reset tokens</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card h-100 border-0 shadow-sm">
|
||||
<div class="card-body">
|
||||
<h6 style="color: var(--primary-color);" class="card-title mb-3">API Authentication</h6>
|
||||
<ul class="list-unstyled mb-0">
|
||||
<li class="mb-2">• JWT token-based auth</li>
|
||||
<li class="mb-2">• Management API keys</li>
|
||||
<li class="mb-2">• Token expiration handling</li>
|
||||
<li class="mb-2">• IP address tracking</li>
|
||||
<li class="mb-2">• Rate limiting support</li>
|
||||
<li class="mb-2">• Audit logging</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Core API Endpoints -->
|
||||
<div class="mb-5">
|
||||
<h5 style="color: var(--primary-color);" class="mb-4">Core API Endpoints</h5>
|
||||
|
||||
<!-- Authentication Endpoints -->
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white">
|
||||
<h6 class="mb-0" style="color: var(--primary-color);">
|
||||
<i class="fas fa-user-shield me-2"></i>Authentication Endpoints
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Method</th>
|
||||
<th>Endpoint</th>
|
||||
<th>Description</th>
|
||||
<th>Auth Required</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><span class="badge bg-primary">POST</span></td>
|
||||
<td><code>/auth/login</code></td>
|
||||
<td>User login</td>
|
||||
<td><span class="badge bg-secondary">No</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-danger">POST</span></td>
|
||||
<td><code>/auth/logout</code></td>
|
||||
<td>User logout</td>
|
||||
<td><span class="badge bg-success">Yes</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-primary">POST</span></td>
|
||||
<td><code>/auth/register</code></td>
|
||||
<td>User registration</td>
|
||||
<td><span class="badge bg-secondary">No</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-primary">POST</span></td>
|
||||
<td><code>/auth/forgot-password</code></td>
|
||||
<td>Password reset request</td>
|
||||
<td><span class="badge bg-secondary">No</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-primary">POST</span></td>
|
||||
<td><code>/auth/reset-password</code></td>
|
||||
<td>Password reset</td>
|
||||
<td><span class="badge bg-secondary">No</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Room Management Endpoints -->
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white">
|
||||
<h6 class="mb-0" style="color: var(--primary-color);">
|
||||
<i class="fas fa-door-open me-2"></i>Room Management Endpoints
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Method</th>
|
||||
<th>Endpoint</th>
|
||||
<th>Description</th>
|
||||
<th>Auth Required</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><span class="badge bg-success">GET</span></td>
|
||||
<td><code>/rooms</code></td>
|
||||
<td>List user's rooms</td>
|
||||
<td><span class="badge bg-success">Yes</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-primary">POST</span></td>
|
||||
<td><code>/rooms</code></td>
|
||||
<td>Create new room</td>
|
||||
<td><span class="badge bg-success">Yes</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-success">GET</span></td>
|
||||
<td><code>/rooms/{id}</code></td>
|
||||
<td>Get room details</td>
|
||||
<td><span class="badge bg-success">Yes</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-warning">PUT</span></td>
|
||||
<td><code>/rooms/{id}</code></td>
|
||||
<td>Update room</td>
|
||||
<td><span class="badge bg-success">Yes</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-danger">DELETE</span></td>
|
||||
<td><code>/rooms/{id}</code></td>
|
||||
<td>Delete room</td>
|
||||
<td><span class="badge bg-success">Yes</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- File Management Endpoints -->
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white">
|
||||
<h6 class="mb-0" style="color: var(--primary-color);">
|
||||
<i class="fas fa-file-alt me-2"></i>File Management Endpoints
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Method</th>
|
||||
<th>Endpoint</th>
|
||||
<th>Description</th>
|
||||
<th>Auth Required</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><span class="badge bg-success">GET</span></td>
|
||||
<td><code>/api/rooms/{room_id}/files</code></td>
|
||||
<td>List room files</td>
|
||||
<td><span class="badge bg-success">Yes</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-primary">POST</span></td>
|
||||
<td><code>/api/rooms/{room_id}/upload</code></td>
|
||||
<td>Upload file</td>
|
||||
<td><span class="badge bg-success">Yes</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-success">GET</span></td>
|
||||
<td><code>/api/rooms/{room_id}/files/{file_id}</code></td>
|
||||
<td>Download file</td>
|
||||
<td><span class="badge bg-success">Yes</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-warning">PUT</span></td>
|
||||
<td><code>/api/rooms/{room_id}/files/{file_id}</code></td>
|
||||
<td>Update file</td>
|
||||
<td><span class="badge bg-success">Yes</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-danger">DELETE</span></td>
|
||||
<td><code>/api/rooms/{room_id}/files/{file_id}</code></td>
|
||||
<td>Delete file</td>
|
||||
<td><span class="badge bg-success">Yes</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-primary">POST</span></td>
|
||||
<td><code>/api/rooms/{room_id}/files/{file_id}/star</code></td>
|
||||
<td>Star/unstar file</td>
|
||||
<td><span class="badge bg-success">Yes</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Conversation Endpoints -->
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white">
|
||||
<h6 class="mb-0" style="color: var(--primary-color);">
|
||||
<i class="fas fa-comments me-2"></i>Conversation Endpoints
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Method</th>
|
||||
<th>Endpoint</th>
|
||||
<th>Description</th>
|
||||
<th>Auth Required</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><span class="badge bg-success">GET</span></td>
|
||||
<td><code>/conversations</code></td>
|
||||
<td>List conversations</td>
|
||||
<td><span class="badge bg-success">Yes</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-primary">POST</span></td>
|
||||
<td><code>/conversations</code></td>
|
||||
<td>Create conversation</td>
|
||||
<td><span class="badge bg-success">Yes</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-success">GET</span></td>
|
||||
<td><code>/conversations/{id}/messages</code></td>
|
||||
<td>Get messages</td>
|
||||
<td><span class="badge bg-success">Yes</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-primary">POST</span></td>
|
||||
<td><code>/conversations/{id}/messages</code></td>
|
||||
<td>Send message</td>
|
||||
<td><span class="badge bg-success">Yes</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-primary">POST</span></td>
|
||||
<td><code>/conversations/{id}/members</code></td>
|
||||
<td>Add member</td>
|
||||
<td><span class="badge bg-success">Yes</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Admin API Endpoints -->
|
||||
<div class="mb-5">
|
||||
<h5 style="color: var(--primary-color);" class="mb-4">Administrative API Endpoints</h5>
|
||||
|
||||
<!-- Management API -->
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white">
|
||||
<h6 class="mb-0" style="color: var(--primary-color);">
|
||||
<i class="fas fa-cogs me-2"></i>Management API Endpoints
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Method</th>
|
||||
<th>Endpoint</th>
|
||||
<th>Description</th>
|
||||
<th>Auth Required</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><span class="badge bg-success">GET</span></td>
|
||||
<td><code>/api/admin/instances</code></td>
|
||||
<td>List instances</td>
|
||||
<td><span class="badge bg-success">Admin</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-primary">POST</span></td>
|
||||
<td><code>/api/admin/instances</code></td>
|
||||
<td>Create instance</td>
|
||||
<td><span class="badge bg-success">Admin</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-success">GET</span></td>
|
||||
<td><code>/api/admin/events</code></td>
|
||||
<td>Get system events</td>
|
||||
<td><span class="badge bg-success">Admin</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-success">GET</span></td>
|
||||
<td><code>/api/admin/users</code></td>
|
||||
<td>List users</td>
|
||||
<td><span class="badge bg-success">Admin</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-warning">PUT</span></td>
|
||||
<td><code>/api/admin/settings</code></td>
|
||||
<td>Update settings</td>
|
||||
<td><span class="badge bg-success">Admin</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Launch API -->
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-header bg-white">
|
||||
<h6 class="mb-0" style="color: var(--primary-color);">
|
||||
<i class="fas fa-rocket me-2"></i>Launch API Endpoints
|
||||
</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Method</th>
|
||||
<th>Endpoint</th>
|
||||
<th>Description</th>
|
||||
<th>Auth Required</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><span class="badge bg-primary">POST</span></td>
|
||||
<td><code>/api/admin/test-portainer</code></td>
|
||||
<td>Test Portainer connection</td>
|
||||
<td><span class="badge bg-secondary">No</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-primary">POST</span></td>
|
||||
<td><code>/api/admin/test-nginx</code></td>
|
||||
<td>Test NGINX connection</td>
|
||||
<td><span class="badge bg-secondary">No</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-primary">POST</span></td>
|
||||
<td><code>/api/admin/deploy-stack</code></td>
|
||||
<td>Deploy Docker stack</td>
|
||||
<td><span class="badge bg-success">Admin</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-primary">POST</span></td>
|
||||
<td><code>/api/admin/create-proxy</code></td>
|
||||
<td>Create proxy host</td>
|
||||
<td><span class="badge bg-success">Admin</span></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><span class="badge bg-primary">POST</span></td>
|
||||
<td><code>/api/admin/create-ssl</code></td>
|
||||
<td>Create SSL certificate</td>
|
||||
<td><span class="badge bg-success">Admin</span></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Response Formats -->
|
||||
<div class="mb-5">
|
||||
<h5 style="color: var(--primary-color);" class="mb-4">Response Formats</h5>
|
||||
<div class="row g-4">
|
||||
<div class="col-md-6">
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-body">
|
||||
<h6 class="card-title text-muted mb-3">Success Response</h6>
|
||||
<pre class="bg-light p-3 rounded small"><code>{
|
||||
"success": true,
|
||||
"data": {
|
||||
"id": 1,
|
||||
"name": "Example",
|
||||
"created_at": "2024-01-01T00:00:00Z"
|
||||
},
|
||||
"message": "Operation successful"
|
||||
}</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-body">
|
||||
<h6 class="card-title text-muted mb-3">Error Response</h6>
|
||||
<pre class="bg-light p-3 rounded small"><code>{
|
||||
"success": false,
|
||||
"error": "Validation failed",
|
||||
"details": {
|
||||
"field": "name",
|
||||
"message": "Name is required"
|
||||
},
|
||||
"status_code": 400
|
||||
}</code></pre>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Sidebar -->
|
||||
<div class="col-lg-4">
|
||||
<!-- API Statistics -->
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-body text-center">
|
||||
<h5 class="card-title mb-4" style="color: var(--primary-color);">API Statistics</h5>
|
||||
<div class="row g-3">
|
||||
<div class="col-6">
|
||||
<div class="p-3 rounded" style="background-color: var(--primary-opacity-15);">
|
||||
<div class="h3 mb-1" style="color: var(--primary-color);">50+</div>
|
||||
<small class="text-muted">Endpoints</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="p-3 rounded" style="background-color: var(--secondary-opacity-15);">
|
||||
<div class="h3 mb-1" style="color: var(--secondary-color);">12</div>
|
||||
<small class="text-muted">Modules</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="p-3 rounded" style="background-color: var(--primary-opacity-15);">
|
||||
<div class="h3 mb-1" style="color: var(--primary-color);">4</div>
|
||||
<small class="text-muted">Auth Types</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<div class="p-3 rounded" style="background-color: var(--secondary-opacity-15);">
|
||||
<div class="h3 mb-1" style="color: var(--secondary-color);">JSON</div>
|
||||
<small class="text-muted">Data Format</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Authentication Methods -->
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title mb-3" style="color: var(--primary-color);">Authentication Methods</h5>
|
||||
<div class="d-grid gap-2">
|
||||
<div class="p-2 rounded" style="background-color: var(--primary-bg-light);">
|
||||
<i class="fas fa-cookie-bite me-2"></i>Session-based (Web)
|
||||
</div>
|
||||
<div class="p-2 rounded" style="background-color: var(--secondary-bg-light);">
|
||||
<i class="fas fa-key me-2"></i>JWT Tokens (API)
|
||||
</div>
|
||||
<div class="p-2 rounded" style="background-color: var(--primary-bg-light);">
|
||||
<i class="fas fa-shield-alt me-2"></i>API Keys (Management)
|
||||
</div>
|
||||
<div class="p-2 rounded" style="background-color: var(--secondary-bg-light);">
|
||||
<i class="fas fa-user-shield me-2"></i>Role-based Access
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- HTTP Status Codes -->
|
||||
<div class="card border-0 shadow-sm mb-4">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title mb-3" style="color: var(--primary-color);">HTTP Status Codes</h5>
|
||||
<div class="small">
|
||||
<div class="mb-2">
|
||||
<span class="badge bg-success me-2">200</span>
|
||||
<strong>OK</strong> - Request successful
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
<span class="badge bg-primary me-2">201</span>
|
||||
<strong>Created</strong> - Resource created
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
<span class="badge bg-warning me-2">400</span>
|
||||
<strong>Bad Request</strong> - Invalid input
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
<span class="badge bg-danger me-2">401</span>
|
||||
<strong>Unauthorized</strong> - Authentication required
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
<span class="badge bg-danger me-2">403</span>
|
||||
<strong>Forbidden</strong> - Access denied
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
<span class="badge bg-secondary me-2">404</span>
|
||||
<strong>Not Found</strong> - Resource not found
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
<span class="badge bg-danger me-2">500</span>
|
||||
<strong>Server Error</strong> - Internal error
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Rate Limiting -->
|
||||
<div class="card border-0 shadow-sm">
|
||||
<div class="card-body">
|
||||
<h5 class="card-title mb-3" style="color: var(--primary-color);">Rate Limiting</h5>
|
||||
<div class="small">
|
||||
<div class="mb-2">
|
||||
<i class="fas fa-clock text-primary me-2"></i>
|
||||
<strong>Standard</strong> - 100 requests/minute
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
<i class="fas fa-user-shield text-primary me-2"></i>
|
||||
<strong>Authenticated</strong> - 500 requests/minute
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
<i class="fas fa-crown text-primary me-2"></i>
|
||||
<strong>Admin</strong> - 1000 requests/minute
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
<i class="fas fa-exclamation-triangle text-warning me-2"></i>
|
||||
<strong>Exceeded</strong> - 429 Too Many Requests
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user