Machine-readable definitions

RCAN Schemas

JSON Schema (draft-07) definitions for every RCAN message type, RURI format, commitment records, and the full .rcan.yaml config structure. Use these to validate implementations, generate types, and build conformant tooling.

Message Schemas

One JSON Schema file per RCAN message type. All use $schema: draft-07, include realistic examples, and enforce additionalProperties: false.

Type # Name Download
1 COMMAND command.json
2 CONFIG config.json
3 STATUS status.json
4 AUTH auth.json
5 HEARTBEAT heartbeat.json
6 SAFETY safety.json
9 AUTHORIZE authorize.json
10 PENDING_AUTH pending_auth.json

Core Schemas

RURI format validation, QuantumLink-Sim commitment records, and the full .rcan.yaml config structure.

RURI

Robot Universal Resource Identifier — regex pattern and structure validation

ruri.json

Commitment Record

QuantumLink-Sim commitment record with classical/quantum/hybrid modes and AI block

commitment.json

RCAN Config (.rcan.yaml)

Full .rcan.yaml configuration file — robot identity, brain, safety, security, messaging

rcan-config.json

Registry API

OpenAPI 3.1 specification for all /api/v1/ endpoints. Import into Swagger UI, Redoc, Stoplight, or any OpenAPI-compatible tool to auto-generate SDKs and client libraries.

registry-api.openapi.yaml

540 lines · 5 endpoints · Full Robot schema with all sub-schemas · Error responses documented

Endpoints: GET /api/v1.json · /api/v1/robots.json · /api/v1/robots/{rrn}.json · /api/v1/ruri/{ruri}.json · /api/v1/verify/{rrn}.json

Download YAML

Usage

🐍 Python (jsonschema)

import json, requests
from jsonschema import validate

schema = requests.get(
  "https://rcan.dev/schemas/messages/command.json"
).json()

msg = {
  "message_type": 1,
  "ruri": "rcan://rcan.dev/acme/arm/abc123",
  "principal_id": "user@example.com",
  "role_level": 2,
  "scope": "arm",
  "action": "move",
  "parameters": {"x": 0.1},
  "timestamp_ms": 1234567890000,
  "message_id": "msg-001",
  "priority": "NORMAL"
}
validate(instance=msg, schema=schema)
print("Valid COMMAND message")

🟨 Node.js (ajv)

import Ajv from 'ajv';
import fetch from 'node-fetch';

const ajv = new Ajv();
const schema = await fetch(
  'https://rcan.dev/schemas/messages/command.json'
).then(r => r.json());

const validate = ajv.compile(schema);
const valid = validate(msg);
if (!valid) console.error(validate.errors);
else console.log('Valid COMMAND message');
← RCAN Spec v1.2 Conformance Suite → API Reference → GitHub →