namespace Unity.Pipeline.Commands { /// /// Marker for a command parameter type that should be advertised to clients as a nested JSON /// object schema in GET /api/commands, instead of collapsing to string. /// /// Convention for command authors: when a command needs a structured (multi-field) argument, /// declare a small DTO that implements this interface and take it as a single parameter. The /// reflects over the type's public, writable fields and /// properties to emit { "type": "object", "properties": { ... } } (recursing into nested /// members and arrays/lists of them). At runtime the value /// deserializes automatically via Newtonsoft in /// BasePipelineServer.ExtractCommandParameters, so no extra wiring is needed. /// /// Member metadata: /// /// Annotate members with [CliArg(name, description, Required = ...)] to control the /// property name, description, and whether it appears in the schema's required array /// (mirrors how command parameters are described). /// Without a [CliArg], the member name (or its Newtonsoft [JsonProperty] name) /// is used and the member is optional. /// [JsonIgnore] members are omitted from the schema. /// /// public interface IStructuredCommandInput { } }