Microsoft.PowerShell.Crescendo.Schema.json

{
  "definitions": {
    "parameter": {
      "required": ["ParameterType","Name","OriginalName" ],
      "properties": {
        "ParameterType": {
          "type": "string",
          "description": "This the type of the parameter. It should represent an actual type."
        },
        "Position": {
          "type": "integer",
          "description": "The position of the parameter."
        },
        "Name": {
          "type": "string",
          "description":" the name of the parameter that PowerShell will use."
        },
        "OriginalName": {
          "type": "string",
          "description":" the original parameter name used by the negative command."
        },
        "OriginalText": {
          "type": "string",
          "description":" the original helptext for the native command parameter."
        },
        "Description": {
          "type": "string",
          "description":" the description of the parameter, this will be used by help."
        },
        "DefaultValue": {
          "type": "string",
          "description":" the default value for the parameter."
        },
        "DefaultMissingValue": {
          "type": "string",
          "description":"xxx"
        },
        "AdditionalParameterAttributes": {
          "type": "array",
          "description":" additional parameter attributes used by PowerShell. This will take the form of a standard script parameter.",
          "items": {
            "type": "string"
          }
        },
        "Mandatory": {
          "type": "boolean",
          "description":" whether this parameter is mandatory."
        },
        "ParameterSetName": {
          "type": "array",
          "description": "The names of the parameter set for this parameter.",
          "items": {
            "type": "string"
          }
        },
        "Aliases": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "OriginalPosition": {
          "type": "integer",
          "description":" the original parameter position for the native executable. This is used to properly order parameters when calling the native command."
        },
        "ValueFromPipeline": {
          "type": "boolean",
          "description":" the value for this parameter is taken from the pipeline."
        },
        "NoGap": {
          "type": "boolean",
          "description":" when constructing the native parameter and volume do not separate with a space."
        },
        "ValueFromPipelineByPropertyName": {
          "type": "boolean",
          "description":" when are assigning a value to the parameter use the same property as the parameter name."
        },
        "ValueFromRemainingArguments": {
          "type": "boolean",
          "description":" assign the remaining values to the parameter."
        }
      }
    },
    "command": {
      "required": [ "Verb", "Noun", "OriginalName" ],
      "properties": {
        "Verb": {
          "type": [
            "string"
          ],
          "enum": [
            "Add","Approve","Assert",
            "Backup","Block","Build",
            "Checkpoint","Clear","Close","Compare","Complete","Compress","Confirm","Connect","Convert","ConvertFrom","ConvertTo","Copy",
            "Debug","Deny","Deploy","Disable","Disconnect","Dismount",
            "Edit","Enable","Enter","Exit","Expand","Export",
            "Find","Format",
            "Get","Grant","Group",
            "Hide",
            "Import","Initialize","Install","Invoke",
            "Join",
            "Limit","Lock",
            "Measure","Merge","Mount","Move",
            "New",
            "Open","Optimize","Out",
            "Ping","Pop","Protect","Publish","Push",
            "Read","Receive","Redo","Register","Remove","Rename","Repair","Request","Reset","Resize","Resolve","Restart","Restore","Resume","Revoke",
            "Save","Search","Select","Send","Set","Show","Skip","Split","Start","Step","Stop","Submit","Suspend","Switch","Sync",
            "Test","Trace",
            "Unblock","Undo","Uninstall","Unlock","Unprotect","Unpublish","Unregister","Update","Use",
            "Wait","Watch","Write"
          ],
          "description" : "The verb of the cmdlet"
        },
        "Elevation": {
          "type": "object",
          "description": "When privilege elevation is required to run the command. Provide ElevationCommand and optional arguments.",
          "required": ["Command"],
          "properties": {
            "Command": {
              "type": "string",
              "description": "The command which performs the elevation. Windows elevation may be done with the built-in function Invoke-WindowsNativeAppWithElevation."
            },
            "Arguments": {
              "type": "array",
              "items": { "$ref": "#/definitions/parameter" },
              "description": "Additional arguments required by the elevation command."
            }
          }
 
        },
        "Noun": {
          "type": [
            "string"
          ],
          "description" : "The noun of the cmdlet"
        },
        "Platform": {
          "type": "array",
          "minItems": 1,
          "maxItems": 3,
          "uniqueItems": true,
          "items": {
            "type": "string",
            "enum": [ "Windows", "Linux", "MacOS" ]
          },
          "description" : "The platform where the function will run, this may be 'Windows','Linux', or 'MacOS' in any combination. The default is all three values."
        },
        "OriginalName": {
          "type": [
            "string"
          ],
          "description" : "The native command to be called by the function."
        },
 
        "OutputHandlers": {
          "type": "array",
          "description": "Converts the text output of the native command into an object. Each output handler is associated with a parameter set name.",
          "items": {
            "type": "object",
            "required": ["ParameterSetName", "Handler" ],
            "properties": {
              "ParameterSetName": {
                "type": "string",
                "description": "The name of the parameter set which will use the handler."
              },
              "Handler": {
                "type": "string",
                "description": "This is the code which converts the output to objects"
              },
              "HandlerType": {
                "type": "string",
                "enum": ["Inline", "Function","Script"],
                "description": "The type of handler, by default this is 'Inline'"
 
              },
              "StreamOutput": {
                "type": "boolean",
                "description": "When used, output will be piped as a stream to the output handler."
              }
            }
          }
        },
 
        "OriginalCommandElements": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": [
              "string"
            ]
          },
          "description": "Additional elements to be added to the invocation. This is for arguments provided to a Native application which are not part of the parameters."
        },
        "Aliases": {
          "type": [
            "array"
          ],
          "description" : "Aliases to the function that will be created",
          "items": {
            "type": [
              "string"
            ]
          }
        },
        "DefaultParameterSetName": {
          "type": [
            "string"
          ],
          "description": "The default parameter set name for the function"
 
        },
        "SupportsShouldProcess": {
          "type": "boolean"
        },
        "SupportsTransactions": {
          "type": "boolean"
        },
        "Description": {
          "type": [
            "string",
            "null"
          ]
        },
        "Usage": {
          "type": [
            "object"
          ],
          "required": [ "Synopsis" ],
          "properties": {
            "Synopsis": {
              "type": [
                "string"
              ]
            },
            "SupportsFlags": {
              "type": "boolean"
            },
            "HasOptions": {
              "type": "boolean"
            },
            "OriginalText": {
              "type": [
                "array",
                "null"
              ],
              "items": {
                "type": [
                  "string"
                ]
              },
              "description": "The original text for the command help. Usually generated by command -?"
            }
          }
        },
        "Parameters": {
          "type": [
            "array",
            "null"
          ],
          "description": "The parameters for the function.",
          "items": {
            "type": [
              "object",
              "null"
            ],
            "required": ["ParameterType", "Name", "OriginalName" ],
            "properties": {
              "ParameterType": {
                "type": [
                  "string"
                ],
                "description": "This the type of the parameter. It should represent an actual type."
              },
              "Position": {
                "type": "integer",
                "description": "The position of the parameter."
              },
              "Name": {
                "type": [
                  "string"
                ]
              },
              "OriginalName": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "OriginalText": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "Description": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "DefaultValue": {
                "type": "string",
                "description": "The default value for this parameter."
              },
              "DefaultMissingValue": {
                "type": "string",
                "description": "The default value for this parameter if the parameter is not present (or is a switch parameter)."
              },
              "AdditionalParameterAttributes": {
                "type": [
                  "array",
                  "null"
                ],
                "items": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "Mandatory": {
                "type": "boolean"
              },
              "ParameterSetName": {
                "type": [
                  "array",
                  "null"
                ],
                "items": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "Aliases": {
                "type": [
                  "array",
                  "null"
                ],
                "items": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "OriginalPosition": {
                "type": "integer"
              },
              "ValueFromPipeline": {
                "type": "boolean"
              },
              "NoGap": {
                "type": "boolean"
              },
              "ValueFromPipelineByPropertyName": {
                "type": "boolean"
              },
              "ValueFromRemainingArguments": {
                "type": "boolean"
              }
            }
          }
        },
        "Examples": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": [
              "object",
              "null"
            ],
            "required": [ "Command", "Description" ],
            "properties": {
              "Command": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "OriginalCommand": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "Description": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          }
        },
        "OriginalText": {
          "type": [
            "string",
            "null"
          ]
        },
        "HelpLinks": {
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "NoInvocation": {
          "type":"boolean",
          "description": "This option returns the arguments which would be sent to the native executable. If used, the native application will not be invoked."
        }
      },
      "additionalProperties": false
    }
  },
  "type": "object",
  "$id": "https://microsoft.com/powershell/crescendo",
  "title": "JSON schema for Powershell Crescendo files",
  "properties": {
    "$schema": {
      "type": "string"
    },
    "Commands":{
      "description": "The Crescendo command definitions.",
      "type": "array",
      "items": {
        "$ref": "#/definitions/command"
      }
    }
  }
}