{
  "name": "mypkg",
  "version": "0.0.1",
  "functions": {
    "mypkg::funcWithAllOptionalInputs": {
      "description": "Check codegen of functions with all optional inputs.",
      "inputs": {
        "type": "object",
        "properties": {
          "a": {
            "type": "string",
            "description": "Property A"
          },
          "b": {
            "type": "string",
            "description": "Property B"
          }
        }
      },
      "outputs": {
        "properties": {
          "r": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "r"
        ]
      }
    },
    "mypkg::funcWithConstInput": {
      "description": "Codegen demo with const inputs",
      "inputs": {
        "type": "object",
        "properties": {
          "plainInput": {
            "type": "string",
            "const": "fixed"
          }
        }
      }
    },
    "mypkg::funcWithDefaultValue": {
      "description": "Check codegen of functions with default values.",
      "inputs": {
        "type": "object",
        "required": [
          "a"
        ],
        "properties": {
          "a": {
            "type": "string"
          },
          "b": {
            "type": "string",
            "default": "b-default"
          }
        }
      },
      "outputs": {
        "properties": {
          "r": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "r"
        ]
      }
    },
    "mypkg::funcWithDictParam": {
      "description": "Check codegen of functions with a Dict<str,str> parameter.",
      "inputs": {
        "type": "object",
        "properties": {
          "a": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "b": {
            "type": "string"
          }
        }
      },
      "outputs": {
        "properties": {
          "r": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "r"
        ]
      }
    },
    "mypkg::funcWithListParam": {
      "description": "Check codegen of functions with a List parameter.",
      "inputs": {
        "type": "object",
        "properties": {
          "a": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "b": {
            "type": "string"
          }
        }
      },
      "outputs": {
        "properties": {
          "r": {
            "type": "string"
          }
        },
        "type": "object",
        "required": [
          "r"
        ]
      }
    },
    "mypkg::getClientConfig": {
      "description": "Failing example taken from azure-native. Original doc: Use this function to access the current configuration of the native Azure provider.",
      "outputs": {
        "description": "Configuration values returned by getClientConfig.",
        "properties": {
          "clientId": {
            "type": "string",
            "description": "Azure Client ID (Application Object ID)."
          },
          "objectId": {
            "type": "string",
            "description": "Azure Object ID of the current user or service principal."
          },
          "subscriptionId": {
            "type": "string",
            "description": "Azure Subscription ID"
          },
          "tenantId": {
            "type": "string",
            "description": "Azure Tenant ID"
          }
        },
        "type": "object",
        "required": [
          "clientId",
          "objectId",
          "subscriptionId",
          "tenantId"
        ]
      }
    },
    "mypkg::getIntegrationRuntimeObjectMetadatum": {
      "description": "Another failing example. A list of SSIS object metadata.\nAPI Version: 2018-06-01.",
      "inputs": {
        "properties": {
          "factoryName": {
            "type": "string",
            "description": "The factory name."
          },
          "integrationRuntimeName": {
            "type": "string",
            "description": "The integration runtime name."
          },
          "metadataPath": {
            "type": "string",
            "description": "Metadata path."
          },
          "resourceGroupName": {
            "type": "string",
            "description": "The resource group name."
          }
        },
        "type": "object",
        "required": [
          "factoryName",
          "integrationRuntimeName",
          "resourceGroupName"
        ]
      },
      "outputs": {
        "description": "A list of SSIS object metadata.",
        "properties": {
          "nextLink": {
            "type": "string",
            "description": "The link to the next page of results, if any remaining results exist."
          },
          "value": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "object",
                  "$ref": "#/types/mypkg::SsisEnvironmentResponse"
                },
                {
                  "type": "object",
                  "$ref": "#/types/mypkg::SsisFolderResponse"
                },
                {
                  "type": "object",
                  "$ref": "#/types/mypkg::SsisPackageResponse"
                },
                {
                  "type": "object",
                  "$ref": "#/types/mypkg::SsisProjectResponse"
                }
              ],
              "discriminator": {
                "propertyName": "type",
                "mapping": {
                  "Environment": "#/types/mypkg::SsisEnvironmentResponse",
                  "Folder": "#/types/mypkg::SsisFolderResponse",
                  "Package": "#/types/mypkg::SsisPackageResponse",
                  "Project": "#/types/mypkg::SsisProjectResponse"
                }
              }
            },
            "description": "List of SSIS object metadata."
          }
        },
        "type": "object"
      }
    },
    "mypkg::listStorageAccountKeys": {
      "description": "The response from the ListKeys operation.\nAPI Version: 2021-02-01.",
      "inputs": {
        "properties": {
          "accountName": {
            "type": "string",
            "description": "The name of the storage account within the specified resource group. Storage account names must be between 3 and 24 characters in length and use numbers and lower-case letters only."
          },
          "expand": {
            "type": "string",
            "description": "Specifies type of the key to be listed. Possible value is kerb."
          },
          "resourceGroupName": {
            "type": "string",
            "description": "The name of the resource group within the user's subscription. The name is case insensitive."
          }
        },
        "type": "object",
        "required": [
          "accountName",
          "resourceGroupName"
        ]
      },
      "outputs": {
        "description": "The response from the ListKeys operation.",
        "properties": {
          "keys": {
            "type": "array",
            "items": {
              "type": "object",
              "$ref": "#/types/mypkg::StorageAccountKeyResponse"
            },
            "description": "Gets the list of storage account keys and their properties for the specified storage account."
          }
        },
        "type": "object",
        "required": [
          "keys"
        ]
      }
    },
    "mypkg::getBastionShareableLink": {
      "description": "Response for all the Bastion Shareable Link endpoints.\nAPI Version: 2020-11-01.",
      "inputs": {
        "properties": {
          "bastionHostName": {
            "type": "string",
            "description": "The name of the Bastion Host."
          },
          "resourceGroupName": {
            "type": "string",
            "description": "The name of the resource group."
          },
          "vms": {
            "type": "array",
            "items": {
              "type": "object",
              "$ref": "#/types/mypkg::BastionShareableLink"
            },
            "description": "List of VM references."
          }
        },
        "type": "object",
        "required": [
          "bastionHostName",
          "resourceGroupName"
        ]
      },
      "outputs": {
        "description": "Response for all the Bastion Shareable Link endpoints.",
        "properties": {
          "nextLink": {
            "type": "string",
            "description": "The URL to get the next set of results."
          }
        },
        "type": "object"
      }
    },
    "mypkg::funcWithEmptyOutputs": {
      "description": "n/a",
      "inputs": {
          "properties": {
              "name": {
                  "type": "string",
                  "description": "The Name of the FeatureGroup."
              }
          },
          "required": [
              "name"
          ]
      },
      "outputs": {}
    }
  },
  "types": {
    "mypkg::BastionShareableLink": {
      "description": "Bastion Shareable Link.",
      "properties": {
        "vm": {
          "type": "string",
          "description": "Reference of the virtual machine resource."
        }
      },
      "type": "object",
      "required": [
        "vm"
      ]
    },
    "mypkg::SsisEnvironmentResponse": {
      "description": "Ssis environment.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Metadata description."
        },
        "folderId": {
          "type": "number",
          "description": "Folder id which contains environment."
        },
        "id": {
          "type": "number",
          "description": "Metadata id."
        },
        "name": {
          "type": "string",
          "description": "Metadata name."
        },
        "type": {
          "type": "string",
          "description": "The type of SSIS object metadata.\nExpected value is 'Environment'.",
          "const": "Environment"
        },
        "variables": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/types/mypkg::SsisVariableResponse"
          },
          "description": "Variable in environment"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "mypkg::SsisFolderResponse": {
      "description": "Ssis folder.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Metadata description."
        },
        "id": {
          "type": "number",
          "description": "Metadata id."
        },
        "name": {
          "type": "string",
          "description": "Metadata name."
        },
        "type": {
          "type": "string",
          "description": "The type of SSIS object metadata.\nExpected value is 'Folder'.",
          "const": "Folder"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "mypkg::SsisPackageResponse": {
      "description": "Ssis Package.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Metadata description."
        },
        "folderId": {
          "type": "number",
          "description": "Folder id which contains package."
        },
        "id": {
          "type": "number",
          "description": "Metadata id."
        },
        "name": {
          "type": "string",
          "description": "Metadata name."
        },
        "parameters": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/types/mypkg::SsisParameterResponse"
          },
          "description": "Parameters in package"
        },
        "projectId": {
          "type": "number",
          "description": "Project id which contains package."
        },
        "projectVersion": {
          "type": "number",
          "description": "Project version which contains package."
        },
        "type": {
          "type": "string",
          "description": "The type of SSIS object metadata.\nExpected value is 'Package'.",
          "const": "Package"
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "mypkg::SsisProjectResponse": {
      "description": "Ssis project.",
      "properties": {
        "description": {
          "type": "string",
          "description": "Metadata description."
        },
        "environmentRefs": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/types/mypkg::SsisEnvironmentReferenceResponse"
          },
          "description": "Environment reference in project"
        },
        "folderId": {
          "type": "number",
          "description": "Folder id which contains project."
        },
        "id": {
          "type": "number",
          "description": "Metadata id."
        },
        "name": {
          "type": "string",
          "description": "Metadata name."
        },
        "parameters": {
          "type": "array",
          "items": {
            "type": "object",
            "$ref": "#/types/mypkg::SsisParameterResponse"
          },
          "description": "Parameters in project"
        },
        "type": {
          "type": "string",
          "description": "The type of SSIS object metadata.\nExpected value is 'Project'.",
          "const": "Project"
        },
        "version": {
          "type": "number",
          "description": "Project version."
        }
      },
      "type": "object",
      "required": [
        "type"
      ]
    },
    "mypkg::SsisEnvironmentReferenceResponse": {
      "description": "Ssis environment reference.",
      "properties": {
        "environmentFolderName": {
          "type": "string",
          "description": "Environment folder name."
        },
        "environmentName": {
          "type": "string",
          "description": "Environment name."
        },
        "id": {
          "type": "number",
          "description": "Environment reference id."
        },
        "referenceType": {
          "type": "string",
          "description": "Reference type"
        }
      },
      "type": "object"
    },
    "mypkg::SsisParameterResponse": {
      "description": "Ssis parameter.",
      "properties": {
        "dataType": {
          "type": "string",
          "description": "Parameter type."
        },
        "defaultValue": {
          "type": "string",
          "description": "Default value of parameter."
        },
        "description": {
          "type": "string",
          "description": "Parameter description."
        },
        "designDefaultValue": {
          "type": "string",
          "description": "Design default value of parameter."
        },
        "id": {
          "type": "number",
          "description": "Parameter id."
        },
        "name": {
          "type": "string",
          "description": "Parameter name."
        },
        "required": {
          "type": "boolean",
          "description": "Whether parameter is required."
        },
        "sensitive": {
          "type": "boolean",
          "description": "Whether parameter is sensitive."
        },
        "sensitiveDefaultValue": {
          "type": "string",
          "description": "Default sensitive value of parameter."
        },
        "valueSet": {
          "type": "boolean",
          "description": "Parameter value set."
        },
        "valueType": {
          "type": "string",
          "description": "Parameter value type."
        },
        "variable": {
          "type": "string",
          "description": "Parameter reference variable."
        }
      },
      "type": "object"
    },
    "mypkg::SsisVariableResponse": {
      "description": "Ssis variable.",
      "properties": {
        "dataType": {
          "type": "string",
          "description": "Variable type."
        },
        "description": {
          "type": "string",
          "description": "Variable description."
        },
        "id": {
          "type": "number",
          "description": "Variable id."
        },
        "name": {
          "type": "string",
          "description": "Variable name."
        },
        "sensitive": {
          "type": "boolean",
          "description": "Whether variable is sensitive."
        },
        "sensitiveValue": {
          "type": "string",
          "description": "Variable sensitive value."
        },
        "value": {
          "type": "string",
          "description": "Variable value."
        }
      },
      "type": "object"
    },
    "mypkg::StorageAccountKeyResponse": {
      "description": "An access key for the storage account.",
      "properties": {
        "creationTime": {
          "type": "string",
          "description": "Creation time of the key, in round trip date format."
        },
        "keyName": {
          "type": "string",
          "description": "Name of the key."
        },
        "permissions": {
          "type": "string",
          "description": "Permissions for the key -- read-only or full permissions."
        },
        "value": {
          "type": "string",
          "description": "Base 64-encoded value of the key."
        }
      },
      "type": "object",
      "required": [
        "creationTime",
        "keyName",
        "permissions",
        "value"
      ]
    }
  },
  "language": {
    "go": {
      "generateExtraInputTypes": true,
      "importBasePath": "output-funcs-go-generics-only/mypkg",
      "generics": "generics-only"
    }
  }
}