Files
Sankofa/docs/api/examples.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

1.7 KiB

API Usage Examples

Authentication

Login

const LOGIN_MUTATION = gql`
  mutation Login($email: String!, $password: String!) {
    login(email: $email, password: $password) {
      token
      user {
        id
        email
        name
      }
    }
  }
`

const { data } = await client.mutate({
  mutation: LOGIN_MUTATION,
  variables: {
    email: 'user@sankofa.nexus',
    password: 'password123'
  }
})

// Store token
localStorage.setItem('token', data.login.token)

Resources

Get All Resources

const GET_RESOURCES = gql`
  query GetResources {
    resources {
      id
      name
      type
      status
      site {
        name
        region
      }
    }
  }
`

const { data } = await client.query({
  query: GET_RESOURCES
})

Create Resource

const CREATE_RESOURCE = gql`
  mutation CreateResource($input: CreateResourceInput!) {
    createResource(input: $input) {
      id
      name
      type
      status
    }
  }
`

const { data } = await client.mutate({
  mutation: CREATE_RESOURCE,
  variables: {
    input: {
      name: 'web-server-01',
      type: 'VM',
      siteId: 'site-id-here',
      metadata: {
        cpu: 4,
        memory: '8Gi'
      }
    }
  }
})

Using React Hooks

import { useResources, useCreateResource } from '@/lib/graphql/hooks'

function ResourcesList() {
  const { data, loading, error } = useResources()
  const { createResource } = useCreateResource()

  if (loading) return <div>Loading...</div>
  if (error) return <div>Error: {error.message}</div>

  return (
    <div>
      {data?.resources.map(resource => (
        <div key={resource.id}>{resource.name}</div>
      ))}
    </div>
  )
}