added docs and rate limiter
This commit is contained in:
parent
1e8e21c0dc
commit
3fc58020d1
|
|
@ -1325,7 +1325,8 @@ async def create_share(request: Request, note_path: str, data: dict = None):
|
||||||
|
|
||||||
|
|
||||||
@api_router.get("/share/{note_path:path}")
|
@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.
|
Get the share status for a note.
|
||||||
Returns whether the note is shared and its share URL if so.
|
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")
|
@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.
|
Get a list of all currently shared note paths.
|
||||||
Used for displaying share indicators in the UI.
|
Used for displaying share indicators in the UI.
|
||||||
|
|
|
||||||
|
|
@ -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
|
## 📝 Response Format
|
||||||
|
|
||||||
All endpoints return JSON responses:
|
All endpoints return JSON responses:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue