# quotesdb API Axum/Tokio REST API for the quotesdb project. Targets Cloudflare Workers (wasm32) in production; runs as a native server for local development and testing. ## Endpoints | Method | Path | Description | Auth | |--------|------|-------------|------| | GET | `/api/` | OpenAPI spec (JSON) | None | | GET | `/api/quotes` | Paginated list. Query: `?page=N&author=X&tag=Y` | None | | GET | `/api/quotes/random` | Random quote | None | | GET | `/api/quotes/:id` | Quote by ID | None | | PUT | `/api/quotes` | Create a quote | None | | POST | `/api/quotes/:id` | Update a quote | `X-Auth-Code` header | | DELETE | `/api/quotes/:id` | Delete a quote | `X-Auth-Code` header | ## Running locally ```sh cargo run # starts on http://localhost:3000 ``` ## Building for Cloudflare Workers ```sh cargo build --release --bin api --target wasm32-unknown-unknown ``` ## Testing ```sh cargo test ``` ## Auth Each quote has an `auth_code` (4-word passphrase) generated at creation time. Include it in the `X-Auth-Code` header for update and delete operations. Mismatch returns `403 Forbidden`.