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

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

"""

Creates a new SSH public key resource.
Param: resourceGroupName::String (required)
Param: sshPublicKeyName::String (required)
Param: parameters::SshPublicKeyResource (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: SshPublicKeyResource
"""
function _swaggerinternal_sshPublicKeysCreate(_api::SshPublicKeysApi, resourceGroupName::String, sshPublicKeyName::String, parameters, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "PUT", SshPublicKeyResource, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/sshPublicKeys/{sshPublicKeyName}", ["azure_auth"], parameters)
    Swagger.set_param(_ctx.path, "resourceGroupName", resourceGroupName)  # type String
    Swagger.set_param(_ctx.path, "sshPublicKeyName", sshPublicKeyName)  # 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 sshPublicKeysCreate(_api::SshPublicKeysApi, resourceGroupName::String, sshPublicKeyName::String, parameters, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_sshPublicKeysCreate(_api, resourceGroupName, sshPublicKeyName, parameters, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function sshPublicKeysCreate(_api::SshPublicKeysApi, response_stream::Channel, resourceGroupName::String, sshPublicKeyName::String, parameters, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_sshPublicKeysCreate(_api, resourceGroupName, sshPublicKeyName, parameters, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

"""

Delete an SSH public key.
Param: resourceGroupName::String (required)
Param: sshPublicKeyName::String (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: Nothing
"""
function _swaggerinternal_sshPublicKeysDelete(_api::SshPublicKeysApi, resourceGroupName::String, sshPublicKeyName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "DELETE", Nothing, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/sshPublicKeys/{sshPublicKeyName}", ["azure_auth"])
    Swagger.set_param(_ctx.path, "resourceGroupName", resourceGroupName)  # type String
    Swagger.set_param(_ctx.path, "sshPublicKeyName", sshPublicKeyName)  # 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 sshPublicKeysDelete(_api::SshPublicKeysApi, resourceGroupName::String, sshPublicKeyName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_sshPublicKeysDelete(_api, resourceGroupName, sshPublicKeyName, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function sshPublicKeysDelete(_api::SshPublicKeysApi, response_stream::Channel, resourceGroupName::String, sshPublicKeyName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_sshPublicKeysDelete(_api, resourceGroupName, sshPublicKeyName, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

"""

Generates and returns a public/private key pair and populates the SSH public key resource with the public key. The length of the key will be 3072 bits. This operation can only be performed once per SSH public key resource.
Param: resourceGroupName::String (required)
Param: sshPublicKeyName::String (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: SshPublicKeyGenerateKeyPairResult
"""
function _swaggerinternal_sshPublicKeysGenerateKeyPair(_api::SshPublicKeysApi, resourceGroupName::String, sshPublicKeyName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "POST", SshPublicKeyGenerateKeyPairResult, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/sshPublicKeys/{sshPublicKeyName}/generateKeyPair", ["azure_auth"])
    Swagger.set_param(_ctx.path, "resourceGroupName", resourceGroupName)  # type String
    Swagger.set_param(_ctx.path, "sshPublicKeyName", sshPublicKeyName)  # 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 sshPublicKeysGenerateKeyPair(_api::SshPublicKeysApi, resourceGroupName::String, sshPublicKeyName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_sshPublicKeysGenerateKeyPair(_api, resourceGroupName, sshPublicKeyName, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function sshPublicKeysGenerateKeyPair(_api::SshPublicKeysApi, response_stream::Channel, resourceGroupName::String, sshPublicKeyName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_sshPublicKeysGenerateKeyPair(_api, resourceGroupName, sshPublicKeyName, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

"""

Retrieves information about an SSH public key.
Param: resourceGroupName::String (required)
Param: sshPublicKeyName::String (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: SshPublicKeyResource
"""
function _swaggerinternal_sshPublicKeysGet(_api::SshPublicKeysApi, resourceGroupName::String, sshPublicKeyName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "GET", SshPublicKeyResource, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/sshPublicKeys/{sshPublicKeyName}", ["azure_auth"])
    Swagger.set_param(_ctx.path, "resourceGroupName", resourceGroupName)  # type String
    Swagger.set_param(_ctx.path, "sshPublicKeyName", sshPublicKeyName)  # 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 sshPublicKeysGet(_api::SshPublicKeysApi, resourceGroupName::String, sshPublicKeyName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_sshPublicKeysGet(_api, resourceGroupName, sshPublicKeyName, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function sshPublicKeysGet(_api::SshPublicKeysApi, response_stream::Channel, resourceGroupName::String, sshPublicKeyName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_sshPublicKeysGet(_api, resourceGroupName, sshPublicKeyName, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

"""

Lists all of the SSH public keys in the specified resource group. Use the nextLink property in the response to get the next page of SSH public keys.
Param: resourceGroupName::String (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: SshPublicKeysGroupListResult
"""
function _swaggerinternal_sshPublicKeysListByResourceGroup(_api::SshPublicKeysApi, resourceGroupName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "GET", SshPublicKeysGroupListResult, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/sshPublicKeys", ["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 sshPublicKeysListByResourceGroup(_api::SshPublicKeysApi, resourceGroupName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_sshPublicKeysListByResourceGroup(_api, resourceGroupName, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function sshPublicKeysListByResourceGroup(_api::SshPublicKeysApi, response_stream::Channel, resourceGroupName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_sshPublicKeysListByResourceGroup(_api, resourceGroupName, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

"""

Lists all of the SSH public keys in the subscription. Use the nextLink property in the response to get the next page of SSH public keys.
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: SshPublicKeysGroupListResult
"""
function _swaggerinternal_sshPublicKeysListBySubscription(_api::SshPublicKeysApi, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "GET", SshPublicKeysGroupListResult, "/subscriptions/{subscriptionId}/providers/Microsoft.Compute/sshPublicKeys", ["azure_auth"])
    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 sshPublicKeysListBySubscription(_api::SshPublicKeysApi, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_sshPublicKeysListBySubscription(_api, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function sshPublicKeysListBySubscription(_api::SshPublicKeysApi, response_stream::Channel, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_sshPublicKeysListBySubscription(_api, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

"""

Updates a new SSH public key resource.
Param: resourceGroupName::String (required)
Param: sshPublicKeyName::String (required)
Param: parameters::SshPublicKeyUpdateResource (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: SshPublicKeyResource
"""
function _swaggerinternal_sshPublicKeysUpdate(_api::SshPublicKeysApi, resourceGroupName::String, sshPublicKeyName::String, parameters, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "PATCH", SshPublicKeyResource, "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/sshPublicKeys/{sshPublicKeyName}", ["azure_auth"], parameters)
    Swagger.set_param(_ctx.path, "resourceGroupName", resourceGroupName)  # type String
    Swagger.set_param(_ctx.path, "sshPublicKeyName", sshPublicKeyName)  # 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 sshPublicKeysUpdate(_api::SshPublicKeysApi, resourceGroupName::String, sshPublicKeyName::String, parameters, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_sshPublicKeysUpdate(_api, resourceGroupName, sshPublicKeyName, parameters, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function sshPublicKeysUpdate(_api::SshPublicKeysApi, response_stream::Channel, resourceGroupName::String, sshPublicKeyName::String, parameters, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = _swaggerinternal_sshPublicKeysUpdate(_api, resourceGroupName, sshPublicKeyName, parameters, api_version, subscriptionId; _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

export sshPublicKeysCreate, sshPublicKeysDelete, sshPublicKeysGenerateKeyPair, sshPublicKeysGet, sshPublicKeysListByResourceGroup, sshPublicKeysListBySubscription, sshPublicKeysUpdate
