lib/requests/new_image_request.ex

defmodule ExOpenAi.NewImageRequest do
  @moduledoc """
  Represents a new image request to the OpenAI API.

  - [OpenAI API Docs](https://platform.openai.com/docs/api-reference/images)
  """

  use ExOpenAi.Request

  alias ExOpenAi.NewImage

  @required_fields ~w(
    prompt
  )a

  @optional_fields ~w(
    n
    size
    response_format
    user
  )a

  @doc """
  Builds the create new image request and validates the required fields.
  """
  @spec create(params :: map) :: {:ok, NewImage.t()} | {:error, map}
  def create(params) do
    params
    |> prepare(@optional_fields, @required_fields)
    |> NewImage.create()
  end
end