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