A library for ATProtocol identities.

fix: added missing crate fields

Signed-off-by: Nick Gerakines <nick.gerakines@gmail.com>

Changed files
+80 -4
crates
atproto-client
atproto-identity
atproto-oauth
atproto-oauth-axum
atproto-record
+2
CLAUDE.prompts.md
··· 24 24 25 25 Write high level module documentation in the `path/to/file.rs` source file. Documentation should brief and specific. Think very hard about how to do this. 26 26 27 + Write high level crate documentation in the `crates/atproto-oauth-axum/src/lib.rs` source file. Documentation should brief and specific. Think very hard about how to do this. 28 + 27 29 Update the high level module documentation in each of the source files in the `atproto-identity`, `atproto-record`, `atproto-oauth`, `atproto-client`, and `atproto-oauth-axum` crates. Documentation should brief and specific. Think very hard about how to do this. 28 30 29 31 Update the `README.md` files in the `atproto-identity`, `atproto-record`, `atproto-oauth`, `atproto-oauth-axum`, and `atproto-client` crates. Each `README.md` file should include a high level overview of what the crate provides and include a summary of each binary produced by the crate. Think very hard.
+3
crates/atproto-client/Cargo.toml
··· 1 1 [package] 2 2 name = "atproto-client" 3 3 version = "0.4.0" 4 + description = "HTTP client for AT Protocol services with OAuth and identity integration" 4 5 readme = "README.md" 6 + homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs" 7 + documentation = "https://docs.rs/atproto-client" 5 8 6 9 edition.workspace = true 7 10 rust-version.workspace = true
+3 -1
crates/atproto-identity/Cargo.toml
··· 1 1 [package] 2 2 name = "atproto-identity" 3 3 version = "0.4.0" 4 - description = "An ATProtocol identity library" 4 + description = "AT Protocol identity management - DID resolution, handle resolution, and cryptographic operations" 5 5 readme = "README.md" 6 + homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs" 7 + documentation = "https://docs.rs/atproto-identity" 6 8 7 9 edition.workspace = true 8 10 rust-version.workspace = true
+3
crates/atproto-oauth-axum/Cargo.toml
··· 1 1 [package] 2 2 name = "atproto-oauth-axum" 3 3 version = "0.4.0" 4 + description = "Axum web framework integration for AT Protocol OAuth workflows" 4 5 readme = "README.md" 6 + homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs" 7 + documentation = "https://docs.rs/atproto-oauth-axum" 5 8 6 9 edition.workspace = true 7 10 rust-version.workspace = true
+61 -3
crates/atproto-oauth-axum/src/lib.rs
··· 1 - //! AT Protocol OAuth Axum web handlers. 1 + //! Axum web framework integration for AT Protocol OAuth workflows. 2 2 //! 3 - //! Complete Axum web handlers for implementing AT Protocol OAuth 2.0 authorization server 4 - //! endpoints including client metadata, JWKS, and authorization callback handling. 3 + //! This crate provides complete Axum web handlers and request extractors for implementing 4 + //! AT Protocol OAuth 2.0 client endpoints. It includes RFC-compliant client metadata serving, 5 + //! JWKS public key distribution, and OAuth authorization callback handling. 6 + //! 7 + //! ## Features 8 + //! 9 + //! - **OAuth Client Metadata**: RFC 7591 compliant client metadata endpoint 10 + //! - **JWKS Endpoint**: JSON Web Key Set serving for signature verification 11 + //! - **Authorization Callbacks**: Complete OAuth authorization code flow handling 12 + //! - **DPoP Support**: Demonstration of Proof-of-Possession token binding 13 + //! - **Request Extractors**: Axum state management for OAuth configuration 14 + //! - **Error Handling**: Structured error types for OAuth workflows 15 + //! 16 + //! ## OAuth Endpoints 17 + //! 18 + //! The crate provides handlers for standard OAuth 2.0 endpoints: 19 + //! 20 + //! - `/oauth/client-metadata.json` - OAuth client metadata (RFC 7591) 21 + //! - `/.well-known/jwks.json` - JSON Web Key Set for public keys 22 + //! - `/oauth/callback` - OAuth authorization callback handler 23 + //! 24 + //! ## CLI Tool 25 + //! 26 + //! The `atproto-oauth-tool` binary provides a complete OAuth client implementation: 27 + //! 28 + //! ```bash 29 + //! # Start OAuth login flow 30 + //! atproto-oauth-tool login <private_signing_key> <subject> 31 + //! 32 + //! # Refresh OAuth tokens 33 + //! atproto-oauth-tool refresh <private_signing_key> <subject> <private_dpop_key> <refresh_token> 34 + //! ``` 35 + //! 36 + //! ## Example Integration 37 + //! 38 + //! ```rust,no_run 39 + //! use axum::{routing::get, Router}; 40 + //! use atproto_oauth_axum::{ 41 + //! handle_complete::handle_oauth_callback, 42 + //! handle_jwks::handle_oauth_jwks, 43 + //! handler_metadata::handle_oauth_metadata, 44 + //! state::OAuthClientConfig, 45 + //! }; 46 + //! 47 + //! # async fn example() -> Result<(), Box<dyn std::error::Error>> { 48 + //! let router = Router::new() 49 + //! .route("/oauth/client-metadata.json", get(handle_oauth_metadata)) 50 + //! .route("/.well-known/jwks.json", get(handle_oauth_jwks)) 51 + //! .route("/oauth/callback", get(handle_oauth_callback)); 52 + //! // .with_state(oauth_config); 53 + //! # Ok(()) 54 + //! # } 55 + //! ``` 56 + //! 57 + //! ## Dependencies 58 + //! 59 + //! This crate integrates with: 60 + //! - [`atproto-oauth`]: Core OAuth workflow logic and PKCE implementation 61 + //! - [`atproto-identity`]: AT Protocol identity resolution and key management 62 + //! - [`axum`]: Web framework for HTTP request handling 5 63 6 64 #![warn(missing_docs)] 7 65
+5
crates/atproto-oauth/Cargo.toml
··· 1 1 [package] 2 2 name = "atproto-oauth" 3 3 version = "0.4.0" 4 + description = "OAuth workflow implementation for AT Protocol - PKCE, DPoP, and secure authentication flows" 5 + readme = "README.md" 6 + homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs" 7 + documentation = "https://docs.rs/atproto-oauth" 8 + 4 9 edition.workspace = true 5 10 rust-version.workspace = true 6 11 repository.workspace = true
+3
crates/atproto-record/Cargo.toml
··· 2 2 name = "atproto-record" 3 3 version = "0.4.0" 4 4 description = "AT Protocol record signature operations - cryptographic signing and verification for AT Protocol records" 5 + readme = "README.md" 6 + homepage = "https://tangled.sh/@smokesignal.events/atproto-identity-rs" 7 + documentation = "https://docs.rs/atproto-record" 5 8 6 9 edition.workspace = true 7 10 rust-version.workspace = true