lib/stripe/radar/review.ex

defmodule Stripe.Review do
  @moduledoc """
  Work with Stripe review objects.

  Stripe API reference: https://stripe.com/docs/api#reviews
  """

  use Stripe.Entity

  @type session :: %{
          browser: String.t(),
          device: String.t(),
          platform: String.t(),
          version: String.t()
        }

  @type ip_address_location :: %{
          city: String.t(),
          country: String.t(),
          latitude: float,
          longitude: float,
          region: String.t()
        }

  @type t :: %__MODULE__{
          id: Stripe.id(),
          object: String.t(),
          billing_zip: String.t(),
          charge: Stripe.id() | Stripe.Charge.t(),
          closed_reason: String.t(),
          created: Stripe.timestamp(),
          ip_address: String.t(),
          ip_address_location: ip_address_location,
          livemode: boolean,
          open: boolean,
          opened_reason: String.t(),
          payment_intent: String.t(),
          reason: String.t(),
          session: session
        }

  defstruct [
    :id,
    :object,
    :billing_zip,
    :charge,
    :closed_reason,
    :created,
    :ip_address,
    :ip_address_location,
    :livemode,
    :open,
    :opened_reason,
    :payment_intent,
    :reason,
    :session
  ]
end