defmodule Plaid.WebhookVerificationKey do
@moduledoc """
Functions for Plaid `webhook_verification_key` endpoint.
"""
alias Plaid.Client.Request
alias Plaid.Client
@derive Jason.Encoder
defstruct key: %{},
request_id: nil
@type t :: %__MODULE__{
key: map(),
request_id: String.t()
}
@type params :: %{required(atom) => term}
@type config :: %{required(atom) => String.t() | keyword}
@type error :: {:error, Plaid.Error.t() | any()} | no_return
@doc """
Gets a webhook verification key (JWK).
Parameters
```
%{
key_id: "The key ID (kid) from the webhook's JWT header."
}
```
"""
@spec get(params, config) :: {:ok, Plaid.WebhookVerificationKey.t()} | error
def get(params, config \\ %{}) do
c = config[:client] || Plaid
Request
|> struct(method: :post, endpoint: "webhook_verification_key/get", body: params)
|> Request.add_metadata(config)
|> c.send_request(Client.new(config))
|> c.handle_response(&Poison.Decode.transform(&1, %{as: %Plaid.WebhookVerificationKey{}}))
end
end