Packages
stripity_stripe
2.16.0
3.3.2
3.3.1
3.2.0
3.1.1
3.1.0
3.0.0
2.17.3
2.17.2
2.17.1
2.17.0
2.16.0
2.15.1
2.15.0
2.14.1
2.14.0
2.13.0
2.12.1
2.12.0
2.11.0
2.10.0
2.9.0
2.8.0
2.7.2
2.7.1
2.7.0
2.6.0
2.5.0
2.4.0
2.3.0
2.2.3
2.2.2
2.2.1
2.2.0
2.1.0
2.0.1
2.0.0
2.0.0-alpha.11
2.0.0-alpha.10
2.0.0-alpha.9
2.0.0-alpha.8
2.0.0-alpha.7
2.0.0-alpha.6
2.0.0-alpha.5
2.0.0-alpha.4
2.0.0-alpha.3
2.0.0-alpha.2
2.0.0-alpha.1
1.6.2
1.6.1
1.6.0
1.4.0
1.3.0
1.2.0
1.1.0
0.5.0
0.4.0
0.3.0
0.2.0
A Stripe client for Elixir.
Current section
Files
Jump to
Current section
Files
lib/stripe/identity/verification_session.ex
defmodule Stripe.Identity.VerificationSession do
@moduledoc """
Work with Stripe Identity VerificationSession objects.
You can:
- Create a Verification Session.
- List all Verification Sessions.
- Retrieve a verification session with a specified `id`.
- Update a Verification Session.
- Cancel a Verification Session.
- Redact a Verification Session.
Stripe API reference: https://stripe.com/docs/api/identity/verification_sessions
"""
use Stripe.Entity
import Stripe.Request
@type last_error :: %{
code: list(String.t()),
reason: String.t()
}
@type options :: %{
document: %{
allowed_types: list(String.t()),
require_id_number: boolean(),
require_live_capture: boolean(),
require_matching_selfie: boolean()
},
id_number: map()
}
@type redaction :: %{
status: String.t()
}
@type verified_outputs :: %{
address: %{
city: String.t(),
country: String.t(),
line1: String.t(),
line2: String.t(),
postal_code: String.t(),
state: String.t()
},
dob: %{
day: integer(),
month: integer(),
year: integer()
},
first_name: String.t(),
id_number: String.t(),
id_number_type: String.t(),
last_name: String.t()
}
@type t :: %__MODULE__{
id: Stripe.id(),
object: String.t(),
client_secret: String.t() | nil,
created: Stripe.timestamp(),
last_error: last_error() | nil,
last_verification_report: String.t(),
livemode: boolean(),
metadata: Stripe.Types.metadata(),
options: options(),
redaction: redaction() | nil,
status: String.t(),
type: String.t(),
url: String.t() | nil,
verified_outputs: verified_outputs() | nil
}
defstruct [
:id,
:object,
:client_secret,
:created,
:last_error,
:last_verification_report,
:livemode,
:metadata,
:options,
:redaction,
:status,
:type,
:url,
:verified_outputs
]
@plural_endpoint "identity/verification_sessions"
@doc """
Create a VerificationSession
"""
@spec create(params, Stripe.options()) :: {:ok, t()} | {:error, Stripe.Error.t()}
when params: %{
:type => String.t(),
optional(:metadata) => Stripe.Types.metadata(),
optional(:options) => options(),
optional(:return_url) => String.t()
}
def create(params, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint)
|> put_params(params)
|> put_method(:post)
|> make_request()
end
@doc """
Returns a list of VerificationSessions
"""
@spec list(params, Stripe.options()) :: {:ok, Stripe.List.t(t())} | {:error, Stripe.Error.t()}
when params: %{
optional(:created) => Stripe.date_query(),
optional(:status) => String.t(),
optional(:ending_before) => t() | Stripe.id(),
optional(:limit) => 1..100,
optional(:starting_after) => t() | Stripe.id()
}
def list(params \\ %{}, opts \\ []) do
new_request(opts)
|> prefix_expansions()
|> put_endpoint(@plural_endpoint)
|> put_method(:get)
|> put_params(params)
|> cast_to_id([:ending_before, :starting_after])
|> make_request()
end
@doc """
Retrieves the details of a VerificationSession that was previously created.
When the session status is requires_input,
you can use this method to retrieve a valid
client_secret or url to allow re-submission.
"""
@spec retrieve(Stripe.id() | t(), Stripe.options()) :: {:ok, t()} | {:error, Stripe.Error.t()}
def retrieve(id, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint <> "/#{get_id!(id)}")
|> put_method(:get)
|> make_request()
end
@doc """
Updates a VerificationSession.
When the session status is requires_input,
you can use this method to update the verification check and options.
"""
@spec update(Stripe.id() | t(), params, Stripe.options()) ::
{:ok, t} | {:error, Stripe.Error.t()}
when params: %{
optional(:metadata) => Stripe.Types.metadata(),
optional(:options) => options(),
optional(:type) => String.t()
}
def update(id, params \\ %{}, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint <> "/#{get_id!(id)}")
|> put_method(:post)
|> put_params(params |> Map.delete(:metadata))
|> make_request()
end
@doc """
Cancel a VerificationSession.
"""
@spec cancel(Stripe.id() | t(), Stripe.options()) :: {:ok, t()} | {:error, Stripe.Error.t()}
def cancel(id, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint <> "/#{get_id!(id)}/cancel")
|> put_method(:post)
|> make_request()
end
@doc """
Redact a VerificationSession to remove all collected information from Stripe.
"""
@spec redact(Stripe.id() | t(), Stripe.options()) :: {:ok, t()} | {:error, Stripe.Error.t()}
def redact(id, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint <> "/#{get_id!(id)}/redact")
|> put_method(:post)
|> make_request()
end
end