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

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

function _swaggerinternal_remindersAdd(_api::RemindersApi, text::String, time::String; user=nothing, _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "POST", Dict{String, Any}, "/reminders.add", ["slackAuth"])
    Swagger.set_param(_ctx.form, "text", text)  # type String
    Swagger.set_param(_ctx.form, "time", time)  # type String
    Swagger.set_param(_ctx.form, "user", user)  # type String
    Swagger.set_header_accept(_ctx, ["application/json"])
    Swagger.set_header_content_type(_ctx, (_mediaType === nothing) ? ["application/x-www-form-urlencoded", "application/json"] : [_mediaType])
    return _ctx
end

"""

Creates a reminder.
Param: text::String (required)
Param: time::String (required)
Param: user::String
Return: Dict{String, Any}
"""
function remindersAdd(_api::RemindersApi, text::String, time::String; user=nothing, _mediaType=nothing)
    _ctx = _swaggerinternal_remindersAdd(_api, text, time; user=user, _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function remindersAdd(_api::RemindersApi, response_stream::Channel, text::String, time::String; user=nothing, _mediaType=nothing)
    _ctx = _swaggerinternal_remindersAdd(_api, text, time; user=user, _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

function _swaggerinternal_remindersComplete(_api::RemindersApi; reminder=nothing, _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "POST", Dict{String, Any}, "/reminders.complete", ["slackAuth"])
    Swagger.set_param(_ctx.form, "reminder", reminder)  # type String
    Swagger.set_header_accept(_ctx, ["application/json"])
    Swagger.set_header_content_type(_ctx, (_mediaType === nothing) ? ["application/x-www-form-urlencoded", "application/json"] : [_mediaType])
    return _ctx
end

"""

Marks a reminder as complete.
Param: reminder::String
Return: Dict{String, Any}
"""
function remindersComplete(_api::RemindersApi; reminder=nothing, _mediaType=nothing)
    _ctx = _swaggerinternal_remindersComplete(_api; reminder=reminder, _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function remindersComplete(_api::RemindersApi, response_stream::Channel; reminder=nothing, _mediaType=nothing)
    _ctx = _swaggerinternal_remindersComplete(_api; reminder=reminder, _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

function _swaggerinternal_remindersDelete(_api::RemindersApi; reminder=nothing, _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "POST", Dict{String, Any}, "/reminders.delete", ["slackAuth"])
    Swagger.set_param(_ctx.form, "reminder", reminder)  # type String
    Swagger.set_header_accept(_ctx, ["application/json"])
    Swagger.set_header_content_type(_ctx, (_mediaType === nothing) ? ["application/x-www-form-urlencoded", "application/json"] : [_mediaType])
    return _ctx
end

"""

Deletes a reminder.
Param: reminder::String
Return: Dict{String, Any}
"""
function remindersDelete(_api::RemindersApi; reminder=nothing, _mediaType=nothing)
    _ctx = _swaggerinternal_remindersDelete(_api; reminder=reminder, _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function remindersDelete(_api::RemindersApi, response_stream::Channel; reminder=nothing, _mediaType=nothing)
    _ctx = _swaggerinternal_remindersDelete(_api; reminder=reminder, _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

function _swaggerinternal_remindersInfo(_api::RemindersApi; reminder=nothing, _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "GET", Dict{String, Any}, "/reminders.info", ["slackAuth"])
    Swagger.set_param(_ctx.query, "reminder", reminder)  # type String
    Swagger.set_header_accept(_ctx, ["application/json"])
    Swagger.set_header_content_type(_ctx, (_mediaType === nothing) ? ["application/x-www-form-urlencoded"] : [_mediaType])
    return _ctx
end

"""

Gets information about a reminder.
Param: reminder::String
Return: Dict{String, Any}
"""
function remindersInfo(_api::RemindersApi; reminder=nothing, _mediaType=nothing)
    _ctx = _swaggerinternal_remindersInfo(_api; reminder=reminder, _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function remindersInfo(_api::RemindersApi, response_stream::Channel; reminder=nothing, _mediaType=nothing)
    _ctx = _swaggerinternal_remindersInfo(_api; reminder=reminder, _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

function _swaggerinternal_remindersList(_api::RemindersApi; _mediaType=nothing)
    _ctx = Swagger.Ctx(_api.client, "GET", Dict{String, Any}, "/reminders.list", ["slackAuth"])
    Swagger.set_header_accept(_ctx, ["application/json"])
    Swagger.set_header_content_type(_ctx, (_mediaType === nothing) ? ["application/x-www-form-urlencoded"] : [_mediaType])
    return _ctx
end

"""

Lists all reminders created by or for a given user.
Return: Dict{String, Any}
"""
function remindersList(_api::RemindersApi; _mediaType=nothing)
    _ctx = _swaggerinternal_remindersList(_api; _mediaType=_mediaType)
    Swagger.exec(_ctx)
end

function remindersList(_api::RemindersApi, response_stream::Channel; _mediaType=nothing)
    _ctx = _swaggerinternal_remindersList(_api; _mediaType=_mediaType)
    Swagger.exec(_ctx, response_stream)
end

export remindersAdd, remindersComplete, remindersDelete, remindersInfo, remindersList
