Add JSON Schema documentation for bambulab/v1, with real inheritance

Mirrors src/printer/bambu_commands/ as language-agnostic schema docs (not
used for codegen — the Rust structs stay hand-written). envelope.schema.json
is the base; get_version/pushall request+response schemas extend it via
allOf + $ref, which is genuinely closer to real inheritance than anything
else in this project's schema stack: proto and Rust only ever gave us
composition (embed a field holding the base struct), never a mechanism
that reuses a *referenced* schema's constraints automatically.

Verified with the jsonschema Python library, not just written by hand:
all three real examples from the conversation validate correctly, and —
importantly — negative tests confirm the base schema's required fields
and the command consts are actually enforced through the allOf chain, not
just documented. README covers the one real gotcha (additionalProperties:
false on a base schema silently breaks allOf composition, since allOf
validates each sub-schema against the whole instance independently rather
than merging them).
This commit is contained in:
2026-08-28 22:53:59 +00:00
parent 166761479b
commit 42eb0b62d5
9 changed files with 188 additions and 0 deletions
@@ -0,0 +1,21 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://continuum.internal/schemas/bambulab/v1/get_version.response.schema.json",
"title": "GetVersionResponse",
"allOf": [
{ "$ref": "envelope.schema.json" },
{
"type": "object",
"properties": {
"command": { "const": "get_version" },
"result": { "type": "string" },
"reason": { "type": "string" },
"module": {
"type": "array",
"items": { "$ref": "module_info.schema.json" }
}
},
"required": ["module"]
}
]
}