# Paypal v0.2.0 - Table of Contents

> Paypal API v2 & Subscriptions API with Req

## Pages

- [Paypal](readme.md)
- [COPYING](copying.md)

## Modules

- [Paypal](Paypal.md): Paypal is a payments platform that helps you accept payments and manage subscriptions
in an easy way for your website or application.
- [Paypal.Common.Error.Details](Paypal.Common.Error.Details.md): Each detail implemented for the error.

- [Paypal.Order.Authorization.SellerProtection](Paypal.Order.Authorization.SellerProtection.md): Seller protection gives us information about if the protection of the
seller is elegible and the categories for the disputes.

- [Paypal.Order.Authorized.PurchaseUnit](Paypal.Order.Authorized.PurchaseUnit.md): Purchase Unit has the information for each detail line in the bought items.

- [Paypal.Order.Authorized.PurchaseUnit.Payment](Paypal.Order.Authorized.PurchaseUnit.Payment.md): The payment define the list of authorizations that are included inside
of the authorized order.

- Auth
  - [Paypal.Auth](Paypal.Auth.md): PayPal requires an authenticated OAuth2 token to interact with the API. This module
helps manage and retrieve tokens, ensuring the token is kept active and automatically
refreshed in the background before expiry.
  - [Paypal.Auth.Access](Paypal.Auth.Access.md): The access structure has the information for accessing to the rest of
the requests and the information about the expiration of the token.

  - [Paypal.Auth.Request](Paypal.Auth.Request.md): Performs OAuth2 authentication against PayPal to retrieve an access token.

  - [Paypal.Auth.Worker](Paypal.Auth.Worker.md): The worker is performing the refresh of the token.

- Order
  - [Paypal.Order](Paypal.Order.md): The orders is the element that let us to charge an amount to the clients.
  - [Paypal.Order.Authorization](Paypal.Order.Authorization.md): Authorization is the information embebed into the
`Paypal.Order.Authorized` for getting all of the information for the
authorized payment.

  - [Paypal.Order.Authorized](Paypal.Order.Authorized.md): The authorized struct is the response performed by `Paypal.Order.authorize/1`
where we can see the status of the authorization and other information
related to the request.

  - [Paypal.Order.Create](Paypal.Order.Create.md): Create an order. It contains the information for creating an order.

  - [Paypal.Order.ExperienceContext](Paypal.Order.ExperienceContext.md): The experience context is the information needed for creating an order
and provide information about how Paypal should behave when we go to its
website for performing the payment.

  - [Paypal.Order.Info](Paypal.Order.Info.md): Order information. The information retrieved from Paypal about the order.

  - [Paypal.Order.Payer](Paypal.Order.Payer.md): Payer get all the information about who's paying the order.

  - [Paypal.Order.PurchaseUnit](Paypal.Order.PurchaseUnit.md): The purchase unit is the information for each unit purchased (or to purchase)
included in an order.

  - [Paypal.Order.PurchaseUnit.Capture](Paypal.Order.PurchaseUnit.Capture.md): Represents a Capture object from the PayPal v2 PurchaseUnit API.
  - [Paypal.Order.PurchaseUnit.Item](Paypal.Order.PurchaseUnit.Item.md): The item inside of each purchase unit.
See `Paypal.Order.PurchaseUnit`.

  - [Paypal.Order.PurchaseUnit.PaymentCollection](Paypal.Order.PurchaseUnit.PaymentCollection.md): Represents a Payment Collection object from the PayPal v2 API.
  - [Paypal.Order.UpcCode](Paypal.Order.UpcCode.md): The UPC EAN code.

- Payment
  - [Paypal.Payment](Paypal.Payment.md): Perform payment actions for PayPal. Payments are authorized orders or captures.
  - [Paypal.Payment.Captured](Paypal.Payment.Captured.md): The returned information after performing a capture of an authorized order.

  - [Paypal.Payment.Info](Paypal.Payment.Info.md): Authorized order information.

  - [Paypal.Payment.Refund](Paypal.Payment.Refund.md): Payment refund information. The information retrieved from Paypal about the
refund.
  - [Paypal.Payment.RefundRequest](Paypal.Payment.RefundRequest.md): Request object that Refunds a captured payment, by ID. For a full refund,
include an empty request body. For a partial refund, include an `amount`
object in the request body.

- Subscription
  - [Paypal.Subscription](Paypal.Subscription.md): Manage recurring billing subscriptions for PayPal.
  - [Paypal.Subscription.BillingInfo](Paypal.Subscription.BillingInfo.md): Billing details and cycle execution information for a PayPal subscription.
  - [Paypal.Subscription.Capture](Paypal.Subscription.Capture.md): Response returned after capturing an authorized payment on a subscription.
  - [Paypal.Subscription.Create](Paypal.Subscription.Create.md): Schema and validation for creating a subscription in PayPal.
  - [Paypal.Subscription.Info](Paypal.Subscription.Info.md): Subscription information retrieved from the PayPal Subscriptions API.
  - [Paypal.Subscription.Plan](Paypal.Subscription.Plan.md): Manage billing plans for PayPal Subscriptions.
  - [Paypal.Subscription.Plan.BillingCycle](Paypal.Subscription.Plan.BillingCycle.md): Represents a billing cycle inside a PayPal billing plan.
  - [Paypal.Subscription.Plan.Create](Paypal.Subscription.Plan.Create.md): Schema and validation for creating a billing plan in PayPal.
  - [Paypal.Subscription.Plan.Info](Paypal.Subscription.Plan.Info.md): Plan details retrieved from the PayPal Billing Plans API.
  - [Paypal.Subscription.Plan.List](Paypal.Subscription.Plan.List.md): Plan list response returned from the PayPal Billing Plans API.
  - [Paypal.Subscription.Plan.PaymentPreferences](Paypal.Subscription.Plan.PaymentPreferences.md): Payment preferences for a PayPal billing plan.
  - [Paypal.Subscription.Plan.Taxes](Paypal.Subscription.Plan.Taxes.md): Tax details for a PayPal billing plan.
  - [Paypal.Subscription.Product](Paypal.Subscription.Product.md): Manage catalog products for PayPal Subscriptions.
  - [Paypal.Subscription.Product.Create](Paypal.Subscription.Product.Create.md): Schema and validation for creating a product in the PayPal Catalog Products API.
  - [Paypal.Subscription.Product.Info](Paypal.Subscription.Product.Info.md): Product information retrieved from the PayPal Catalog Products API.
  - [Paypal.Subscription.Product.List](Paypal.Subscription.Product.List.md): Product list response returned from the PayPal Catalog Products API.
  - [Paypal.Subscription.ReviseResponse](Paypal.Subscription.ReviseResponse.md): Response returned after revising a PayPal subscription.
  - [Paypal.Subscription.Subscriber](Paypal.Subscription.Subscriber.md): Subscriber details in a PayPal subscription.
  - [Paypal.Subscription.Transaction](Paypal.Subscription.Transaction.md): Transaction item within a subscription's transaction list.
  - [Paypal.Subscription.Transactions](Paypal.Subscription.Transactions.md): Transactions response returned for a PayPal subscription.

- Common and Helpers
  - [Paypal.Client](Paypal.Client.md): Builds the shared `Req.Request` used by all PayPal API modules
(`Order`, `Payment`, `Subscription`, `Plan`, `Product`).

  - [Paypal.Common.CurrencyValue](Paypal.Common.CurrencyValue.md): Most of the currencies in the Paypal requests and responses are handled
as a JSON object that is including `currency_code` and `value`. But it's
even more complex in other requests.
  - [Paypal.Common.Error](Paypal.Common.Error.md): When something goes wrong, Paypal is replying us with an error message
and this is the struct for retrieving this kind of errors.

  - [Paypal.Common.Link](Paypal.Common.Link.md): The link is accumulating all of the required information for handling the
HATEOAS links.

  - [Paypal.Common.Operation](Paypal.Common.Operation.md): The operation is the struct where we store the information for the operations
performed in orders and payments. Most of the requests that are performing an
action is returning an operation.

  - [Paypal.EctoHelpers](Paypal.EctoHelpers.md): Ecto Helpers is a module that is ensuring we have the common functions in
use for most of the schemas or modules that uses Ecto.

