lib/chat_kitty/api/functions.ex

# NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
# https://openapi-generator.tech
# Do not edit the class manually.

defmodule ChatKitty.Api.Functions do
  @moduledoc """
  API calls for all endpoints tagged `Functions`.
  """

  alias ChatKitty.Connection
  import ChatKitty.RequestBuilder


  @doc """
  Create a chat function version
  Creates a new version of this chat function

  ## Parameters

  - connection (ChatKitty.Connection): Connection to server
  - id (integer()): Chat function ID
  - create_chat_function_version_resource (CreateChatFunctionVersionResource): 
  - opts (KeywordList): [optional] Optional parameters
  ## Returns

  {:ok, ChatKitty.Model.ChatFunctionVersionResource.t} on success
  {:error, Tesla.Env.t} on failure
  """
  @spec create_function_version(Tesla.Env.client, integer(), ChatKitty.Model.CreateChatFunctionVersionResource.t, keyword()) :: {:ok, ChatKitty.Model.ApiError.t} | {:ok, ChatKitty.Model.ChatFunctionVersionResource.t} | {:ok, ChatKitty.Model.AuthenticationError.t} | {:error, Tesla.Env.t}
  def create_function_version(connection, id, create_chat_function_version_resource, _opts \\ []) do
    %{}
    |> method(:post)
    |> url("/v1/functions/#{id}/versions")
    |> add_param(:body, :body, create_chat_function_version_resource)
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 403, %ChatKitty.Model.AuthenticationError{}},
      { 400, %ChatKitty.Model.ApiError{}},
      { 401, %ChatKitty.Model.AuthenticationError{}},
      { 404, %ChatKitty.Model.ApiError{}},
      { 200, %ChatKitty.Model.ChatFunctionVersionResource{}}
    ])
  end

  @doc """
  List chat function invocations
  Returns a page of invocations of this chat function. A log of previous runs of the function

  ## Parameters

  - connection (ChatKitty.Connection): Connection to server
  - id (integer()): Chat function ID
  - opts (KeywordList): [optional] Optional parameters
    - :page (integer()): Zero-based page index (0..N)
    - :size (integer()): The size of the page to be returned
    - :sort ([String.t]): Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.
  ## Returns

  {:ok, ChatKitty.Model.PagedModelChatFunctionInvocationResource.t} on success
  {:error, Tesla.Env.t} on failure
  """
  @spec list_function_invocations(Tesla.Env.client, integer(), keyword()) :: {:ok, ChatKitty.Model.PagedModelChatFunctionInvocationResource.t} | {:ok, ChatKitty.Model.ApiError.t} | {:ok, ChatKitty.Model.AuthenticationError.t} | {:error, Tesla.Env.t}
  def list_function_invocations(connection, id, opts \\ []) do
    optional_params = %{
      :"page" => :query,
      :"size" => :query,
      :"sort" => :query
    }
    %{}
    |> method(:get)
    |> url("/v1/functions/#{id}/invocations")
    |> add_optional_params(optional_params, opts)
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 403, %ChatKitty.Model.AuthenticationError{}},
      { 400, %ChatKitty.Model.ApiError{}},
      { 401, %ChatKitty.Model.AuthenticationError{}},
      { 404, %ChatKitty.Model.ApiError{}},
      { 200, %ChatKitty.Model.PagedModelChatFunctionInvocationResource{}}
    ])
  end

  @doc """
  List chat function versions
  Returns a page of versions of this chat function

  ## Parameters

  - connection (ChatKitty.Connection): Connection to server
  - id (integer()): Chat function ID
  - opts (KeywordList): [optional] Optional parameters
    - :page (integer()): Zero-based page index (0..N)
    - :size (integer()): The size of the page to be returned
    - :sort ([String.t]): Sorting criteria in the format: property,(asc|desc). Default sort order is ascending. Multiple sort criteria are supported.
  ## Returns

  {:ok, ChatKitty.Model.PagedModelChatFunctionVersionResource.t} on success
  {:error, Tesla.Env.t} on failure
  """
  @spec list_function_versions(Tesla.Env.client, integer(), keyword()) :: {:ok, ChatKitty.Model.ApiError.t} | {:ok, ChatKitty.Model.AuthenticationError.t} | {:ok, ChatKitty.Model.PagedModelChatFunctionVersionResource.t} | {:error, Tesla.Env.t}
  def list_function_versions(connection, id, opts \\ []) do
    optional_params = %{
      :"page" => :query,
      :"size" => :query,
      :"sort" => :query
    }
    %{}
    |> method(:get)
    |> url("/v1/functions/#{id}/versions")
    |> add_optional_params(optional_params, opts)
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 403, %ChatKitty.Model.AuthenticationError{}},
      { 400, %ChatKitty.Model.ApiError{}},
      { 401, %ChatKitty.Model.AuthenticationError{}},
      { 404, %ChatKitty.Model.ApiError{}},
      { 200, %ChatKitty.Model.PagedModelChatFunctionVersionResource{}}
    ])
  end

  @doc """
  Retrieve a chat function
  Returns a chat function by ID

  ## Parameters

  - connection (ChatKitty.Connection): Connection to server
  - id (integer()): Chat function ID
  - opts (KeywordList): [optional] Optional parameters
  ## Returns

  {:ok, ChatKitty.Model.ChatFunctionResource.t} on success
  {:error, Tesla.Env.t} on failure
  """
  @spec retrieve_function(Tesla.Env.client, integer(), keyword()) :: {:ok, ChatKitty.Model.ApiError.t} | {:ok, ChatKitty.Model.AuthenticationError.t} | {:ok, ChatKitty.Model.ChatFunctionResource.t} | {:error, Tesla.Env.t}
  def retrieve_function(connection, id, _opts \\ []) do
    %{}
    |> method(:get)
    |> url("/v1/functions/#{id}")
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 403, %ChatKitty.Model.AuthenticationError{}},
      { 400, %ChatKitty.Model.ApiError{}},
      { 401, %ChatKitty.Model.AuthenticationError{}},
      { 404, %ChatKitty.Model.ApiError{}},
      { 200, %ChatKitty.Model.ChatFunctionResource{}}
    ])
  end

  @doc """
  Retrieve chat function current version
  Returns the version of this chat function currently deployed

  ## Parameters

  - connection (ChatKitty.Connection): Connection to server
  - id (integer()): Chat function ID
  - opts (KeywordList): [optional] Optional parameters
  ## Returns

  {:ok, ChatKitty.Model.ChatFunctionVersionResource.t} on success
  {:error, Tesla.Env.t} on failure
  """
  @spec retrieve_function_current_version(Tesla.Env.client, integer(), keyword()) :: {:ok, ChatKitty.Model.ApiError.t} | {:ok, ChatKitty.Model.ChatFunctionVersionResource.t} | {:ok, ChatKitty.Model.AuthenticationError.t} | {:error, Tesla.Env.t}
  def retrieve_function_current_version(connection, id, _opts \\ []) do
    %{}
    |> method(:get)
    |> url("/v1/functions/#{id}/current-version")
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 403, %ChatKitty.Model.AuthenticationError{}},
      { 400, %ChatKitty.Model.ApiError{}},
      { 401, %ChatKitty.Model.AuthenticationError{}},
      { 404, %ChatKitty.Model.ApiError{}},
      { 200, %ChatKitty.Model.ChatFunctionVersionResource{}}
    ])
  end
end