lib/vr_chat/api/playermoderation.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 VRChat.Api.Playermoderation do
  @moduledoc """
  API calls for all endpoints tagged `Playermoderation`.
  """

  alias VRChat.Connection
  import VRChat.RequestBuilder


  @doc """
  Clear All Player Moderations
  ⚠️ **This will delete every single player moderation you've ever made.**

  ## Parameters

  - connection (VRChat.Connection): Connection to server
  - opts (KeywordList): [optional] Optional parameters
  ## Returns

  {:ok, VRChat.Model.Success.t} on success
  {:error, Tesla.Env.t} on failure
  """
  @spec clear_all_player_moderations(Tesla.Env.client, keyword()) :: {:ok, VRChat.Model.Success.t} | {:ok, VRChat.Model.Error.t} | {:error, Tesla.Env.t}
  def clear_all_player_moderations(connection, _opts \\ []) do
    %{}
    |> method(:delete)
    |> url("/auth/user/playermoderations")
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 200, %VRChat.Model.Success{}},
      { 401, %VRChat.Model.Error{}}
    ])
  end

  @doc """
  Delete Player Moderation
  Deletes a specific player moderation based on it's `pmod_` ID. The website uses `unmoderateUser` instead. You can delete the same player moderation multiple times successfully.

  ## Parameters

  - connection (VRChat.Connection): Connection to server
  - player_moderation_id (String.t): 
  - opts (KeywordList): [optional] Optional parameters
  ## Returns

  {:ok, VRChat.Model.Success.t} on success
  {:error, Tesla.Env.t} on failure
  """
  @spec delete_player_moderation(Tesla.Env.client, String.t, keyword()) :: {:ok, VRChat.Model.Success.t} | {:ok, VRChat.Model.Error.t} | {:error, Tesla.Env.t}
  def delete_player_moderation(connection, player_moderation_id, _opts \\ []) do
    %{}
    |> method(:delete)
    |> url("/auth/user/playermoderations/#{player_moderation_id}")
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 200, %VRChat.Model.Success{}},
      { 401, %VRChat.Model.Error{}},
      { 403, %VRChat.Model.Error{}}
    ])
  end

  @doc """
  Get Player Moderation
  Returns a single Player Moderation. This returns the exact same amount of information as the more generalised `getPlayerModerations`.

  ## Parameters

  - connection (VRChat.Connection): Connection to server
  - player_moderation_id (String.t): 
  - opts (KeywordList): [optional] Optional parameters
  ## Returns

  {:ok, VRChat.Model.PlayerModeration.t} on success
  {:error, Tesla.Env.t} on failure
  """
  @spec get_player_moderation(Tesla.Env.client, String.t, keyword()) :: {:ok, VRChat.Model.PlayerModeration.t} | {:ok, VRChat.Model.Error.t} | {:error, Tesla.Env.t}
  def get_player_moderation(connection, player_moderation_id, _opts \\ []) do
    %{}
    |> method(:get)
    |> url("/auth/user/playermoderations/#{player_moderation_id}")
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 200, %VRChat.Model.PlayerModeration{}},
      { 401, %VRChat.Model.Error{}},
      { 404, %VRChat.Model.Error{}}
    ])
  end

  @doc """
  Search Player Moderations
  Returns a list of all player moderations made by **you**.  This endpoint does not have pagination, and will return *all* results. Use query parameters to limit your query if needed.

  ## Parameters

  - connection (VRChat.Connection): Connection to server
  - opts (KeywordList): [optional] Optional parameters
    - :type (String.t): Must be one of PlayerModerationType, except unblock. Unblocking simply removes a block.
    - :target_user_id (String.t): Must be valid UserID.
  ## Returns

  {:ok, [%PlayerModeration{}, ...]} on success
  {:error, Tesla.Env.t} on failure
  """
  @spec get_player_moderations(Tesla.Env.client, keyword()) :: {:ok, list(VRChat.Model.PlayerModeration.t)} | {:ok, VRChat.Model.Error.t} | {:error, Tesla.Env.t}
  def get_player_moderations(connection, opts \\ []) do
    optional_params = %{
      :type => :query,
      :targetUserId => :query
    }
    %{}
    |> method(:get)
    |> url("/auth/user/playermoderations")
    |> add_optional_params(optional_params, opts)
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 200, [%VRChat.Model.PlayerModeration{}]},
      { 401, %VRChat.Model.Error{}}
    ])
  end

  @doc """
  Moderate User
  Moderate a user, e.g. unmute them or show their avatar.  Please see the [Player Moderation docs](https://vrchatapi.github.io/docs/api/#tag--playermoderation) on what playerModerations are, and how they differ from staff moderations.

  ## Parameters

  - connection (VRChat.Connection): Connection to server
  - opts (KeywordList): [optional] Optional parameters
    - :body (ModerateUserRequest): 
  ## Returns

  {:ok, VRChat.Model.PlayerModeration.t} on success
  {:error, Tesla.Env.t} on failure
  """
  @spec moderate_user(Tesla.Env.client, keyword()) :: {:ok, VRChat.Model.PlayerModeration.t} | {:ok, VRChat.Model.Error.t} | {:error, Tesla.Env.t}
  def moderate_user(connection, opts \\ []) do
    optional_params = %{
      :body => :body
    }
    %{}
    |> method(:post)
    |> url("/auth/user/playermoderations")
    |> add_optional_params(optional_params, opts)
    |> ensure_body()
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 200, %VRChat.Model.PlayerModeration{}},
      { 401, %VRChat.Model.Error{}}
    ])
  end

  @doc """
  Unmoderate User
  Removes a player moderation previously added through `moderateUser`. E.g if you previously have shown their avatar, but now want to reset it to default.

  ## Parameters

  - connection (VRChat.Connection): Connection to server
  - opts (KeywordList): [optional] Optional parameters
    - :body (ModerateUserRequest): 
  ## Returns

  {:ok, VRChat.Model.Success.t} on success
  {:error, Tesla.Env.t} on failure
  """
  @spec unmoderate_user(Tesla.Env.client, keyword()) :: {:ok, VRChat.Model.Success.t} | {:ok, VRChat.Model.Error.t} | {:error, Tesla.Env.t}
  def unmoderate_user(connection, opts \\ []) do
    optional_params = %{
      :body => :body
    }
    %{}
    |> method(:put)
    |> url("/auth/user/unplayermoderate")
    |> add_optional_params(optional_params, opts)
    |> ensure_body()
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 200, %VRChat.Model.Success{}},
      { 401, %VRChat.Model.Error{}}
    ])
  end
end