.camspec.json schema

Core Structure

A CAMSPEC document consists of four main sections:

{
  "$schema": "https://camspec.org/schema/1.0.0/camspec.json",
  "version": "1.0.0",
  "manifest": [...],
  "constraints": [...],
  "globalConstraints": [...],
  "optimization": {...}
}

Version

The version field follows semantic versioning (X.Y.Z format):

{
  "version": "1.0.0"
}

Manifest

The manifest section lists all CAD models included in the specification. Each entry describes a single model file:

{
  "manifest": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "file": "part.stl",
      "format": "STL_ASCII",
      "name": "Example Part",
      "priority": 75,
      "quantity": 1,
      "units": "MM",
      "referenceTransform": {
        "rotation": [1, 0, 0, 0, 1, 0, 0, 0, 1],
        "translation": [0, 0, 0]
      }
    }
  ]
}

Manifest Properties

Property Required Description
id Yes UUID for unique identification
file Yes Path to model file relative to models directory
format Yes One of: STEP, STL_ASCII, STL_BINARY, OBJ, BREP, IGES
name No Human-readable identifier
priority Yes Importance (0-100, higher = more important)
quantity Yes The quantity of parts to produce
units Yes Model units (MM, CM, FT, IN)
referenceTransform Yes Transform to standard orientation

Constraints

The constraints array defines specific requirements for individual models, for example:

{
  "constraints": [
    {
      "manifestId": "550e8400-e29b-41d4-a716-446655440000",
      "type": "FIXED_ORIENTATION",
      "value": {
        "rotation": [1, 0, 0, 0, 1, 0, 0, 0, 1]
      }
    }
  ]
}

Global Constraints

The globalConstraints array defines requirements affecting all models, for example:

{
  "globalConstraints": [
    {
      "type": "MIN_PART_DISTANCE",
      "value": {
        "distance": 2.0,
        "units": "MM"
      }
    }
  ]
}

Optimization

The optimization object defines the primary optimization strategy, for example:

{
  "optimization": {
    "strategy": "MINIMIZE_HEIGHT",
    "weight": 1.0
  }
}