{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "id": "#/",
    "type": "object",
    "description": "CDIF schema definitions for PayPal REST API",
    "paypal": {
        "payment": {
            "listPaymentArgs": {
                "type": "object",
                "properties": {
                    "count": {
                        "type": "integer",
                        "maximum": 20,
                        "minimum": 0
                    },
                    "start_id": {
                        "type": "string"
                    },
                    "start_index": {
                        "type": "integer"
                    },
                    "start_time": {
                        "type": "string"
                    },
                    "end_time": {
                        "type": "string"
                    },
                    "sort_by": {
                        "type": "string",
                        "enum": [
                            "create_time",
                            "end_time"
                        ]
                    },
                    "sort_order": {
                        "type": "string",
                        "enum": [
                            "asc",
                            "desc"
                        ]
                    }
                },
                "additionalProperties": false
            },
            "paymentList": {
                "type": "object",
                "properties": {
                    "payments": {
                        "type": "array",
                        "items": {
                            "oneOf": [
                                {
                                    "$ref": "#/paypal/definitions/payment"
                                }
                            ]
                        }
                    }
                }
            },
            "executePaymentArgs": {
                "type": "object",
                "properties": {
                    "payer_id": {
                        "type": "string"
                    },
                    "transactions": {
                        "type": "array",
                        "items": {
                            "oneOf": [
                                {
                                    "$ref": "#/paypal/definitions/amount"
                                }
                            ]
                        },
                        "additionalProperties": false
                    }
                },
                "required": [
                    "payer_id"
                ],
                "additionalProperties": false
            },
            "transactions": {
                "type": "array",
                "items": {
                    "oneOf": [
                        {
                            "$ref": "#/paypal/definitions/transaction"
                        }
                    ]
                }
            },
            "payer": {
                "$ref": "#/paypal/definitions/payer"
            },
            "payment": {
                "$ref": "#/paypal/definitions/payment"
            },
            "redirectUrls": {
                "$ref": "#/paypal/definitions/redirect_urls"
            }
        },
        "payouts": {
            "senderBatchHeader": {
                "type": "object",
                "properties": {
                    "sender_batch_id": {
                        "type": "string"
                    },
                    "email_subject": {
                        "type": "string",
                        "maxLength": 255
                    },
                    "recipient_type": {
                        "type": "string",
                        "enum": [
                            "EMAIL",
                            "PHONE",
                            "PAYPAL_ID"
                        ]
                    }
                }
            },
            "payoutItems": {
                "$ref": "#/paypal/definitions/payout_item"
            },
            "createPayoutResult": {
                "type": "object"
            },
            "getStatusResult": {
                "type": "object"
            },
            "getItemStatusResult": {
                "type": "object"
            },
            "cancelItemResult": {
                "type": "object"
            }
        },
        "clientConfig": {
            "type": "object",
            "properties": {
                "mode": {
                    "type": "string",
                    "enum": [
                        "sandbox",
                        "live"
                    ]
                },
                "client_id": {
                    "type": "string"
                },
                "client_secret": {
                    "type": "string"
                }
            },
            "required": [
                "mode",
                "client_id",
                "client_secret"
            ]
        },
        "definitions": {
            "payment": {
                "type": "object",
                "properties": {
                    "id": {
                        "description": "ID of the created payment. Value generated by PayPal.",
                        "type": "string"
                    },
                    "intent": {
                        "description": "Payment intent. Must be set to sale for immediate payment, authorize to authorize a payment for capture later, or order to create an order.",
                        "type": "string",
                        "enum": [
                            "sale",
                            "authorize",
                            "order"
                        ]
                    },
                    "payer": {
                        "description": "Source of the funds for this payment represented by a PayPal account or a direct credit card.",
                        "$ref": "#/paypal/definitions/payer"
                    },
                    "create_time": {
                        "description": "Payment creation time as defined in RFC 3339 Section 5.6. Value generated by PayPal.",
                        "type": "string"
                    },
                    "update_time": {
                        "description": "Time that the resource was last updated. Value generated by PayPal.",
                        "type": "string"
                    },
                    "state": {
                        "description": "Payment state. Must be one of the following: created; approved; failed; pending; canceled; or expired. Value generated by PayPal.",
                        "type": "string",
                        "enum": [
                            "created",
                            "approved",
                            "failed",
                            "pending",
                            "canceled",
                            "expired"
                        ]
                    },
                    "redirect_urls": {
                        "oneOf": [
                            {
                                "$ref": "#/paypal/definitions/redirect_urls"
                            }
                        ]
                    },
                    "transactions": {
                        "description": "Transactional details including the amount and item details.",
                        "type": "array",
                        "items": {
                            "oneOf": [
                                {
                                    "$ref": "#/paypal/definitions/transaction"
                                }
                            ]
                        }
                    },
                    "links": {
                        "type": "array",
                        "items": {
                            "oneOf": [
                                {
                                    "$ref": "#/paypal/definitions/link"
                                }
                            ]
                        }
                    }
                },
                "required": [
                    "intent",
                    "id",
                    "transactions",
                    "payer"
                ]
            },
            "payer": {
                "type": "object",
                "properties": {
                    "payment_method": {
                        "description": "Payment method used. Must be either credit_card or paypal.",
                        "type": "string",
                        "enum": [
                            "credit_card",
                            "paypal"
                        ]
                    },
                    "funding_instruments": {
                        "description": "A list of funding instruments for the current payment",
                        "type": "array",
                        "items": {
                            "oneOf": [
                                {
                                    "$ref": "#/paypal/definitions/funding_instruments_credit_card"
                                },
                                {
                                    "$ref": "#/paypal/definitions/funding_instruments_stored_credit_card"
                                },
                                {
                                    "$ref": "#/paypal/definitions/funding_instruments_credit_card_token"
                                }
                            ]
                        }
                    },
                    "payer_info": {
                        "$ref": "#/paypal/definitions/payer_info"
                    },
                    "status": {
                        "type": "string",
                        "enum": [
                            "VERIFIED",
                            "UNVERIFIED"
                        ]
                    }
                },
                "required": [
                    "payment_method"
                ]
            },
            "funding_instruments_credit_card": {
                "type": "object",
                "properties": {
                    "id": {
                        "description": "ID of the credit card. This ID is provided in the response when storing credit cards.",
                        "type": "string"
                    },
                    "payer_id": {
                        "description": "A unique identifier that you can assign and track when storing a credit card or using a stored credit card. This ID can help to avoid unintentional use or misuse of credit cards. This ID can be any value you would like to associate with the saved card, such as a UUID, username, or email address.",
                        "type": "string"
                    },
                    "number": {
                        "description": "Credit card number. Numeric characters only with no spaces or punctuation. The string must conform with modulo and length required by each credit card type.",
                        "type": "string",
                        "pattern": "^([\\d]+)$"
                    },
                    "type": {
                        "description": "Credit card type. Valid types are: visa, mastercard, discover, amex",
                        "type": "string",
                        "enum": [
                            "visa",
                            "mastercard",
                            "discover",
                            "amex"
                        ]
                    },
                    "expire_month": {
                        "description": "Expiration month with no leading zero. Acceptable values are 1 through 12.",
                        "type": "number",
                        "minimum": 0,
                        "maximum": 12
                    },
                    "expire_year": {
                        "description": "4-digit expiration year.",
                        "type": "string",
                        "pattern": "^([\\d]{4})$"
                    },
                    "cvv2": {
                        "description": "3-4 digit card validation code.",
                        "type": "string",
                        "pattern": "^([\\d]{3,4})$"
                    },
                    "first_name": {
                        "description": "Cardholder’s first name.",
                        "type": "string"
                    },
                    "last_name": {
                        "description": "Cardholder’s last name.",
                        "type": "string"
                    },
                    "billing_address": {
                        "$ref": "#/paypal/definitions/address"
                    },
                    "external_customer_id": {
                        "description": "A unique identifier of the customer to whom this bank account belongs. Generated and provided by the facilitator.",
                        "type": "string"
                    },
                    "merchant_id": {
                        "description": "A user-provided, optional field that functions as a unique identifier for the merchant holding the card. Note that this has no relation to PayPal merchant id.",
                        "type": "string"
                    },
                    "external_card_id": {
                        "description": "A unique identifier of the bank account resource. Generated and provided by the facilitator so it can be used to restrict the usage of the bank account to the specific merchant.",
                        "type": "string"
                    },
                    "create_time": {
                        "description": "Resource creation time in ISO8601 date-time format ",
                        "type": "string"
                    },
                    "update_time": {
                        "description": "Resource update time in ISO8601 date-time format",
                        "type": "string"
                    },
                    "state": {
                        "description": "Cardholder’s last name.State of the credit card funding instrument: expired or ok. Value generated by PayPal.",
                        "type": "string",
                        "enum": [
                            "ok",
                            "expired"
                        ]
                    },
                    "valid_until": {
                        "description": "Funding instrument expiration date. Value generated by PayPal.",
                        "type": "string"
                    }
                },
                "required": [
                    "number",
                    "type",
                    "expire_month",
                    "expire_year"
                ]
            },
            "funding_instruments_stored_credit_card": {
                "type": "object",
                "properties": {
                    "id": {
                        "description": "ID of the credit card. This ID is provided in the response when storing credit cards.",
                        "type": "string"
                    },
                    "payer_id": {
                        "description": "A unique identifier that you can assign and track when storing a credit card or using a stored credit card. This ID can help to avoid unintentional use or misuse of credit cards. This ID can be any value you would like to associate with the saved card, such as a UUID, username, or email address.",
                        "type": "string"
                    },
                    "number": {
                        "description": "Credit card number. Numeric characters only with no spaces or punctuation. The string must conform with modulo and length required by each credit card type.",
                        "type": "string",
                        "pattern": "^([\\d]+)$"
                    },
                    "type": {
                        "description": "Credit card type. Valid types are: visa, mastercard, discover, amex",
                        "type": "string",
                        "enum": [
                            "visa",
                            "mastercard",
                            "discover",
                            "amex"
                        ]
                    },
                    "expire_month": {
                        "description": "Expiration month with no leading zero. Acceptable values are 1 through 12.",
                        "type": "number",
                        "minimum": 0,
                        "maximum": 12
                    },
                    "expire_year": {
                        "description": "4-digit expiration year.",
                        "type": "string",
                        "pattern": "^([\\d]{4})$"
                    },
                    "cvv2": {
                        "description": "3-4 digit card validation code.",
                        "type": "string",
                        "pattern": "^([\\d]{3,4})$"
                    },
                    "first_name": {
                        "description": "Cardholder’s first name.",
                        "type": "string"
                    },
                    "last_name": {
                        "description": "Cardholder’s last name.",
                        "type": "string"
                    },
                    "billing_address": {
                        "$ref": "#/paypal/definitions/address"
                    },
                    "external_customer_id": {
                        "description": "A unique identifier of the customer to whom this bank account belongs. Generated and provided by the facilitator.",
                        "type": "string"
                    },
                    "merchant_id": {
                        "description": "A user-provided, optional field that functions as a unique identifier for the merchant holding the card. Note that this has no relation to PayPal merchant id.",
                        "type": "string"
                    },
                    "external_card_id": {
                        "description": "A unique identifier of the bank account resource. Generated and provided by the facilitator so it can be used to restrict the usage of the bank account to the specific merchant.",
                        "type": "string"
                    },
                    "create_time": {
                        "description": "Resource creation time in ISO8601 date-time format ",
                        "type": "string"
                    },
                    "update_time": {
                        "description": "Resource update time in ISO8601 date-time format",
                        "type": "string"
                    },
                    "state": {
                        "description": "Cardholder’s last name.State of the credit card funding instrument: expired or ok. Value generated by PayPal.",
                        "type": "string",
                        "enum": [
                            "ok",
                            "expired"
                        ]
                    },
                    "valid_until": {
                        "description": "Funding instrument expiration date. Value generated by PayPal.",
                        "type": "string"
                    }
                },
                "required": [
                    "id",
                    "number",
                    "type",
                    "expire_month",
                    "expire_year"
                ]
            },
            "funding_instruments_credit_card_token": {
                "type": "object",
                "properties": {
                    "credit_card_id": {
                        "description": "ID of credit card previously stored using /vault/credit-card",
                        "type": "string"
                    },
                    "payer_id": {
                        "description": "A unique identifier that you can assign and track when storing a credit card or using a stored credit card. This ID can help to avoid unintentional use or misuse of credit cards. This ID can be any value you would like to associate with the saved card, such as a UUID, username, or email address. Required when using a stored credit card if a payer_id was originally provided when storing the credit card in vault.",
                        "type": "string"
                    },
                    "last4": {
                        "description": "Last four digits of the stored credit card number. Value generated by PayPal.",
                        "type": "string"
                    },
                    "type": {
                        "description": "Credit card type. Valid types are: visa, mastercard, discover, amex. Values are presented in lowercase and not should not be used for display. Value generated by PayPal.",
                        "type": "string",
                        "enum": [
                            "visa",
                            "mastercard",
                            "discover",
                            "amex"
                        ]
                    },
                    "expire_year": {
                        "description": "4-digit expiration year. Value generated by PayPal.",
                        "type": "number",
                        "pattern": "^([\\d]{4})$"
                    },
                    "expire_month": {
                        "description": "Expiration month with no leading zero. Acceptable values are 1 through 12. Value generated by PayPal.",
                        "type": "number",
                        "minimum": 0,
                        "maximum": 12
                    }
                },
                "required": [
                    "credit_card_id"
                ]
            },
            "payer_info": {
                "type": "object",
                "properties": {
                    "email": {
                        "description": "Email address representing the payer. 127 characters max.",
                        "type": "string",
                        "maxLength": 127
                    },
                    "salutation": {
                        "type": "string"
                    },
                    "first_name": {
                        "description": "First name of the payer. Value generated by PayPal.",
                        "type": "string"
                    },
                    "middle_name": {
                        "description": "Middle name of the payer. Value generated by PayPal.",
                        "type": "string"
                    },
                    "last_name": {
                        "description": "Last name of the payer. Vaelue gnerated by PayPal.",
                        "type": "string"
                    },
                    "suffix": {
                        "description": "Suffix of the payer",
                        "type": "string"
                    },
                    "payer_id": {
                        "description": "PayPal assigned Payer ID. Vaelue gnerated by PayPal.",
                        "type": "string"
                    },
                    "phone": {
                        "description": "Phone number representing the payer. 20 characters max.",
                        "type": "string",
                        "maxLength": 20
                    },
                    "country_code": {
                        "description": "Two-letter registered country code of the payer to identify the buyer country.",
                        "type": "string",
                        "maxLength": 2
                    },
                    "shipping_address": {
                        "$ref": "#/paypal/definitions/shipping_address"
                    },
                    "tax_id_type": {
                        "description": "Payer’s tax ID type. ",
                        "type": "string",
                        "enum": [
                            "BR_CPF",
                            "BR_CNPJ"
                        ]
                    },
                    "tax_id": {
                        "description": "Payer’s tax ID",
                        "type": "string"
                    }
                }
            },
            "redirect_urls": {
                "type": "object",
                "properties": {
                    "return_url": {
                        "description": "The payer is redirected to this URL after approving the payment.",
                        "type": "string",
                        "format": "uri"
                    },
                    "cancel_url": {
                        "description": "The payer is redirected to this URL after canceling the payment.",
                        "type": "string",
                        "format": "uri"
                    }
                },
                "required": [
                    "return_url",
                    "cancel_url"
                ]
            },
            "transaction": {
                "type": "object",
                "properties": {
                    "amount": {
                        "$ref": "#/paypal/definitions/amount"
                    },
                    "description": {
                        "description": "Description of transaction. 127 characters max.",
                        "type": "string",
                        "maxLength": 127
                    },
                    "item_list": {
                        "$ref": "#/paypal/definitions/item_list"
                    },
                    "related_resources": {
                        "description": "Financial transactions related to a payment.",
                        "type": "array"
                    },
                    "invoice_number": {
                        "description": "Invoice number used to track the payment. Only supported when thepayment_method is set to paypal.",
                        "type": "string",
                        "maxLength": 256
                    },
                    "custom": {
                        "description": "Free-form field for the use of clients. Only supported when thepayment_method is set to paypal.",
                        "type": "string",
                        "maxLength": 256
                    },
                    "soft_descriptor": {
                        "description": "Soft descriptor used when charging this funding source. Only supported when thepayment_method is set to paypal.",
                        "type": "string",
                        "maxLength": 22
                    },
                    "payment_options": {
                        "$ref": "#/paypal/definitions/payment_options"
                    }
                },
                "required": [
                    "amount"
                ]
            },
            "link": {
                "type": "object",
                "properties": {
                    "href": {
                        "description": "URL of the related HATEOAS link you can use for subsequent calls.",
                        "type": "string"
                    },
                    "rel": {
                        "description": "Link relation that describes how this link relates to the previous call. Examples include self (get details of the current call), parent_payment (get details of the parent payment), or a related call such as execute or refund.",
                        "type": "string"
                    },
                    "method": {
                        "description": "The HTTP method required for the related call.",
                        "type": "string"
                    }
                },
                "required": [
                    "href",
                    "rel",
                    "method"
                ]
            },
            "amount": {
                "type": "object",
                "properties": {
                    "currency": {
                        "description": "3-letter currency code. PayPal does not support all currencies.",
                        "type": "string",
                        "minLength": 3,
                        "maxLength": 3
                    },
                    "total": {
                        "description": "Total amount charged from the payer to the payee. In case of a refund, this is the refunded amount to the original payer from the payee. 10 characters max with support for 2 decimal places.",
                        "type": "string",
                        "maxLength": 10
                    },
                    "details": {
                        "type": "object",
                        "properties": {
                            "shipping": {
                                "type": "string",
                                "maxLength": 10
                            },
                            "subtotal": {
                                "type": "string",
                                "maxLength": 10
                            },
                            "tax": {
                                "type": "string",
                                "maxLength": 10
                            },
                            "handling_fee": {
                                "type": "string"
                            },
                            "insurance": {
                                "type": "string"
                            },
                            "shipping_discount": {
                                "type": "string"
                            }
                        }
                    }
                },
                "required": [
                    "currency",
                    "total"
                ]
            },
            "payout_item": {
                "type": "array",
                "items": {
                    "type": "object",
                    "properties": {
                        "recipient_type": {
                            "type": "string",
                            "enum": [
                                "EMAIL",
                                "PHONE",
                                "PAYPAL_ID"
                            ]
                        },
                        "amount": {
                            "type": "object",
                            "properties": {
                                "currency": {
                                    "type": "string",
                                    "maxLength": 3
                                },
                                "value": {
                                    "type": "string"
                                }
                            },
                            "required": [
                                "currency",
                                "value"
                            ]
                        },
                        "note": {
                            "type": "string"
                        },
                        "receiver": {
                            "type": "string"
                        },
                        "sender_item_id": {
                            "type": "string"
                        }
                    },
                    "required": [
                        "amount",
                        "receiver"
                    ]
                }
            },
            "shipping_address": {
                "type": "object",
                "properties": {
                    "recipient_name": {
                        "description": "Name of the recipient at this address. 50 characters max.",
                        "type": "string",
                        "maxLength": 50
                    },
                    "type": {
                        "description": "Address type. Must be one of the following: residential, business, or mailbox.",
                        "type": "string",
                        "enum": [
                            "residential",
                            "business",
                            "mailbox"
                        ]
                    },
                    "line1": {
                        "description": "Line 1 of the address (e.g., Number, street, etc). 100 characters max.",
                        "type": "string",
                        "maxLength": 100
                    },
                    "line2": {
                        "description": "Line 2 of the address (e.g., Suite, apt #, etc). 100 characters max.",
                        "type": "string",
                        "maxLength": 100
                    },
                    "city": {
                        "description": "City name. 50 characters max.",
                        "type": "string",
                        "maxLength": 50
                    },
                    "country_code": {
                        "description": "2-letter country code. 2 characters max",
                        "type": "string",
                        "maxLength": 2,
                        "minLength": 2
                    },
                    "postal_code": {
                        "description": "Zip code or equivalent is usually required for countries that have them. 20 characters max.",
                        "type": "string",
                        "maxLength": 20
                    },
                    "state": {
                        "description": "2-letter code for US states, and the equivalent for other countries. 100 characters max.",
                        "type": "string",
                        "maxLength": 100
                    },
                    "phone": {
                        "description": "Phone number in E.123 format. 50 characters max.",
                        "type": "string",
                        "maxLength": 50
                    }
                },
                "require": [
                    "recipient_name",
                    "line1",
                    "city",
                    "country_code"
                ]
            },
            "item_list": {
                "type": "object",
                "properties": {
                    "items": {
                        "type": "array",
                        "items": {
                            "oneOf": [
                                {
                                    "$ref": "#/paypal/definitions/item"
                                }
                            ]
                        }
                    },
                    "shipping_address": {
                        "$ref": "#/paypal/definitions/shipping_address"
                    }
                }
            },
            "payment_options": {
                "type": "object",
                "properties": {
                    "allowed_payment_method": {
                        "type": "string",
                        "enum": [
                            "INSTANT_FUNDING_SOURCE"
                        ]
                    }
                }
            },
            "item": {
                "type": "object",
                "properties": {
                    "quantity": {
                        "description": "Number of a particular item. 10 characters max.",
                        "type": "string",
                        "maxLength": 10
                    },
                    "name": {
                        "description": "Item name. 127 characters max.",
                        "type": "string",
                        "maxLength": 127
                    },
                    "price": {
                        "description": "Item cost. 10 characters max.",
                        "type": "string",
                        "maxLength": 10
                    },
                    "currency": {
                        "description": "3-letter currency code.",
                        "type": "string",
                        "maxLength": 3
                    },
                    "sku": {
                        "description": "Stock keeping unit corresponding (SKU) to item. 50 characters max.",
                        "type": "string",
                        "maxLength": 50
                    },
                    "description": {
                        "type": "string",
                        "maxLength": 127
                    },
                    "tax": {
                        "type": "string"
                    }
                },
                "required": [
                    "quantity",
                    "name",
                    "price",
                    "currency"
                ]
            },
            "address": {
                "type": "object",
                "properties": {
                    "line1": {
                        "description": "Line 1 of the address (e.g., Number, street, etc). 100 characters max",
                        "type": "string",
                        "maxLength": 100
                    },
                    "line2": {
                        "description": "Line 2 of the address (e.g., Suite, apt #, etc). 100 characters max.",
                        "type": "string",
                        "maxLength": 100
                    },
                    "city": {
                        "description": "City name. 50 characters max.",
                        "type": "string",
                        "maxLength": 50
                    },
                    "country_code": {
                        "description": "2-letter country code. 2 characters max.",
                        "type": "string",
                        "maxLength": 2
                    },
                    "postal_code": {
                        "description": "Zip code or equivalent is usually required for countries that have them. 20 characters max. Required in certain countries.",
                        "type": "string",
                        "maxLength": 20
                    },
                    "state": {
                        "description": "2-letter code for US states, and the equivalent for other countries. 100 characters max.",
                        "type": "string",
                        "maxLength": 100
                    },
                    "phone": {
                        "description": "Phone number in E.123 format.",
                        "type": "string",
                        "maxLength": 50
                    }
                },
                "required": [
                    "line1",
                    "city",
                    "country_code"
                ]
            }
        }
    },
    "properties": {
        "paypal.payment.listPaymentArgs": {
            "$ref": "#/paypal/payment/listPaymentArgs"
        },
        "paypal.payment.paymentList": {
            "$ref": "#/paypal/payment/paymentList"
        },
        "paypal.payment.executePaymentArgs": {
            "$ref": "#/paypal/payment/executePaymentArgs"
        },
        "paypal.payment.transactions": {
            "$ref": "#/paypal/payment/transactions"
        },
        "paypal.payment.payer": {
            "$ref": "#/paypal/payment/payer"
        },
        "paypal.payment.payment": {
            "$ref": "#/paypal/payment/payment"
        },
        "paypal.payment.redirectUrls": {
            "$ref": "#/paypal/payment/redirectUrls"
        },
        "paypal.payouts.senderBatchHeader": {
            "$ref": "#/paypal/payouts/senderBatchHeader"
        },
        "paypal.payouts.payoutItems": {
            "$ref": "#/paypal/payouts/payoutItems"
        },
        "paypal.clientConfig": {
            "$ref": "#/paypal/clientConfig"
        },
        "paypal.payment": {
            "$ref": "#/paypal/definitions/payment"
        },
        "paypal.payer": {
            "$ref": "#/paypal/definitions/payer"
        },
        "paypal.funding_instruments_credit_card": {
            "$ref": "#/paypal/definitions/funding_instruments_credit_card"
        },
        "paypal.funding_instruments_stored_credit_card": {
            "$ref": "#/paypal/definitions/funding_instruments_stored_credit_card"
        },
        "paypal.funding_instruments_credit_card_token": {
            "$ref": "#/paypal/definitions/funding_instruments_credit_card_token"
        },
        "paypal.payer_info": {
            "$ref": "#/paypal/definitions/payer_info"
        },
        "paypal.redirect_urls": {
            "$ref": "#/paypal/definitions/redirect_urls"
        },
        "paypal.transaction": {
            "$ref": "#/paypal/definitions/transaction"
        },
        "paypal.link": {
            "$ref": "#/paypal/definitions/link"
        },
        "paypal.amount": {
            "$ref": "#/paypal/definitions/amount"
        },
        "paypal.payout_item": {
            "$ref": "#/paypal/definitions/payout_item"
        },
        "paypal.shipping_address": {
            "$ref": "#/paypal/definitions/shipping_address"
        },
        "paypal.item_list": {
            "$ref": "#/paypal/definitions/item_list"
        },
        "paypal.payment_options": {
            "$ref": "#/paypal/definitions/payment_options"
        },
        "paypal.item": {
            "$ref": "#/paypal/definitions/item"
        },
        "paypal.address": {
            "$ref": "#/paypal/definitions/address"
        }
    },
    "required": [
        "paypal.payment.listPaymentArgs",
        "paypal.payment.paymentList",
        "paypal.payment.executePaymentArgs",
        "paypal.payment.transactions",
        "paypal.payment.payer",
        "paypal.payment.payment",
        "paypal.payment.redirectUrls",
        "paypal.payouts.senderBatchHeader",
        "paypal.payouts.payoutItems",
        "paypal.clientConfig",
        "paypal.payment",
        "paypal.payer",
        "paypal.funding_instruments_credit_card",
        "paypal.funding_instruments_stored_credit_card",
        "paypal.funding_instruments_credit_card_token",
        "paypal.payer_info",
        "paypal.redirect_urls",
        "paypal.transaction",
        "paypal.link",
        "paypal.amount",
        "paypal.payout_item",
        "paypal.shipping_address",
        "paypal.item_list",
        "paypal.payment_options",
        "paypal.item",
        "paypal.address"
    ]
}