2025-11-28 12:54:33 -08:00
|
|
|
# API Documentation
|
|
|
|
|
|
|
|
|
|
## GraphQL API
|
|
|
|
|
|
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
|
|
|
The Sankofa Phoenix API is a GraphQL API built with Apollo Server.
|
2025-11-28 12:54:33 -08:00
|
|
|
|
|
|
|
|
### Endpoint
|
|
|
|
|
|
|
|
|
|
- Development: `http://localhost:4000/graphql`
|
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
|
|
|
- Production: `https://api.sankofa.nexus/graphql`
|
2025-11-28 12:54:33 -08:00
|
|
|
|
|
|
|
|
### 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.
|
|
|
|
|
|