# Story 8.2: GraphQL API ## Metadata - **Story ID**: 8.2 - **Title**: GraphQL API - **Epic**: 8 - Advanced Features & Polish - **Status**: Pending - **Priority**: Low - **Estimated Time**: 8-10 hours - **Dependencies**: 1.5, 2.1, 4.1 ## Goal Add optional GraphQL API alongside REST API for flexible data querying. ## Description This story implements a GraphQL API using gqlgen that provides an alternative to REST endpoints with flexible querying capabilities. ## Deliverables ### 1. GraphQL Schema - Install `github.com/99designs/gqlgen` - Create GraphQL schema: - User queries - Blog queries - Mutations - Subscriptions (optional) ### 2. GraphQL Resolvers - Implement resolvers: - Use existing services - Add authorization checks - Error handling ### 3. GraphQL Endpoint - Add GraphQL endpoint: `POST /graphql` - GraphQL playground: `GET /graphql` (development) - Integration with authentication ## Acceptance Criteria - [ ] GraphQL schema is defined - [ ] Resolvers work correctly - [ ] Authorization is enforced - [ ] GraphQL endpoint works - [ ] GraphQL playground works (dev) ## Files to Create/Modify - `api/graphql/schema.graphql` - GraphQL schema - `internal/api/graphql/resolvers.go` - Resolvers - `internal/server/routes.go` - Add GraphQL route