# API Documentation ## GraphQL API The Sankofa Phoenix API is a GraphQL API built with Apollo Server. ### Endpoint - Development: `http://localhost:4000/graphql` - Production: `https://api.sankofa.nexus/graphql` ### Authentication All queries and mutations (except `login`) require authentication via JWT token: ```http Authorization: Bearer ``` ### Schema See [schema.graphql](./schema.graphql) for the complete GraphQL schema. ### Queries #### Get Resources ```graphql query GetResources($filter: ResourceFilter) { resources(filter: $filter) { id name type status site { id name } } } ``` #### Get Sites ```graphql query GetSites { sites { id name region status } } ``` #### Get Current User ```graphql query GetMe { me { id email name role } } ``` ### Mutations #### Login ```graphql mutation Login($email: String!, $password: String!) { login(email: $email, password: $password) { token user { id email name } } } ``` #### Create Resource ```graphql mutation CreateResource($input: CreateResourceInput!) { createResource(input: $input) { id name type status } } ``` ### Error Handling The API returns errors in the standard GraphQL error format: ```json { "errors": [ { "message": "Authentication required", "extensions": { "code": "UNAUTHENTICATED" } } ] } ``` ### Error Codes - `UNAUTHENTICATED`: Authentication required - `FORBIDDEN`: Insufficient permissions - `NOT_FOUND`: Resource not found - `VALIDATION_ERROR`: Input validation failed - `SERVER_ERROR`: Internal server error ### Rate Limiting - 100 requests per minute per IP - 1000 requests per hour per authenticated user ### Examples See [examples.md](./examples.md) for more usage examples.