# This file was generated by the Julia Swagger Code Generator
# Do not modify this file directly. Modify the swagger specification instead.

struct VirtualMachineScaleSetVMExtensionsApi <: SwaggerApi
    client::Swagger.Client
end

"""

The operation to create or update the VMSS VM extension.
Param: resourceGroupName::String (required)
Param: vmScaleSetName::String (required)
Param: instanceId::String (required)
Param: vmExtensionName::String (required)
Param: extensionParameters::VirtualMachineExtension (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: VirtualMachineExtension
"""
function _swaggerinternal_virtualMachineScaleSetVMExtensionsCreateOrUpdate(_api::VirtualMachineScaleSetVMExtensionsApi, resourceGroupName::String, vmScaleSetName::String, instanceId::String, vmExtensionName::String, extensionParameters, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "PUT", VirtualMachineExtension, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualMachines/{instanceId}/extensions/{vmExtensionName}", ["azure_auth"], extensionParameters)
    Swagger.set_param(_ctx.path, "resourceGroupName", resourceGroupName)  # type String
    Swagger.set_param(_ctx.path, "vmScaleSetName", vmScaleSetName)  # type String
    Swagger.set_param(_ctx.path, "instanceId", instanceId)  # type String
    Swagger.set_param(_ctx.path, "vmExtensionName", vmExtensionName)  # type String
    Swagger.set_param(_ctx.path, "subscriptionId", subscriptionId)  # type String
    Swagger.set_param(_ctx.query, "api-version", api_version)  # type String
    Swagger.set_header_accept(_ctx, ["application/json"])
    Swagger.set_header_content_type(_ctx, (_mediaType === nothing) ? ["application/json"] : [_mediaType])
    return _ctx
end

function virtualMachineScaleSetVMExtensionsCreateOrUpdate(_api::VirtualMachineScaleSetVMExtensionsApi, resourceGroupName::String, vmScaleSetName::String, instanceId::String, vmExtensionName::String, extensionParameters, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_virtualMachineScaleSetVMExtensionsCreateOrUpdate(_api, resourceGroupName, vmScaleSetName, instanceId, vmExtensionName, extensionParameters, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function virtualMachineScaleSetVMExtensionsCreateOrUpdate(_api::VirtualMachineScaleSetVMExtensionsApi, response_stream::Channel, resourceGroupName::String, vmScaleSetName::String, instanceId::String, vmExtensionName::String, extensionParameters, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_virtualMachineScaleSetVMExtensionsCreateOrUpdate(_api, resourceGroupName, vmScaleSetName, instanceId, vmExtensionName, extensionParameters, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

"""

The operation to delete the VMSS VM extension.
Param: resourceGroupName::String (required)
Param: vmScaleSetName::String (required)
Param: instanceId::String (required)
Param: vmExtensionName::String (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: Nothing
"""
function _swaggerinternal_virtualMachineScaleSetVMExtensionsDelete(_api::VirtualMachineScaleSetVMExtensionsApi, resourceGroupName::String, vmScaleSetName::String, instanceId::String, vmExtensionName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "DELETE", Nothing, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualMachines/{instanceId}/extensions/{vmExtensionName}", ["azure_auth"])
    Swagger.set_param(_ctx.path, "resourceGroupName", resourceGroupName)  # type String
    Swagger.set_param(_ctx.path, "vmScaleSetName", vmScaleSetName)  # type String
    Swagger.set_param(_ctx.path, "instanceId", instanceId)  # type String
    Swagger.set_param(_ctx.path, "vmExtensionName", vmExtensionName)  # type String
    Swagger.set_param(_ctx.path, "subscriptionId", subscriptionId)  # type String
    Swagger.set_param(_ctx.query, "api-version", api_version)  # type String
    Swagger.set_header_accept(_ctx, ["application/json"])
    Swagger.set_header_content_type(_ctx, (_mediaType === nothing) ? ["application/json"] : [_mediaType])
    return _ctx
end

function virtualMachineScaleSetVMExtensionsDelete(_api::VirtualMachineScaleSetVMExtensionsApi, resourceGroupName::String, vmScaleSetName::String, instanceId::String, vmExtensionName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_virtualMachineScaleSetVMExtensionsDelete(_api, resourceGroupName, vmScaleSetName, instanceId, vmExtensionName, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function virtualMachineScaleSetVMExtensionsDelete(_api::VirtualMachineScaleSetVMExtensionsApi, response_stream::Channel, resourceGroupName::String, vmScaleSetName::String, instanceId::String, vmExtensionName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_virtualMachineScaleSetVMExtensionsDelete(_api, resourceGroupName, vmScaleSetName, instanceId, vmExtensionName, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

"""

The operation to get the VMSS VM extension.
Param: resourceGroupName::String (required)
Param: vmScaleSetName::String (required)
Param: instanceId::String (required)
Param: vmExtensionName::String (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Param: expand::String
Return: VirtualMachineExtension
"""
function _swaggerinternal_virtualMachineScaleSetVMExtensionsGet(_api::VirtualMachineScaleSetVMExtensionsApi, resourceGroupName::String, vmScaleSetName::String, instanceId::String, vmExtensionName::String, api_version::String, subscriptionId::String; expand=nothing, _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "GET", VirtualMachineExtension, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualMachines/{instanceId}/extensions/{vmExtensionName}", ["azure_auth"])
    Swagger.set_param(_ctx.path, "resourceGroupName", resourceGroupName)  # type String
    Swagger.set_param(_ctx.path, "vmScaleSetName", vmScaleSetName)  # type String
    Swagger.set_param(_ctx.path, "instanceId", instanceId)  # type String
    Swagger.set_param(_ctx.path, "vmExtensionName", vmExtensionName)  # type String
    Swagger.set_param(_ctx.path, "subscriptionId", subscriptionId)  # type String
    Swagger.set_param(_ctx.query, "\$expand", expand)  # type String
    Swagger.set_param(_ctx.query, "api-version", api_version)  # type String
    Swagger.set_header_accept(_ctx, ["application/json"])
    Swagger.set_header_content_type(_ctx, (_mediaType === nothing) ? ["application/json"] : [_mediaType])
    return _ctx
end

function virtualMachineScaleSetVMExtensionsGet(_api::VirtualMachineScaleSetVMExtensionsApi, resourceGroupName::String, vmScaleSetName::String, instanceId::String, vmExtensionName::String, api_version::String, subscriptionId::String; expand=nothing, _mediaType=nothing)
    _ctx = _swaggerinternal_virtualMachineScaleSetVMExtensionsGet(_api, resourceGroupName, vmScaleSetName, instanceId, vmExtensionName, api_version, subscriptionId; expand=expand, _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function virtualMachineScaleSetVMExtensionsGet(_api::VirtualMachineScaleSetVMExtensionsApi, response_stream::Channel, resourceGroupName::String, vmScaleSetName::String, instanceId::String, vmExtensionName::String, api_version::String, subscriptionId::String; expand=nothing, _mediaType=nothing)
    _ctx = _swaggerinternal_virtualMachineScaleSetVMExtensionsGet(_api, resourceGroupName, vmScaleSetName, instanceId, vmExtensionName, api_version, subscriptionId; expand=expand, _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

"""

The operation to get all extensions of an instance in Virtual Machine Scaleset.
Param: resourceGroupName::String (required)
Param: vmScaleSetName::String (required)
Param: instanceId::String (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Param: expand::String
Return: VirtualMachineExtensionsListResult
"""
function _swaggerinternal_virtualMachineScaleSetVMExtensionsList(_api::VirtualMachineScaleSetVMExtensionsApi, resourceGroupName::String, vmScaleSetName::String, instanceId::String, api_version::String, subscriptionId::String; expand=nothing, _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "GET", VirtualMachineExtensionsListResult, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualMachines/{instanceId}/extensions", ["azure_auth"])
    Swagger.set_param(_ctx.path, "resourceGroupName", resourceGroupName)  # type String
    Swagger.set_param(_ctx.path, "vmScaleSetName", vmScaleSetName)  # type String
    Swagger.set_param(_ctx.path, "instanceId", instanceId)  # type String
    Swagger.set_param(_ctx.path, "subscriptionId", subscriptionId)  # type String
    Swagger.set_param(_ctx.query, "\$expand", expand)  # type String
    Swagger.set_param(_ctx.query, "api-version", api_version)  # type String
    Swagger.set_header_accept(_ctx, ["application/json"])
    Swagger.set_header_content_type(_ctx, (_mediaType === nothing) ? ["application/json"] : [_mediaType])
    return _ctx
end

function virtualMachineScaleSetVMExtensionsList(_api::VirtualMachineScaleSetVMExtensionsApi, resourceGroupName::String, vmScaleSetName::String, instanceId::String, api_version::String, subscriptionId::String; expand=nothing, _mediaType=nothing)
    _ctx = _swaggerinternal_virtualMachineScaleSetVMExtensionsList(_api, resourceGroupName, vmScaleSetName, instanceId, api_version, subscriptionId; expand=expand, _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function virtualMachineScaleSetVMExtensionsList(_api::VirtualMachineScaleSetVMExtensionsApi, response_stream::Channel, resourceGroupName::String, vmScaleSetName::String, instanceId::String, api_version::String, subscriptionId::String; expand=nothing, _mediaType=nothing)
    _ctx = _swaggerinternal_virtualMachineScaleSetVMExtensionsList(_api, resourceGroupName, vmScaleSetName, instanceId, api_version, subscriptionId; expand=expand, _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

"""

The operation to update the VMSS VM extension.
Param: resourceGroupName::String (required)
Param: vmScaleSetName::String (required)
Param: instanceId::String (required)
Param: vmExtensionName::String (required)
Param: extensionParameters::VirtualMachineExtensionUpdate (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: VirtualMachineExtension
"""
function _swaggerinternal_virtualMachineScaleSetVMExtensionsUpdate(_api::VirtualMachineScaleSetVMExtensionsApi, resourceGroupName::String, vmScaleSetName::String, instanceId::String, vmExtensionName::String, extensionParameters, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "PATCH", VirtualMachineExtension, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualMachines/{instanceId}/extensions/{vmExtensionName}", ["azure_auth"], extensionParameters)
    Swagger.set_param(_ctx.path, "resourceGroupName", resourceGroupName)  # type String
    Swagger.set_param(_ctx.path, "vmScaleSetName", vmScaleSetName)  # type String
    Swagger.set_param(_ctx.path, "instanceId", instanceId)  # type String
    Swagger.set_param(_ctx.path, "vmExtensionName", vmExtensionName)  # type String
    Swagger.set_param(_ctx.path, "subscriptionId", subscriptionId)  # type String
    Swagger.set_param(_ctx.query, "api-version", api_version)  # type String
    Swagger.set_header_accept(_ctx, ["application/json"])
    Swagger.set_header_content_type(_ctx, (_mediaType === nothing) ? ["application/json"] : [_mediaType])
    return _ctx
end

function virtualMachineScaleSetVMExtensionsUpdate(_api::VirtualMachineScaleSetVMExtensionsApi, resourceGroupName::String, vmScaleSetName::String, instanceId::String, vmExtensionName::String, extensionParameters, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_virtualMachineScaleSetVMExtensionsUpdate(_api, resourceGroupName, vmScaleSetName, instanceId, vmExtensionName, extensionParameters, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function virtualMachineScaleSetVMExtensionsUpdate(_api::VirtualMachineScaleSetVMExtensionsApi, response_stream::Channel, resourceGroupName::String, vmScaleSetName::String, instanceId::String, vmExtensionName::String, extensionParameters, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_virtualMachineScaleSetVMExtensionsUpdate(_api, resourceGroupName, vmScaleSetName, instanceId, vmExtensionName, extensionParameters, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

export virtualMachineScaleSetVMExtensionsCreateOrUpdate, virtualMachineScaleSetVMExtensionsDelete, virtualMachineScaleSetVMExtensionsGet, virtualMachineScaleSetVMExtensionsList, virtualMachineScaleSetVMExtensionsUpdate
