{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
        "purchase": {
            "type": "object",
            "description": "The purchase.",
            "properties": {
                "browserIpAddress": {
                    "type": "string",
                    "description": "The IP Address of the browser that was used to make the  This is the IP Address that was used to connect to your site and make the "
                },
                "shipments": {
                    "type": "array",
                    "description": "The shipments association with this purchase"
                },
                "products": {
                    "type": "array",
                    "description": "The products purchased in the transaction."
                },
                "orderId": {
                    "type": "string",
                    "description": "A string uniquely identifying this order."
                },
                "createdAt": {
                    "type": "string",
                    "description": "`yyyy-MM-dd'T'HH:mm:ssZ` The date and time when the order was placed, shown on the signifyd console. See the Dates section of these docs for more information about date formats."
                },
                "paymentGateway": {
                    "type": "string",
                    "description": "The gateway that processed the transaction. For paypal orders use paypal_account."
                },
                "paymentMethod": {
                    "type": "object",
                    "description": "The method the user used to complete the "
                },
                "transactionId": {
                    "type": "string",
                    "description": "The unique identifier provided by the payment gateway for this order. If you have provided us with credentials for your payment gateway we can obtain additional details about the order, like AVS and CVV status, from your payment provider."
                },
                "currency": {
                    "type": "string",
                    "description": "The currency type of the order, in 3 letter ISO 4217 format. Defaults to USD."
                },
                "avsResponseCode": {
                    "type": "string",
                    "description": "The response code from the address verification system (AVS). Accepted codes: http://www.emsecommerce.net/avs_cvv2_response_codes.htm"
                },
                "cvvResponseCode": {
                    "type": "string",
                    "description": "The response code from the card verification value (CVV) check. Accepted codes listed on above link."
                },
                "orderChannel": {
                    "type": "string",
                    "description": "The method used by the buyer to place the order. Either WEB or PHONE."
                },
                "receivedBy": {
                    "type": "string",
                    "description": "If the order was was taken by a customer service or sales agent, his or her name."
                },
                "totalPrice": {
                    "type": "number",
                    "description": "The total price of the order, including shipping price and taxes."
                }
            },
            "required": [
                "browserIpAddress",
                "orderId",
                "createdAt",
                "avsResponseCode",
                "cvvResponseCode",
                "totalPrice"
            ]
        },
        "recipient": {
            "type": "object",
            "description": "The person receiving the goods.",
            "properties": {
                "fullName": {
                    "type": "string",
                    "description": "The full name of the person receiving the goods. If this item is being shipped, then this field is the person it is being shipping to. Don't assume this name is the same as card.cardHolderName. Only put a value here if the name will actually appear on the shipping label. If this item is digital, then this field will likely be blank."
                },
                "confirmationEmail": {
                    "type": "string",
                    "description": "When this purchase was completed, you likely sent a confirmation email or you will be sending a confirmation email to someone once you approve the order. This is the email address to which that confirmation email will be sent."
                },
                "confirmationPhone": {
                    "type": "string",
                    "description": "The phone number that you would call if there was something wrong with this order or the phone number that was supplied with the shipping information."
                },
                "organization": {
                    "type": "string",
                    "description": "If provided by the buyer, the name of the recipient's company or organization."
                },
                "deliveryAddress": {
                    "type": "object",
                    "description": "The address to which the order will be delivered.",
                    "properties": {
                        "streetAddress": {
                            "type": "string",
                            "description": "The street number and street name."
                        },
                        "unit": {
                            "type": "string",
                            "description": "The unit or apartment number."
                        },
                        "city": {
                            "type": "string",
                            "description": "The city name."
                        },
                        "provinceCode": {
                            "type": "string",
                            "description": "The code or abbreviation for the province."
                        },
                        "postalCode string": {
                            "type": "string",
                            "description": "The postal code."
                        },
                        "countryCode": {
                            "type": "string",
                            "description": "The two-letter ISO-3166 country code. If left blank, we will assume US."
                        },
                        "latitude": {
                            "type": "number",
                            "description": "The latitude of the address. Used when address details are not provided. Ignored otherwise."
                        },
                        "longitude": {
                            "type": "number",
                            "description": "The longitude of the address. Used when address details are not provided. Ignored otherwise."
                        }
                    }
                }
            },
            "required": [
                "fullName",
                "confirmationEmail",
                "deliveryAddress"
            ]
        },
        "card": {
            "type": "object",
            "properties": {
                "cardHolderName": {
                    "type": "string",
                    "description": "The full name on the credit card that was charged."
                },
                "bin": {
                    "type": "number",
                    "description": "The first six digits of the credit card, the bank identification number, which uniquely identifies the issuer."
                },
                "last4": {
                    "type": "string",
                    "description": "The last four digits of the card number."
                },
                "expiryMonth": {
                    "type": "number",
                    "description": "MM representation of the expiration month of the card."
                },
                "expiryYear": {
                    "type": "number",
                    "description": "yyyy representation of the expiration year of the card."
                },
                "billingAddress": {
                    "type": "object",
                    "properties": {
                        "streetAddress": {
                            "type": "string",
                            "description": "The street number and street name."
                        },
                        "unit": {
                            "type": "string",
                            "description": "The unit or apartment number."
                        },
                        "city": {
                            "type": "string",
                            "description": "The city name."
                        },
                        "provinceCode": {
                            "type": "string",
                            "description": "The code or abbreviation for the province."
                        },
                        "postalCode string": {
                            "type": "string",
                            "description": "The postal code."
                        },
                        "countryCode": {
                            "type": "string",
                            "description": "The two-letter ISO-3166 country code. If left blank, we will assume US."
                        },
                        "latitude": {
                            "type": "number",
                            "description": "The latitude of the address. Used when address details are not provided. Ignored otherwise."
                        },
                        "longitude": {
                            "type": "number",
                            "description": "The longitude of the address. Used when address details are not provided. Ignored otherwise."
                        }
                    },
                    "description": "The billing address for the card."
                }
            },
            "required": [
                "cardHolderName",
                "billingAddress"
            ]
        },
        "userAccount": {
            "type": "object",
            "properties": {
                "email": {
                    "type": "string",
                    "description": "The primary email address associated with the account."
                },
                "username": {
                    "type": "string",
                    "description": "The username associated with the account. Please supply this even if it is the same as the email address."
                },
                "phone": {
                    "type": "string",
                    "description": "The phone number association with the account."
                },
                "createdDate": {
                    "type": "string",
                    "description": "`yyyy-MM-dd'T'HH:mm:ssZ` The date when the account was created. See the Dates section of these docs for more information about date formats."
                },
                "accountNumber": {
                    "type": "string",
                    "description": "Your unique identifier for the account."
                },
                "lastOrderId": {
                    "type": "string",
                    "description": "The unique identifier for the last order placed by this account, prior to the current order."
                },
                "aggregateOrderCount": {
                    "type": "number",
                    "description": "The total count of orders placed by this account since it was created, including the current order."
                },
                "aggregateOrderDollars": {
                    "type": "number",
                    "description": "The total amount spent by this account since it was created, including the current order."
                },
                "lastUpdateDate": {
                    "type": "string",
                    "description": "`yyyy-MM-dd'T'HH:mm:ssZ` The last time a change was made to this account other than an order being placed. Examples include changing email addresses or adding a new credit card. See the Dates section of these docs for more information about date formats."
                }
            }
        },
        "seller": {
            "type": "object",
            "properties": {
                "name": {
                    "type": "string",
                    "description": "The business name of the seller."
                },
                "domain": {
                    "type": "string",
                    "description": "The domain of the seller."
                },
                "shipFromAddress": {
                    "type": "object",
                    "properties": {
                        "streetAddress": {
                            "type": "string",
                            "description": "The street number and street name."
                        },
                        "unit": {
                            "type": "string",
                            "description": "The unit or apartment number."
                        },
                        "city": {
                            "type": "string",
                            "description": "The city name."
                        },
                        "provinceCode": {
                            "type": "string",
                            "description": "The code or abbreviation for the province."
                        },
                        "postalCode string": {
                            "type": "string",
                            "description": "The postal code."
                        },
                        "countryCode": {
                            "type": "string",
                            "description": "The two-letter ISO-3166 country code. If left blank, we will assume US."
                        },
                        "latitude": {
                            "type": "number",
                            "description": "The latitude of the address. Used when address details are not provided. Ignored otherwise."
                        },
                        "longitude": {
                            "type": "number",
                            "description": "The longitude of the address. Used when address details are not provided. Ignored otherwise."
                        }
                    },
                    "description": "The location from which the seller shipped the order."
                }
            }
        }
    },
    "required": [
        "purchase",
        "recipient",
        "card"
    ]
}