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

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

"""

Creates or updates a local network gateway in the specified resource group.
Param: resourceGroupName::String (required)
Param: localNetworkGatewayName::String (required)
Param: parameters::LocalNetworkGateway (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: LocalNetworkGateway
"""
function _swaggerinternal_localNetworkGatewaysCreateOrUpdate(_api::LocalNetworkGatewaysApi, resourceGroupName::String, localNetworkGatewayName::String, parameters, api_version::String, subscriptionId::String; _mediaType=nothing)
    Swagger.validate_param("localNetworkGatewayName", "localNetworkGatewaysCreateOrUpdate", :minLength, localNetworkGatewayName, 1)

    _ctx = Swagger.Ctx(_api.client, "PUT", LocalNetworkGateway, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}", ["azure_auth"], parameters)
    Swagger.set_param(_ctx.path, "resourceGroupName", resourceGroupName)  # type String
    Swagger.set_param(_ctx.path, "localNetworkGatewayName", localNetworkGatewayName)  # 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 localNetworkGatewaysCreateOrUpdate(_api::LocalNetworkGatewaysApi, resourceGroupName::String, localNetworkGatewayName::String, parameters, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_localNetworkGatewaysCreateOrUpdate(_api, resourceGroupName, localNetworkGatewayName, parameters, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function localNetworkGatewaysCreateOrUpdate(_api::LocalNetworkGatewaysApi, response_stream::Channel, resourceGroupName::String, localNetworkGatewayName::String, parameters, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_localNetworkGatewaysCreateOrUpdate(_api, resourceGroupName, localNetworkGatewayName, parameters, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

"""

Deletes the specified local network gateway.
Param: resourceGroupName::String (required)
Param: localNetworkGatewayName::String (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: Nothing
"""
function _swaggerinternal_localNetworkGatewaysDelete(_api::LocalNetworkGatewaysApi, resourceGroupName::String, localNetworkGatewayName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    Swagger.validate_param("localNetworkGatewayName", "localNetworkGatewaysDelete", :minLength, localNetworkGatewayName, 1)

    _ctx = Swagger.Ctx(_api.client, "DELETE", Nothing, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}", ["azure_auth"])
    Swagger.set_param(_ctx.path, "resourceGroupName", resourceGroupName)  # type String
    Swagger.set_param(_ctx.path, "localNetworkGatewayName", localNetworkGatewayName)  # 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 localNetworkGatewaysDelete(_api::LocalNetworkGatewaysApi, resourceGroupName::String, localNetworkGatewayName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_localNetworkGatewaysDelete(_api, resourceGroupName, localNetworkGatewayName, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function localNetworkGatewaysDelete(_api::LocalNetworkGatewaysApi, response_stream::Channel, resourceGroupName::String, localNetworkGatewayName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_localNetworkGatewaysDelete(_api, resourceGroupName, localNetworkGatewayName, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

"""

Gets the specified local network gateway in a resource group.
Param: resourceGroupName::String (required)
Param: localNetworkGatewayName::String (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: LocalNetworkGateway
"""
function _swaggerinternal_localNetworkGatewaysGet(_api::LocalNetworkGatewaysApi, resourceGroupName::String, localNetworkGatewayName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    Swagger.validate_param("localNetworkGatewayName", "localNetworkGatewaysGet", :minLength, localNetworkGatewayName, 1)

    _ctx = Swagger.Ctx(_api.client, "GET", LocalNetworkGateway, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}", ["azure_auth"])
    Swagger.set_param(_ctx.path, "resourceGroupName", resourceGroupName)  # type String
    Swagger.set_param(_ctx.path, "localNetworkGatewayName", localNetworkGatewayName)  # 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 localNetworkGatewaysGet(_api::LocalNetworkGatewaysApi, resourceGroupName::String, localNetworkGatewayName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_localNetworkGatewaysGet(_api, resourceGroupName, localNetworkGatewayName, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function localNetworkGatewaysGet(_api::LocalNetworkGatewaysApi, response_stream::Channel, resourceGroupName::String, localNetworkGatewayName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_localNetworkGatewaysGet(_api, resourceGroupName, localNetworkGatewayName, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

"""

Gets all the local network gateways in a resource group.
Param: resourceGroupName::String (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: LocalNetworkGatewayListResult
"""
function _swaggerinternal_localNetworkGatewaysList(_api::LocalNetworkGatewaysApi, resourceGroupName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "GET", LocalNetworkGatewayListResult, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways", ["azure_auth"])
    Swagger.set_param(_ctx.path, "resourceGroupName", resourceGroupName)  # 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 localNetworkGatewaysList(_api::LocalNetworkGatewaysApi, resourceGroupName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_localNetworkGatewaysList(_api, resourceGroupName, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function localNetworkGatewaysList(_api::LocalNetworkGatewaysApi, response_stream::Channel, resourceGroupName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_localNetworkGatewaysList(_api, resourceGroupName, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

"""

Updates a local network gateway tags.
Param: resourceGroupName::String (required)
Param: localNetworkGatewayName::String (required)
Param: parameters::TagsObject (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: LocalNetworkGateway
"""
function _swaggerinternal_localNetworkGatewaysUpdateTags(_api::LocalNetworkGatewaysApi, resourceGroupName::String, localNetworkGatewayName::String, parameters, api_version::String, subscriptionId::String; _mediaType=nothing)
    Swagger.validate_param("localNetworkGatewayName", "localNetworkGatewaysUpdateTags", :minLength, localNetworkGatewayName, 1)

    _ctx = Swagger.Ctx(_api.client, "PATCH", LocalNetworkGateway, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/localNetworkGateways/{localNetworkGatewayName}", ["azure_auth"], parameters)
    Swagger.set_param(_ctx.path, "resourceGroupName", resourceGroupName)  # type String
    Swagger.set_param(_ctx.path, "localNetworkGatewayName", localNetworkGatewayName)  # 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 localNetworkGatewaysUpdateTags(_api::LocalNetworkGatewaysApi, resourceGroupName::String, localNetworkGatewayName::String, parameters, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_localNetworkGatewaysUpdateTags(_api, resourceGroupName, localNetworkGatewayName, parameters, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function localNetworkGatewaysUpdateTags(_api::LocalNetworkGatewaysApi, response_stream::Channel, resourceGroupName::String, localNetworkGatewayName::String, parameters, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_localNetworkGatewaysUpdateTags(_api, resourceGroupName, localNetworkGatewayName, parameters, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

export localNetworkGatewaysCreateOrUpdate, localNetworkGatewaysDelete, localNetworkGatewaysGet, localNetworkGatewaysList, localNetworkGatewaysUpdateTags
