@atproto/xrpc-server
TypeScript library for implementing atproto HTTP API services with Lexicon schema validation. Provides a robust framework for building XRPC servers with authentication, rate limiting, streaming, and error handling.Installation
Overview
The@atproto/xrpc-server package provides:
- XRPC method handlers (queries and procedures)
- WebSocket subscription support
- Lexicon schema validation
- Authentication middleware
- Rate limiting (memory and Redis)
- Request/response streaming
- Error handling and XRPC error types
- Express.js integration
Quick Start
Main Exports
createServer
Creates a new XRPC server instance.Options
validateResponse: Enable response validation (default: true)
catchall: Custom catchall handler for unimplemented methods
payload: Default payload size limits
rateLimits: Rate limiting configuration
errorParser: Custom error conversion to XRPCError
Server Class
The main server class.Method Handlers
Handler Context
All handlers receive a context object:Query Handler
Handle GET requests:Procedure Handler
Handle POST requests with input:Handler Response Types
Success Response
Stream Response
Buffer Response
Authentication
Auth Verifier
Add authentication to methods:Auth Context Types
Rate Limiting
Memory Rate Limiter
In-memory rate limiting:Redis Rate Limiter
Distributed rate limiting:Route-Specific Rate Limits
Shared Rate Limiters
Share rate limits across multiple routes:Rate Limit Bypass
Custom Rate Limit Keys
WebSocket Subscriptions
Handle real-time subscriptions:Stream Context
Frame Types
Error Handling
XRPC Errors
Built-in error types:XRPCError Class
Error Response Format
Custom Error Parser
Lexicon Schema Integration
Type-Safe Handlers with @atproto/lex
Use the@atproto/lex schema types:
Validation
Automatic validation of:- Query parameters
- Request body (input)
- Response body (output)
- Content types and encodings
Advanced Features
Server Timing
Track performance metrics:Request Encoding
NSID Parsing
Complete Example
Related Packages
@atproto/lexicon- Lexicon schema definitions@atproto/xrpc- XRPC client library@atproto/pds- PDS server implementation@atproto/bsky- Bluesky AppView