RCAN Schemas
JSON Schema definitions for the core RCAN message types, the 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 for each message type listed here (not every type in the canonical table has one yet). All use $schema: draft-07, include realistic examples, and enforce additionalProperties: false.
| Type # | Name | Download |
|---|---|---|
| 1 | COMMAND | command.json |
| 5 | CONFIG | config.json |
| 3 | STATUS | status.json |
| 7 | AUTH | auth.json |
| 4 | HEARTBEAT | heartbeat.json |
| 6 | SAFETY | safety.json |
| 45 | AUTHORIZE | authorize.json |
| 10 | PENDING_AUTH | pending_auth.json |
| 11 | INVOKE | invoke.json |
| 12 | INVOKE_RESULT | invoke-result.json |
| 13 | INVOKE_CANCEL | invoke-cancel.json |
| 16 | TRANSPARENCY | transparency.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.jsonEnvelope (Appendix C)
Declared physical limits: workspace, motion, force, proximity, sensing, stop and heartbeat. Informative; JSON Schema 2020-12.
envelope.jsonGate decision (Appendix C)
Optional hash-chained audit record of each allow, clamp, reject or stop decision. Informative; JSON Schema 2020-12.
gate-decision.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');