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


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

"""
Creates a tag in the subscription.
The tag name can have a maximum of 512 characters and is case insensitive. Tag names created by Azure have prefixes of microsoft, azure, or windows. You cannot create tags with one of these prefixes.
Param: tagName::String (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: TagDetails
"""
function tagsCreateOrUpdate(_api::TagsApi, tagName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "PUT", TagDetails, "/subscriptions/{subscriptionId}/tagNames/{tagName}", ["azure_auth"])
    Swagger.set_param(_ctx.path, "tagName", tagName)  # 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])
    Swagger.exec(_ctx)
end

"""

Creates a tag value. The name of the tag must already exist.
Param: tagName::String (required)
Param: tagValue::String (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: TagValue
"""
function tagsCreateOrUpdateValue(_api::TagsApi, tagName::String, tagValue::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "PUT", TagValue, "/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}", ["azure_auth"])
    Swagger.set_param(_ctx.path, "tagName", tagName)  # type String
    Swagger.set_param(_ctx.path, "tagValue", tagValue)  # 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])
    Swagger.exec(_ctx)
end

"""
Deletes a tag from the subscription.
You must remove all values from a resource tag before you can delete it.
Param: tagName::String (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: Nothing
"""
function tagsDelete(_api::TagsApi, tagName::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "DELETE", Nothing, "/subscriptions/{subscriptionId}/tagNames/{tagName}", ["azure_auth"])
    Swagger.set_param(_ctx.path, "tagName", tagName)  # 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])
    Swagger.exec(_ctx)
end

"""

Deletes a tag value.
Param: tagName::String (required)
Param: tagValue::String (required)
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: Nothing
"""
function tagsDeleteValue(_api::TagsApi, tagName::String, tagValue::String, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "DELETE", Nothing, "/subscriptions/{subscriptionId}/tagNames/{tagName}/tagValues/{tagValue}", ["azure_auth"])
    Swagger.set_param(_ctx.path, "tagName", tagName)  # type String
    Swagger.set_param(_ctx.path, "tagValue", tagValue)  # 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])
    Swagger.exec(_ctx)
end

"""

Gets the names and values of all resource tags that are defined in a subscription.
Param: api_version::String (required)
Param: subscriptionId::String (required)
Return: TagsListResult
"""
function tagsList(_api::TagsApi, api_version::String, subscriptionId::String; _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "GET", TagsListResult, "/subscriptions/{subscriptionId}/tagNames", ["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])
    Swagger.exec(_ctx)
end

export tagsCreateOrUpdate, tagsCreateOrUpdateValue, tagsDelete, tagsDeleteValue, tagsList
