mirror of
https://github.com/bretzel-app/crumbs.git
synced 2026-10-12 20:06:57 +02:00
docs: add collaboration to FEATURES, ARCHITECTURE, and OpenAPI spec
- Add note sharing section to FEATURES.md - Document collaboration access control model in ARCHITECTURE.md - Add collaborators and user search endpoints to openapi.yaml - Regenerate API.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
committed by
Fred Cabassut
co-authored by
Claude Opus 4.6
parent
a7c8699542
commit
250e458c31
+117
@@ -321,6 +321,123 @@ Permanently delete a note
|
||||
|
||||
---
|
||||
|
||||
## Collaboration
|
||||
|
||||
### `GET /api/notes/{id}/collaborators`
|
||||
|
||||
List collaborators
|
||||
|
||||
Returns all collaborators for a note. Requires access (owner or collaborator).
|
||||
|
||||
**Parameters:**
|
||||
|
||||
| Name | In | Type | Required | Description |
|
||||
|------|----|------|----------|-------------|
|
||||
| `id` | path | string | yes | |
|
||||
|
||||
**Response:** `200`
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"userId": 1,
|
||||
"displayName": "displayName",
|
||||
"email": "email",
|
||||
"addedAt": "2025-01-01T00:00:00.000Z"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### `POST /api/notes/{id}/collaborators`
|
||||
|
||||
Add a collaborator
|
||||
|
||||
Owner-only. Adds a user as collaborator on the note.
|
||||
|
||||
**Parameters:**
|
||||
|
||||
| Name | In | Type | Required | Description |
|
||||
|------|----|------|----------|-------------|
|
||||
| `id` | path | string | yes | |
|
||||
|
||||
**Request:**
|
||||
|
||||
```json
|
||||
{
|
||||
"userId": 1
|
||||
}
|
||||
```
|
||||
|
||||
**Response:** `201`
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"userId": 1,
|
||||
"displayName": "displayName",
|
||||
"email": "email",
|
||||
"addedAt": "2025-01-01T00:00:00.000Z"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
**Errors:** `400` Invalid request (missing userId, owner as collaborator), `409` User is already a collaborator
|
||||
|
||||
---
|
||||
|
||||
### `DELETE /api/notes/{id}/collaborators`
|
||||
|
||||
Remove a collaborator
|
||||
|
||||
Owner can remove anyone. Collaborator can only remove self (leave). Use `userId=self` to leave.
|
||||
|
||||
**Parameters:**
|
||||
|
||||
| Name | In | Type | Required | Description |
|
||||
|------|----|------|----------|-------------|
|
||||
| `id` | path | string | yes | |
|
||||
| `userId` | query | | yes | |
|
||||
|
||||
**Response:** `200`
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Users
|
||||
|
||||
### `GET /api/users/search`
|
||||
|
||||
Search users
|
||||
|
||||
Search registered users by email or display name. Excludes the current user. Any authenticated user can access.
|
||||
|
||||
**Parameters:**
|
||||
|
||||
| Name | In | Type | Required | Description |
|
||||
|------|----|------|----------|-------------|
|
||||
| `q` | query | string | yes | Search query (matches email or displayName) |
|
||||
|
||||
**Response:** `200`
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"id": 1,
|
||||
"displayName": "displayName",
|
||||
"email": "email"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Attachments
|
||||
|
||||
### `GET /api/notes/{id}/attachments`
|
||||
|
||||
Reference in New Issue
Block a user