Back to Resources
Technical
API
Developer
Technical Specification

CAM Technical Specification

Complete technical documentation for the Compute Asset Management (CAM) platform, including API specifications, data models, security protocols, and integration guidelines for developers and system architects.

Updated January 2025
45 min read
API v2.1
REST & GraphQL
OAuth 2.0

System Overview

The Compute Asset Management (CAM) platform provides a comprehensive API suite for managing edge computing infrastructure, from site selection and capacity planning to real-time monitoring and optimization. Built on a microservices architecture, CAM offers both REST and GraphQL endpoints with enterprise-grade security and scalability.

Core Components

  • • Asset Discovery & Registration Service
  • • Capacity Planning & Optimization Engine
  • • Real-time Monitoring & Analytics
  • • Site Selection & Evaluation Tools
  • • Power & Cooling Management
  • • Compliance & Reporting Framework

Technical Stack

  • • Node.js / TypeScript Backend
  • • PostgreSQL with TimescaleDB
  • • Redis for Caching & Sessions
  • • Apache Kafka for Event Streaming
  • • Kubernetes Orchestration
  • • Prometheus & Grafana Monitoring

API Versioning Strategy

CAM follows semantic versioning with backward compatibility guarantees for minor versions.

  • • Current Version: v2.1 (Stable)
  • • Previous Version: v2.0 (Deprecated 2024-12-31)
  • • Beta Version: v2.2 (Preview)

API Endpoints

Authentication

POST /api/v2/auth/token

Obtain an access token using OAuth 2.0 client credentials flow.

curl -X POST https://api.gridsite.com/v2/auth/token \
-H "Content-Type: application/json" \
-d '{"client_id":"your_client_id","client_secret":"your_secret","grant_type":"client_credentials"}'
Asset Management
GET /api/v2/assets

List all compute assets

POST /api/v2/assets

Register new asset

GET /api/v2/assets/{id}

Get asset details

PUT /api/v2/assets/{id}

Update asset configuration

Capacity Planning
GET /api/v2/capacity

Get capacity overview

POST /api/v2/capacity/forecast

Generate capacity forecast

GET /api/v2/capacity/recommendations

Get optimization recommendations

POST /api/v2/capacity/scenarios

Run capacity scenarios

Site Management
GET /api/v2/sites

List all sites

POST /api/v2/sites/evaluate

Evaluate site suitability

GET /api/v2/sites/{id}/metrics

Get site performance metrics

POST /api/v2/sites/{id}/optimize

Optimize site configuration

Monitoring
GET /api/v2/metrics/realtime

Real-time metrics stream

GET /api/v2/metrics/historical

Historical data query

POST /api/v2/alerts/rules

Create alert rules

GET /api/v2/health

System health check

Data Models

Asset Model

{
  "id": "string (UUID)",
  "name": "string",
  "type": "compute|storage|network",
  "status": "active|inactive|maintenance",
  "location": {
    "siteId": "string",
    "coordinates": {
      "latitude": "number",
      "longitude": "number"
    },
    "address": "string"
  },
  "specifications": {
    "cpu": {
      "cores": "number",
      "architecture": "string",
      "frequency": "number"
    },
    "memory": {
      "total": "number",
      "type": "string"
    },
    "storage": {
      "capacity": "number",
      "type": "ssd|hdd|nvme"
    }
  },
  "utilization": {
    "cpu": "number (0-100)",
    "memory": "number (0-100)",
    "storage": "number (0-100)"
  },
  "createdAt": "string (ISO 8601)",
  "updatedAt": "string (ISO 8601)"
}

Site Model

{
  "id": "string (UUID)",
  "name": "string",
  "type": "edge|regional|core",
  "status": "operational|planned|decommissioned",
  "location": {
    "coordinates": {
      "latitude": "number",
      "longitude": "number"
    },
    "address": "string",
    "timezone": "string"
  },
  "infrastructure": {
    "power": {
      "capacity": "number (kW)",
      "redundancy": "string",
      "efficiency": "number"
    },
    "cooling": {
      "type": "air|liquid|immersion",
      "capacity": "number (BTU/hr)",
      "efficiency": "number"
    },
    "connectivity": {
      "providers": ["string"],
      "bandwidth": "number (Gbps)",
      "latency": "number (ms)"
    }
  },
  "compliance": {
    "certifications": ["string"],
    "regulations": ["string"]
  },
  "createdAt": "string (ISO 8601)",
  "updatedAt": "string (ISO 8601)"
}

Security Framework

Authentication & Authorization

OAuth 2.0 / OpenID Connect

Industry-standard authentication with JWT tokens

Role-Based Access Control

Granular permissions based on user roles and scopes

API Key Management

Secure API key generation and rotation

Data Protection

TLS 1.3 Encryption

End-to-end encryption for all API communications

Data at Rest Encryption

AES-256 encryption for stored data

Audit Logging

Comprehensive logging of all API access and changes

Rate Limiting & Throttling

Standard Tier

  • • 1,000 requests/hour
  • • 10 concurrent connections
  • • Basic support

Professional Tier

  • • 10,000 requests/hour
  • • 50 concurrent connections
  • • Priority support

Enterprise Tier

  • • Unlimited requests
  • • Unlimited connections
  • • Dedicated support

Implementation Guide

Quick Start

1. Register Your Application

Create an account and register your application to obtain API credentials.

curl -X POST https://api.gridsite.com/v2/applications \
-H "Content-Type: application/json" \
-d '{"name":"My App","description":"Asset management integration"}'

2. Authenticate

Use your client credentials to obtain an access token.

const response = await fetch('https://api.gridsite.com/v2/auth/token', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
client_id: 'your_client_id',
client_secret: 'your_client_secret',
grant_type: 'client_credentials'
})
});

3. Make API Calls

Use the access token to authenticate your API requests.

const assets = await fetch('https://api.gridsite.com/v2/assets', {
headers: {
'Authorization': 'Bearer ' + accessToken,
'Content-Type': 'application/json'
}
});

SDK Libraries

JavaScript/TypeScriptnpm install @gridsite/cam-sdk
Pythonpip install gridsite-cam
Gogo get github.com/gridsite/cam-go
JavaMaven/Gradle available

Error Handling

400Bad Request - Invalid parameters
401Unauthorized - Invalid credentials
429Rate Limited - Too many requests
500Server Error - Internal error

Developer Support

Get help with CAM API integration, access documentation, and connect with our developer community.

API Documentation

Complete API reference with examples and tutorials

View Docs

Developer Community

Join our community forum for support and discussions

Join Community

Technical Support

Direct support for integration and technical issues

Get Support