docs: audit API docs — fix all remaining bare uuid → file_uuid
This commit is contained in:
@@ -85,7 +85,7 @@ X-API-Key: <key>
|
|||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
|
|
||||||
{
|
{
|
||||||
"uuid": "32-char-hex-string",
|
"file_uuid": "32-char-hex-string",
|
||||||
"file_path": null,
|
"file_path": null,
|
||||||
"pattern": null
|
"pattern": null
|
||||||
}
|
}
|
||||||
@@ -95,7 +95,7 @@ Response `200`:
|
|||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"success": true,
|
"success": true,
|
||||||
"uuid": "32-char-hex-string",
|
"file_uuid": "32-char-hex-string",
|
||||||
"message": "File unregistered successfully",
|
"message": "File unregistered successfully",
|
||||||
"deleted_face_detections": 6186,
|
"deleted_face_detections": 6186,
|
||||||
"deleted_processor_results": 42,
|
"deleted_processor_results": 42,
|
||||||
@@ -231,7 +231,7 @@ Response `200`:
|
|||||||
"jobs": [
|
"jobs": [
|
||||||
{
|
{
|
||||||
"id": 139,
|
"id": 139,
|
||||||
"uuid": "32-char-hex-string",
|
"file_uuid": "32-char-hex-string",
|
||||||
"status": "completed",
|
"status": "completed",
|
||||||
"current_processor": null
|
"current_processor": null
|
||||||
}
|
}
|
||||||
@@ -418,7 +418,7 @@ Response `200`:
|
|||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"success": true,
|
"success": true,
|
||||||
"uuid": "identity-uuid",
|
"file_uuid": "identity-uuid",
|
||||||
"name": "Cary Grant",
|
"name": "Cary Grant",
|
||||||
"identity_type": "actor",
|
"identity_type": "actor",
|
||||||
"source": "tmdb",
|
"source": "tmdb",
|
||||||
@@ -527,7 +527,7 @@ Content-Type: application/json
|
|||||||
|
|
||||||
{
|
{
|
||||||
"query": "Cary Grant",
|
"query": "Cary Grant",
|
||||||
"uuid": "32-char-hex-string",
|
"file_uuid": "32-char-hex-string",
|
||||||
"types": ["chunk", "frame", "person"],
|
"types": ["chunk", "frame", "person"],
|
||||||
"time_range": null,
|
"time_range": null,
|
||||||
"filters": null,
|
"filters": null,
|
||||||
@@ -569,7 +569,7 @@ POST /api/v1/search/smart
|
|||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
|
|
||||||
{
|
{
|
||||||
"uuid": "32-char-hex-string",
|
"file_uuid": "32-char-hex-string",
|
||||||
"query": "who said how do you shave in there?",
|
"query": "who said how do you shave in there?",
|
||||||
"limit": 10
|
"limit": 10
|
||||||
}
|
}
|
||||||
@@ -605,7 +605,7 @@ POST /api/v1/search/frames
|
|||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
|
|
||||||
{
|
{
|
||||||
"uuid": "32-char-hex-string",
|
"file_uuid": "32-char-hex-string",
|
||||||
"object_class": "person",
|
"object_class": "person",
|
||||||
"ocr_text": "welcome",
|
"ocr_text": "welcome",
|
||||||
"face_id": null,
|
"face_id": null,
|
||||||
@@ -641,7 +641,7 @@ POST /api/v1/search/visual
|
|||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
|
|
||||||
{
|
{
|
||||||
"uuid": "32-char-hex-string",
|
"file_uuid": "32-char-hex-string",
|
||||||
"criteria": {
|
"criteria": {
|
||||||
"min_unique_classes": 2,
|
"min_unique_classes": 2,
|
||||||
"required_classes": ["person", "car"]
|
"required_classes": ["person", "car"]
|
||||||
@@ -675,7 +675,7 @@ POST /api/v1/search/visual/class
|
|||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
|
|
||||||
{
|
{
|
||||||
"uuid": "32-char-hex-string",
|
"file_uuid": "32-char-hex-string",
|
||||||
"object_class": "car",
|
"object_class": "car",
|
||||||
"min_count": 1,
|
"min_count": 1,
|
||||||
"max_count": 10
|
"max_count": 10
|
||||||
@@ -708,7 +708,7 @@ POST /api/v1/search/visual/density
|
|||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
|
|
||||||
{
|
{
|
||||||
"uuid": "32-char-hex-string",
|
"file_uuid": "32-char-hex-string",
|
||||||
"min_density": 0.1,
|
"min_density": 0.1,
|
||||||
"max_density": 0.8
|
"max_density": 0.8
|
||||||
}
|
}
|
||||||
@@ -739,14 +739,14 @@ POST /api/v1/search/visual/stats
|
|||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
|
|
||||||
{
|
{
|
||||||
"uuid": "32-char-hex-string"
|
"file_uuid": "32-char-hex-string"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Response `200`:
|
Response `200`:
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"uuid": "32-char-hex-string",
|
"file_uuid": "32-char-hex-string",
|
||||||
"stats": {
|
"stats": {
|
||||||
"total_chunks": 45,
|
"total_chunks": 45,
|
||||||
"total_frames": 18000,
|
"total_frames": 18000,
|
||||||
@@ -763,7 +763,7 @@ POST /api/v1/search/visual/combination
|
|||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
|
|
||||||
{
|
{
|
||||||
"uuid": "32-char-hex-string",
|
"file_uuid": "32-char-hex-string",
|
||||||
"combination": [["person", 1], ["car", 1]]
|
"combination": [["person", 1], ["car", 1]]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ X-API-Key: <key>
|
|||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
|
|
||||||
{
|
{
|
||||||
"uuid": "32-char-hex-string",
|
"file_uuid": "32-char-hex-string",
|
||||||
"file_path": null,
|
"file_path": null,
|
||||||
"pattern": null
|
"pattern": null
|
||||||
}
|
}
|
||||||
@@ -95,7 +95,7 @@ Response `200`:
|
|||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"success": true,
|
"success": true,
|
||||||
"uuid": "32-char-hex-string",
|
"file_uuid": "32-char-hex-string",
|
||||||
"message": "File unregistered successfully",
|
"message": "File unregistered successfully",
|
||||||
"deleted_face_detections": 6186,
|
"deleted_face_detections": 6186,
|
||||||
"deleted_processor_results": 42,
|
"deleted_processor_results": 42,
|
||||||
|
|||||||
@@ -85,7 +85,7 @@ X-API-Key: <key>
|
|||||||
Content-Type: application/json
|
Content-Type: application/json
|
||||||
|
|
||||||
{
|
{
|
||||||
"uuid": "32-char-hex-string",
|
"file_uuid": "32-char-hex-string",
|
||||||
"file_path": null,
|
"file_path": null,
|
||||||
"pattern": null
|
"pattern": null
|
||||||
}
|
}
|
||||||
@@ -95,7 +95,7 @@ Response `200`:
|
|||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"success": true,
|
"success": true,
|
||||||
"uuid": "32-char-hex-string",
|
"file_uuid": "32-char-hex-string",
|
||||||
"message": "File unregistered successfully",
|
"message": "File unregistered successfully",
|
||||||
"deleted_face_detections": 6186,
|
"deleted_face_detections": 6186,
|
||||||
"deleted_processor_results": 42,
|
"deleted_processor_results": 42,
|
||||||
@@ -269,7 +269,7 @@ Response `200`:
|
|||||||
|
|
||||||
```
|
```
|
||||||
GET /api/v1/files
|
GET /api/v1/files
|
||||||
Query: ?page=1&page_size=10&uuid=xxx
|
Query: ?page=1&page_size=10&file_uuid=xxx
|
||||||
```
|
```
|
||||||
|
|
||||||
Response `200`:
|
Response `200`:
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ curl http://localhost:3002/health/detailed
|
|||||||
| # | Method | Path | Description |
|
| # | Method | Path | Description |
|
||||||
|---|--------|------|-------------|
|
|---|--------|------|-------------|
|
||||||
| 9 | POST | `/api/v1/files/register` | Register video → file_uuid |
|
| 9 | POST | `/api/v1/files/register` | Register video → file_uuid |
|
||||||
| 10 | POST | `/api/v1/unregister` | Unregister file(s): by `uuid` or pattern match (`file_path`+`pattern`) |
|
| 10 | POST | `/api/v1/unregister` | Unregister file(s): by `file_uuid` or pattern match (`file_path`+`pattern`) |
|
||||||
| 11 | GET | `/api/v1/files/scan` | Scan directory for new files |
|
| 11 | GET | `/api/v1/files/scan` | Scan directory for new files |
|
||||||
| 12 | GET | `/api/v1/files` | List files (paginated) |
|
| 12 | GET | `/api/v1/files` | List files (paginated) |
|
||||||
| 13 | GET | `/api/v1/file/:file_uuid` | Single file detail |
|
| 13 | GET | `/api/v1/file/:file_uuid` | Single file detail |
|
||||||
@@ -114,7 +114,7 @@ curl -X POST http://localhost:3002/api/v1/files/register -H "X-API-Key: muser_6
|
|||||||
```
|
```
|
||||||
|
|
||||||
Modes:
|
Modes:
|
||||||
- By `uuid`: unregister a single file
|
- By `file_uuid`: unregister a single file
|
||||||
- By `file_path` + `pattern` regex: unregister all matching files in a directory
|
- By `file_path` + `pattern` regex: unregister all matching files in a directory
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -2,15 +2,15 @@
|
|||||||
document_type: "reference_doc"
|
document_type: "reference_doc"
|
||||||
service: "MOMENTRY_CORE"
|
service: "MOMENTRY_CORE"
|
||||||
title: "Momentry Core Release API Reference v1.0.0"
|
title: "Momentry Core Release API Reference v1.0.0"
|
||||||
date: "2026-05-08"
|
date: "2026-05-14"
|
||||||
version: "V4.0"
|
version: "V4.1"
|
||||||
status: "active"
|
status: "active"
|
||||||
owner: "Warren"
|
owner: "Warren"
|
||||||
---
|
---
|
||||||
|
|
||||||
# Momentry Core API Reference v1.0.0
|
# Momentry Core API Reference v1.0.0
|
||||||
|
|
||||||
56 endpoints across 10 categories, with real curl examples and responses.
|
58 endpoints across 10 categories, with real curl examples and responses.
|
||||||
|
|
||||||
## Base
|
## Base
|
||||||
|
|
||||||
@@ -41,7 +41,52 @@ owner: "Warren"
|
|||||||
curl http://localhost:3002/health
|
curl http://localhost:3002/health
|
||||||
```
|
```
|
||||||
```json
|
```json
|
||||||
{"status":"ok","version":"1.0.0","uptime_ms":7052517}
|
{
|
||||||
|
"status": "ok",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"build_git_hash": "26f2434",
|
||||||
|
"build_timestamp": "2026-05-14T09:09:17Z",
|
||||||
|
"uptime_ms": 7052517
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
| # | Method | Path | Description |
|
||||||
|
|---|--------|------|-------------|
|
||||||
|
| 2a | GET | `/health/detailed` | Per-service health + resources + pipeline |
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl http://localhost:3002/health/detailed
|
||||||
|
```
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"status": "ok",
|
||||||
|
"build_git_hash": "26f2434",
|
||||||
|
"build_timestamp": "2026-05-14T09:09:17Z",
|
||||||
|
"services": {
|
||||||
|
"postgres": {"status": "ok", "latency_ms": 6},
|
||||||
|
"redis": {"status": "ok", "latency_ms": 0},
|
||||||
|
"qdrant": {"status": "ok", "latency_ms": 1},
|
||||||
|
"mongodb": {"status": "ok", "latency_ms": 0}
|
||||||
|
},
|
||||||
|
"resources": {
|
||||||
|
"cpu_used_percent": 50.0,
|
||||||
|
"cpu_idle_percent": 50.0,
|
||||||
|
"memory_available_mb": 8028,
|
||||||
|
"memory_total_mb": 16384,
|
||||||
|
"memory_used_percent": 51.0,
|
||||||
|
"gpu_available": false,
|
||||||
|
"gpu_utilization": null,
|
||||||
|
"gpu_memory_used_pct": null
|
||||||
|
},
|
||||||
|
"pipeline": {
|
||||||
|
"scripts": true,
|
||||||
|
"models": true,
|
||||||
|
"ffmpeg": true,
|
||||||
|
"embedding_server": {"status": "ok", "latency_ms": 0},
|
||||||
|
"gdino_api": {"status": "error", "latency_ms": 0, "error": "..."},
|
||||||
|
"llm": {"status": "ok", "latency_ms": 0}
|
||||||
|
}
|
||||||
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -51,7 +96,7 @@ curl http://localhost:3002/health
|
|||||||
| # | Method | Path | Description |
|
| # | Method | Path | Description |
|
||||||
|---|--------|------|-------------|
|
|---|--------|------|-------------|
|
||||||
| 9 | POST | `/api/v1/files/register` | Register video → file_uuid |
|
| 9 | POST | `/api/v1/files/register` | Register video → file_uuid |
|
||||||
| 10 | POST | `/api/v1/unregister` | Delete file + all data |
|
| 10 | POST | `/api/v1/unregister` | Unregister file(s): by `file_uuid` or pattern match (`file_path`+`pattern`) |
|
||||||
| 11 | GET | `/api/v1/files/scan` | Scan directory for new files |
|
| 11 | GET | `/api/v1/files/scan` | Scan directory for new files |
|
||||||
| 12 | GET | `/api/v1/files` | List files (paginated) |
|
| 12 | GET | `/api/v1/files` | List files (paginated) |
|
||||||
| 13 | GET | `/api/v1/file/:file_uuid` | Single file detail |
|
| 13 | GET | `/api/v1/file/:file_uuid` | Single file detail |
|
||||||
@@ -68,14 +113,23 @@ curl -X POST http://localhost:3002/api/v1/files/register -H "X-API-Key: muser_6
|
|||||||
{"success":true,"file_uuid":"3abeee81d94597629ed8cb943f182e94","duration":5954.0}
|
{"success":true,"file_uuid":"3abeee81d94597629ed8cb943f182e94","duration":5954.0}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Modes:
|
||||||
|
- By `file_uuid`: unregister a single file
|
||||||
|
- By `file_path` + `pattern` regex: unregister all matching files in a directory
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
# By file_uuid
|
||||||
curl -X POST http://localhost:3002/api/v1/unregister \
|
curl -X POST http://localhost:3002/api/v1/unregister \
|
||||||
-H "X-API-Key: muser_68600856036340bcafc01930eb4bd839_1774418104_97221b69" \
|
-H "X-API-Key: muser_..." -H "Content-Type: application/json" \
|
||||||
-H "Content-Type: application/json" \
|
-d '{"file_uuid":"53e3a229bf68878b7a799e811e097f9c"}'
|
||||||
-d '{"uuid":"53e3a229bf68878b7a799e811e097f9c"}'
|
|
||||||
|
# By pattern (unregister all .mp4 files in directory)
|
||||||
|
curl -X POST http://localhost:3002/api/v1/unregister \
|
||||||
|
-H "X-API-Key: muser_..." -H "Content-Type: application/json" \
|
||||||
|
-d '{"file_path":"/data/demo","pattern":"\\.mp4$"}'
|
||||||
```
|
```
|
||||||
```json
|
```json
|
||||||
{"success":true,"uuid":"53e3a229bf68878b7a799e811e097f9c","message":"File unregistered successfully"}
|
{"success":true,"file_uuid":"53e3a229bf68878b7a799e811e097f9c","message":"File unregistered successfully"}
|
||||||
```
|
```
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -162,19 +216,31 @@ curl "http://localhost:3002/api/v1/file/3abeee81d94597629ed8cb943f182e94/trace/2
|
|||||||
| # | Method | Path | Description |
|
| # | Method | Path | Description |
|
||||||
|---|--------|------|-------------|
|
|---|--------|------|-------------|
|
||||||
| 29 | GET | `/api/v1/file/:file_uuid/thumbnail` | Frame JPEG (?frame=&x=&y=&w=&h=) |
|
| 29 | GET | `/api/v1/file/:file_uuid/thumbnail` | Frame JPEG (?frame=&x=&y=&w=&h=) |
|
||||||
| 30 | GET | `/api/v1/file/:file_uuid/video` | Raw video stream (?start=&end=) |
|
| 30 | GET | `/api/v1/file/:file_uuid/video` | Raw video stream (`?start_time=&end_time=` seconds) |
|
||||||
| 31 | GET | `/api/v1/file/:file_uuid/video/bbox` | Bbox overlay (?start=&end=&duration=) |
|
| 31 | GET | `/api/v1/file/:file_uuid/video/bbox` | Bbox overlay (`?start_frame=&end_frame=&face_uuid=&duration=` frames) |
|
||||||
| 32 | GET | `/api/v1/file/:file_uuid/trace/:trace_id/video` | Trace clip (?padding=) |
|
| 32 | GET | `/api/v1/file/:file_uuid/trace/:trace_id/video` | Trace clip (?mode=&padding=) |
|
||||||
|
|
||||||
|
Two modes:
|
||||||
|
- `mode=normal` (default): raw clip, `-c copy`, no overlay
|
||||||
|
- `mode=debug`: text overlay + green bounding boxes
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -o thumb.jpg "http://localhost:3002/api/v1/file/3abeee81d94597629ed8cb943f182e94/thumbnail?frame=4650" -H "X-API-Key: muser_68600856036340bcafc01930eb4bd839_1774418104_97221b69"
|
# Normal mode
|
||||||
|
curl -o trace.mp4 "http://localhost:3002/api/v1/file/{file_uuid}/trace/42/video?mode=normal"
|
||||||
|
# Debug mode
|
||||||
|
curl -o trace_debug.mp4 "http://localhost:3002/api/v1/file/{file_uuid}/trace/42/video?mode=debug"
|
||||||
```
|
```
|
||||||
Returns JPEG binary (82KB, 1920×1080).
|
|
||||||
|
|
||||||
```bash
|
Debug overlay shows at bottom-left:
|
||||||
curl -o trace_clip.mp4 "http://localhost:3002/api/v1/file/3abeee81d94597629ed8cb943f182e94/trace/2/video" -H "X-API-Key: muser_68600856036340bcafc01930eb4bd839_1774418104_97221b69"
|
|
||||||
```
|
```
|
||||||
Returns MP4 video binary (3.0MB) with bbox overlay.
|
Frame {n} {pts}s
|
||||||
|
Cut: {id}
|
||||||
|
{file_uuid}
|
||||||
|
Trace {id}: start={frame} {name}
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
Green bbox per face detection: actual frames `thickness=4`, interpolated `thickness=1`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -190,6 +256,8 @@ Returns MP4 video binary (3.0MB) with bbox overlay.
|
|||||||
| 38 | GET | `/api/v1/identity/:identity_uuid/files` | Files for identity |
|
| 38 | GET | `/api/v1/identity/:identity_uuid/files` | Files for identity |
|
||||||
| 39 | GET | `/api/v1/identity/:identity_uuid/chunks` | Chunks for identity |
|
| 39 | GET | `/api/v1/identity/:identity_uuid/chunks` | Chunks for identity |
|
||||||
| 40 | GET | `/api/v1/faces/candidates` | Unbound face gallery |
|
| 40 | GET | `/api/v1/faces/candidates` | Unbound face gallery |
|
||||||
|
| 41 | GET | `/api/v1/identities/search?q=` | Search identities by name → chunks |
|
||||||
|
| 42 | GET | `/api/v1/search/identity_text?q=&file_uuid=` | Full-text search → identity-bound chunks |
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl "http://localhost:3002/api/v1/identities?page=1&page_size=3" -H "X-API-Key: muser_68600856036340bcafc01930eb4bd839_1774418104_97221b69"
|
curl "http://localhost:3002/api/v1/identities?page=1&page_size=3" -H "X-API-Key: muser_68600856036340bcafc01930eb4bd839_1774418104_97221b69"
|
||||||
@@ -217,7 +285,7 @@ curl "http://localhost:3002/api/v1/faces/candidates?page=1&page_size=2" -H "X-A
|
|||||||
|---|--------|------|-------------|
|
|---|--------|------|-------------|
|
||||||
| 41 | POST | `/api/v1/identity/:identity_uuid/bind` | Bind face → identity |
|
| 41 | POST | `/api/v1/identity/:identity_uuid/bind` | Bind face → identity |
|
||||||
| 42 | POST | `/api/v1/identity/:identity_uuid/unbind` | Unbind face from identity |
|
| 42 | POST | `/api/v1/identity/:identity_uuid/unbind` | Unbind face from identity |
|
||||||
| 43 | POST | `/api/v1/identity/:from_uuid/mergeinto` | Merge two identities |
|
| 43 | POST | `/api/v1/identity/:identity_uuid/mergeinto` | Merge into another identity |
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -X POST "http://localhost:3002/api/v1/identity/a9a90105-6d6b-46ff-92da-0c3c1a57dff4/bind" -H "X-API-Key: muser_68600856036340bcafc01930eb4bd839_1774418104_97221b69" -H "Content-Type: application/json" -d '{"file_uuid":"3abeee81d94597629ed8cb943f182e94","face_id":"face_42"}'
|
curl -X POST "http://localhost:3002/api/v1/identity/a9a90105-6d6b-46ff-92da-0c3c1a57dff4/bind" -H "X-API-Key: muser_68600856036340bcafc01930eb4bd839_1774418104_97221b69" -H "Content-Type: application/json" -d '{"file_uuid":"3abeee81d94597629ed8cb943f182e94","face_id":"face_42"}'
|
||||||
@@ -275,8 +343,14 @@ curl -X POST "http://localhost:3002/api/v1/agents/translate" -H "X-API-Key: mus
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Version History
|
||||||
|
|
||||||
|
| Version | Date | Changes |
|
||||||
|
|---------|------|---------|
|
||||||
|
| V4.1 | 2026-05-14 | Added `build_timestamp` + `resources` + `pipeline` to health APIs; identity search endpoints; trace debug rework (green bbox, text overlay, all traces listed) |
|
||||||
|
|
||||||
## Related
|
## Related
|
||||||
|
|
||||||
- `API_DICTIONARY_V1.0.0.md` — Quick reference (56 endpoints)
|
- `API_DICTIONARY_V1.0.0.md` — Quick reference (58 endpoints)
|
||||||
- `API_DOCUMENTATION_v1.0.0.md` — Detailed spec with examples
|
- `API_DOCUMENTATION_v1.0.0.md` — Detailed spec with examples
|
||||||
- `TRACE/TRACE_API_REFERENCE_V1.0.0.md` — Trace-specific reference
|
- `TRACE/TRACE_API_REFERENCE_V1.0.0.md` — Trace-specific reference
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ erDiagram
|
|||||||
IDENTITIES {
|
IDENTITIES {
|
||||||
int id PK
|
int id PK
|
||||||
string name
|
string name
|
||||||
string uuid
|
string file_uuid
|
||||||
int tmdb_id
|
int tmdb_id
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -189,9 +189,9 @@ sequenceDiagram
|
|||||||
```mermaid
|
```mermaid
|
||||||
sequenceDiagram
|
sequenceDiagram
|
||||||
actor Dev
|
actor Dev
|
||||||
Dev->>API: POST /api/v1/file/{uuid}/face_trace/sortby<br/>{ "sort_by": "face_count", "limit": 3 }
|
Dev->>API: POST /api/v1/file/{file_uuid}/face_trace/sortby<br/>{ "sort_by": "face_count", "limit": 3 }
|
||||||
API-->>Dev: { "total_traces": 6892, "traces": [...] }
|
API-->>Dev: { "total_traces": 6892, "traces": [...] }
|
||||||
Dev->>API: GET /api/v1/file/{uuid}/trace/3128/video
|
Dev->>API: GET /api/v1/file/{file_uuid}/trace/3128/video
|
||||||
API-->>Dev: MP4 binary
|
API-->>Dev: MP4 binary
|
||||||
Note over Dev: Browser opens video with bbox
|
Note over Dev: Browser opens video with bbox
|
||||||
```
|
```
|
||||||
@@ -213,6 +213,6 @@ sequenceDiagram
|
|||||||
|------|------|
|
|------|------|
|
||||||
| 登入取得 Key | `curl -X POST https://api.momentry.ddns.net/api/v1/auth/login -H "Content-Type: application/json" -d '{"username":"demo","password":"demo"}'` |
|
| 登入取得 Key | `curl -X POST https://api.momentry.ddns.net/api/v1/auth/login -H "Content-Type: application/json" -d '{"username":"demo","password":"demo"}'` |
|
||||||
| 列出檔案 | `curl https://api.momentry.ddns.net/api/v1/files -H "X-API-Key: muser_test_001"` |
|
| 列出檔案 | `curl https://api.momentry.ddns.net/api/v1/files -H "X-API-Key: muser_test_001"` |
|
||||||
| Top Traces | `curl -X POST https://api.momentry.ddns.net/api/v1/file/{uuid}/face_trace/sortby -H "X-API-Key: muser_test_001" -H "Content-Type: application/json" -d '{"sort_by":"face_count","limit":3}'` |
|
| Top Traces | `curl -X POST https://api.momentry.ddns.net/api/v1/file/{file_uuid}/face_trace/sortby -H "X-API-Key: muser_test_001" -H "Content-Type: application/json" -d '{"sort_by":"face_count","limit":3}'` |
|
||||||
| BM25 搜尋 | `curl -X POST https://api.momentry.ddns.net/api/v1/search/universal -H "X-API-Key: muser_test_001" -H "Content-Type: application/json" -d '{"query":"friends","mode":"bm25","uuid":"{uuid}"}'` |
|
| BM25 搜尋 | `curl -X POST https://api.momentry.ddns.net/api/v1/search/universal -H "X-API-Key: muser_test_001" -H "Content-Type: application/json" -d '{"query":"friends","mode":"bm25","uuid":"{file_uuid}"}'` |
|
||||||
| 身分列表 | `curl https://api.momentry.ddns.net/api/v1/identities?page=1&page_size=5 -H "X-API-Key: muser_test_001"` |
|
| 身分列表 | `curl https://api.momentry.ddns.net/api/v1/identities?page=1&page_size=5 -H "X-API-Key: muser_test_001"` |
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ https://api.momentry.ddns.net/api/v1/file/3abeee81d94597629ed8cb943f182e94/trace
|
|||||||
```bash
|
```bash
|
||||||
curl -X POST $BASE/api/v1/search/universal -H "$KEY" \
|
curl -X POST $BASE/api/v1/search/universal -H "$KEY" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d '{"query":"friends","limit":3,"mode":"bm25","uuid":"3abeee81d94597629ed8cb943f182e94"}'
|
-d '{"query":"friends","limit":3,"mode":"bm25","file_uuid":"3abeee81d94597629ed8cb943f182e94"}'
|
||||||
```
|
```
|
||||||
|
|
||||||
**預期**: `"You won't find it difficult to make some new friends."` score=0.90
|
**預期**: `"You won't find it difficult to make some new friends."` score=0.90
|
||||||
@@ -116,7 +116,7 @@ curl -X POST $BASE/api/v1/search/universal -H "$KEY" \
|
|||||||
```bash
|
```bash
|
||||||
curl -X POST $BASE/api/v1/search/universal -H "$KEY" \
|
curl -X POST $BASE/api/v1/search/universal -H "$KEY" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d '{"query":"name","limit":3,"mode":"bm25","uuid":"3abeee81d94597629ed8cb943f182e94"}'
|
-d '{"query":"name","limit":3,"mode":"bm25","file_uuid":"3abeee81d94597629ed8cb943f182e94"}'
|
||||||
```
|
```
|
||||||
|
|
||||||
**預期**: `"What's your name?"` score=0.90
|
**預期**: `"What's your name?"` score=0.90
|
||||||
@@ -154,7 +154,7 @@ curl "$BASE/api/v1/faces/candidates?page=1&page_size=3" -H "$KEY"
|
|||||||
```bash
|
```bash
|
||||||
curl -X POST $BASE/api/v1/search/smart -H "$KEY" \
|
curl -X POST $BASE/api/v1/search/smart -H "$KEY" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d '{"query":"Audrey Hepburn","uuid":"3abeee81d94597629ed8cb943f182e94"}'
|
-d '{"query":"Audrey Hepburn","file_uuid":"3abeee81d94597629ed8cb943f182e94"}'
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ https://api.momentry.ddns.net/api/v1/file/3abeee81d94597629ed8cb943f182e94/trace
|
|||||||
```bash
|
```bash
|
||||||
curl -X POST $BASE/api/v1/search/universal -H "$KEY" \
|
curl -X POST $BASE/api/v1/search/universal -H "$KEY" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d '{"query":"friends","limit":3,"mode":"bm25","uuid":"3abeee81d94597629ed8cb943f182e94"}'
|
-d '{"query":"friends","limit":3,"mode":"bm25","file_uuid":"3abeee81d94597629ed8cb943f182e94"}'
|
||||||
```
|
```
|
||||||
|
|
||||||
**預期**: `"You won't find it difficult to make some new friends."` score=0.90
|
**預期**: `"You won't find it difficult to make some new friends."` score=0.90
|
||||||
@@ -116,7 +116,7 @@ curl -X POST $BASE/api/v1/search/universal -H "$KEY" \
|
|||||||
```bash
|
```bash
|
||||||
curl -X POST $BASE/api/v1/search/universal -H "$KEY" \
|
curl -X POST $BASE/api/v1/search/universal -H "$KEY" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d '{"query":"name","limit":3,"mode":"bm25","uuid":"3abeee81d94597629ed8cb943f182e94"}'
|
-d '{"query":"name","limit":3,"mode":"bm25","file_uuid":"3abeee81d94597629ed8cb943f182e94"}'
|
||||||
```
|
```
|
||||||
|
|
||||||
**預期**: `"What's your name?"` score=0.90
|
**預期**: `"What's your name?"` score=0.90
|
||||||
@@ -154,7 +154,7 @@ curl "$BASE/api/v1/faces/candidates?page=1&page_size=3" -H "$KEY"
|
|||||||
```bash
|
```bash
|
||||||
curl -X POST $BASE/api/v1/search/smart -H "$KEY" \
|
curl -X POST $BASE/api/v1/search/smart -H "$KEY" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
-d '{"query":"Audrey Hepburn","uuid":"3abeee81d94597629ed8cb943f182e94"}'
|
-d '{"query":"Audrey Hepburn","file_uuid":"3abeee81d94597629ed8cb943f182e94"}'
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ curl "$BASE/api/v1/file/$FILE/trace/2/faces?limit=3&interpolate=true" -H "$KEY"
|
|||||||
|
|
||||||
Curl:
|
Curl:
|
||||||
```bash
|
```bash
|
||||||
curl -X POST $BASE/api/v1/search/universal -H "$KEY" -H "Content-Type: application/json" -d '{"query":"friends","limit":3,"mode":"bm25","uuid":"$FILE"}'
|
curl -X POST $BASE/api/v1/search/universal -H "$KEY" -H "Content-Type: application/json" -d '{"query":"friends","limit":3,"mode":"bm25","file_uuid":"$FILE"}'
|
||||||
```
|
```
|
||||||
|
|
||||||
**預期**: "You won't find it difficult to make some new friends."
|
**預期**: "You won't find it difficult to make some new friends."
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ curl "$BASE/api/v1/file/$FILE/trace/2/faces?limit=3&interpolate=true" -H "$KEY"
|
|||||||
|
|
||||||
Curl:
|
Curl:
|
||||||
```bash
|
```bash
|
||||||
curl -X POST $BASE/api/v1/search/universal -H "$KEY" -H "Content-Type: application/json" -d '{"query":"friends","limit":3,"mode":"bm25","uuid":"$FILE"}'
|
curl -X POST $BASE/api/v1/search/universal -H "$KEY" -H "Content-Type: application/json" -d '{"query":"friends","limit":3,"mode":"bm25","file_uuid":"$FILE"}'
|
||||||
```
|
```
|
||||||
|
|
||||||
**預期**: "You won't find it difficult to make some new friends."
|
**預期**: "You won't find it difficult to make some new friends."
|
||||||
|
|||||||
@@ -220,8 +220,8 @@ MP4 video segment with face bboxes.
|
|||||||
|
|
||||||
| Param | Type | Default | Description |
|
| Param | Type | Default | Description |
|
||||||
|-------|------|---------|-------------|
|
|-------|------|---------|-------------|
|
||||||
| `start` | int | — | Start frame (required) |
|
| `start_frame` | int | — | Start frame (required) |
|
||||||
| `end` | int | — | End frame (required) |
|
| `end_frame` | int | — | End frame (required) |
|
||||||
| `duration` | float | 10 | Clip duration seconds |
|
| `duration` | float | 10 | Clip duration seconds |
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -258,7 +258,7 @@ Auth: X-API-Key: muser_test_apikey
|
|||||||
| 7 | `GET /trace/1271/faces` | `?limit=2` | 33 total, paginated |
|
| 7 | `GET /trace/1271/faces` | `?limit=2` | 33 total, paginated |
|
||||||
| 8 | `GET /trace/1271/faces` | `?limit=10&interpolate=true` | 271 frames |
|
| 8 | `GET /trace/1271/faces` | `?limit=10&interpolate=true` | 271 frames |
|
||||||
| 9 | `GET /trace/2/video` | — | 2.0MB MP4 |
|
| 9 | `GET /trace/2/video` | — | 2.0MB MP4 |
|
||||||
| 10 | `GET /video/bbox` | `?start=4650&end=4680` | 1.9MB MP4 overlay |
|
| 10 | `GET /video/bbox` | `?start_frame=4650&end_frame=4680` | 1.9MB MP4 overlay |
|
||||||
| 11 | `GET /thumbnail` | `?frame=4650` | 82KB JPEG |
|
| 11 | `GET /thumbnail` | `?frame=4650` | 82KB JPEG |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ curl localhost:3003/api/v1/agents/vision/detect \
|
|||||||
|
|
||||||
| Param | Type | Default | Description |
|
| Param | Type | Default | Description |
|
||||||
|-------|------|---------|-------------|
|
|-------|------|---------|-------------|
|
||||||
| `uuid` | string | `aeed71342a...` | Video file UUID |
|
| `file_uuid` | string | `aeed71342a...` | Video file UUID |
|
||||||
| `frame` | int | `0` | **Precise** frame number |
|
| `frame` | int | `0` | **Precise** frame number |
|
||||||
| `time` | float | — | **Compatibility** seconds (auto-converted) |
|
| `time` | float | — | **Compatibility** seconds (auto-converted) |
|
||||||
| `query` | string | `"find the gun"` | Natural language query (parsed to extract object) |
|
| `query` | string | `"find the gun"` | Natural language query (parsed to extract object) |
|
||||||
|
|||||||
Reference in New Issue
Block a user