{
  "swagger": "2.0",
  "info": {
    "title": "Google Standard Payments Google Hosted India Cards API",
    "description": "This includes services hosted by Google for India Cards.",
    "version": "v1"
  },
  "host": "vgw.googleapis.com",
  "basePath": "/secure-serving/gsp",
  "schemes": ["https"],
  "paths": {
    "/google-authenticated-card-fop-api/v1/setAcquirerReferenceNumberForCaptureNotification": {
      "post": {
        "tags": ["vgw"],
        "operationId": "SetAcquirerReferenceNumberForCaptureNotification",
        "description": "Notifies Google of the Acquirer Reference Number (ARN) for a capture. The `acquirerReferenceNumber` value is unique for this `captureFundsReservationRequestId` and cannot be changed by a subsequent call to this method. If a new request is made with a different ARN for the same `captureFundsReservationRequestId` an `HTTP 400` will be returned. This is used to inform Google of the ARN for a capture. This is an identifier that is shared between the issuer, merchant, network and processor. It typically is known to the processor a few days after the capture request was made. This value is also known as a Coupon Code. Providing this value for a capture helps Google respond to chargeback and fraud investigations. If the endpoint encounters an error while processing the request, the endpoint will return HTTP 4xx or 5xx and the HTTP body will either be of type `ErrorResponse` or contain a generic error (e.g. a message similar to \"There was an error. Please try again later.\"). The generic error is used in situations where an `ErrorResponse` with a clear description could be used to help an attacker understand the payment integrator account identifier of other integrators. In these situations, where either the signing key doesn't match, the payment integrator identifier was not found, or the encryption key was unknown, this method will return a generic error. If the request signature could be verified, additional information regarding the error will be returned in an `ErrorResponse`. An example request looks like: { \"requestHeader\": { \"protocolVersion\": { \"major\": 1, \"minor\": 0, \"revision\": 0 }, \"requestId\": \"3d65cecb-db61-4081-8f6f-178dca6c94a6\", \"requestTimestamp\": \"1482192286000\" }, \"paymentIntegratorAccountId\": \"SpeedyPaymentsIndia_INR\", \"captureRequestId\": \"G112YZH4XPDV88J\", \"acquirerReferenceNumber\": \"15714820583910486038403\" } An example response looks like: { \"responseHeader\": { \"responseTimestamp\": \"1482192286743\" }, \"result\": \"SUCCESS\" } ",
        "parameters": [
          {
            "name": "body",
            "description": "The request body.",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/SetAcquirerReferenceNumberForCaptureNotificationRequest"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/SetAcquirerReferenceNumberForCaptureNotificationResponse"
            }
          }
        }
      }
    },
    "/google-authenticated-card-fop-api/v1/setAcquirerReferenceNumberForRefundNotification": {
      "post": {
        "tags": ["vgw"],
        "operationId": "SetAcquirerReferenceNumberForRefundNotification",
        "description": "Notifies Google of the Acquirer Reference Number (ARN) for a refund. The `acquirerReferenceNumber` value is unique for this `refundRequestId` and cannot be changed by a subsequent call to this method. If a new request is made with a different ARN for the same `refundRequestId` an `HTTP 400` will be returned. This is used to inform Google for the ARN for this refund. This is an identifier that is shared between the issuer, merchant, network and processor. It typically is known to the processor a few days after the refund request was made. Providing this value for a refund helps Google correctly handle requests involving the refund. If the endpoint encounters an error while processing the request, the endpoint will return HTTP 4xx or 5xx and the HTTP body will either be of type `ErrorResponse` or contain a generic error (e.g. a message similar to \"There was an error. Please try again later.\"). The generic error is used in situations where an `ErrorResponse` with a clear description could be used to help an attacker understand the payment integrator account identifier of other integrators. In these situations, where either the signing key doesn't match, the payment integrator identifier was not found, or the encryption key was unknown, this method will return a generic error. If the request signature could be verified, additional information regarding the error will be returned in an `ErrorResponse`. An example request looks like: { \"requestHeader\": { \"protocolVersion\": { \"major\": 1, \"minor\": 0, \"revision\": 0 }, \"requestId\": \"b7256a33-864d-40cb-84be-7ad2482cf25a\", \"requestTimestamp\": \"1482797086000\" }, \"paymentIntegratorAccountId\": \"SpeedyPaymentsIndia_INR\", \"refundRequestId\": \"G18FCDTLD5B0SR4\", \"acquirerReferenceNumber\": \"74896130957836587146723\" } An example response looks like: { \"responseHeader\": { \"responseTimestamp\": \"1482797086918\" }, \"result\": \"SUCCESS\" } ",
        "parameters": [
          {
            "name": "body",
            "description": "The request body.",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/SetAcquirerReferenceNumberForRefundNotificationRequest"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/SetAcquirerReferenceNumberForRefundNotificationResponse"
            }
          }
        }
      }
    },
    "/google-authenticated-card-fop-api/v1/refundResultNotification": {
      "post": {
        "tags": ["vgw"],
        "operationId": "RefundResultNotification",
        "description": "Notifies Google of the final result of an `asynchronousRefund` request. The `refundResult` value is idempotent for this `refundRequestId` and cannot be changed by a subsequent call to this method. If the endpoint encounters an error while processing the request, the endpoint will return HTTP 4xx or 5xx and the HTTP body will either be of type `ErrorResponse` or contain a generic error (e.g. a message similar to \"There was an error. Please try again later.\"). The generic error is used in situations where an `ErrorResponse` with a clear description could be used to help an attacker understand the payment integrator account identifier of other integrators. In these situations, where either the signing key doesn't match, the payment integrator identifier was not found, or the encryption key was unknown, this method will return a generic error. If the request signature could be verified, additional information regarding the error will be returned in an `ErrorResponse`. An example request looks like: { \"requestHeader\": { \"protocolVersion\": { \"major\": 1 }, \"requestId\": \"8a986fe8-5a2c-45a4-a1bb-3bed6e651020\", \"requestTimestamp\": { \"epochMillis\": 1482452962000 }, \"paymentIntegratorAccountId\": \"SpeedyPaymentsIndia_INR\" }, \"paymentIntegratorRefundId\": \"UJ97F3RY8R\", \"refundRequestId\": \"liUrreQY233839dfFFb24gaQM\", \"result\": { \"success\": {} }, \"rawResult\": { \"scope\": \"VISA\", \"rawCode\": \"00\" } } An example response looks like: { \"responseHeader\": { \"responseTimestamp\": { \"epochMillis\": 1482452962840 } }, \"result\": { \"accepted\": {} } } ",
        "parameters": [
          {
            "name": "body",
            "description": "The request body.",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/RefundResultNotificationRequest"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/RefundResultNotificationResponse"
            }
          }
        }
      }
    },
    "/google-authenticated-card-fop-api/v1/reverseRefundNotification": {
      "post": {
        "tags": ["vgw"],
        "operationId": "ReverseRefundNotification",
        "description": "Notifies Google of a refund that is being reversed. This signifies that a previously successful refund is being reversed and funds are being returned to Google by the issuer. If the endpoint encounters an error while processing the request, the endpoint will return HTTP 4xx or 5xx and the HTTP body will either be of type `ErrorResponse` or contain a generic error (e.g. a message similar to \"There was an error. Please try again later.\"). The generic error is used in situations where an `ErrorResponse` with a clear description could be used to help an attacker understand the payment integrator account identifier of other integrators. In these situations, where either the signing key doesn't match, the payment integrator identifier was not found, or the encryption key was unknown, this method will return a generic error. If the request signature could be verified, additional information regarding the error will be returned in an `ErrorResponse`. An example request looks like: { \"requestHeader\": { \"protocolVersion\": { \"major\": 1 }, \"requestId\": \"9e4a71df-bf46-44fb-8cad-f1b533e94a78\", \"requestTimestamp\": { \"epochMillis\": 1483711327000 }, \"paymentIntegratorAccountId\": \"SpeedyPaymentsIndia_INR\" }, \"refundRequestId\": \"8a986fe8-5a2c-45a4-a1bb-3bed6e651020\", \"amount\": \"54390000\", \"rawResult\": { \"scope\": \"VISA\", \"rawCode\": \"07\" } } An example response looks like: { \"responseHeader\": { \"responseTimestamp\": { \"epochMillis\": 1483711328235 } }, \"result\": \"SUCCESS\" } ",
        "parameters": [
          {
            "name": "body",
            "description": "The request body.",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/ReverseRefundNotificationRequest"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/ReverseRefundNotificationResponse"
            }
          }
        }
      }
    },
    "/google-authenticated-card-fop-api/v1/inquiryNotification": {
      "post": {
        "tags": ["vgw"],
        "operationId": "InquiryNotification",
        "description": "Notifies Google of a request for inquiry into a transaction. This signifies a user is contesting a payment but the issuer is requesting more information before deciding whether to issue a chargeback or not. No money movement occurs as a result of this call. Google may send details about the payment to the integrator to prove validity. If the endpoint encounters an error while processing the request, the endpoint will return HTTP 4xx or 5xx and the HTTP body will either be of type `ErrorResponse` or contain a generic error (e.g. a message similar to \"There was an error. Please try again later.\"). The generic error is used in situations where an `ErrorResponse` with a clear description could be used to help an attacker understand the payment integrator account identifier of other integrators. In these situations, where either the signing key doesn't match, the payment integrator identifier was not found, or the encryption key was unknown, this method will return a generic error. If the request signature could be verified, additional information regarding the error will be returned in an `ErrorResponse`. An example request looks like: { \"requestHeader\": { \"protocolVersion\": { \"major\": 1, \"minor\": 0, \"revision\": 0 }, \"requestId\": \"6bbeb443-7ebf-4307-9c5d-259534b1aede\", \"requestTimestamp\": \"1483711327000\" }, \"paymentIntegratorAccountId\": \"SpeedyPaymentsIndia_INR\", \"captureRequestId\": \"G112YZH4XPDV88J\", \"amount\": \"728000000\", \"reasonCode\": \"INCORRECT_MERCHANDISE\", \"rawResult\": { \"scope\": \"VISA\", \"rawCode\": \"04\" }, \"inquiryDate\": \"1481846400000\", \"replyByDate\": \"1487203200000\", \"caseId\": \"G-4732-1352-123\" } An example response looks like: { \"responseHeader\": { \"responseTimestamp\": \"1483711328134\" }, \"result\": \"SUCCESS\" } ",
        "parameters": [
          {
            "name": "body",
            "description": "The request body.",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/InquiryNotificationRequest"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/InquiryNotificationResponse"
            }
          }
        }
      }
    },
    "/google-authenticated-card-fop-api/v1/chargebackNotification": {
      "post": {
        "tags": ["vgw"],
        "operationId": "ChargebackNotification",
        "description": "Notifies Google that a chargeback is being issued for a payment. This signifies a user is contesting a payment and the issuer has decided to issue a chargeback. When the request is made it signifies that the user is being reimbursed by the issuer and will recover those funds either from the integrator or from Google. *Key Point:* These chargebacks can be challenged by Google through the documented representment process. If the endpoint encounters an error while processing the request, the endpoint will return HTTP 4xx or 5xx and the HTTP body will either be of type `ErrorResponse` or contain a generic error (e.g. a message similar to \"There was an error. Please try again later.\"). The generic error is used in situations where an `ErrorResponse` with a clear description could be used to help an attacker understand the payment integrator account identifier of other integrators. In these situations, where either the signing key doesn't match, the payment integrator identifier was not found, or the encryption key was unknown, this method will return a generic error. If the request signature could be verified, additional information regarding the error will be returned in an `ErrorResponse`. An example request looks like: { \"requestHeader\": { \"protocolVersion\": { \"major\": 1, \"minor\": 0, \"revision\": 0 }, \"requestId\": \"fe640ae3-d9af-4075-90a1-7b90f436b3c0\", \"requestTimestamp\": \"1484584747000\" }, \"paymentIntegratorAccountId\": \"SpeedyPaymentsIndia_INR\", \"captureRequestId\": \"G112YZH4XPDV88J\", \"amount\": \"728000000\", \"chargebackStage\": \"FIRST\", \"reasonCode\": \"INCORRECT_MERCHANDISE\", \"rawResult\": { \"scope\": \"VISA\", \"rawCode\": \"04\" }, \"chargebackDate\": \"1483574400000\", \"replyByDate\": \"1491350400000\", \"caseId\": \"G-7832-13512\" } An example response looks like: { \"responseHeader\": { \"responseTimestamp\": \"1484584747598\" }, \"result\": \"SUCCESS\" } ",
        "parameters": [
          {
            "name": "body",
            "description": "The request body.",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/ChargebackNotificationRequest"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/ChargebackNotificationResponse"
            }
          }
        }
      }
    },
    "/google-authenticated-card-fop-api/v1/chargebackReversedNotification": {
      "post": {
        "tags": ["vgw"],
        "operationId": "ChargebackReversedNotification",
        "description": "Notifies Google that a chargeback is being reversed. This signifies the reversal of a chargeback. This means Google won the dispute and the funds taken with the chargeback can be represented to Google. If this was the first chargeback for a transaction the user or issuer may request a second chargeback with new or additional information. If the endpoint encounters an error while processing the request, the endpoint will return HTTP 4xx or 5xx and the HTTP body will either be of type `ErrorResponse` or contain a generic error (e.g. a message similar to \"There was an error. Please try again later.\"). The generic error is used in situations where an `ErrorResponse` with a clear description could be used to help an attacker understand the payment integrator account identifier of other integrators. In these situations, where either the signing key doesn't match, the payment integrator identifier was not found, or the encryption key was unknown, this method will return a generic error. If the request signature could be verified, additional information regarding the error will be returned in an `ErrorResponse`. An example request looks like: { \"requestHeader\": { \"protocolVersion\": { \"major\": 1, \"minor\": 0, \"revision\": 0 }, \"requestId\": \"8de12c67-6458-4a8a-b3d5-a10ecdbb3354\", \"requestTimestamp\": \"1488722866000\" }, \"paymentIntegratorAccountId\": \"SpeedyPaymentsIndia_INR\", \"chargebackRequestId\": \"fe640ae3-d9af-4075-90a1-7b90f436b3c0\", \"amount\": \"728000000\", \"rawResult\": { \"scope\": \"VISA\", \"rawCode\": \"03\" }, \"chargebackReversalDate\": \"1488585600000\" } An example response looks like: { \"responseHeader\": { \"responseTimestamp\": \"1488722868230\" }, \"result\": \"SUCCESS\" } ",
        "parameters": [
          {
            "name": "body",
            "description": "The request body.",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/ChargebackReversedNotificationRequest"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/ChargebackReversedNotificationResponse"
            }
          }
        }
      }
    },
    "/v2/echo": {
      "post": {
        "tags": ["vgw"],
        "operationId": "Echo",
        "description": "Echos back a string sent from the client. If the echo is successful, the endpoint will return an HTTP 200 and the response will be of type `EchoResponse`. If the endpoint encounters an error while processing the request, the endpoint will return HTTP 4xx or 5xx and the HTTP body will either be of type `ErrorResponse` or contain a generic error (e.g. a message similar to \"There was an error. Please try again later.\"). The generic error is used in situations where an `ErrorResponse` with a clear description could be used to help an attacker understand the payment integrator account identifier of other integrators. In these situations, where either the signing key doesn't match, the payment integrator identifier was not found, or the encryption key was unknown, this method will return a generic error. If the request signature could be verified, additional information regarding the error will be returned in an `ErrorResponse`. An example request looks like: { \"requestHeader\": { \"protocolVersion\": { \"major\": 1 }, \"requestId\": \"G1MQ0YERJ0Q7LPM\", \"requestTimestamp\": { \"epochMillis\": \"1481899949606\" }, \"paymentIntegratorAccountId\": \"InvisiCashUSA_USD\" }, \"clientMessage\": \"Client echo message\" } An example success response looks like: { \"responseHeader\": { \"responseTimestamp\": { \"epochMillis\":\"1481899950236\" } }, \"clientMessage\": \"Client echo message\", \"serverMessage\": \"Debug ID 12345\" } ",
        "parameters": [
          {
            "name": "body",
            "description": "The request body.",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/EchoRequest"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/EchoResponse"
            }
          }
        }
      }
    },
    "/google-authenticated-card-fop-api/v1/fraudNotification": {
      "post": {
        "tags": ["vgw"],
        "operationId": "FraudNotification",
        "description": "Notifies Google of a fraud dispute initiated by a customer. It is recommended that Google is notified of all potential fraud that has occurred. A call to this method might be accompanied by a `chargebackNotification` or `inquiryNotification` Fraud can occur without a chargeback and a chargeback can occur without fraud. The information provided to this method does not initiate any money movement. It is used only to update Google's internal risk engine to reduce overall fraud. Google does not respond to this request with any information about the transaction. If the endpoint encounters an error while processing the request, the endpoint will return HTTP 4xx or 5xx and the HTTP body will either be of type `ErrorResponse` or contain a generic error (e.g. a message similar to \"There was an error. Please try again later.\"). The generic error is used in situations where an `ErrorResponse` with a clear description could be used to help an attacker understand the payment integrator account identifier of other integrators. In these situations, where either the signing key doesn't match, the payment integrator identifier was not found, or the encryption key was unknown, this method will return a generic error. If the request signature could be verified, additional information regarding the error will be returned in an `ErrorResponse`. An example request looks like: { \"requestHeader\": { \"protocolVersion\": { \"major\": 1, \"minor\": 0, \"revision\": 0 }, \"requestId\": \"f3b6cffe-6fa0-4c33-84b5-7ff8d1ac9ecc\", \"requestTimestamp\": \"1483532962000\" }, \"paymentIntegratorAccountId\": \"SpeedyPaymentsIndia_INR\", \"captureRequestId\": \"G112YZH4XPDV88J\", \"fraudType\": \"FRAUDULENT_USE\", \"rawResult\": { \"scope\": \"VISA\", \"rawCode\": \"06\" } } An example response looks like: { \"responseHeader\": { \"responseTimestamp\": \"1483532962349\" }, \"result\": \"SUCCESS\" } ",
        "parameters": [
          {
            "name": "body",
            "description": "The request body.",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/FraudNotificationRequest"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/FraudNotificationResponse"
            }
          }
        }
      }
    },
    "/v1/settlementNotification": {
      "post": {
        "tags": ["vgw"],
        "operationId": "SettlementNotification",
        "description": "Informs Google that a set of events will be net settled in bulk into a Google bank account. If the endpoint encounters an error while processing the request, the endpoint will return HTTP 4xx or 5xx and the HTTP body will either be of type `ErrorResponse` or contain a generic error (e.g. a message similar to \"There was an error. Please try again later.\"). The generic error is used in situations where an `ErrorResponse` with a clear description could be used to help an attacker understand the payment integrator account identifier of other integrators. In these situations, where either the signing key doesn't match, the payment integrator identifier was not found, or the encryption key was unknown, this method will return a generic error. If the request signature could be verified, additional information regarding the error will be returned in an `ErrorResponse`. An example request looks like: { \"requestHeader\": { \"protocolVersion\": { \"major\": 1 }, \"requestId\": \"statement_detail_request_139932019\", \"requestTimestamp\":{ \"epochMillis\": \"1502551332087\" }, \"paymentIntegratorAccountId\": \"InvisiCashUSA_USD\" }, \"generatedTimestamp\": { \"epochMillis\": \"1481899949606\" }, \"settlementPeriod\": { \"start\": { \"epochMillis\": \"1481892949606\" }, \"end\": { \"epochMillis\": \"1481899949606\" } }, \"settlementAmount\": { \"amountMicros\": \"836000\", \"currencyCode\": \"USD\" }, \"settlementId\": \"STL_423JRE41\", \"notificationOffset\": 0, \"notificationTotal\": 2, \"captureEvents\": [ { \"captureRequestId\": \"076c1924-e8b3-4168-b456-363f72f5d7f1\", \"paymentIntegratorCaptureId\": \"12439VSDERA4\", \"eventCharge\": { \"amountMicros\": \"2000000\", \"currencyCode\": \"USD\" }, \"eventFee\": { \"amountMicros\": \"-60000\", \"currencyCode\": \"USD\" }, \"eventVat\": { \"amountMicros\": \"-20000\", \"currencyCode\": \"USD\" }, \"eventFeeBreakdown\": { \"feeDetails\": [ { \"unitFee\": { \"amountMicros\": \"-20000\", \"currencyCode\": \"USD\" }, \"feeAssessmentSource\": { \"scheme\": {} }, \"feeType\": { \"authorization\": {} }, \"feeCategory\": \"IA\", \"feeSubCategory\": \"ASSESSMENT_FEES\", \"feeDescription\": \"MC Connectivity Fee\" }, { \"unitFee\": { \"amountMicros\": \"-20000\", \"currencyCode\": \"USD\" }, \"feeAssessmentSource\": { \"contract\": {} }, \"feeType\": { \"authorization\": {} }, \"feeCategory\": \"PFEE\", \"feeSubCategory\": \"AUTHORIZATION_FEES\", \"feeDescription\": \"Online Authorization\" }, { \"unitFee\": { \"amountMicros\": \"-20000\", \"currencyCode\": \"USD\" }, \"feeAssessmentSource\": { \"interchange\": { \"interchangeCode\": \"MIS\", \"interchangeQualification\": \"MasterCard International Standard\" } }, \"feeType\": { \"capture\": {} }, \"feeCategory\": \"IA\", \"feeSubCategory\": \"INTERCHANGE_FEES\", \"feeDescription\": \"Interchange\" } ] } }, { \"captureRequestId\": \"5cbbb5d7-523d-443e-86ef-8a480e5547c1\", \"paymentIntegratorCaptureId\": \"H4ARKL3431\", \"eventCharge\": { \"amountMicros\": \"2990000\", \"currencyCode\": \"USD\" }, \"eventFee\": { \"amountMicros\": \"-63000\", \"currencyCode\": \"USD\" }, \"eventVat\": { \"amountMicros\": \"-21000\", \"currencyCode\": \"USD\" }, \"eventFeeBreakdown\": { \"feeDetails\": [ { \"unitFee\": { \"amountMicros\": \"-21000\", \"currencyCode\": \"USD\" }, \"feeAssessmentSource\": { \"contract\": {} }, \"feeType\": { \"capture\": {} }, \"feeCategory\": \"PFEE\", \"feeSubCategory\": \"DEPOSIT_FEES\", \"feeDescription\": \"Settled Dep. Fee\" }, { \"unitFee\": { \"amountMicros\": \"-21000\", \"currencyCode\": \"USD\" }, \"feeAssessmentSource\": { \"interchange\": { \"interchangeCode\": \"MM1P\", \"interchangeQualification\": \"MC AVS Card Not Present Fee\" } }, \"feeType\": { \"authorization\": {} }, \"feeCategory\": \"IA\", \"feeSubCategory\": \"INTERCHANGE_FEES\", \"feeDescription\": \"Interchange\" }, { \"unitFee\": { \"amountMicros\": \"-21000\", \"currencyCode\": \"USD\" }, \"feeAssessmentSource\": { \"interchange\": { \"interchangeCode\": \"MM1P\", \"interchangeQualification\": \"MC Reporting&Infrastructure\" } }, \"feeType\": { \"capture\": {} }, \"feeCategory\": \"IA\", \"feeSubCategory\": \"INTERCHANGE_FEES\", \"feeDescription\": \"Interchange\" } ] } } ], \"refundEvents\": [ { \"asynchronousRefundRequestId\": \"17f76596-2ba5-4acf-806d-d6f72a70c89d\", \"paymentIntegratorRefundId\": \"4378VS143UH\", \"eventCharge\": { \"amountMicros\": \"-1990000\", \"currencyCode\": \"USD\" }, \"eventFee\": { \"amountMicros\": \"0\", \"currencyCode\": \"USD\" }, \"eventVat\": { \"amountMicros\": \"0\", \"currencyCode\": \"USD\" } } ], \"reverseRefundEvents\": [], \"chargebackEvents\": [], \"reverseChargebackEvents\": [], \"aggregateAdjustments\": [ { \"adjustmentAmount\": { \"amountMicros\": \"-2000000\", \"currencyCode\": \"USD\" }, \"adjustmentType\": { \"chargebackThresholdFine\": {} } } ] } An example success response looks like: { \"responseHeader\": { \"responseTimestamp\": { \"epochMillis\": \"1481899950236\" } }, \"result\": { \"accepted\": {} } } ",
        "parameters": [
          {
            "name": "body",
            "description": "The request body.",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/SettlementNotificationRequest"
            }
          }
        ],
        "responses": {
          "default": {
            "description": "Successful operation",
            "schema": {
              "$ref": "#/definitions/SettlementNotificationResponse"
            }
          }
        }
      }
    }
  },
  "definitions": {
    "SetAcquirerReferenceNumberForCaptureNotificationRequest": {
      "description": "Request object for the Google hosted SetAcquirerReferenceNumberNotificationForCaptureNotification method.",
      "type": "object",
      "properties": {
        "requestHeader": {
          "description": "**REQUIRED**: Common header for all responses.",
          "$ref": "#/definitions/V1RequestHeader"
        },
        "paymentIntegratorAccountId": {
          "description": "**REQUIRED**: This is the payment integrator account identifier that identifies contractual constraints around this transaction.",
          "type": "string"
        },
        "captureRequestId": {
          "description": "**REQUIRED**: A unique identifier for the transaction to associate this ARN with. This is the `requestId` generated by Google during the `captureFundsReservation` or `capture` which this request is associated with.",
          "type": "string"
        },
        "acquirerReferenceNumber": {
          "description": "**REQUIRED**: The acquirer generated reference number for the capture. This number is an identifier that is shared between the issuer, processor, network and merchant. It can be used to uniquely identify a transaction.",
          "type": "string"
        }
      }
    },
    "V1RequestHeader": {
      "description": "Header object that is defined on all requests sent to the server.",
      "type": "object",
      "properties": {
        "requestId": {
          "description": "**REQUIRED**: Unique identifier of this request. This is a string that has a max length of 100 characters, and contains only the characters \"a-z\", \"A-Z\", \"0-9\", \":\", \"-\", and \"_\".",
          "type": "string"
        },
        "requestTimestamp": {
          "description": "**REQUIRED**: Timestamp of this request represented as milliseconds since epoch. The receiver should verify that this timestamp is \u00B1 60s of 'now'. This request timestamp is not idempotent upon retries.",
          "type": "string",
          "format": "int64"
        },
        "userLocale": {
          "description": "**DEPRECATED**: A two- or three-letter ISO 639-2 Alpha 3 language code optionally followed by a hyphen and an ISO 3166-1 Alpha-2 country code, e.g.'pt', 'pt-BR', 'fil', or 'fil-PH'. Use this to help drive the `userMessage` fields in the response.",
          "type": "string"
        },
        "protocolVersion": {
          "description": "**REQUIRED**: The version of this request.",
          "$ref": "#/definitions/V1Version"
        }
      }
    },
    "V1Version": {
      "description": "Version object which is a structured form of the classic `a.b.c` version structure. Major versions of the same number are guaranteed to be compatible. Note that minor and revisions can change frequently and without notice. The integrator must support all requests for the same major version.",
      "type": "object",
      "properties": {
        "major": {
          "description": "**REQUIRED**: Major version. This is marked for compatibility requests with different versions are not guaranteed to be compatible.",
          "type": "integer",
          "format": "int32"
        },
        "minor": {
          "description": "**REQUIRED**: Minor version. This denotes significant bug fixes.",
          "type": "integer",
          "format": "int32"
        },
        "revision": {
          "description": "**REQUIRED**: Minor version. This denotes minor bug fixes.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "SetAcquirerReferenceNumberForCaptureNotificationResponse": {
      "description": "Response object for the Google hosted SetAcquirerReferenceNumberNotificationForCaptureNotification method.",
      "type": "object",
      "properties": {
        "responseHeader": {
          "description": "**REQUIRED**: Common header for all responses.",
          "$ref": "#/definitions/V1ResponseHeader"
        },
        "result": {
          "description": "**REQUIRED**: Result of this call.",
          "type": "string",
          "enum": [
            "SET_ACQUIRER_REFERENCE_NUMBER_FOR_CAPTURE_NOTIFICATION_RESULT_CODE_UNSPECIFIED",
            "SUCCESS"
          ]
        }
      }
    },
    "V1ResponseHeader": {
      "description": "Header object that is defined on all responses sent from the server.",
      "type": "object",
      "properties": {
        "responseTimestamp": {
          "description": "**REQUIRED**: Timestamp of this response represented as milliseconds since epoch. The receiver should verify that this timestamp is \u00B1 60s of 'now'.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "V1ErrorResponse": {
      "description": "Error Response object for all methods.",
      "type": "object",
      "properties": {
        "responseHeader": {
          "description": "**REQUIRED**: Common header for all responses.",
          "$ref": "#/definitions/V1ResponseHeader"
        },
        "errorResponseCode": {
          "description": "**OPTIONAL**: A code that captures the type of error that occurred.",
          "type": "string",
          "enum": [
            "UNKNOWN_ERROR_RESPONSE_CODE",
            "INVALID_API_VERSION",
            "INVALID_PAYLOAD_SIGNATURE",
            "INVALID_PAYLOAD_ENCRYPTION",
            "REQUEST_TIMESTAMP_OUT_OF_RANGE",
            "INVALID_IDENTIFIER",
            "IDEMPOTENCY_VIOLATION",
            "INVALID_FIELD_VALUE",
            "MISSING_REQUIRED_FIELD",
            "PRECONDITION_VIOLATION",
            "USER_ACTION_IN_PROGRESS",
            "INVALID_DECRYPTED_REQUEST",
            "FORBIDDEN"
          ]
        },
        "errorDescription": {
          "description": "**OPTIONAL**: Provide a description of this status for support reps to debug errors. Note that this is never shown to users. It can contain descriptive, non-sensitive text used for debugging. Note that some values for errorResponseCode should be accompanied by additional detail in this field. For example, `INVALID_IDENTIFIER` should be accompanied by information in this field as to which type of identifier was invalid. Warning: Do not include any tokens in this message unless they are defined as public.",
          "type": "string"
        },
        "paymentIntegratorErrorIdentifier": {
          "description": "**OPTIONAL**: This identifier is specific to the integrator and is generated by the integrator. It is used for debugging purposes only in order to identify this call. This is the identifier that the integrator knows this call by.",
          "type": "string"
        }
      }
    },
    "SetAcquirerReferenceNumberForRefundNotificationRequest": {
      "description": "Request object for the Google hosted SetAcquirerReferenceNumberNotificationForRefundNotification method.",
      "type": "object",
      "properties": {
        "requestHeader": {
          "description": "**REQUIRED**: Common header for all responses.",
          "$ref": "#/definitions/V1RequestHeader"
        },
        "paymentIntegratorAccountId": {
          "description": "**REQUIRED**: This is the payment integrator account identifier that identifies contractual constraints around this transaction.",
          "type": "string"
        },
        "refundRequestId": {
          "description": "**REQUIRED**: A unique identifier for the transaction to associate this ARN with. This is the `requestId` generated by Google during the `asynchronousRefund` call for the refund.",
          "type": "string"
        },
        "acquirerReferenceNumber": {
          "description": "**REQUIRED**: The acquirer generated reference number for the refund. This number is an identifier that is shared between the issuer, processor, network and merchant. It can be used to uniquely identify a transaction.",
          "type": "string"
        }
      }
    },
    "SetAcquirerReferenceNumberForRefundNotificationResponse": {
      "description": "Response object for the Google hosted SetAcquirerReferenceNumberNotificationForRefundNotification method.",
      "type": "object",
      "properties": {
        "responseHeader": {
          "description": "**REQUIRED**: Common header for all responses.",
          "$ref": "#/definitions/V1ResponseHeader"
        },
        "result": {
          "description": "**REQUIRED**: Result of this call.",
          "type": "string",
          "enum": [
            "SET_ACQUIRER_REFERENCE_NUMBER_FOR_REFUND_NOTIFICATION_RESULT_CODE_UNSPECIFIED",
            "SUCCESS"
          ]
        }
      }
    },
    "RefundResultNotificationRequest": {
      "description": "Request object for the Google hosted RefundNotification method.",
      "type": "object",
      "properties": {
        "requestHeader": {
          "description": "**REQUIRED**: Common header for all requests.",
          "$ref": "#/definitions/V2RequestHeader"
        },
        "paymentIntegratorRefundId": {
          "description": "**OPTIONAL**: This identifier is specific to the integrator and is generated by the integrator. The integrator identifies this refund in their system by this identifier. For convenience, this identifier is included with in the remittance details",
          "type": "string"
        },
        "refundRequestId": {
          "description": "**REQUIRED**: A unique identifier for the refund. This is the `requestId` generated by Google during the `asynchronousRefund` call which this request is associated with.",
          "type": "string"
        },
        "result": {
          "description": "**REQUIRED**: Result of this refund.",
          "$ref": "#/definitions/RefundResultNotificationRequestRefundResult"
        },
        "rawResult": {
          "description": "**OPTIONAL**: Raw result of this refund. Used to help inform Google's risk engine and analytics. In decline code\u2013mapping situations, data is sometimes lost. The integrator can choose to give Google a raw code. For example, a credit card gateway (the integrator) may use this field to communicate to Google the exact decline code that was received from the VISA network. In that case, the `scope` would be \"visa\" and the `rawCode` would be whatever the VISA network returned. This value is **required** if the `result` is not `SUCCESS`.",
          "$ref": "#/definitions/V2RawResult"
        }
      }
    },
    "V2RequestHeader": {
      "description": "Header object that is defined on all requests sent to the server.",
      "type": "object",
      "properties": {
        "requestId": {
          "description": "**REQUIRED**: Unique identifier of this request. This is a string that has a max length of 100 characters, and contains only the characters \"a-z\", \"A-Z\", \"0-9\", \":\", \"-\", and \"_\".",
          "type": "string"
        },
        "requestTimestamp": {
          "description": "**REQUIRED**: Timestamp of this request. The receiver must verify that this timestamp is \u00B1 60s of 'now', and reject the request if it is not. This request timestamp is not idempotent upon retries.",
          "$ref": "#/definitions/Timestamp"
        },
        "protocolVersion": {
          "description": "**REQUIRED**: The version of this request.",
          "$ref": "#/definitions/V2Version"
        },
        "paymentIntegratorAccountId": {
          "description": "**REQUIRED**: Identifies a unique account with contractual constraints.",
          "type": "string"
        }
      }
    },
    "Timestamp": {
      "description": "A timestamp object representing a point on the ISO timeline in milliseconds since the Unix epoch.",
      "type": "object",
      "properties": {
        "epochMillis": {
          "description": "**REQUIRED**: Milliseconds since the Unix epoch",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "V2Version": {
      "description": "Version object contains the major version of the API. Versions of the same major version are guaranteed to be compatible. The integrator must support all requests for the same major version.",
      "type": "object",
      "properties": {
        "major": {
          "description": "**REQUIRED**: Major version. This is marked for compatibility requests with different versions are not guaranteed to be compatible.",
          "type": "integer",
          "format": "int32"
        }
      }
    },
    "RefundResultNotificationRequestRefundResult": {
      "description": "Result codes for refunds.",
      "type": "object",
      "properties": {
        "success": {
          "description": "Successful refund.",
          "$ref": "#/definitions/Empty"
        },
        "accountClosed": {
          "description": "The account held with the integrator has been closed.",
          "$ref": "#/definitions/AccountClosed"
        },
        "accountClosedAccountTakenOver": {
          "description": "The user's account with the integrator has been closed, suspected account take over.",
          "$ref": "#/definitions/AccountClosedAccountTakenOver"
        },
        "accountClosedFraud": {
          "description": "The user's account held with the integrator has been closed because of fraud.",
          "$ref": "#/definitions/AccountClosedFraud"
        },
        "accountOnHold": {
          "description": "The user's account is currently on hold and cannot accept the refund, but the user's account may later be able to accept the refund. Google may request another refund in the future, but will do so with a new `requestId`, so this request should be considered finished.",
          "$ref": "#/definitions/AccountOnHold"
        },
        "refundExceedsMaximumBalance": {
          "description": "The refund cannot be processed at the current time, because doing so would cause the user's balance to exceed the maximum allowed amount. Google may request another refund in the future, but will do so with a new `requestId`, so this request should be considered finished.",
          "$ref": "#/definitions/RefundExceedsMaximumBalance"
        },
        "refundAmountBelowLimit": {
          "description": "The refund amount is below the minimum refund limit.",
          "$ref": "#/definitions/RefundAmountBelowLimit"
        },
        "refundWindowExceeded": {
          "description": "The refund cannot be processed because the request is outside of the allowed refund period.",
          "$ref": "#/definitions/RefundWindowExceeded"
        }
      }
    },
    "Empty": {
      "description": " This object is used for extensibility because booleans and enumerations often need to be extended with extra data. The implementer uses it to determine presence. The enumeration this represents may be extended to contain data in future versions. The JSON representation for `Empty` is empty JSON object `{}`.",
      "type": "object",
      "properties": {
      }
    },
    "AccountClosed": {
      "description": "The user's account held with the integrator has been closed.",
      "type": "object",
      "properties": {
        "rawResult": {
          "description": "**OPTIONAL**: Raw result of this event. Used to help inform Google's risk engine and analytics. In decline code\u2013mapping situations, data is sometimes lost. The integrator can choose to give Google a raw code. For example, a credit card gateway (the integrator) may use this field to communicate to Google the exact decline code that was received from the VISA network. In that case, the `scope` would be \"visa\" and the `rawCode` would be whatever the VISA network returned.",
          "$ref": "#/definitions/V2RawResult"
        }
      }
    },
    "V2RawResult": {
      "description": "Raw result object.",
      "type": "object",
      "properties": {
        "scope": {
          "description": "**OPTIONAL**: Scope of the raw_code, can be empty.",
          "type": "string"
        },
        "rawCode": {
          "description": "**REQUIRED**: Raw code from the integrator or subsystems within it.",
          "type": "string"
        }
      }
    },
    "AccountClosedAccountTakenOver": {
      "description": "The user's account with the integrator has been closed, suspected account take over.",
      "type": "object",
      "properties": {
        "rawResult": {
          "description": "**OPTIONAL**: Raw result of this event. Used to help inform Google's risk engine and analytics. In decline code\u2013mapping situations, data is sometimes lost. The integrator can choose to give Google a raw code. For example, a credit card gateway (the integrator) may use this field to communicate to Google the exact decline code that was received from the VISA network. In that case, the `scope` would be \"visa\" and the `rawCode` would be whatever the VISA network returned.",
          "$ref": "#/definitions/V2RawResult"
        }
      }
    },
    "AccountClosedFraud": {
      "description": "The user's account held with the integrator has been closed because of fraud.",
      "type": "object",
      "properties": {
        "rawResult": {
          "description": "**OPTIONAL**: Raw result of this event. Used to help inform Google's risk engine and analytics. In decline code\u2013mapping situations, data is sometimes lost. The integrator can choose to give Google a raw code. For example, a credit card gateway (the integrator) may use this field to communicate to Google the exact decline code that was received from the VISA network. In that case, the `scope` would be \"visa\" and the `rawCode` would be whatever the VISA network returned.",
          "$ref": "#/definitions/V2RawResult"
        }
      }
    },
    "AccountOnHold": {
      "description": "The account is on hold.",
      "type": "object",
      "properties": {
        "rawResult": {
          "description": "**OPTIONAL**: Raw result of this event. Used to help inform Google's risk engine and analytics. In decline code\u2013mapping situations, data is sometimes lost. The integrator can choose to give Google a raw code. For example, a credit card gateway (the integrator) may use this field to communicate to Google the exact decline code that was received from the VISA network. In that case, the `scope` would be \"visa\" and the `rawCode` would be whatever the VISA network returned.",
          "$ref": "#/definitions/V2RawResult"
        }
      }
    },
    "RefundExceedsMaximumBalance": {
      "description": "The refund cannot be processed at the current time, because doing so would cause the user's balance to exceed the maximum allowed amount. Google may request another refund in the future, but will do so with a new `requestId`, so this request should be considered finished.",
      "type": "object",
      "properties": {
        "rawResult": {
          "description": "**OPTIONAL**: Raw result of this event. Used to help inform Google's risk engine and analytics. In decline code\u2013mapping situations, data is sometimes lost. The integrator can choose to give Google a raw code. For example, a credit card gateway (the integrator) may use this field to communicate to Google the exact decline code that was received from the VISA network. In that case, the `scope` would be \"visa\" and the `rawCode` would be whatever the VISA network returned.",
          "$ref": "#/definitions/V2RawResult"
        }
      }
    },
    "RefundAmountBelowLimit": {
      "description": "The refund amount is below the minimum refund limit",
      "type": "object",
      "properties": {
        "rawResult": {
          "description": "**OPTIONAL**: Raw result of this event. Used to help inform Google's risk engine and analytics. In decline code\u2013mapping situations, data is sometimes lost. The integrator can choose to give Google a rawcode. For example, a credit card gateway (the integrator) may use this field to communicate to Google the exact decline code that was received from the VISA network. In that case, the `scope` would be \"visa\" and the `rawCode` would be whatever the VISA network returned.",
          "$ref": "#/definitions/V2RawResult"
        }
      }
    },
    "RefundWindowExceeded": {
      "description": "The refund cannot be processed because the request is outside of the allowed refund period.",
      "type": "object",
      "properties": {
        "rawResult": {
          "description": "**OPTIONAL**: Raw result of this event. Used to help inform Google's risk engine and analytics. In decline code\u2013mapping situations, data is sometimes lost. The integrator can choose to give Google a raw code. For example, a credit card gateway (the integrator) may use this field to communicate to Google the exact decline code that was received from the VISA network. In that case, the `scope` would be \"visa\" and the `rawCode` would be whatever the VISA network returned.",
          "$ref": "#/definitions/V2RawResult"
        }
      }
    },
    "RefundResultNotificationResponse": {
      "description": "Response object for the Google hosted RefundNotification method.",
      "type": "object",
      "properties": {
        "responseHeader": {
          "description": "**REQUIRED**: Common header for all responses.",
          "$ref": "#/definitions/V2ResponseHeader"
        },
        "result": {
          "description": "**REQUIRED**: Result of this call.",
          "$ref": "#/definitions/RefundResultNotificationResponseRefundResultNotificationResult"
        }
      }
    },
    "V2ResponseHeader": {
      "description": "Header object that is defined on all responses sent from the server.",
      "type": "object",
      "properties": {
        "responseTimestamp": {
          "description": "**REQUIRED**: Timestamp of this response. The receiver must verify that this timestamp is \u00B1 60s of 'now', and reject the response if it is not.",
          "$ref": "#/definitions/Timestamp"
        }
      }
    },
    "RefundResultNotificationResponseRefundResultNotificationResult": {
      "description": "Result messages for the `refundResultNotification` method.",
      "type": "object",
      "properties": {
        "accepted": {
          "description": "Refund result notification was accepted.",
          "$ref": "#/definitions/Empty"
        }
      }
    },
    "V2ErrorResponse": {
      "description": "Error Response object for all methods.",
      "type": "object",
      "properties": {
        "responseHeader": {
          "description": "**REQUIRED**: Common header for all responses.",
          "$ref": "#/definitions/V2ResponseHeader"
        },
        "errorDescription": {
          "description": "**OPTIONAL**: Provide a description of this status for support reps to debug errors. Note that this is never shown to users. It can contain descriptive, non-sensitive text used for debugging. Note that some values for errorResponseCode should be accompanied by additional detail in this field. Warning: Do not include any tokens in this message unless they are defined as public.",
          "type": "string"
        },
        "paymentIntegratorErrorIdentifier": {
          "description": "**OPTIONAL**: This identifier is specific to the integrator and is generated by the integrator. It is used for debugging purposes only in order to identify this call. This is the identifier that the integrator knows this call by.",
          "type": "string"
        },
        "errorResponseResult": {
          "description": "**OPTIONAL**: A code that captures the type of error that occurred.",
          "$ref": "#/definitions/ErrorResponseErrorResponseResult"
        }
      }
    },
    "ErrorResponseErrorResponseResult": {
      "description": "Error Codes",
      "type": "object",
      "properties": {
        "invalidApiVersion": {
          "description": "Used if the request's API version is unsupported. Advised HTTP Code: 400",
          "$ref": "#/definitions/ErrorResponseInvalidApiVersion"
        },
        "invalidPayloadSignature": {
          "description": "Used if the signature of the payload is to an unknown or inactive key. Advised HTTP Code: 401",
          "$ref": "#/definitions/ErrorResponseInvalidPayloadSignature"
        },
        "invalidPayloadEncryption": {
          "description": "Used if the encryption of the payload is to an unknown or inactive key. Advised HTTP Code: 400",
          "$ref": "#/definitions/ErrorResponseInvalidPayloadEncryption"
        },
        "requestTimestampOutOfRange": {
          "description": "Used if the request_timestamp is not \u00B1 60s of now. Advised HTTP Code: 400",
          "$ref": "#/definitions/ErrorResponseRequestTimestampOutOfRange"
        },
        "invalidIdentifier": {
          "description": "Used if an identifier sent in the request was invalid or unknown. This may include PIAID, captureRequestId, Google Payment Token, etc. Advised HTTP Code: 404",
          "$ref": "#/definitions/ErrorResponseInvalidIdentifier"
        },
        "idempotencyViolation": {
          "description": "Used if the request violates the idempotency requirements for the request. Advised HTTP Code: 412",
          "$ref": "#/definitions/ErrorResponseIdempotencyViolation"
        },
        "invalidFieldValue": {
          "description": "Used if the request contains a value for a field that isn't in the set of supported values. Advised HTTP Code: 400",
          "$ref": "#/definitions/ErrorResponseInvalidFieldValue"
        },
        "missingRequiredField": {
          "description": "Used if a field that is required is unset in the request. Advised HTTP Code: 400",
          "$ref": "#/definitions/ErrorResponseMissingRequiredField"
        },
        "preconditionViolation": {
          "description": "Used if a constraint on the operation is violated (e.g. when a request for a refund amount exceeds the amount remaining on the transaction). Advised HTTP Code: 400",
          "$ref": "#/definitions/ErrorResponsePreconditionViolation"
        },
        "userActionInProgress": {
          "description": "Used if the request cannot be processed at this time because it would interrupt an in-process user action which effectively acts as a system lock. This code must *not* be used to indicate failures due to implementation-specific internal concurrency errors. Advised HTTP Code: 423",
          "$ref": "#/definitions/ErrorResponseUserActionInProgress"
        },
        "invalidDecryptedRequest": {
          "description": "Used if the request payload could be decrypted, but the resulting message could not be parsed. Advised HTTP Code: 400",
          "$ref": "#/definitions/ErrorResponseInvalidDecryptedRequest"
        },
        "forbidden": {
          "description": "Access to the requested resource is forbidden. Advised Http Code: 403",
          "$ref": "#/definitions/ErrorResponseForbidden"
        }
      }
    },
    "ErrorResponseInvalidApiVersion": {
      "description": "Used if the request's API version is unsupported.",
      "type": "object",
      "properties": {
        "requestVersion": {
          "description": "**REQUIRED**: The invalid version that was specified on the request.",
          "$ref": "#/definitions/V2Version"
        },
        "expectedVersion": {
          "description": "**REQUIRED**: The expected version.",
          "$ref": "#/definitions/V2Version"
        }
      }
    },
    "ErrorResponseInvalidPayloadSignature": {
      "description": "This message is intentionally empty right now. New fields could be added in the future.",
      "type": "object",
      "properties": {
      }
    },
    "ErrorResponseInvalidPayloadEncryption": {
      "description": "This message is intentionally empty right now. New fields could be added in the future.",
      "type": "object",
      "properties": {
      }
    },
    "ErrorResponseRequestTimestampOutOfRange": {
      "description": "Used if the request_timestamp is not \u00B1 60s of now.",
      "type": "object",
      "properties": {
        "requestTimestamp": {
          "description": "**REQUIRED**: The timestamp provided in the request",
          "$ref": "#/definitions/Timestamp"
        },
        "serverTimestampAtReceipt": {
          "description": "**REQUIRED**: The server time at receipt, used for comparison",
          "$ref": "#/definitions/Timestamp"
        }
      }
    },
    "ErrorResponseInvalidIdentifier": {
      "description": "Used if an identifier sent in the request was invalid or unknown. This may include PIAID, captureRequestId, Google Payment Token, etc.",
      "type": "object",
      "properties": {
        "invalidIdentifierType": {
          "description": "**REQUIRED**: The type of identifier that was invalid, e.g. PIAID, captureRequestId, etc.",
          "type": "string"
        }
      }
    },
    "ErrorResponseIdempotencyViolation": {
      "description": "This message is intentionally empty right now. New fields could be added in the future.",
      "type": "object",
      "properties": {
      }
    },
    "ErrorResponseInvalidFieldValue": {
      "description": "Used if the request contains a value for a field that isn't in the set of supported values.",
      "type": "object",
      "properties": {
        "invalidFieldName": {
          "description": "**REQUIRED**: The name of the field that was found to be invalid.",
          "type": "string"
        }
      }
    },
    "ErrorResponseMissingRequiredField": {
      "description": "Used if a field that is required is unset in the request.",
      "type": "object",
      "properties": {
        "missingFieldNames": {
          "description": "**REQUIRED**: The names of the missing fields.",
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      }
    },
    "ErrorResponsePreconditionViolation": {
      "description": "This message is intentionally empty right now. New fields could be added in the future.",
      "type": "object",
      "properties": {
      }
    },
    "ErrorResponseUserActionInProgress": {
      "description": "This message is intentionally empty right now. New fields could be added in the future.",
      "type": "object",
      "properties": {
      }
    },
    "ErrorResponseInvalidDecryptedRequest": {
      "description": "This message is intentionally empty right now. New fields could be added in the future.",
      "type": "object",
      "properties": {
      }
    },
    "ErrorResponseForbidden": {
      "description": "This message is intentionally empty right now. New fields could be added in the future.",
      "type": "object",
      "properties": {
      }
    },
    "ReverseRefundNotificationRequest": {
      "description": "Request object for Google hosted ReverseRefundNotification method.",
      "type": "object",
      "properties": {
        "requestHeader": {
          "description": "**REQUIRED**: Common header for all requests.",
          "$ref": "#/definitions/V2RequestHeader"
        },
        "refundRequestId": {
          "description": "**REQUIRED**: A unique identifier for the refund that is being reversed. This is the `requestId` generated by the Google during the `asynchronousRefund` method call this request is associated with.",
          "type": "string"
        },
        "amount": {
          "description": "**REQUIRED**: The amount of the refund that is being reversed, in micros of the currency unit. This is greater than zero but can be less than or equal to the amount in the `AsynchronousRefund` request. It is in the same currency unit as the capture.",
          "type": "string",
          "format": "int64"
        },
        "rawResult": {
          "description": "**REQUIRED**: Raw result of the refund reversal request from the issuer. Used to help inform Google's risk engine and analytics.",
          "$ref": "#/definitions/V2RawResult"
        }
      }
    },
    "ReverseRefundNotificationResponse": {
      "description": "Response object for Google hosted ReverseRefundNotification method.",
      "type": "object",
      "properties": {
        "responseHeader": {
          "description": "**REQUIRED**: Common header for all responses.",
          "$ref": "#/definitions/V2ResponseHeader"
        },
        "result": {
          "description": "**REQUIRED**: Result of this call.",
          "type": "string",
          "enum": [
            "REVERSE_REFUND_NOTIFICATION_RESULT_CODE_UNSPECIFIED",
            "SUCCESS"
          ]
        }
      }
    },
    "InquiryNotificationRequest": {
      "description": "Request object for Google hosted InquiryNotification method.",
      "type": "object",
      "properties": {
        "requestHeader": {
          "description": "**REQUIRED**: Common header for all requests.",
          "$ref": "#/definitions/V1RequestHeader"
        },
        "paymentIntegratorAccountId": {
          "description": "**REQUIRED**: This is the payment integrator account identifier that identifies contractual constraints around this transaction.",
          "type": "string"
        },
        "captureRequestId": {
          "description": "**REQUIRED**: A unique identifier for the capture that the inquiry is associated with. This is the `requestId` generated by Google during the `captureFundsReservation` or `capture` which this request is associated with.",
          "type": "string"
        },
        "amount": {
          "description": "**REQUIRED**: The amount associated with the inquiry, in [micros]({{glossary_path}}#micros \"What are micros?\") of the currency unit. This must be greater than zero and less than or equal to the amount in the`capture` or `captureFundsReservation` request and is in the same currency unit as the capture.",
          "type": "string",
          "format": "int64"
        },
        "reasonCode": {
          "description": "**REQUIRED**: The reason for the inquiry.",
          "type": "string",
          "enum": [
            "UNKNOWN_REASON",
            "FRAUD",
            "FAMILIAR_FRAUD",
            "SUSPICIOUS",
            "CHARGE_NOT_RECOGNIZED",
            "CREDIT_NOT_PROCESSED",
            "DUPLICATE_PAYMENT",
            "SUBSCRIPTION_CANCELED",
            "INPUT_ERROR",
            "INSUFFICIENT_FUNDS",
            "NOT_DELIVERED",
            "DEFECTIVE_OR_NOT_AS_DESCRIBED",
            "INCORRECT_MERCHANDISE",
            "UNWANTED_MERCHANDISE",
            "TRANSACTION_AMOUNT_DIFFER",
            "PAID_BY_OTHER_MEANS",
            "LATE_PRESENTMENT"
          ]
        },
        "rawResult": {
          "description": "**REQUIRED**: Raw result of the inquiry request from the issuer. Used to help inform Google's risk engine and analytics. The integrator can choose to give Google a raw code. For example, a credit card gateway (the integrator) may use this field to communicate to Google the exact inquiry code that was received from the VISA network. In that case, the `scope` would be \"visa\" and the `rawCode` would be whatever the VISA network returned.",
          "$ref": "#/definitions/V1RawResult"
        },
        "inquiryDate": {
          "description": "**REQUIRED** Timestamp of the date that the inquiry was requested. If that date is not known then it should be the date that the payment integrator received the notification for an inquiry. It is represented as milliseconds since epoch. This is a date and therefore should be the first millisecond of the day in the America\/Los Angeles timezone. If it is not the first millisecond of the day the date will be assumed to be the day the specified millisecond falls on in the America\/Los Angeles time zone.",
          "type": "string",
          "format": "int64"
        },
        "replyByDate": {
          "description": "**REQUIRED**: Timestamp of the date by which a reply must be received by the payment integrator. It is represented as milliseconds since epoch. This is a date and therefore should be the first millisecond of the day in the America\/Los Angeles timezone. If it is not the first millisecond of the day the date will be assumed to be the day the specified millisecond falls on in the America\/Los Angeles time zone.",
          "type": "string",
          "format": "int64"
        },
        "caseId": {
          "description": "**REQUIRED**: A unique value assigned to each dispute that the issuer and payment integrator can use to identify this dispute.",
          "type": "string"
        }
      }
    },
    "V1RawResult": {
      "description": "Raw result object.",
      "type": "object",
      "properties": {
        "scope": {
          "description": "**OPTIONAL**: Scope of the raw_code, can be empty.",
          "type": "string"
        },
        "rawCode": {
          "description": "**REQUIRED**: Raw code from the integrator or subsystems within it.",
          "type": "string"
        }
      }
    },
    "InquiryNotificationResponse": {
      "description": "Response object for Google hosted InquiryNotification method.",
      "type": "object",
      "properties": {
        "responseHeader": {
          "description": "**REQUIRED**: Common header for all responses.",
          "$ref": "#/definitions/V1ResponseHeader"
        },
        "result": {
          "description": "**REQUIRED**: Result of this call.",
          "type": "string",
          "enum": [
            "UNKNOWN_RESULT",
            "SUCCESS"
          ]
        }
      }
    },
    "ChargebackNotificationRequest": {
      "description": "Request object for Google hosted ChargebackNotification method.",
      "type": "object",
      "properties": {
        "requestHeader": {
          "description": "**REQUIRED**: Common header for all requests.",
          "$ref": "#/definitions/V1RequestHeader"
        },
        "paymentIntegratorAccountId": {
          "description": "**REQUIRED**: This is the payment integrator account identifier that identifies contractual constraints around this transaction.",
          "type": "string"
        },
        "captureRequestId": {
          "description": "**REQUIRED**: A unique identifier for the capture that the chargeback is associated with. This is the `requestId` generated by Google during the `captureFundsReservation` or `capture` which this request is associated with.",
          "type": "string"
        },
        "amount": {
          "description": "**REQUIRED**: The amount of the chargeback, in [micros]({{glossary_path}}#micros \"What are micros?\") of the currency unit. This must be greater than zero and less than or equal to the amount in the `capture` or `captureFundsReservation` request and is in the same currency unit as the capture.",
          "type": "string",
          "format": "int64"
        },
        "chargebackStage": {
          "description": "**REQUIRED**: This represents whether this was the first or second chargeback event for this capture. A second chargeback, also known as Second Presentment or Pre-arbitration is when the result of an initial chargeback was challenged. The second chargeback is a separate event that can also be reversed. Once a second chargeback event has occurred the payment is in a terminal state and no subsequent chargeback events can be added.",
          "type": "string",
          "enum": [
            "UNKNOWN_STAGE",
            "FIRST",
            "SECOND"
          ]
        },
        "reasonCode": {
          "description": "**REQUIRED**: The reason the transaction is being charged back.",
          "type": "string",
          "enum": [
            "UNKNOWN_REASON",
            "FRAUD",
            "FAMILIAR_FRAUD",
            "SUSPICIOUS",
            "CHARGE_NOT_RECOGNIZED",
            "CREDIT_NOT_PROCESSED",
            "DUPLICATE_PAYMENT",
            "SUBSCRIPTION_CANCELED",
            "INPUT_ERROR",
            "INSUFFICIENT_FUNDS",
            "NOT_DELIVERED",
            "DEFECTIVE_OR_NOT_AS_DESCRIBED",
            "INCORRECT_MERCHANDISE",
            "UNWANTED_MERCHANDISE",
            "TRANSACTION_AMOUNT_DIFFER",
            "PAID_BY_OTHER_MEANS",
            "LATE_PRESENTMENT"
          ]
        },
        "rawResult": {
          "description": "**REQUIRED**: Raw result of the chargeback request from the issuer. Used to help inform Google's risk engine and analytics. In decline code\u2013mapping situations, data is sometimes lost. The integrator can choose to give Google a raw code. For example, a credit card gateway (the integrator) may use this field to communicate to Google the exact chargeback code that was received from the VISA network. In that case, the `scope` would be \"visa\" and the `rawCode` would be whatever the VISA network returned.",
          "$ref": "#/definitions/V1RawResult"
        },
        "chargebackDate": {
          "description": "**REQUIRED** Timestamp of the date that the chargeback was requested. If that date is not known then the date that the payment integrator received the notification for a chargeback. It is represented as milliseconds since epoch. This is a date and therefore should be the first millisecond of the day in the America\/Los Angeles timezone. If it is not the first millisecond of the day the date will be assumed to be the day the specified millisecond falls on in the America\/Los Angeles time zone.",
          "type": "string",
          "format": "int64"
        },
        "replyByDate": {
          "description": "**REQUIRED**: Timestamp of the date by which a reply must be received by the payment integrator if Google chooses to represent the transaction and challenge the chargeback. It is represented as milliseconds since epoch. This is a date and therefore should be the first millisecond of the day in the America\/Los Angeles timezone. If it is not the first millisecond of the day the date will be assumed to be the day the specified millisecond falls on in the America\/Los Angeles time zone.",
          "type": "string",
          "format": "int64"
        },
        "caseId": {
          "description": "**REQUIRED**: A unique value assigned to each chargeback that the issuer and payment integrator can use to identify this chargeback.",
          "type": "string"
        }
      }
    },
    "ChargebackNotificationResponse": {
      "description": "Response object for Google hosted ChargebackNotification method.",
      "type": "object",
      "properties": {
        "responseHeader": {
          "description": "**REQUIRED**: Common header for all responses.",
          "$ref": "#/definitions/V1ResponseHeader"
        },
        "result": {
          "description": "**REQUIRED**: Result of this call.",
          "type": "string",
          "enum": [
            "UNKNOWN_RESULT",
            "SUCCESS"
          ]
        }
      }
    },
    "ChargebackReversedNotificationRequest": {
      "description": "Request object for Google hosted ChargebackReversedNotification method.",
      "type": "object",
      "properties": {
        "requestHeader": {
          "description": "**REQUIRED**: Common header for all requests.",
          "$ref": "#/definitions/V1RequestHeader"
        },
        "paymentIntegratorAccountId": {
          "description": "**REQUIRED**: This is the payment integrator account identifier that identifies contractual constraints around this transaction.",
          "type": "string"
        },
        "chargebackRequestId": {
          "description": "**REQUIRED**: A unique identifier for the chargeback that is being reversed. This is the `requestId` generated by the integrator during the `ChargebackNotification` this request is associated with.",
          "type": "string"
        },
        "amount": {
          "description": "**REQUIRED**: The amount being reversed, in [micros]({{glossary_path}}#micros \"What are micros?\") of the currency unit. This must be greater than zero and less than or equal to the amount in the`ChargebackNotification`. It is in same currency unit as the `captureFundsReservation` or `capture`.",
          "type": "string",
          "format": "int64"
        },
        "rawResult": {
          "description": "**REQUIRED**: The raw result from the network on why the chargeback is being reversed. Used for informational purposes.",
          "$ref": "#/definitions/V1RawResult"
        },
        "chargebackReversalDate": {
          "description": "**REQUIRED** Timestamp of the date that the chargeback was reversed. If the date is not known, then this is the date that the payment integrator received the notification for the reversal. It is represented as milliseconds since epoch. This is a date and therefore should be the first millisecond of the day in the America\/Los Angeles timezone. If it is not the first millisecond of the day the date will be assumed to be the day the specified millisecond falls on in the America\/Los Angeles time zone.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "ChargebackReversedNotificationResponse": {
      "description": "Response object for Google hosted ChargebackReversedNotification method.",
      "type": "object",
      "properties": {
        "responseHeader": {
          "description": "**REQUIRED**: Common header for all responses.",
          "$ref": "#/definitions/V1ResponseHeader"
        },
        "result": {
          "description": "**REQUIRED**: Result of this call.",
          "type": "string",
          "enum": [
            "UNKNOWN_RESULT",
            "SUCCESS"
          ]
        }
      }
    },
    "EchoRequest": {
      "description": "Request object for the echo method.",
      "type": "object",
      "properties": {
        "requestHeader": {
          "description": "**REQUIRED**: Common header for all requests.",
          "$ref": "#/definitions/V2RequestHeader"
        },
        "clientMessage": {
          "description": "**REQUIRED**: Message to echo in the response.",
          "type": "string"
        }
      }
    },
    "EchoResponse": {
      "description": "Response object for the echo method.",
      "type": "object",
      "properties": {
        "responseHeader": {
          "description": "**REQUIRED**: Common header for all responses.",
          "$ref": "#/definitions/V2ResponseHeader"
        },
        "clientMessage": {
          "description": "**REQUIRED**: Message received in the request.",
          "type": "string"
        },
        "serverMessage": {
          "description": "**OPTIONAL**: Server message, independent of the `clientMessage` being echoed.",
          "type": "string"
        }
      }
    },
    "FraudNotificationRequest": {
      "description": "Request object for the Google hosted FraudNotification method.",
      "type": "object",
      "properties": {
        "requestHeader": {
          "description": "**REQUIRED**: Common header for all requests.",
          "$ref": "#/definitions/V1RequestHeader"
        },
        "paymentIntegratorAccountId": {
          "description": "**REQUIRED**: This is the payment integrator account identifier that identifies contractual constraints around this transaction.",
          "type": "string"
        },
        "captureRequestId": {
          "description": "**REQUIRED**: A unique identifier for the capture the potential fraud is associated with. This is the `requestId` generated by Google during the `captureFundsReservation` or `capture` for the original request.",
          "type": "string"
        },
        "fraudType": {
          "description": "**REQUIRED**: This is the type of fraud that may have occurred.",
          "type": "string",
          "enum": [
            "UNKNOWN_TYPE",
            "FRAUDULENT_USE",
            "COUNTERFEIT",
            "LOST",
            "STOLEN",
            "ACCOUNT_TAKEOVER",
            "FRAUDULENT_APPLICATION",
            "CARD_NOT_RECEIVED",
            "OTHER",
            "SCAM",
            "MERCHANT_FRAUD"
          ]
        },
        "rawResult": {
          "description": "**REQUIRED**: Raw result of the fraud notification from the issuer. Used to help inform Google's risk engine and analytics. In fraud code\u2013mapping situations, data is sometimes lost. The integrator can choose to give Google a raw code. For example, a credit card gateway (the integrator) may use this field to communicate to Google the exact fraud code that was received from the VISA network. In that case, the `scope` would be \"visa\" and the `rawCode` would be whatever the VISA network returned.",
          "$ref": "#/definitions/V1RawResult"
        }
      }
    },
    "FraudNotificationResponse": {
      "description": "Response object for the Google hosted FraudNotification method.",
      "type": "object",
      "properties": {
        "responseHeader": {
          "description": "**REQUIRED**: Common header for all responses.",
          "$ref": "#/definitions/V1ResponseHeader"
        },
        "result": {
          "description": "**REQUIRED**: Result of this call.",
          "type": "string",
          "enum": [
            "UNKNOWN_RESULT",
            "SUCCESS"
          ]
        }
      }
    },
    "SettlementNotificationRequest": {
      "description": "Request object for the `SettlementNotification` method on the GoogleSettlementService, which is hosted by Google and called by payment integrators.",
      "type": "object",
      "properties": {
        "requestHeader": {
          "description": "**REQUIRED**: Common header for all requests.",
          "$ref": "#/definitions/V2RequestHeader"
        },
        "generatedTimestamp": {
          "description": "**REQUIRED**: Timestamp of when this report was generated.",
          "$ref": "#/definitions/Timestamp"
        },
        "settlementPeriod": {
          "description": "**REQUIRED**: The period this settlement report covers.",
          "$ref": "#/definitions/Interval"
        },
        "settlementAmount": {
          "description": "**REQUIRED**: This should match the sum of all the `eventCharge`, `eventFee`, `eventVat` and `aggregateAdjustment` amounts in this `SettlementNotificationRequest`. If the settlement report is made up of multiple settlement notifications, the total amount settled will be the sum of each of these `settlementAmount`.",
          "$ref": "#/definitions/Amount"
        },
        "settlementId": {
          "description": "**REQUIRED**: This should be a unique ID that identifies the settlement report. All `SettlementNotificationRequest` for this settlement report should use the same `settlementId`.",
          "type": "string"
        },
        "notificationOffset": {
          "description": "**REQUIRED**: This is the offset of this `SettlementNotificationRequest`. The first should have a `notificationOffset` of `0` and the last should have an offset of `notificationTotal-1`.",
          "type": "string",
          "format": "int64"
        },
        "notificationTotal": {
          "description": "**REQUIRED**: The total number of `SettlementNotificationRequest` in this settlement report.",
          "type": "string",
          "format": "int64"
        },
        "captureEvents": {
          "description": "**REQUIRED**: Set of capture events. *Note:* this is a set, it has no defined order. If there are no events an empty message should be used. ",
          "type": "array",
          "items": {
            "$ref": "#/definitions/SettlementNotificationRequestCaptureEvent"
          }
        },
        "refundEvents": {
          "description": "**REQUIRED**: Set of refund events. *Note:* this is a set, it has no defined order. If there are no events an empty message should be used. ",
          "type": "array",
          "items": {
            "$ref": "#/definitions/SettlementNotificationRequestRefundEvent"
          }
        },
        "reverseRefundEvents": {
          "description": "**REQUIRED**: Set of reverse refund events. *Note:* this is a set, it has no defined order. If there are no events an empty message should be used. ",
          "type": "array",
          "items": {
            "$ref": "#/definitions/SettlementNotificationRequestReverseRefundEvent"
          }
        },
        "chargebackEvents": {
          "description": "**REQUIRED**: Set of chargeback events. *Note:* this is a set, it has no defined order. If there are no events an empty message should be used. ",
          "type": "array",
          "items": {
            "$ref": "#/definitions/SettlementNotificationRequestChargebackEvent"
          }
        },
        "reverseChargebackEvents": {
          "description": "**REQUIRED**: Set of reverse chargeback events. *Note:* this is a set, it has no defined order. If there are no events an empty message should be used. ",
          "type": "array",
          "items": {
            "$ref": "#/definitions/SettlementNotificationRequestReverseChargebackEvent"
          }
        },
        "fundsReservationEvents": {
          "description": "**REQUIRED**: Set of funds reservation events. *Note:* this is a set, it has no defined order. If there are no events an empty message should be used. ",
          "type": "array",
          "items": {
            "$ref": "#/definitions/SettlementNotificationRequestFundsReservationEvent"
          }
        },
        "aggregateAdjustments": {
          "description": "**REQUIRED**: Adjustments that don't apply to an individual transaction. *Note:* this is a set, it has no defined order. If there are no events an empty message should be used. ",
          "type": "array",
          "items": {
            "$ref": "#/definitions/SettlementNotificationRequestAggregateAdjustment"
          }
        }
      }
    },
    "Interval": {
      "description": "A length of time with a chronological beginning and end.",
      "type": "object",
      "properties": {
        "start": {
          "description": " **REQUIRED**: The start of this interval, which is inclusive.",
          "$ref": "#/definitions/Timestamp"
        },
        "end": {
          "description": "**REQUIRED**: The end of this interval, which is exclusive.",
          "$ref": "#/definitions/Timestamp"
        }
      }
    },
    "Amount": {
      "description": "Associates an amount in micros with a currency code.",
      "type": "object",
      "properties": {
        "amountMicros": {
          "description": "**REQUIRED**: An amount in [micros]({{glossary_path}}#micros \"What are micros?\").",
          "type": "string",
          "format": "int64"
        },
        "currencyCode": {
          "description": "**REQUIRED**: ISO 4217 3-letter currency code",
          "type": "string"
        }
      }
    },
    "SettlementNotificationRequestCaptureEvent": {
      "description": "This represents a payment where a customer is charged. It is associated with a `capture`, `asynchronousCaptureFundsReservation` or `beginRedirect` event.",
      "type": "object",
      "properties": {
        "captureRequestId": {
          "description": "**REQUIRED**: `requestId` that was sent by Google for the `capture` event represented by this `settlementEvent`.",
          "type": "string"
        },
        "paymentIntegratorCaptureId": {
          "description": "**REQUIRED**: An ID that is generated by the payment integrator that can be used to refer to this capture event.",
          "type": "string"
        },
        "eventCharge": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google.",
          "$ref": "#/definitions/Amount"
        },
        "eventPresentmentDetails": {
          "description": "**OPTIONAL**: If the settlement currency is different than the purchase currency then this field should be used to specify details about the event in the original purchase currency and the conversion to the settlement amount.",
          "$ref": "#/definitions/SettlementNotificationRequestEventPresentmentDetails"
        },
        "eventFee": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google. If the fee is broken down into several parts, this value is the sum of them and the amount settled. A breakdown of the fee can be specified in the `eventFeeBreakdown`.",
          "$ref": "#/definitions/Amount"
        },
        "eventFeeBreakdown": {
          "description": "**OPTIONAL**: This is a breakdown of the `eventFee`. It is used for reporting purposes and is not factored into the `settlementAmount`. It is used to understand what parts of the `eventFee` are attributable to what sources.",
          "$ref": "#/definitions/SettlementNotificationRequestEventFeeBreakdown"
        },
        "eventVat": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google. This is the value-added-tax (VAT) for the `eventFee`. This amount is in addition to the fee. e.g. If the `eventCharge` is $2.00, the `eventFee` is -$0.20 and the `eventVat` is -$0.05 the total settlement value for this event would be $1.75.",
          "$ref": "#/definitions/Amount"
        }
      }
    },
    "SettlementNotificationRequestEventPresentmentDetails": {
      "description": "This represents a presentment currency and a conversion rate in case the settlement and the purchase currencies are different.",
      "type": "object",
      "properties": {
        "presentmentAmount": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google. The presentment amount of the purchase in the currency that was used for the purchase. This should only be specified if the purchase currency is different than the settlement currency.",
          "$ref": "#/definitions/Amount"
        },
        "nanoExchangeRate": {
          "description": "**REQUIRED**: The exchange rate used in converting the presentment amount to the settlement (invoice) amount. This value is in *nano* basis points (1 basis point = .0001 = .01%). That is, to get the exchange rate, divide this field by 10^13. Example: - $1 USD is \u20AC0.85 EUR. - USD\/EUR exchange rate is: 0.85 - USD\/EUR exchange rate with 0.0001 basis point is: 0.85*10^(4) - USD\/EUR exchange rate with *nano* 0.0001 basis point is: 0.85*10^(13) - USD\/EUR exchange rate with *nano* 0.0001 basis point is: 8 500 000 000 000 ",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "SettlementNotificationRequestEventFeeBreakdown": {
      "description": "This represents a breakdown of the `eventFee` that can be used for reporting purposes to better understand the fee makeup.",
      "type": "object",
      "properties": {
        "feeDetails": {
          "description": "**REQUIRED**: Details of a fee event.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/SettlementNotificationRequestFeeDetail"
          }
        }
      }
    },
    "SettlementNotificationRequestFeeDetail": {
      "description": "This represents details of a fee event.",
      "type": "object",
      "properties": {
        "unitFee": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google. The amount of the fee being described. This can be smaller than the minimum billible unit. The sum of all the `unitFee` should be close to the `eventFee` but might not be exact due to rounding or small values less than the minimum billible unit. Because of that, this value might not match the exact amount settled for the transaction. The `eventFee` should be used for the amount settled.",
          "$ref": "#/definitions/Amount"
        },
        "feeAssessmentSource": {
          "description": "**REQUIRED**: The source that is assessing the fee.",
          "$ref": "#/definitions/SettlementNotificationRequestFeeDetailFeeAssessmentSource"
        },
        "feeType": {
          "description": "**REQUIRED**: This is the type of the fee event. It might match the event type, but it doesn't have to. For example, an authorization fee might be assessed with a `captureEvent`.",
          "$ref": "#/definitions/SettlementNotificationRequestFeeDetailFeeType"
        },
        "feeCategory": {
          "description": "**REQUIRED**: The category of the fee. e.g. Discount, Fee, etc.",
          "type": "string"
        },
        "feeSubCategory": {
          "description": "**REQUIRED**: The category of the fee. e.g. Authorization, assessment, deposit, etc.",
          "type": "string"
        },
        "feeDescription": {
          "description": "**REQUIRED**: A description of the fee. This field is not parsed by the system and is only for human consumption to better understand the fee.",
          "type": "string"
        }
      }
    },
    "SettlementNotificationRequestFeeDetailFeeAssessmentSource": {
      "description": "The source that assessed the fee.",
      "type": "object",
      "properties": {
        "scheme": {
          "description": "The fee is assessed by the scheme or network.",
          "$ref": "#/definitions/Empty"
        },
        "interchange": {
          "description": "The fee is assessed as part of the interchange fee.",
          "$ref": "#/definitions/SettlementNotificationRequestFeeDetailInterchangeFee"
        },
        "contract": {
          "description": "The fee is specified in the contract between Google and the payment integrator.",
          "$ref": "#/definitions/Empty"
        }
      }
    },
    "SettlementNotificationRequestFeeDetailInterchangeFee": {
      "description": "Detailed information about an interchange fee.",
      "type": "object",
      "properties": {
        "interchangeCode": {
          "description": "**REQUIRED**: The interchange fee code.",
          "type": "string"
        },
        "interchangeQualification": {
          "description": "**REQUIRED**: The qualification of the interchange fee.",
          "type": "string"
        }
      }
    },
    "SettlementNotificationRequestFeeDetailFeeType": {
      "description": "The type of fee.",
      "type": "object",
      "properties": {
        "authorization": {
          "description": "The fee is assessed as part of an authorization.",
          "$ref": "#/definitions/Empty"
        },
        "capture": {
          "description": "The fee is assessed as part of a capture.",
          "$ref": "#/definitions/Empty"
        },
        "refund": {
          "description": "The fee is assessed as part of a refund.",
          "$ref": "#/definitions/Empty"
        },
        "chargeback": {
          "description": "The fee is assessed as part of a chargeback.",
          "$ref": "#/definitions/Empty"
        },
        "reverseChargeback": {
          "description": "The fee is assessed as part of a reverse chargeback.",
          "$ref": "#/definitions/Empty"
        },
        "reverseRefund": {
          "description": "The fee is assessed as part of a reverse refund.",
          "$ref": "#/definitions/Empty"
        },
        "fxMarkup": {
          "description": "The fee is assessed as part of an exchange rate markup.",
          "$ref": "#/definitions/Empty"
        },
        "authReversal": {
          "description": "Fee associated with a reversal of an authorization event.",
          "$ref": "#/definitions/Empty"
        },
        "partialRefund": {
          "description": "Fee associated with a partial refund event.",
          "$ref": "#/definitions/Empty"
        }
      }
    },
    "SettlementNotificationRequestRefundEvent": {
      "description": "This represents a refund where money is being returned to a customer. It will be associated with a `refund` event.",
      "type": "object",
      "properties": {
        "asynchronousRefundRequestId": {
          "description": "**REQUIRED**: `requestId` that was sent by Google for the `asynchronousRefund` request that this `settlementEvent` pertains to.",
          "type": "string"
        },
        "paymentIntegratorRefundId": {
          "description": "**REQUIRED**: An ID that is generated by the payment integrator that can be used to refer to this refund event.",
          "type": "string"
        },
        "eventCharge": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google.",
          "$ref": "#/definitions/Amount"
        },
        "eventPresentmentDetails": {
          "description": "**OPTIONAL**: If the settlement currency is different than the purchase currency then this field should be used to specify details about the event in the original purchase currency and the conversion to the settlement amount.",
          "$ref": "#/definitions/SettlementNotificationRequestEventPresentmentDetails"
        },
        "eventFee": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google. If the fee is broken down into several parts, this value is the sum of them and the amount settled. A breakdown of the fee can be specified in the `eventFeeBreakdown`. For example, if an agreement says that Google will pay 1% of the `eventCharge` to the payment integrator, and will reverse that 1% upon refund of that transaction, then the capture fee will be negative and upon refund the refund fee will be positive.",
          "$ref": "#/definitions/Amount"
        },
        "eventFeeBreakdown": {
          "description": "**OPTIONAL**: This is a breakdown of the `eventFee`. It is used for reporting purposes and is not factored into the `settlementAmount`. It is used to understand what parts of the `eventFee` are attributable to what sources.",
          "$ref": "#/definitions/SettlementNotificationRequestEventFeeBreakdown"
        },
        "eventVat": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google. This is the value-added-tax (VAT) for the `eventFee`. This amount is in addition to the fee. e.g. If the `eventCharge` is $2.00, the `eventFee` is -$0.20 and the `eventVat` is -$0.05 the total settlement value for this event would be $1.75.",
          "$ref": "#/definitions/Amount"
        }
      }
    },
    "SettlementNotificationRequestReverseRefundEvent": {
      "description": "This represents a reverse refund. It is associated with a `reverseRefundNotification` and typically is used when a refund was performed but the issuing bank was unable to return funds to the customer, so they are being returned to Google.",
      "type": "object",
      "properties": {
        "asynchronousRefundRequestId": {
          "description": "**REQUIRED**: `requestId` that was sent by Google for the `refund` request that this `reverseRefundEvent` is reversing.",
          "type": "string"
        },
        "paymentIntegratorReverseRefundNotificationRequestId": {
          "description": "**REQUIRED**: This is the `requestId` generated by the payment integrator in the `reversereRefundNotification` request.",
          "type": "string"
        },
        "eventCharge": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google.",
          "$ref": "#/definitions/Amount"
        },
        "eventPresentmentDetails": {
          "description": "**OPTIONAL**: If the settlement currency is different than the purchase currency then this field should be used to specify details about the event in the original purchase currency and the conversion to the settlement amount.",
          "$ref": "#/definitions/SettlementNotificationRequestEventPresentmentDetails"
        },
        "eventFee": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google. If the fee is broken down into several parts, this value is the sum of them and the amount settled. A breakdown of the fee can be specified in the `eventFeeBreakdown`. For example, if an agreement says that Google will pay 1% of the `eventCharge` to the payment integrator, and will reverse that 1% upon refund of that transaction, then the capture fee will be negative and upon refund the refund fee will be positive.",
          "$ref": "#/definitions/Amount"
        },
        "eventFeeBreakdown": {
          "description": "**OPTIONAL**: This is a breakdown of the `eventFee`. It is used for reporting purposes and is not factored into the `settlementAmount`. It is used to understand what parts of the `eventFee` are attributable to what sources.",
          "$ref": "#/definitions/SettlementNotificationRequestEventFeeBreakdown"
        },
        "eventVat": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google. This is the value-added-tax (VAT) for the `eventFee`. This amount is in addition to the fee. e.g. If the `eventCharge` is $2.00, the `eventFee` is -$0.20 and the `eventVat` is -$0.05 the total settlement value for this event would be $1.75.",
          "$ref": "#/definitions/Amount"
        }
      }
    },
    "SettlementNotificationRequestChargebackEvent": {
      "description": "This represents a chargeback. It is associated with a `chargebackNotification` and is used when a customer disputes a payment made in a `capture` or `asynchronousCaptureFundsReservation`. This is used to return funds to the customer.",
      "type": "object",
      "properties": {
        "captureRequestId": {
          "description": "**REQUIRED**: `requestId` that was sent by Google for the `capture` request that this `settlementEvent` pertains to.",
          "type": "string"
        },
        "paymentIntegratorChargebackNotificationRequestId": {
          "description": "**REQUIRED**: This is the `requestId` generated by the payment integrator in the `chargebackNotification` request.",
          "type": "string"
        },
        "eventCharge": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google.",
          "$ref": "#/definitions/Amount"
        },
        "eventPresentmentDetails": {
          "description": "**OPTIONAL**: If the settlement currency is different than the purchase currency then this field should be used to specify details about the event in the original purchase currency and the conversion to the settlement amount.",
          "$ref": "#/definitions/SettlementNotificationRequestEventPresentmentDetails"
        },
        "eventFee": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google. If the fee is broken down into several parts, this value is the sum of them and the amount settled. A breakdown of the fee can be specified in the `eventFeeBreakdown`. For example, if an agreement says that Google will pay 1% of the `eventCharge` to the payment integrator, and will reverse that 1% upon refund of that transaction, then the capture fee will be negative and upon refund the refund fee will be positive.",
          "$ref": "#/definitions/Amount"
        },
        "eventFeeBreakdown": {
          "description": "**OPTIONAL**: This is a breakdown of the `eventFee`. It is used for reporting purposes and is not factored into the `settlementAmount`. It is used to understand what parts of the `eventFee` are attributable to what sources.",
          "$ref": "#/definitions/SettlementNotificationRequestEventFeeBreakdown"
        },
        "eventVat": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google. This is the value-added-tax (VAT) for the `eventFee`. This amount is in addition to the fee. e.g. If the `eventCharge` is $2.00, the `eventFee` is -$0.20 and the `eventVat` is -$0.05 the total settlement value for this event would be $1.75.",
          "$ref": "#/definitions/Amount"
        }
      }
    },
    "SettlementNotificationRequestReverseChargebackEvent": {
      "description": "This represents a reverse chargeback. It is associated with a `reverseChargebackNotification` and is used when Google successfully disputes a `chargebackNotification`. The funds are being returned to Google.",
      "type": "object",
      "properties": {
        "captureRequestId": {
          "description": "**REQUIRED**: `requestId` that was sent by Google for the `capture` request that this `settlementEvent` pertains to.",
          "type": "string"
        },
        "paymentIntegratorReverseChargebackNotificationRequestId": {
          "description": "**REQUIRED**: This is the `requestId` generated by the payment integrator in the `reversereChargebackNotification` request.",
          "type": "string"
        },
        "eventCharge": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google.",
          "$ref": "#/definitions/Amount"
        },
        "eventPresentmentDetails": {
          "description": "**OPTIONAL**: If the settlement currency is different than the purchase currency then this field should be used to specify details about the event in the original purchase currency and the conversion to the settlement amount.",
          "$ref": "#/definitions/SettlementNotificationRequestEventPresentmentDetails"
        },
        "eventFee": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google. If the fee is broken down into several parts, this value is the sum of them and the amount settled. A breakdown of the fee can be specified in the `eventFeeBreakdown`. For example, if an agreement says that Google will pay 1% of the `eventCharge` to the payment integrator, and will reverse that 1% upon refund of that transaction, then the capture fee will be negative and upon refund the refund fee will be positive.",
          "$ref": "#/definitions/Amount"
        },
        "eventFeeBreakdown": {
          "description": "**OPTIONAL**: This is a breakdown of the `eventFee`. It is used for reporting purposes and is not factored into the `settlementAmount`. It is used to understand what parts of the `eventFee` are attributable to what sources.",
          "$ref": "#/definitions/SettlementNotificationRequestEventFeeBreakdown"
        },
        "eventVat": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google. This is the value-added-tax (VAT) for the `eventFee`. This amount is in addition to the fee. e.g. If the `eventCharge` is $2.00, the `eventFee` is -$0.20 and the `eventVat` is -$0.05 the total settlement value for this event would be $1.75.",
          "$ref": "#/definitions/Amount"
        }
      }
    },
    "SettlementNotificationRequestFundsReservationEvent": {
      "description": "This represents fees associated with a funds reservation. It is associated with a `reserveFunds`.",
      "type": "object",
      "properties": {
        "fundsReservationRequestId": {
          "description": "**REQUIRED**: `requestId` that was sent by Google for the `reserveFunds` request that this `settlementEvent` pertains to.",
          "type": "string"
        },
        "eventFee": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google. If the fee is broken down into several parts, this value is the sum of them and the amount settled. A breakdown of the fee can be specified in the `eventFeeBreakdown`.",
          "$ref": "#/definitions/Amount"
        },
        "eventFeeBreakdown": {
          "description": "**OPTIONAL**: This is a breakdown of the `eventFee`. It is used for reporting purposes and is not factored into the `settlementAmount`. It is used to understand what parts of the `eventFee` are attributable to what sources.",
          "$ref": "#/definitions/SettlementNotificationRequestEventFeeBreakdown"
        },
        "eventPresentmentDetails": {
          "description": "**REQUIRED**: Specify details about the funds reservation currency, amount and the conversion rate to the settlement currency.",
          "$ref": "#/definitions/SettlementNotificationRequestEventPresentmentDetails"
        }
      }
    },
    "SettlementNotificationRequestAggregateAdjustment": {
      "description": "This represents settlement of amounts that don't apply to a specific transaction and instead occur in aggregate.",
      "type": "object",
      "properties": {
        "adjustmentAmount": {
          "description": "**REQUIRED**: If this amount is negative then it represents monetary value moving from Google to the payment integrator. If this is positive it is money from the payment integrator due to Google. The amount of the adjustment that will be factored into the `settlementAmount` for this `settlementNotificationRequest`.",
          "$ref": "#/definitions/Amount"
        },
        "adjustmentType": {
          "description": "**REQUIRED**: This provides more information about the adjustment.",
          "$ref": "#/definitions/SettlementNotificationRequestAggregateAdjustmentAdjustmentType"
        }
      }
    },
    "SettlementNotificationRequestAggregateAdjustmentAdjustmentType": {
      "description": "This provides more information about the adjustment type.",
      "type": "object",
      "properties": {
        "aggregatedAuthorizationFees": {
          "description": "Credit card authorization fees aggregated over a period of time. This should only be used if those fees aren't provided at the transaction level via the `eventFee` field.",
          "$ref": "#/definitions/SettlementNotificationRequestAggregatedFees"
        },
        "aggregatedChargebackFees": {
          "description": "Chargeback fees aggregated over a period of time. This should only be used if those fees can't be provided at the transaction level via the `eventFee` field.",
          "$ref": "#/definitions/SettlementNotificationRequestAggregatedFees"
        },
        "aggregatedIntegrityFees": {
          "description": "Aggregated integrity fees over a period of time. Integrity fees are imposed by a card network for transactions that were not 3DS-authenticated. This should only be used if those fees aren't provided at the transaction level via the `eventFee` field.",
          "$ref": "#/definitions/SettlementNotificationRequestAggregatedFees"
        },
        "aggregatedAuthorizationFeesVariance": {
          "description": "Aggregate change in authorization fees due to updated rates or some other factor that was unknown when the authorization fees were originally set in the `eventFee` field with the transactions.",
          "$ref": "#/definitions/SettlementNotificationRequestAggregatedFees"
        },
        "aggregatedChargebackFeesVariance": {
          "description": "Aggregate change in chargeback fees due to updated rates or some other factor that was unknown when the chargeback fees were originally set in the `eventFee` field with the transactions.",
          "$ref": "#/definitions/SettlementNotificationRequestAggregatedFees"
        },
        "aggregatedIntegrityFeesVariance": {
          "description": "Aggregate change in integrity fees due to updated rates or some other factor that was unknown when the integrity fees were originally set in the `eventFee` field with the transactions.",
          "$ref": "#/definitions/SettlementNotificationRequestAggregatedFees"
        },
        "chargebackThresholdFine": {
          "description": "Card networks (eg VISA, MC) have Dispute Monitoring Programs. A fine can be imposed by a card network for breaking a certain chargeback threshold in terms of a number of chargebacks per a period of time.",
          "$ref": "#/definitions/Empty"
        },
        "miscellaneousAdjustment": {
          "description": "Miscellaneous type is used only when other types are not suitable. It is recommended to use miscellaneous type only occasionally and only in exceptional situations. Google will monitor for usage of this AdjustmentType and consider it a bug if a payment integrator uses this option systematically. If the existing adjustment types are not suitable, Google is willing to discuss adding a more targeted type.",
          "$ref": "#/definitions/SettlementNotificationRequestMiscellaneousAdjustment"
        },
        "eventFeesRounding": {
          "description": "Used to account for adjustment in the rounding of event fees. If the event fees do not sum to a round number of billable units, then this value should be used to account for the rounding to billable units. It can be represented as sub-billable units. e.g. if the event fees sum to $10.053 USD and $10.06 would be the settlement amount than this can capture the missing $0.007 USD so it is accounted for. This amount can be larger than a single billable unit if the rounding is occurring in multiple places.",
          "$ref": "#/definitions/Empty"
        },
        "aggregatedSchemeFees": {
          "description": "Aggregate fees charged by the networks.",
          "$ref": "#/definitions/Empty"
        },
        "aggregatedGoodsServicesFees": {
          "description": "Aggregate Goods and Service Tax.",
          "$ref": "#/definitions/Empty"
        },
        "aggregatedSchemeFeesVariance": {
          "description": "Aggregate fees variance charged by the networks due to updated rates or some other factor that was unknown when the scheme fees were originally set in the 'event_fee' field with the transactions.",
          "$ref": "#/definitions/Empty"
        }
      }
    },
    "SettlementNotificationRequestAggregatedFees": {
      "description": "This represents an aggregated transaction-level fees.",
      "type": "object",
      "properties": {
        "numberOfEvents": {
          "description": "Number of events (eg payments) that fees are aggregated across.",
          "type": "string",
          "format": "int64"
        }
      }
    },
    "SettlementNotificationRequestMiscellaneousAdjustment": {
      "description": "This represents an unforeseen adjustment type that a payment integrator submits only in an exceptional circumstances.",
      "type": "object",
      "properties": {
        "adjustmentDescription": {
          "description": "**REQUIRED**: Adjustment description should clearly explain a nature and exceptional circumstances of the adjustment.",
          "type": "string"
        }
      }
    },
    "SettlementNotificationResponse": {
      "description": "Response object for the `settlementNotification` method.",
      "type": "object",
      "properties": {
        "responseHeader": {
          "description": "**REQUIRED**: Common header for all responses.",
          "$ref": "#/definitions/V2ResponseHeader"
        },
        "result": {
          "description": "**REQUIRED**: Contains the result of the request.",
          "$ref": "#/definitions/SettlementNotificationResponseResult"
        }
      }
    },
    "SettlementNotificationResponseResult": {
      "description": "Details corresponding to the result.",
      "type": "object",
      "properties": {
        "accepted": {
          "description": "The `settlementNotification` was valid and is now being processed by Google.",
          "$ref": "#/definitions/Empty"
        }
      }
    },
    "RedirectUrlResponse": {
      "description": "Response object for the Return Url flow. Here's an example of a clear text JSON request: { \"authenticateRequestId\": \"cmVxdWVzdDE\", \"authenticateResultCode\": { \"success\": {} }, \"eci\": \"07\" } The `RedirectUrlResponse` is encrypted and signed using PGP or JWE+JWS. Further, this value is web-safe base64 encoded. This encoding is referred to below as `Base64UrlEncode`. In other words, the clear text JSON version of the `RedirectUrlResponse` must be passed through the following functions: Base64UrlEncode( PGPSignAndEncrypt( { \"authenticateRequestId\": \"cmVxdWVzdDE\", \"authenticateResultCode\": { \"success\": {} }, \"eci\": \"07\" } ) ) or Base64UrlEncode( JWSignAndEncrypt( { \"authenticateRequestId\": \"cmVxdWVzdDE\", \"authenticateResultCode\": { \"success\": {} }, \"eci\": \"07\" } ) ) ",
      "type": "object",
      "properties": {
        "authenticateRequestId": {
          "description": "**REQUIRED**: Unique identifier of the initiating redirect request. This is a string that has a max length of 100 characters, and contains only the characters \"a-z\", \"A-Z\", \"0-9\", \":\", \"-\", and \"_\".",
          "type": "string"
        },
        "authenticateResultCode": {
          "description": "**REQUIRED**: The final result of the request to Authenticate the user.",
          "$ref": "#/definitions/AuthenticateResultCode"
        },
        "eci": {
          "description": "**OPTIONAL**: The Electronic Commerce Indicator returned for the request. It should be returned if available.",
          "type": "string"
        }
      }
    },
    "AuthenticateResultCode": {
      "description": "Result codes for the `authenticate` request that this `getAuthenticateResult` is referencing.",
      "type": "object",
      "properties": {
        "success": {
          "description": "A successful authentication. A payment can now be made with a `reserveFunds` or `capture` request.",
          "$ref": "#/definitions/Empty"
        },
        "unableToAuthenticate": {
          "description": "The attempt to authenticate the user failed.",
          "$ref": "#/definitions/Empty"
        },
        "attempted": {
          "description": "An attempt was made to authenticate the user. The results are inconclusive. Since the results are inconclusive, Google will attempt a `reserveFunds` or `capture` request.",
          "$ref": "#/definitions/Empty"
        }
      }
    }
  }
}
