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