defmodule Stripe.Event do use Stripe.Entity @moduledoc "Events are our way of letting you know when something interesting happens in\nyour account. When an interesting event occurs, we create a new `Event`\nobject. For example, when a charge succeeds, we create a `charge.succeeded`\nevent, and when an invoice payment attempt fails, we create an\n`invoice.payment_failed` event. Certain API requests might create multiple\nevents. For example, if you create a new subscription for a\ncustomer, you receive both a `customer.subscription.created` event and a\n`charge.succeeded` event.\n\nEvents occur when the state of another API resource changes. The event's data\nfield embeds the resource's state at the time of the change. For\nexample, a `charge.succeeded` event contains a charge, and an\n`invoice.payment_failed` event contains an invoice.\n\nAs with other API resources, you can use endpoints to retrieve an\n[individual event](https://stripe.com/docs/api#retrieve_event) or a [list of events](https://stripe.com/docs/api#list_events)\nfrom the API. We also have a separate\n[webhooks](http://en.wikipedia.org/wiki/Webhook) system for sending the\n`Event` objects directly to an endpoint on your server. You can manage\nwebhooks in your\n[account settings](https://dashboard.stripe.com/account/webhooks). Learn how\nto [listen for events](https://stripe.com/docs/webhooks)\nso that your integration can automatically trigger reactions.\n\nWhen using [Connect](https://stripe.com/docs/connect), you can also receive event notifications\nthat occur in connected accounts. For these events, there's an\nadditional `account` attribute in the received `Event` object.\n\nWe only guarantee access to events through the [Retrieve Event API](https://stripe.com/docs/api#retrieve_event)\nfor 30 days." ( defstruct [ :account, :api_version, :created, :data, :id, :livemode, :object, :pending_webhooks, :request, :type ] @typedoc "The `event` type.\n\n * `account` The connected account that originates the event.\n * `api_version` The Stripe API version used to render `data`. This property is populated only for events on or after October 31, 2014.\n * `created` Time at which the object was created. Measured in seconds since the Unix epoch.\n * `data` \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 * `object` String representing the object's type. Objects of the same type share the same value.\n * `pending_webhooks` Number of webhooks that haven't been successfully delivered (for example, to return a 20x response) to the URLs you specify.\n * `request` Information on the API request that triggers the event.\n * `type` Description of the event (for example, `invoice.created` or `charge.refunded`).\n" @type t :: %__MODULE__{ account: binary, api_version: binary | nil, created: integer, data: term, id: binary, livemode: boolean, object: binary, pending_webhooks: integer, request: term | nil, type: binary } ) ( @typedoc nil @type created :: %{ optional(:gt) => integer, optional(:gte) => integer, optional(:lt) => integer, optional(:lte) => integer } ) ( nil @doc "
List events, going back up to 30 days. Each event data is rendered according to Stripe API version at its creation time, specified in event object api_version attribute (not according to your current Stripe API version or Stripe-Version header).
Retrieves the details of an event. Supply the unique identifier of the event, which you might have received in a webhook.
\n\n#### Details\n\n * Method: `get`\n * Path: `/v1/events/{id}`\n" ( @spec retrieve( id :: binary(), params :: %{optional(:expand) => list(binary)}, opts :: Keyword.t() ) :: {:ok, Stripe.Event.t()} | {:error, Stripe.ApiErrors.t()} | {:error, term()} def retrieve(id, params \\ %{}, opts \\ []) do path = Stripe.OpenApi.Path.replace_path_params( "/v1/events/{id}", [ %OpenApiGen.Blueprint.Parameter{ in: "path", name: "id", required: true, schema: %OpenApiGen.Blueprint.Parameter.Schema{ name: "id", title: nil, type: "string", items: [], properties: [], any_of: [] } } ], [id] ) 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