{ "capability": "freecad.model.author@v1", "display_name": "FreeCAD 受控建模", "default_enrollment": false, "output_namespace": "freecad", "input_policy": { "suffixes": [".step", ".stp"], "max_count": 1, "max_bytes": 268435456, "max_total_bytes": 268435456 }, "outputs": { "project": {"filename": "model.FCStd", "media_type": "application/vnd.freecad", "relative_path": "model.FCStd", "publish": true, "required": true}, "geometry_step": {"filename": "model.step", "media_type": "model/step", "relative_path": "model.step", "publish": true, "required": true}, "preview": {"filename": "model-preview.png", "media_type": "image/png", "relative_path": "model-preview.png", "publish": true, "required": true}, "model_recipe": {"filename": "model-recipe.json", "media_type": "application/json", "relative_path": "model-recipe.json", "publish": true, "required": true}, "model_manifest": {"filename": "model-manifest.json", "media_type": "application/json", "relative_path": "model-manifest.json", "publish": true, "required": true}, "provenance": {"filename": "provenance.json", "media_type": "application/json", "relative_path": ".meta/provenance.json", "publish": false, "required": true} }, "feature_path": ["operation", "model", "type"], "features": {"recipe": "1.0.0"}, "summary": {"title_path": ["operation", "model", "title"]}, "legacy_runtime": null, "workspace": { "state_output": "project", "preview_outputs": ["preview"], "required_adapter_version": "1.0.0" }, "request_schema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "x-maxBytes": 262144, "required": ["schema_version", "inputs", "operation", "outputs"], "additionalProperties": false, "properties": { "schema_version": {"const": 1}, "inputs": { "type": "array", "maxItems": 1, "items": { "type": "object", "required": ["key", "artifact_id"], "additionalProperties": false, "properties": {"key": {"const": "geometry"}, "artifact_id": {"type": "string", "format": "uuid"}} } }, "operation": { "type": "object", "required": ["model"], "additionalProperties": false, "properties": {"model": {"$ref": "#/$defs/model"}} }, "outputs": {"type": "array", "maxItems": 0} }, "$defs": { "identifier": {"type": "string", "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,63}$"}, "finite": {"type": "number", "minimum": -1000000, "maximum": 1000000}, "positive": {"type": "number", "exclusiveMinimum": 0, "maximum": 1000000}, "parameterRef": { "type": "object", "required": ["parameter"], "additionalProperties": false, "properties": {"parameter": {"$ref": "#/$defs/identifier"}} }, "numberValue": {"oneOf": [{"$ref": "#/$defs/finite"}, {"$ref": "#/$defs/parameterRef"}]}, "positiveValue": {"oneOf": [{"$ref": "#/$defs/positive"}, {"$ref": "#/$defs/parameterRef"}]}, "vector3": {"type": "array", "minItems": 3, "maxItems": 3, "items": {"$ref": "#/$defs/numberValue"}}, "resultRef": {"$ref": "#/$defs/identifier"}, "box": { "type": "object", "required": ["id", "op", "length", "width", "height"], "additionalProperties": false, "properties": {"id": {"$ref": "#/$defs/identifier"}, "op": {"const": "box"}, "length": {"$ref": "#/$defs/positiveValue"}, "width": {"$ref": "#/$defs/positiveValue"}, "height": {"$ref": "#/$defs/positiveValue"}} }, "cylinder": { "type": "object", "required": ["id", "op", "radius", "height"], "additionalProperties": false, "properties": {"id": {"$ref": "#/$defs/identifier"}, "op": {"const": "cylinder"}, "radius": {"$ref": "#/$defs/positiveValue"}, "height": {"$ref": "#/$defs/positiveValue"}, "angle_degrees": {"$ref": "#/$defs/positiveValue"}} }, "cone": { "type": "object", "required": ["id", "op", "radius1", "radius2", "height"], "additionalProperties": false, "properties": {"id": {"$ref": "#/$defs/identifier"}, "op": {"const": "cone"}, "radius1": {"$ref": "#/$defs/numberValue"}, "radius2": {"$ref": "#/$defs/numberValue"}, "height": {"$ref": "#/$defs/positiveValue"}, "angle_degrees": {"$ref": "#/$defs/positiveValue"}} }, "sphere": { "type": "object", "required": ["id", "op", "radius"], "additionalProperties": false, "properties": {"id": {"$ref": "#/$defs/identifier"}, "op": {"const": "sphere"}, "radius": {"$ref": "#/$defs/positiveValue"}, "angle1_degrees": {"$ref": "#/$defs/numberValue"}, "angle2_degrees": {"$ref": "#/$defs/numberValue"}, "angle3_degrees": {"$ref": "#/$defs/positiveValue"}} }, "torus": { "type": "object", "required": ["id", "op", "major_radius", "minor_radius"], "additionalProperties": false, "properties": {"id": {"$ref": "#/$defs/identifier"}, "op": {"const": "torus"}, "major_radius": {"$ref": "#/$defs/positiveValue"}, "minor_radius": {"$ref": "#/$defs/positiveValue"}, "angle1_degrees": {"$ref": "#/$defs/numberValue"}, "angle2_degrees": {"$ref": "#/$defs/numberValue"}, "angle3_degrees": {"$ref": "#/$defs/positiveValue"}} }, "importStep": { "type": "object", "required": ["id", "op", "input"], "additionalProperties": false, "properties": {"id": {"$ref": "#/$defs/identifier"}, "op": {"const": "import_step"}, "input": {"const": "geometry"}} }, "boolean": { "type": "object", "required": ["id", "op", "target", "tools"], "additionalProperties": false, "properties": {"id": {"$ref": "#/$defs/identifier"}, "op": {"enum": ["union", "cut", "intersect"]}, "target": {"$ref": "#/$defs/resultRef"}, "tools": {"type": "array", "minItems": 1, "maxItems": 32, "uniqueItems": true, "items": {"$ref": "#/$defs/resultRef"}}} }, "translate": { "type": "object", "required": ["id", "op", "target", "vector"], "additionalProperties": false, "properties": {"id": {"$ref": "#/$defs/identifier"}, "op": {"const": "translate"}, "target": {"$ref": "#/$defs/resultRef"}, "vector": {"$ref": "#/$defs/vector3"}} }, "rotate": { "type": "object", "required": ["id", "op", "target", "axis_point", "axis_direction", "angle_degrees"], "additionalProperties": false, "properties": {"id": {"$ref": "#/$defs/identifier"}, "op": {"const": "rotate"}, "target": {"$ref": "#/$defs/resultRef"}, "axis_point": {"$ref": "#/$defs/vector3"}, "axis_direction": {"$ref": "#/$defs/vector3"}, "angle_degrees": {"$ref": "#/$defs/numberValue"}} }, "combine": { "type": "object", "required": ["id", "op", "targets"], "additionalProperties": false, "properties": {"id": {"$ref": "#/$defs/identifier"}, "op": {"const": "combine"}, "targets": {"type": "array", "minItems": 1, "maxItems": 64, "uniqueItems": true, "items": {"$ref": "#/$defs/resultRef"}}} }, "step": {"oneOf": [{"$ref": "#/$defs/box"}, {"$ref": "#/$defs/cylinder"}, {"$ref": "#/$defs/cone"}, {"$ref": "#/$defs/sphere"}, {"$ref": "#/$defs/torus"}, {"$ref": "#/$defs/importStep"}, {"$ref": "#/$defs/boolean"}, {"$ref": "#/$defs/translate"}, {"$ref": "#/$defs/rotate"}, {"$ref": "#/$defs/combine"}]}, "preview": { "type": "object", "additionalProperties": false, "properties": {"width": {"type": "integer", "minimum": 320, "maximum": 1600}, "height": {"type": "integer", "minimum": 240, "maximum": 1600}, "background": {"type": "string", "pattern": "^#[0-9A-Fa-f]{6}$"}} }, "model": { "type": "object", "required": ["type", "recipe_version", "title", "unit", "steps", "result"], "additionalProperties": false, "properties": { "type": {"const": "recipe"}, "recipe_version": {"const": 1}, "title": {"type": "string", "minLength": 1, "maxLength": 160}, "unit": {"const": "mm"}, "parameters": {"type": "object", "maxProperties": 64, "propertyNames": {"$ref": "#/$defs/identifier"}, "additionalProperties": {"$ref": "#/$defs/finite"}}, "steps": {"type": "array", "minItems": 1, "maxItems": 128, "items": {"$ref": "#/$defs/step"}}, "result": {"$ref": "#/$defs/resultRef"}, "preview": {"$ref": "#/$defs/preview"} } } } } }