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