lib/generated/mandate.ex

defmodule Stripe.Mandate do
  use Stripe.Entity

  @moduledoc "A Mandate is a record of the permission that your customer gives you to debit their payment method."
  (
    defstruct [
      :customer_acceptance,
      :id,
      :livemode,
      :multi_use,
      :object,
      :on_behalf_of,
      :payment_method,
      :payment_method_details,
      :single_use,
      :status,
      :type
    ]

    @typedoc "The `mandate` type.\n\n  * `customer_acceptance` \n  * `id` Unique identifier for the object.\n  * `livemode` Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.\n  * `multi_use` \n  * `object` String representing the object's type. Objects of the same type share the same value.\n  * `on_behalf_of` The account (if any) that the mandate is intended for.\n  * `payment_method` ID of the payment method associated with this mandate.\n  * `payment_method_details` \n  * `single_use` \n  * `status` The mandate status indicates whether or not you can use it to initiate a payment.\n  * `type` The type of the mandate.\n"
    @type t :: %__MODULE__{
            customer_acceptance: term,
            id: binary,
            livemode: boolean,
            multi_use: term,
            object: binary,
            on_behalf_of: binary,
            payment_method: binary | Stripe.PaymentMethod.t(),
            payment_method_details: term,
            single_use: term,
            status: binary,
            type: binary
          }
  )

  (
    nil

    @doc "<p>Retrieves a Mandate object.</p>\n\n#### Details\n\n * Method: `get`\n * Path: `/v1/mandates/{mandate}`\n"
    (
      @spec retrieve(
              mandate :: binary(),
              params :: %{optional(:expand) => list(binary)},
              opts :: Keyword.t()
            ) :: {:ok, Stripe.Mandate.t()} | {:error, Stripe.ApiErrors.t()} | {:error, term()}
      def retrieve(mandate, params \\ %{}, opts \\ []) do
        path =
          Stripe.OpenApi.Path.replace_path_params(
            "/v1/mandates/{mandate}",
            [
              %OpenApiGen.Blueprint.Parameter{
                in: "path",
                name: "mandate",
                required: true,
                schema: %OpenApiGen.Blueprint.Parameter.Schema{
                  name: "mandate",
                  title: nil,
                  type: "string",
                  items: [],
                  properties: [],
                  any_of: []
                }
              }
            ],
            [mandate]
          )

        Stripe.Request.new_request(opts)
        |> Stripe.Request.put_endpoint(path)
        |> Stripe.Request.put_params(params)
        |> Stripe.Request.put_method(:get)
        |> Stripe.Request.make_request()
      end
    )
  )
end