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.
Commitment Record
QuantumLink-Sim commitment record with classical/quantum/hybrid modes and AI block
commitment.jsonRCAN Config (.rcan.yaml)
Full .rcan.yaml configuration file — robot identity, brain, safety, security, messaging
rcan-config.jsonRegistry 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
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');