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