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