this repo has no description
1pub mod api;
2pub mod auth;
3pub mod notifications;
4pub mod repo;
5pub mod state;
6pub mod storage;
7pub mod sync;
8
9use axum::{
10 Router,
11 routing::{any, get, post},
12};
13use state::AppState;
14
15pub fn app(state: AppState) -> Router {
16 Router::new()
17 .route("/health", get(api::server::health))
18 .route(
19 "/xrpc/com.atproto.server.describeServer",
20 get(api::server::describe_server),
21 )
22 .route(
23 "/xrpc/com.atproto.server.createAccount",
24 post(api::identity::create_account),
25 )
26 .route(
27 "/xrpc/com.atproto.server.createSession",
28 post(api::server::create_session),
29 )
30 .route(
31 "/xrpc/com.atproto.server.getSession",
32 get(api::server::get_session),
33 )
34 .route(
35 "/xrpc/com.atproto.server.deleteSession",
36 post(api::server::delete_session),
37 )
38 .route(
39 "/xrpc/com.atproto.server.refreshSession",
40 post(api::server::refresh_session),
41 )
42 .route(
43 "/xrpc/com.atproto.server.getServiceAuth",
44 get(api::server::get_service_auth),
45 )
46 .route(
47 "/xrpc/com.atproto.identity.resolveHandle",
48 get(api::identity::resolve_handle),
49 )
50 .route(
51 "/xrpc/com.atproto.repo.createRecord",
52 post(api::repo::create_record),
53 )
54 .route(
55 "/xrpc/com.atproto.repo.putRecord",
56 post(api::repo::put_record),
57 )
58 .route(
59 "/xrpc/com.atproto.repo.getRecord",
60 get(api::repo::get_record),
61 )
62 .route(
63 "/xrpc/com.atproto.repo.deleteRecord",
64 post(api::repo::delete_record),
65 )
66 .route(
67 "/xrpc/com.atproto.repo.listRecords",
68 get(api::repo::list_records),
69 )
70 .route(
71 "/xrpc/com.atproto.repo.describeRepo",
72 get(api::repo::describe_repo),
73 )
74 .route(
75 "/xrpc/com.atproto.repo.uploadBlob",
76 post(api::repo::upload_blob),
77 )
78 .route(
79 "/xrpc/com.atproto.repo.applyWrites",
80 post(api::repo::apply_writes),
81 )
82 .route(
83 "/xrpc/com.atproto.sync.getLatestCommit",
84 get(sync::get_latest_commit),
85 )
86 .route(
87 "/xrpc/com.atproto.sync.listRepos",
88 get(sync::list_repos),
89 )
90 .route(
91 "/xrpc/com.atproto.sync.getBlob",
92 get(sync::get_blob),
93 )
94 .route(
95 "/xrpc/com.atproto.sync.listBlobs",
96 get(sync::list_blobs),
97 )
98 .route(
99 "/xrpc/com.atproto.sync.getRepoStatus",
100 get(sync::get_repo_status),
101 )
102 .route(
103 "/xrpc/com.atproto.server.checkAccountStatus",
104 get(api::server::check_account_status),
105 )
106 .route(
107 "/xrpc/com.atproto.identity.getRecommendedDidCredentials",
108 get(api::identity::get_recommended_did_credentials),
109 )
110 .route(
111 "/xrpc/com.atproto.repo.listMissingBlobs",
112 get(api::repo::list_missing_blobs),
113 )
114 .route(
115 "/xrpc/com.atproto.sync.notifyOfUpdate",
116 post(sync::notify_of_update),
117 )
118 .route(
119 "/xrpc/com.atproto.sync.requestCrawl",
120 post(sync::request_crawl),
121 )
122 .route(
123 "/xrpc/com.atproto.sync.getBlocks",
124 get(sync::get_blocks),
125 )
126 .route(
127 "/xrpc/com.atproto.sync.getRepo",
128 get(sync::get_repo),
129 )
130 .route(
131 "/xrpc/com.atproto.sync.getRecord",
132 get(sync::get_record),
133 )
134 .route(
135 "/xrpc/com.atproto.sync.subscribeRepos",
136 get(sync::subscribe_repos),
137 )
138 .route(
139 "/xrpc/com.atproto.moderation.createReport",
140 post(api::moderation::create_report),
141 )
142 .route(
143 "/xrpc/com.atproto.admin.getAccountInfo",
144 get(api::admin::get_account_info),
145 )
146 .route(
147 "/xrpc/com.atproto.admin.getAccountInfos",
148 get(api::admin::get_account_infos),
149 )
150 .route(
151 "/xrpc/com.atproto.server.activateAccount",
152 post(api::server::activate_account),
153 )
154 .route(
155 "/xrpc/com.atproto.server.deactivateAccount",
156 post(api::server::deactivate_account),
157 )
158 .route(
159 "/xrpc/com.atproto.server.requestAccountDelete",
160 post(api::server::request_account_delete),
161 )
162 .route(
163 "/xrpc/com.atproto.server.requestPasswordReset",
164 post(api::server::request_password_reset),
165 )
166 .route(
167 "/xrpc/com.atproto.server.resetPassword",
168 post(api::server::reset_password),
169 )
170 .route(
171 "/xrpc/com.atproto.server.requestEmailUpdate",
172 post(api::server::request_email_update),
173 )
174 .route(
175 "/xrpc/com.atproto.server.confirmEmail",
176 post(api::server::confirm_email),
177 )
178 .route(
179 "/xrpc/com.atproto.server.updateEmail",
180 post(api::server::update_email),
181 )
182 .route(
183 "/xrpc/com.atproto.server.reserveSigningKey",
184 post(api::server::reserve_signing_key),
185 )
186 .route(
187 "/xrpc/com.atproto.identity.updateHandle",
188 post(api::identity::update_handle),
189 )
190 .route(
191 "/xrpc/com.atproto.admin.deleteAccount",
192 post(api::admin::delete_account),
193 )
194 .route(
195 "/xrpc/com.atproto.admin.updateAccountEmail",
196 post(api::admin::update_account_email),
197 )
198 .route(
199 "/xrpc/com.atproto.admin.updateAccountHandle",
200 post(api::admin::update_account_handle),
201 )
202 .route(
203 "/xrpc/com.atproto.admin.updateAccountPassword",
204 post(api::admin::update_account_password),
205 )
206 .route(
207 "/xrpc/com.atproto.server.listAppPasswords",
208 get(api::server::list_app_passwords),
209 )
210 .route(
211 "/xrpc/com.atproto.server.createAppPassword",
212 post(api::server::create_app_password),
213 )
214 .route(
215 "/xrpc/com.atproto.server.revokeAppPassword",
216 post(api::server::revoke_app_password),
217 )
218 .route(
219 "/xrpc/com.atproto.server.createInviteCode",
220 post(api::server::create_invite_code),
221 )
222 .route(
223 "/xrpc/com.atproto.server.createInviteCodes",
224 post(api::server::create_invite_codes),
225 )
226 .route(
227 "/xrpc/com.atproto.server.getAccountInviteCodes",
228 get(api::server::get_account_invite_codes),
229 )
230 .route(
231 "/xrpc/com.atproto.admin.getInviteCodes",
232 get(api::admin::get_invite_codes),
233 )
234 .route(
235 "/xrpc/com.atproto.admin.disableAccountInvites",
236 post(api::admin::disable_account_invites),
237 )
238 .route(
239 "/xrpc/com.atproto.admin.enableAccountInvites",
240 post(api::admin::enable_account_invites),
241 )
242 .route(
243 "/xrpc/com.atproto.admin.disableInviteCodes",
244 post(api::admin::disable_invite_codes),
245 )
246 .route(
247 "/xrpc/com.atproto.admin.getSubjectStatus",
248 get(api::admin::get_subject_status),
249 )
250 .route(
251 "/xrpc/com.atproto.admin.updateSubjectStatus",
252 post(api::admin::update_subject_status),
253 )
254 .route(
255 "/xrpc/com.atproto.admin.sendEmail",
256 post(api::admin::send_email),
257 )
258 // I know I know, I'm not supposed to implement appview endpoints. Leave me be
259 .route(
260 "/xrpc/app.bsky.feed.getTimeline",
261 get(api::feed::get_timeline),
262 )
263 .route("/.well-known/did.json", get(api::identity::well_known_did))
264 .route("/u/{handle}/did.json", get(api::identity::user_did_doc))
265 .route("/xrpc/{*method}", any(api::proxy::proxy_handler))
266 .with_state(state)
267}