1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
//! Sous-router `/api/v1` — routes MCP read/write + notes sync + jobs F-16 + history F-40.
//!
//! Le routeur est construit via [`router`] et nesté sous `/api/v1` dans
//! `crate::router::build_router`.
//!
//! # Routes Read (T8 P2.0a)
//!
//! | Méthode | Path | Handler |
//! |---------|------|---------|
//! | GET | `/vault_status` | [`handlers::vault_status`] |
//! | GET | `/vault_authors` | [`handlers::vault_authors`] |
//! | GET | `/vault_tags` | [`handlers::vault_tags`] |
//! | POST | `/vault_search` | [`handlers::vault_search`] |
//! | POST | `/vault_read` | [`handlers::vault_read`] |
//! | POST | `/vault_list` | [`handlers::vault_list`] |
//! | POST | `/vault_graph` | [`handlers::vault_graph`] |
//! | POST | `/vault_links` | [`handlers::vault_links`] |
//! | POST | `/vault_trace` | [`handlers::vault_trace`] |
//! | POST | `/vault_context` | [`handlers::vault_context`] |
//!
//! # Routes Write async (T3 P2.0b — async 202 Accepted)
//!
//! | Méthode | Path | Handler |
//! |---------|------|---------|
//! | POST | `/vault_write` | [`write::vault_write`] |
//! | POST | `/vault_classify` | [`write::vault_classify`] |
//!
//! # Routes Notes sync (Phase 2.1.2 alpha.9 — synchrones 200/204)
//!
//! | Méthode | Path | Handler |
//! |---------|------|---------|
//! | POST | `/vault_downgrade` | [`notes::vault_downgrade`] |
//! | PATCH | `/notes/{id}` | [`notes::patch_note`] |
//!
//! # Routes History F-40 (v0.4.0 — synchrones 200 OK)
//!
//! | Méthode | Path | ACL | Handler |
//! |---------|------|-----|---------|
//! | POST | `/vault_history` | Read | [`history::vault_history`] |
//! | POST | `/vault_history_get` | Read | [`history::vault_history_get`] |
//! | POST | `/vault_restore` | Write | [`history::vault_restore`] |
//! | POST | `/vault_diff` | Read | [`history::vault_diff`] |
//!
//! # Routes Jobs v1 Poll (T3 P2.0b — handler legacy)
//!
//! | Méthode | Path | Handler |
//! |---------|------|---------|
//! | GET | `/jobs/{id}` | [`jobs::get_job`] (déprécié — utiliser `/jobs/v2/{id}`) |
//!
//! # Routes Jobs F-16 (Phase 3 v0.2.0)
//!
//! | Méthode | Path | Handler |
//! |---------|------|---------|
//! | GET | `/jobs` | [`jobs_v2::list_jobs`] — liste paginée cursor-based |
//! | POST | `/jobs` | [`jobs_v2::create_job`] — création avec Idempotency-Key |
//! | GET | `/jobs/{id}/v2` | [`jobs_v2::get_job_v2`] — détail (fix E-12) |
//! | POST | `/jobs/{id}/cancel` | [`jobs_v2::cancel_job`] — annulation |
//! | GET | `/jobs/{id}/events` | [`jobs_v2::job_events`] — SSE stream |
//!
//! Note : les routes fixes (`/jobs`) sont définies AVANT les routes paramétriques
//! (`/jobs/{id}`). Les sous-routes paramétriques (`/jobs/{id}/cancel`,
//! `/jobs/{id}/events`) respectent l'ordre fixed-before-parametric.
use ;
use crateAppState;
/// Construit et retourne le sous-routeur `/api/v1`.
///
/// Ce routeur est nesté sous `/api/v1` par le routeur principal (`build_router`).
/// L'[`AppState`] est injecté via `Router::with_state`.
///
/// Le [`TrustContext`] est extrait par le middleware `trust_layer` (configuré dans
/// le routeur principal) et disponible via `Extension<TrustContext>` dans chaque handler.
///
/// [`TrustContext`]: gradatum_core::trust::TrustContext