Initial commit: YouTube Studio Flow (backend, frontend, infrastructure, docs)

This commit is contained in:
2026-08-11 12:27:44 +02:00
commit d5af006443
304 changed files with 74604 additions and 0 deletions
@@ -0,0 +1,91 @@
# Saved Views API
Base path: `/api/v1/saved-views`
All endpoints require `Authorization: Bearer <jwt>`.
Related: [[02 - Videos API]], [[11 - Bulk Jobs API]]
---
## GET /saved-views
List all saved views for the current team.
**Response:** `SavedView[]`
---
## GET /saved-views/tabs
List saved views that are pinned as tabs, ordered by `tabOrder`.
**Response:** `SavedView[]`
---
## POST /saved-views
Create a new saved view. Requires `EDITOR` role.
**Request body:**
```json
{
"name": "string",
"description": "string",
"isGlobal": false,
"queryJson": {
"lintStatus": "ERROR"
},
"columnsJson": {
"visible": [],
"order": []
},
"sortJson": {
"field": "publishedAt",
"order": "desc"
},
"pinnedAsTab": false,
"tabOrder": null
}
```
**Field notes:**
| Field | Notes |
|---|---|
| `isGlobal` | If `true`, the view is visible to all team members. If `false`, it is personal. |
| `queryJson` | Filter parameters — same shape as the query params accepted by `GET /videos`. |
| `columnsJson` | Column visibility and order configuration for the video table. |
| `sortJson` | Default sort field and direction for the view. |
| `pinnedAsTab` | Whether the view appears as a tab in the video list UI. |
| `tabOrder` | Integer position in the tab bar. `null` if not pinned. |
---
## PATCH /saved-views/:id
Update a saved view. Requires `EDITOR` role.
**Request body:** Same fields as `POST /saved-views`, all optional.
---
## DELETE /saved-views/:id
Delete a saved view. Requires `ADMIN` role.
---
## POST /saved-views/:id/execute
Execute the saved view's stored query and return the matching video IDs.
**Response:**
```json
{ "videoIds": ["cuid", "cuid"] }
```
> The returned `videoIds` can be passed directly to bulk job endpoints such as `POST /bulk-jobs/push-pending` or `POST /bulk-jobs/preview`. See [[11 - Bulk Jobs API]].