Files
Sankofa/docs/api/README.md
defiQUG 9daf1fd378 Apply Composer changes: comprehensive API updates, migrations, middleware, and infrastructure improvements
- Add comprehensive database migrations (001-024) for schema evolution
- Enhance API schema with expanded type definitions and resolvers
- Add new middleware: audit logging, rate limiting, MFA enforcement, security, tenant auth
- Implement new services: AI optimization, billing, blockchain, compliance, marketplace
- Add adapter layer for cloud integrations (Cloudflare, Kubernetes, Proxmox, storage)
- Update Crossplane provider with enhanced VM management capabilities
- Add comprehensive test suite for API endpoints and services
- Update frontend components with improved GraphQL subscriptions and real-time updates
- Enhance security configurations and headers (CSP, CORS, etc.)
- Update documentation and configuration files
- Add new CI/CD workflows and validation scripts
- Implement design system improvements and UI enhancements
2025-12-12 18:01:35 -08:00

133 lines
1.8 KiB
Markdown

# 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 <token>
```
### 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.