Microsoft.PowerShell.Crescendo.Schema.json

{
  "title": "JSON schema for Powershell Crescendo files",
  "type": "object",
  "properties": {
    "$schema": {
      "required":true,
      "type": ["string"]
    },
    "Verb": {
      "required": true,
      "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"
    },
    "Noun": {
      "required": true,
      "type": [
        "string"
      ],
      "description" : "The noun of the cmdlet"
    },
    "OriginalName": {
      "required": true,
      "type": [
        "string"
      ],
      "description" : "The native command to be called by the function."
    },
 
    "OutputHandlers": {
      "required": false,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "ParameterSetName": {
            "required": true,
            "type": "string",
            "description": "The name of the parameter set which will use the handler"
          },
          "Handler": {
            "required": true,
            "type": "string",
            "description": "This is the code which converts the output to objects"
          },
          "StreamOutput": {
            "required": false,
            "type": "boolean",
            "description": "When used, output will be piped as a stream to the output handler."
          }
        }
      }
    },
 
 
 
    "OriginalCommandElements": {
      "required": false,
      "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": {
      "required": false,
      "type": [
        "array"
      ],
      "description" : "Aliases to the function that will be created",
      "items": {
        "type": [
          "string"
        ]
      }
    },
    "DefaultParameterSetName": {
      "required": false,
      "type": [
        "string"
      ],
      "description": "The default parameter set name for the function"
 
    },
    "SupportsShouldProcess": {
      "required": false,
      "type": "boolean"
    },
    "SupportsTransactions": {
      "required": false,
      "type": "boolean"
    },
    "Description": {
      "required": false,
      "type": [
        "string",
        "null"
      ]
    },
    "Usage": {
      "required": false,
      "type": [
        "object"
      ],
      "properties": {
        "Synopsis": {
          "required": true,
          "type": [
            "string"
          ]
        },
        "SupportsFlags": {
          "required": false,
          "type": "boolean"
        },
        "HasOptions": {
          "required": false,
          "type": "boolean"
        },
        "OriginalText": {
          "required": false,
          "type": [
            "array",
            "null"
          ],
          "items": {
            "type": [
              "string"
            ]
          },
          "description": "The original text for the command help. Usually generated by command -?"
        }
      }
    },
    "Parameters": {
      "required": false,
      "type": [
        "array",
        "null"
      ],
      "description": "The parameters for the function.",
      "items": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "ParameterType": {
            "required": true,
            "type": [
              "string"
            ],
            "description": "This the type of the parameter. It should represent an actual type."
          },
          "Position": {
            "required": false,
            "type": "integer",
            "description": "The position of the parameter."
          },
          "Name": {
            "required": true,
            "type": [
              "string"
            ]
          },
          "OriginalName": {
            "required": true,
            "type": [
              "string",
              "null"
            ]
          },
          "OriginalText": {
            "required": false,
            "type": [
              "string",
              "null"
            ]
          },
          "Description": {
            "required": false,
            "type": [
              "string",
              "null"
            ]
          },
          "DefaultValue": {
            "required": false,
            "type": [
              "string",
              "object",
              "null"
            ],
            "properties": {}
          },
          "DefaultMissingValue": {
            "required": false,
            "type": [
              "object",
              "null"
            ],
            "properties": {}
          },
          "AdditionalParameterAttributes": {
            "required": false,
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "Mandatory": {
            "required": false,
            "type": "boolean"
          },
          "ParameterSetName": {
            "required": false,
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "Aliases": {
            "required": false,
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "OriginalPosition": {
            "required": false,
            "type": "integer"
          },
          "ValueFromPipeline": {
            "required": false,
            "type": "boolean"
          },
          "NoGap": {
            "required":false,
            "type": "boolean"
          },
          "ValueFromPipelineByPropertyName": {
            "required": false,
            "type": "boolean"
          },
          "ValueFromRemainingArguments": {
            "required": false,
            "type": "boolean"
          }
        }
      }
    },
    "Examples": {
      "required": false,
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": [
          "object",
          "null"
        ],
        "properties": {
          "Command": {
            "required": true,
            "type": [
              "string",
              "null"
            ]
          },
          "OriginalCommand": {
            "required": false,
            "type": [
              "string",
              "null"
            ]
          },
          "Description": {
            "required": true,
            "type": [
              "string",
              "null"
            ]
          }
        }
      }
    },
    "OriginalText": {
      "required": false,
      "type": [
        "string",
        "null"
      ]
    },
    "HelpLinks": {
      "required": false,
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": [
          "string",
          "null"
        ]
      }
    },
    "NoInvocation": {
      "type":"boolean",
      "required": false,
      "description": "This option returns the arguments which would be sent to the native executable. If used, the native application will not be invoked."
    }
  },
  "required" : ["Verb","Noun","OriginalName"],
  "additionalProperties": false
}