added docs and rate limiter

This commit is contained in:
Gamosoft 2026-01-15 11:31:48 +01:00
parent 1e8e21c0dc
commit 3fc58020d1
2 changed files with 73 additions and 2 deletions

View File

@ -1325,7 +1325,8 @@ async def create_share(request: Request, note_path: str, data: dict = None):
@api_router.get("/share/{note_path:path}")
async def get_share_status(note_path: str, request: Request):
@limiter.limit("120/minute")
async def get_share_status(request: Request, note_path: str):
"""
Get the share status for a note.
Returns whether the note is shared and its share URL if so.
@ -1350,7 +1351,8 @@ async def get_share_status(note_path: str, request: Request):
@api_router.get("/shared-notes")
async def list_shared_notes():
@limiter.limit("60/minute")
async def list_shared_notes(request: Request):
"""
Get a list of all currently shared note paths.
Used for displaying share indicators in the UI.

View File

@ -430,6 +430,75 @@ Creates a new note from a template with placeholder replacement.
---
## 🔗 Sharing
Share notes publicly without requiring authentication.
### Create Share Link
```http
POST /api/share/{note_path}
Content-Type: application/json
{
"theme": "dracula"
}
```
Creates a share token for the note. The `theme` is optional (defaults to "light").
**Response:**
```json
{
"success": true,
"token": "LRFEo86oSVeJ3Gju",
"url": "http://localhost:8000/share/LRFEo86oSVeJ3Gju",
"note_path": "folder/note.md"
}
```
### Get Share Status
```http
GET /api/share/{note_path}
```
Check if a note is currently shared.
**Response:**
```json
{
"shared": true,
"token": "LRFEo86oSVeJ3Gju",
"url": "http://localhost:8000/share/LRFEo86oSVeJ3Gju",
"theme": "dracula",
"created": "2026-01-15T10:30:00+00:00"
}
```
### Revoke Share
```http
DELETE /api/share/{note_path}
```
Removes public access to the note.
### List Shared Notes
```http
GET /api/shared-notes
```
Returns paths of all currently shared notes.
**Response:**
```json
{
"paths": ["folder/note.md", "another.md"]
}
```
### View Shared Note (Public)
```http
GET /share/{token}
```
Public endpoint - no authentication required. Returns the note as a standalone HTML page with the theme set when sharing was created.
---
## 📝 Response Format
All endpoints return JSON responses: