lib/spatio/api/keybindings.ex

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

defmodule Spatio.Api.Keybindings do
  @moduledoc """
  API calls for all endpoints tagged `Keybindings`.
  """

  alias Spatio.Connection
  import Spatio.RequestBuilder

  @doc """
  Reset a binding to its platform default.

  ### Parameters

  - `connection` (Spatio.Connection): Connection to server
  - `id` (String.t): 
  - `opts` (keyword): Optional parameters

  ### Returns

  - `{:ok, nil}` on success
  - `{:error, Tesla.Env.t}` on failure
  """
  @spec delete_key_binding(Tesla.Env.client, String.t, keyword()) :: {:ok, nil} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
  def delete_key_binding(connection, id, _opts \\ []) do
    request =
      %{}
      |> method(:delete)
      |> url("/v1/keybindings/#{id}")
      |> Enum.into([])

    connection
    |> Connection.request(request)
    |> evaluate_response([
      {204, false},
      {401, Spatio.Model.ApiError}
    ])
  end

  @doc """
  Platform default key bindings (no user customizations applied).

  ### Parameters

  - `connection` (Spatio.Connection): Connection to server
  - `opts` (keyword): Optional parameters

  ### Returns

  - `{:ok, Spatio.Model.KeyBindingListResponse.t}` on success
  - `{:error, Tesla.Env.t}` on failure
  """
  @spec get_default_key_bindings(Tesla.Env.client, keyword()) :: {:ok, Spatio.Model.KeyBindingListResponse.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
  def get_default_key_bindings(connection, _opts \\ []) do
    request =
      %{}
      |> method(:get)
      |> url("/v1/keybindings/defaults")
      |> Enum.into([])

    connection
    |> Connection.request(request)
    |> evaluate_response([
      {200, Spatio.Model.KeyBindingListResponse},
      {401, Spatio.Model.ApiError}
    ])
  end

  @doc """
  User's merged key bindings (defaults + customizations).

  ### Parameters

  - `connection` (Spatio.Connection): Connection to server
  - `opts` (keyword): Optional parameters

  ### Returns

  - `{:ok, Spatio.Model.KeyBindingListResponse.t}` on success
  - `{:error, Tesla.Env.t}` on failure
  """
  @spec list_key_bindings(Tesla.Env.client, keyword()) :: {:ok, Spatio.Model.KeyBindingListResponse.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
  def list_key_bindings(connection, _opts \\ []) do
    request =
      %{}
      |> method(:get)
      |> url("/v1/keybindings")
      |> Enum.into([])

    connection
    |> Connection.request(request)
    |> evaluate_response([
      {200, Spatio.Model.KeyBindingListResponse},
      {401, Spatio.Model.ApiError}
    ])
  end

  @doc """
  Reset every customization to its platform default.

  ### Parameters

  - `connection` (Spatio.Connection): Connection to server
  - `opts` (keyword): Optional parameters

  ### Returns

  - `{:ok, nil}` on success
  - `{:error, Tesla.Env.t}` on failure
  """
  @spec reset_all_key_bindings(Tesla.Env.client, keyword()) :: {:ok, nil} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
  def reset_all_key_bindings(connection, _opts \\ []) do
    request =
      %{}
      |> method(:post)
      |> url("/v1/keybindings/reset")
      |> ensure_body()
      |> Enum.into([])

    connection
    |> Connection.request(request)
    |> evaluate_response([
      {204, false},
      {401, Spatio.Model.ApiError}
    ])
  end

  @doc """
  Create or update a user key-binding customization.

  ### Parameters

  - `connection` (Spatio.Connection): Connection to server
  - `id` (String.t): 
  - `update_key_binding_request` (UpdateKeyBindingRequest): 
  - `opts` (keyword): Optional parameters

  ### Returns

  - `{:ok, Spatio.Model.KeyBinding.t}` on success
  - `{:error, Tesla.Env.t}` on failure
  """
  @spec update_key_binding(Tesla.Env.client, String.t, Spatio.Model.UpdateKeyBindingRequest.t, keyword()) :: {:ok, Spatio.Model.KeyBinding.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
  def update_key_binding(connection, id, update_key_binding_request, _opts \\ []) do
    request =
      %{}
      |> method(:put)
      |> url("/v1/keybindings/#{id}")
      |> add_param(:body, :body, update_key_binding_request)
      |> Enum.into([])

    connection
    |> Connection.request(request)
    |> evaluate_response([
      {200, Spatio.Model.KeyBinding},
      {401, Spatio.Model.ApiError}
    ])
  end

  @doc """
  Check whether a proposed binding conflicts with existing ones.

  ### Parameters

  - `connection` (Spatio.Connection): Connection to server
  - `validate_key_binding_request` (ValidateKeyBindingRequest): 
  - `opts` (keyword): Optional parameters

  ### Returns

  - `{:ok, Spatio.Model.ValidateKeyBindingResponse.t}` on success
  - `{:error, Tesla.Env.t}` on failure
  """
  @spec validate_key_binding(Tesla.Env.client, Spatio.Model.ValidateKeyBindingRequest.t, keyword()) :: {:ok, Spatio.Model.ValidateKeyBindingResponse.t} | {:ok, Spatio.Model.ApiError.t} | {:error, Tesla.Env.t}
  def validate_key_binding(connection, validate_key_binding_request, _opts \\ []) do
    request =
      %{}
      |> method(:post)
      |> url("/v1/keybindings/validate")
      |> add_param(:body, :body, validate_key_binding_request)
      |> Enum.into([])

    connection
    |> Connection.request(request)
    |> evaluate_response([
      {200, Spatio.Model.ValidateKeyBindingResponse},
      {401, Spatio.Model.ApiError}
    ])
  end
end