"""
Connector model for stripe.

This file is auto-generated from the connector definition at build time.
DO NOT EDIT MANUALLY - changes will be overwritten on next generation.
"""

from __future__ import annotations

from ._vendored.connector_sdk.types import (
    Action,
    AuthConfig,
    AuthType,
    ConnectorModel,
    ContentType,
    EndpointDefinition,
    EntityDefinition,
)
from ._vendored.connector_sdk.schema.security import (
    AirbyteAuthConfig,
    AuthConfigFieldSpec,
)
from uuid import (
    UUID,
)

StripeConnectorModel: ConnectorModel = ConnectorModel(
    id=UUID('e094cb9a-26de-4645-8761-65c0c425d1de'),
    name='stripe',
    version='0.1.4',
    base_url='https://api.stripe.com',
    auth=AuthConfig(
        type=AuthType.BEARER,
        config={'header': 'Authorization', 'prefix': 'Bearer'},
        user_config_spec=AirbyteAuthConfig(
            title='API Key Authentication',
            type='object',
            required=['api_key'],
            properties={
                'api_key': AuthConfigFieldSpec(
                    title='API Key',
                    description='Your Stripe API Key (starts with sk_test_ or sk_live_)',
                    airbyte_secret=True,
                ),
            },
            auth_mapping={'token': '${api_key}'},
            replication_auth_key_mapping={'client_secret': 'api_key'},
        ),
    ),
    entities=[
        EntityDefinition(
            name='customers',
            actions=[
                Action.LIST,
                Action.CREATE,
                Action.GET,
                Action.UPDATE,
                Action.DELETE,
                Action.API_SEARCH,
            ],
            endpoints={
                Action.LIST: EndpointDefinition(
                    method='GET',
                    path='/v1/customers',
                    action=Action.LIST,
                    description='Returns a list of your customers. The customers are returned sorted by creation date, with the most recent customers appearing first.',
                    query_params=[
                        'limit',
                        'starting_after',
                        'ending_before',
                        'email',
                        'created',
                    ],
                    query_params_schema={
                        'limit': {'type': 'integer', 'required': False},
                        'starting_after': {'type': 'string', 'required': False},
                        'ending_before': {'type': 'string', 'required': False},
                        'email': {'type': 'string', 'required': False},
                        'created': {'type': 'object', 'required': False},
                    },
                    deep_object_params=['created'],
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['list'],
                            },
                            'data': {
                                'type': 'array',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the customer'},
                                        'object': {
                                            'type': 'string',
                                            'description': "String representing the object's type",
                                            'enum': ['customer'],
                                        },
                                        'address': {
                                            'type': ['object', 'null'],
                                            'description': "The customer's address",
                                            'properties': {
                                                'city': {
                                                    'type': ['string', 'null'],
                                                    'description': 'City, district, suburb, town, or village',
                                                },
                                                'country': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                },
                                                'line1': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Address line 1, such as the street, PO Box, or company name',
                                                },
                                                'line2': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Address line 2, such as the apartment, suite, unit, or building',
                                                },
                                                'postal_code': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ZIP or postal code',
                                                },
                                                'state': {
                                                    'type': ['string', 'null'],
                                                    'description': 'State, county, province, or region',
                                                },
                                            },
                                        },
                                        'balance': {'type': 'integer', 'description': 'The current balance stored on the customer'},
                                        'business_name': {
                                            'type': ['string', 'null'],
                                            'description': "The customer's business name",
                                        },
                                        'cash_balance': {
                                            'type': ['object', 'null'],
                                            'description': 'The current funds being held by Stripe on behalf of the customer',
                                            'properties': {
                                                'object': {'type': 'string', 'description': "String representing the object's type"},
                                                'available': {
                                                    'type': ['object', 'null'],
                                                    'description': 'A hash of all cash balances available to this customer',
                                                },
                                                'customer': {'type': 'string', 'description': 'The ID of the customer whose cash balance this object represents'},
                                                'customer_account': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The ID of the account whose cash balance this object represents',
                                                },
                                                'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                                'settings': {
                                                    'type': 'object',
                                                    'description': 'A hash of settings for this cash balance',
                                                    'properties': {
                                                        'reconciliation_mode': {
                                                            'type': 'string',
                                                            'enum': ['automatic', 'manual'],
                                                            'description': 'The configuration for how funds that land in the customer cash balance are reconciled',
                                                        },
                                                        'using_merchant_default': {'type': 'boolean', 'description': "A flag to indicate if reconciliation mode returned is the user's default or is specific to this customer cash balance"},
                                                    },
                                                },
                                            },
                                        },
                                        'created': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'Time at which the object was created (Unix timestamp)',
                                        },
                                        'currency': {
                                            'type': ['string', 'null'],
                                            'description': 'Three-letter ISO code for the currency the customer can be charged in for recurring billing purposes',
                                        },
                                        'customer_account': {
                                            'type': ['string', 'null'],
                                            'description': 'The ID of the customer account associated with this customer',
                                        },
                                        'default_currency': {
                                            'type': ['string', 'null'],
                                            'description': 'The default currency for the customer',
                                        },
                                        'default_source': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the default payment source for the customer',
                                        },
                                        'delinquent': {
                                            'type': ['boolean', 'null'],
                                            'description': 'Whether the customer is delinquent on payments',
                                        },
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': 'An arbitrary string attached to the object',
                                        },
                                        'discount': {
                                            'type': ['object', 'null'],
                                            'description': 'Describes the current discount active on the customer, if there is one',
                                            'properties': {
                                                'id': {'type': 'string', 'description': 'The ID of the discount object'},
                                                'object': {'type': 'string', 'description': "String representing the object's type"},
                                                'checkout_session': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The Checkout session that this coupon is applied to, if applicable',
                                                },
                                                'customer': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The ID of the customer associated with this discount',
                                                },
                                                'customer_account': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The ID of the account associated with this discount',
                                                },
                                                'end': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'If the coupon has a duration of repeating, the date that this discount will end',
                                                },
                                                'invoice': {
                                                    'type': ['string', 'null'],
                                                    'description': "The invoice that the discount's coupon was applied to",
                                                },
                                                'invoice_item': {
                                                    'type': ['string', 'null'],
                                                    'description': "The invoice item that the discount's coupon was applied to",
                                                },
                                                'promotion_code': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The promotion code applied to create this discount',
                                                },
                                                'source': {
                                                    'type': 'object',
                                                    'description': 'The source of the discount',
                                                    'properties': {
                                                        'coupon': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The coupon that was redeemed to create this discount',
                                                        },
                                                        'type': {
                                                            'type': 'string',
                                                            'enum': ['coupon'],
                                                            'description': 'The source type of the discount',
                                                        },
                                                    },
                                                },
                                                'start': {'type': 'integer', 'description': 'Date that the coupon was applied'},
                                                'subscription': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The subscription that this coupon is applied to',
                                                },
                                                'subscription_item': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The subscription item that this coupon is applied to',
                                                },
                                            },
                                        },
                                        'email': {
                                            'type': ['string', 'null'],
                                            'format': 'email',
                                            'description': "The customer's email address",
                                        },
                                        'individual_name': {
                                            'type': ['string', 'null'],
                                            'description': "The customer's individual name",
                                        },
                                        'invoice_credit_balance': {'type': 'object', 'description': 'The current multi-currency balances stored on the customer'},
                                        'invoice_prefix': {
                                            'type': ['string', 'null'],
                                            'description': 'The prefix for the customer used to generate unique invoice numbers',
                                        },
                                        'invoice_settings': {
                                            'type': 'object',
                                            'description': "The customer's default invoice settings",
                                            'properties': {
                                                'custom_fields': {
                                                    'type': ['array', 'null'],
                                                    'description': 'Default custom fields to be displayed on invoices for this customer',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'name': {'type': 'string', 'description': 'The name of the custom field'},
                                                            'value': {'type': 'string', 'description': 'The value of the custom field'},
                                                        },
                                                    },
                                                },
                                                'default_payment_method': {
                                                    'type': ['string', 'null'],
                                                    'description': "ID of a payment method that's attached to the customer",
                                                },
                                                'footer': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Default footer to be displayed on invoices for this customer',
                                                },
                                                'rendering_options': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Default options for invoice PDF rendering for this customer',
                                                    'properties': {
                                                        'amount_tax_display': {
                                                            'type': ['string', 'null'],
                                                            'description': 'How line-item prices and amounts will be displayed with respect to tax on invoice PDFs',
                                                        },
                                                        'template': {
                                                            'type': ['string', 'null'],
                                                            'description': "ID of the invoice rendering template to be used for this customer's invoices",
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                        'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                        'metadata': {
                                            'type': 'object',
                                            'additionalProperties': {'type': 'string'},
                                            'description': 'Set of key-value pairs that you can attach to an object',
                                        },
                                        'name': {
                                            'type': ['string', 'null'],
                                            'description': "The customer's full name or business name",
                                        },
                                        'next_invoice_sequence': {
                                            'type': ['integer', 'null'],
                                            'description': "The suffix of the customer's next invoice number",
                                        },
                                        'phone': {
                                            'type': ['string', 'null'],
                                            'description': "The customer's phone number",
                                        },
                                        'preferred_locales': {
                                            'type': ['array', 'null'],
                                            'items': {'type': 'string'},
                                            'description': "The customer's preferred locales (languages), ordered by preference",
                                        },
                                        'shipping': {
                                            'type': ['object', 'null'],
                                            'description': 'Mailing and shipping address for the customer',
                                            'properties': {
                                                'address': {
                                                    'type': 'object',
                                                    'description': 'Customer shipping address',
                                                    'properties': {
                                                        'city': {
                                                            'type': ['string', 'null'],
                                                            'description': 'City, district, suburb, town, or village',
                                                        },
                                                        'country': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                        },
                                                        'line1': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Address line 1, such as the street, PO Box, or company name',
                                                        },
                                                        'line2': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Address line 2, such as the apartment, suite, unit, or building',
                                                        },
                                                        'postal_code': {
                                                            'type': ['string', 'null'],
                                                            'description': 'ZIP or postal code',
                                                        },
                                                        'state': {
                                                            'type': ['string', 'null'],
                                                            'description': 'State, county, province, or region',
                                                        },
                                                    },
                                                },
                                                'name': {'type': 'string', 'description': 'Customer name'},
                                                'phone': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Customer phone (including extension)',
                                                },
                                            },
                                        },
                                        'sources': {
                                            'type': ['object', 'null'],
                                            'description': "The customer's payment sources, if any",
                                            'properties': {
                                                'object': {
                                                    'type': 'string',
                                                    'enum': ['list'],
                                                    'description': "String representing the object's type",
                                                },
                                                'data': {
                                                    'type': 'array',
                                                    'description': 'Details about each object',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                            'object': {'type': 'string', 'description': "String representing the object's type"},
                                                            'account': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The account this bank account belongs to',
                                                            },
                                                            'account_holder_name': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The name of the person or business that owns the bank account',
                                                            },
                                                            'account_holder_type': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The type of entity that holds the account',
                                                            },
                                                            'account_type': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The bank account type',
                                                            },
                                                            'available_payout_methods': {
                                                                'type': ['array', 'null'],
                                                                'description': 'A set of available payout methods for this bank account',
                                                                'items': {
                                                                    'type': 'string',
                                                                    'enum': ['instant', 'standard'],
                                                                },
                                                            },
                                                            'bank_name': {
                                                                'type': ['string', 'null'],
                                                                'description': 'Name of the bank associated with the routing number',
                                                            },
                                                            'country': {'type': 'string', 'description': 'Two-letter ISO code representing the country the bank account is located in'},
                                                            'currency': {'type': 'string', 'description': 'Three-letter ISO code for the currency paid out to the bank account'},
                                                            'customer': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The ID of the customer that the bank account is associated with',
                                                            },
                                                            'fingerprint': {
                                                                'type': ['string', 'null'],
                                                                'description': 'Uniquely identifies this particular bank account',
                                                            },
                                                            'last4': {'type': 'string', 'description': 'The last four digits of the bank account number'},
                                                            'metadata': {
                                                                'type': ['object', 'null'],
                                                                'description': 'Set of key-value pairs that you can attach to an object',
                                                                'additionalProperties': {'type': 'string'},
                                                            },
                                                            'routing_number': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The routing transit number for the bank account',
                                                            },
                                                            'status': {'type': 'string', 'description': 'The status of the bank account'},
                                                        },
                                                    },
                                                },
                                                'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                                                'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                            },
                                        },
                                        'subscriptions': {
                                            'type': ['object', 'null'],
                                            'description': "The customer's current subscriptions, if any",
                                            'properties': {
                                                'object': {
                                                    'type': 'string',
                                                    'enum': ['list'],
                                                    'description': "String representing the object's type",
                                                },
                                                'data': {
                                                    'type': 'array',
                                                    'description': 'Details about each subscription',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                            'object': {
                                                                'type': 'string',
                                                                'description': "String representing the object's type",
                                                                'enum': ['subscription'],
                                                            },
                                                            'application': {
                                                                'type': ['string', 'null'],
                                                                'description': 'ID of the Connect Application that created the subscription',
                                                            },
                                                            'application_fee_percent': {
                                                                'type': ['number', 'null'],
                                                                'format': 'float',
                                                                'description': 'A non-negative decimal between 0 and 100, with at most two decimal places',
                                                            },
                                                            'automatic_tax': {
                                                                'type': 'object',
                                                                'description': 'Automatic tax settings for this subscription',
                                                                'properties': {
                                                                    'disabled_reason': {
                                                                        'type': ['string', 'null'],
                                                                        'description': 'If Stripe disabled automatic tax, this enum describes why',
                                                                    },
                                                                    'enabled': {'type': 'boolean', 'description': 'Whether Stripe automatically computes tax on this subscription'},
                                                                    'liability': {
                                                                        'type': ['object', 'null'],
                                                                        'description': "The account that's liable for tax",
                                                                        'properties': {
                                                                            'account': {
                                                                                'type': ['string', 'null'],
                                                                                'description': 'The connected account being referenced when type is account',
                                                                            },
                                                                            'type': {
                                                                                'type': 'string',
                                                                                'enum': ['account', 'self'],
                                                                                'description': 'Type of the account referenced',
                                                                            },
                                                                        },
                                                                    },
                                                                },
                                                            },
                                                            'billing_cycle_anchor': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': 'The reference point that aligns future billing cycle dates',
                                                            },
                                                            'billing_cycle_anchor_config': {
                                                                'type': ['object', 'null'],
                                                                'description': 'The fixed values used to calculate the billing_cycle_anchor',
                                                                'properties': {
                                                                    'day_of_month': {'type': 'integer', 'description': 'The day of the month of the billing_cycle_anchor'},
                                                                    'hour': {
                                                                        'type': ['integer', 'null'],
                                                                        'description': 'The hour of the day of the billing_cycle_anchor',
                                                                    },
                                                                    'minute': {
                                                                        'type': ['integer', 'null'],
                                                                        'description': 'The minute of the hour of the billing_cycle_anchor',
                                                                    },
                                                                    'month': {
                                                                        'type': ['integer', 'null'],
                                                                        'description': 'The month to start full cycle billing periods',
                                                                    },
                                                                    'second': {
                                                                        'type': ['integer', 'null'],
                                                                        'description': 'The second of the minute of the billing_cycle_anchor',
                                                                    },
                                                                },
                                                            },
                                                            'billing_mode': {
                                                                'type': 'object',
                                                                'description': 'Controls how prorations and invoices for subscriptions are calculated and orchestrated',
                                                                'properties': {
                                                                    'flexible': {
                                                                        'type': ['object', 'null'],
                                                                        'description': 'Configure behavior for flexible billing mode',
                                                                        'properties': {
                                                                            'proration_discounts': {
                                                                                'type': 'string',
                                                                                'enum': ['included', 'itemized'],
                                                                                'description': 'Controls how invoices and invoice items display proration amounts and discount amounts',
                                                                            },
                                                                        },
                                                                    },
                                                                    'type': {
                                                                        'type': 'string',
                                                                        'enum': ['classic', 'flexible'],
                                                                        'description': 'Controls how prorations and invoices for subscriptions are calculated and orchestrated',
                                                                    },
                                                                    'updated_at': {
                                                                        'type': ['integer', 'null'],
                                                                        'format': 'int64',
                                                                        'description': 'Details on when the current billing_mode was adopted',
                                                                    },
                                                                },
                                                            },
                                                            'billing_thresholds': {
                                                                'type': ['object', 'null'],
                                                                'description': 'Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period',
                                                                'properties': {
                                                                    'amount_gte': {
                                                                        'type': ['integer', 'null'],
                                                                        'description': 'Monetary threshold that triggers the subscription to create an invoice',
                                                                    },
                                                                    'reset_billing_cycle_anchor': {
                                                                        'type': ['boolean', 'null'],
                                                                        'description': 'Indicates if the billing_cycle_anchor should be reset when a threshold is reached',
                                                                    },
                                                                },
                                                            },
                                                            'cancel_at': {
                                                                'type': ['integer', 'null'],
                                                                'format': 'int64',
                                                                'description': 'A date in the future at which the subscription will automatically get canceled',
                                                            },
                                                            'cancel_at_period_end': {'type': 'boolean', 'description': 'Whether this subscription will (if status=active) or did (if status=canceled) cancel at the end of the current billing period'},
                                                            'canceled_at': {
                                                                'type': ['integer', 'null'],
                                                                'format': 'int64',
                                                                'description': 'If the subscription has been canceled, the date of that cancellation',
                                                            },
                                                            'cancellation_details': {
                                                                'type': ['object', 'null'],
                                                                'description': 'Details about why this subscription was cancelled',
                                                                'properties': {
                                                                    'comment': {
                                                                        'type': ['string', 'null'],
                                                                        'description': 'Additional comments about why the user canceled the subscription',
                                                                    },
                                                                    'feedback': {
                                                                        'type': ['string', 'null'],
                                                                        'description': 'The customer submitted reason for why they canceled',
                                                                    },
                                                                    'reason': {
                                                                        'type': ['string', 'null'],
                                                                        'description': 'Why this subscription was canceled',
                                                                    },
                                                                },
                                                            },
                                                            'collection_method': {
                                                                'type': 'string',
                                                                'enum': ['charge_automatically', 'send_invoice'],
                                                                'description': 'Either charge_automatically, or send_invoice',
                                                            },
                                                            'created': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': 'Time at which the object was created. Measured in seconds since the Unix epoch',
                                                            },
                                                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                                            'customer': {'type': 'string', 'description': 'ID of the customer who owns the subscription'},
                                                            'customer_account': {
                                                                'type': ['string', 'null'],
                                                                'description': 'ID of the account who owns the subscription',
                                                            },
                                                            'days_until_due': {
                                                                'type': ['integer', 'null'],
                                                                'description': 'Number of days a customer has to pay invoices generated by this subscription',
                                                            },
                                                            'default_payment_method': {
                                                                'type': ['string', 'null'],
                                                                'description': 'ID of the default payment method for the subscription',
                                                            },
                                                            'default_source': {
                                                                'type': ['string', 'null'],
                                                                'description': 'ID of the default payment source for the subscription',
                                                            },
                                                            'default_tax_rates': {
                                                                'type': ['array', 'null'],
                                                                'description': 'The tax rates that will apply to any subscription item that does not have tax_rates set',
                                                                'items': {
                                                                    'type': 'object',
                                                                    'properties': {
                                                                        'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                                        'object': {'type': 'string', 'description': "String representing the object's type"},
                                                                        'active': {'type': 'boolean', 'description': 'Defaults to true'},
                                                                        'country': {
                                                                            'type': ['string', 'null'],
                                                                            'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                                        },
                                                                        'created': {
                                                                            'type': 'integer',
                                                                            'format': 'int64',
                                                                            'description': 'Time at which the object was created',
                                                                        },
                                                                        'description': {
                                                                            'type': ['string', 'null'],
                                                                            'description': 'An arbitrary string attached to the tax rate for your internal use only',
                                                                        },
                                                                        'display_name': {'type': 'string', 'description': 'The display name of the tax rates'},
                                                                        'effective_percentage': {
                                                                            'type': ['number', 'null'],
                                                                            'description': 'Actual/effective tax rate percentage out of 100',
                                                                        },
                                                                        'flat_amount': {
                                                                            'type': ['object', 'null'],
                                                                            'description': 'The amount of the tax rate when the rate_type is flat_amount',
                                                                            'properties': {
                                                                                'amount': {'type': 'integer', 'description': 'Amount of the tax when the rate_type is flat_amount'},
                                                                                'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                                                            },
                                                                        },
                                                                        'inclusive': {'type': 'boolean', 'description': 'This specifies if the tax rate is inclusive or exclusive'},
                                                                        'jurisdiction': {
                                                                            'type': ['string', 'null'],
                                                                            'description': 'The jurisdiction for the tax rate',
                                                                        },
                                                                        'jurisdiction_level': {
                                                                            'type': ['string', 'null'],
                                                                            'enum': [
                                                                                'city',
                                                                                'country',
                                                                                'county',
                                                                                'district',
                                                                                'multiple',
                                                                                'state',
                                                                            ],
                                                                            'description': 'The level of the jurisdiction that imposes this tax rate',
                                                                        },
                                                                        'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                                                        'metadata': {
                                                                            'type': ['object', 'null'],
                                                                            'description': 'Set of key-value pairs',
                                                                            'additionalProperties': {'type': 'string'},
                                                                        },
                                                                        'percentage': {'type': 'number', 'description': 'Tax rate percentage out of 100'},
                                                                        'rate_type': {
                                                                            'type': ['string', 'null'],
                                                                            'enum': ['flat_amount', 'percentage'],
                                                                            'description': 'Indicates the type of tax rate applied to the taxable amount',
                                                                        },
                                                                        'state': {
                                                                            'type': ['string', 'null'],
                                                                            'description': 'ISO 3166-2 subdivision code, without country prefix',
                                                                        },
                                                                        'tax_type': {
                                                                            'type': ['string', 'null'],
                                                                            'enum': [
                                                                                'amusement_tax',
                                                                                'communications_tax',
                                                                                'gst',
                                                                                'hst',
                                                                                'igst',
                                                                                'jct',
                                                                                'lease_tax',
                                                                                'pst',
                                                                                'qst',
                                                                                'retail_delivery_fee',
                                                                                'rst',
                                                                                'sales_tax',
                                                                                'service_tax',
                                                                                'vat',
                                                                            ],
                                                                            'description': 'The high-level tax type',
                                                                        },
                                                                    },
                                                                },
                                                            },
                                                            'description': {
                                                                'type': ['string', 'null'],
                                                                'description': "The subscription's description, meant to be displayable to the customer",
                                                            },
                                                            'discounts': {
                                                                'type': 'array',
                                                                'items': {'type': 'string'},
                                                                'description': 'The discounts applied to the subscription',
                                                            },
                                                            'ended_at': {
                                                                'type': ['integer', 'null'],
                                                                'format': 'int64',
                                                                'description': 'If the subscription has ended, the date the subscription ended',
                                                            },
                                                            'invoice_settings': {
                                                                'type': 'object',
                                                                'description': 'All invoices will be billed using the specified settings',
                                                                'properties': {
                                                                    'account_tax_ids': {
                                                                        'type': ['array', 'null'],
                                                                        'description': 'The account tax IDs associated with the subscription',
                                                                        'items': {'type': 'string'},
                                                                    },
                                                                    'issuer': {
                                                                        'type': 'object',
                                                                        'description': 'The connected account that issues the invoice',
                                                                        'properties': {
                                                                            'account': {
                                                                                'type': ['string', 'null'],
                                                                                'description': 'The connected account being referenced when type is account',
                                                                            },
                                                                            'type': {
                                                                                'type': 'string',
                                                                                'enum': ['account', 'self'],
                                                                                'description': 'Type of the account referenced',
                                                                            },
                                                                        },
                                                                    },
                                                                },
                                                            },
                                                            'items': {
                                                                'type': 'object',
                                                                'description': 'List of subscription items, each with an attached price',
                                                                'properties': {
                                                                    'object': {
                                                                        'type': 'string',
                                                                        'enum': ['list'],
                                                                        'description': "String representing the object's type",
                                                                    },
                                                                    'data': {
                                                                        'type': 'array',
                                                                        'description': 'Details about each object',
                                                                        'items': {
                                                                            'type': 'object',
                                                                            'properties': {
                                                                                'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                                                'object': {'type': 'string', 'description': "String representing the object's type"},
                                                                                'billing_thresholds': {
                                                                                    'type': ['object', 'null'],
                                                                                    'description': 'Define thresholds at which an invoice will be sent',
                                                                                    'properties': {
                                                                                        'usage_gte': {
                                                                                            'type': ['integer', 'null'],
                                                                                            'description': 'Usage threshold that triggers the subscription to create an invoice',
                                                                                        },
                                                                                    },
                                                                                },
                                                                                'created': {
                                                                                    'type': 'integer',
                                                                                    'format': 'int64',
                                                                                    'description': 'Time at which the object was created',
                                                                                },
                                                                                'current_period_end': {
                                                                                    'type': 'integer',
                                                                                    'format': 'int64',
                                                                                    'description': "The end time of this subscription item's current billing period",
                                                                                },
                                                                                'current_period_start': {
                                                                                    'type': 'integer',
                                                                                    'format': 'int64',
                                                                                    'description': "The start time of this subscription item's current billing period",
                                                                                },
                                                                                'discounts': {
                                                                                    'type': 'array',
                                                                                    'items': {'type': 'string'},
                                                                                    'description': 'The discounts applied to the subscription item',
                                                                                },
                                                                                'metadata': {
                                                                                    'type': 'object',
                                                                                    'description': 'Set of key-value pairs',
                                                                                    'additionalProperties': {'type': 'string'},
                                                                                },
                                                                                'plan': {
                                                                                    'type': ['object', 'null'],
                                                                                    'description': 'The plan the customer is subscribed to (deprecated, use price instead)',
                                                                                    'additionalProperties': True,
                                                                                },
                                                                                'price': {
                                                                                    'type': 'object',
                                                                                    'description': 'The price the customer is subscribed to',
                                                                                    'additionalProperties': True,
                                                                                },
                                                                                'quantity': {
                                                                                    'type': ['integer', 'null'],
                                                                                    'description': 'The quantity of the plan to which the customer should be subscribed',
                                                                                },
                                                                                'subscription': {'type': 'string', 'description': 'The subscription this subscription_item belongs to'},
                                                                                'tax_rates': {
                                                                                    'type': ['array', 'null'],
                                                                                    'description': 'The tax rates which apply to this subscription_item',
                                                                                    'items': {'type': 'object', 'additionalProperties': True},
                                                                                },
                                                                            },
                                                                        },
                                                                    },
                                                                    'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                                                                    'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                                                    'total_count': {'type': 'integer', 'description': 'The total count of items in the list'},
                                                                },
                                                            },
                                                            'latest_invoice': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The most recent invoice this subscription has generated',
                                                            },
                                                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                                            'metadata': {
                                                                'type': 'object',
                                                                'additionalProperties': {'type': 'string'},
                                                                'description': 'Set of key-value pairs',
                                                            },
                                                            'next_pending_invoice_item_invoice': {
                                                                'type': ['integer', 'null'],
                                                                'format': 'int64',
                                                                'description': 'Specifies the approximate timestamp on which any pending invoice items will be billed',
                                                            },
                                                            'on_behalf_of': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The account (if any) the charge was made on behalf of for charges associated with this subscription',
                                                            },
                                                            'pause_collection': {
                                                                'type': ['object', 'null'],
                                                                'description': 'If specified, payment collection for this subscription will be paused',
                                                                'properties': {
                                                                    'behavior': {
                                                                        'type': 'string',
                                                                        'enum': ['keep_as_draft', 'mark_uncollectible', 'void'],
                                                                        'description': 'The payment collection behavior for this subscription while paused',
                                                                    },
                                                                    'resumes_at': {
                                                                        'type': ['integer', 'null'],
                                                                        'format': 'int64',
                                                                        'description': 'The time after which the subscription will resume collecting payments',
                                                                    },
                                                                },
                                                            },
                                                            'payment_settings': {
                                                                'type': ['object', 'null'],
                                                                'description': 'Payment settings passed on to invoices created by the subscription',
                                                                'properties': {
                                                                    'payment_method_options': {
                                                                        'type': ['object', 'null'],
                                                                        'description': 'Payment-method-specific configuration to provide to invoices',
                                                                        'additionalProperties': True,
                                                                    },
                                                                    'payment_method_types': {
                                                                        'type': ['array', 'null'],
                                                                        'description': 'The list of payment method types to provide to every invoice',
                                                                        'items': {'type': 'string'},
                                                                    },
                                                                },
                                                            },
                                                            'status': {
                                                                'type': 'string',
                                                                'enum': [
                                                                    'incomplete',
                                                                    'incomplete_expired',
                                                                    'trialing',
                                                                    'active',
                                                                    'past_due',
                                                                    'canceled',
                                                                    'unpaid',
                                                                    'paused',
                                                                ],
                                                                'description': 'The status of the subscription',
                                                            },
                                                            'current_period_start': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': 'Start of the current period for which the subscription has been invoiced',
                                                            },
                                                            'current_period_end': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': 'End of the current period for which the subscription has been invoiced',
                                                            },
                                                            'start_date': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': 'Date when the subscription was first created',
                                                            },
                                                            'trial_start': {
                                                                'type': ['integer', 'null'],
                                                                'format': 'int64',
                                                                'description': 'If the subscription has a trial, the beginning of that trial',
                                                            },
                                                            'trial_end': {
                                                                'type': ['integer', 'null'],
                                                                'format': 'int64',
                                                                'description': 'If the subscription has a trial, the end of that trial',
                                                            },
                                                            'discount': {
                                                                'type': ['object', 'null'],
                                                                'description': 'The discount applied to the subscription',
                                                            },
                                                            'plan': {
                                                                'type': ['object', 'null'],
                                                                'description': 'The subscription plan (deprecated, use price instead)',
                                                            },
                                                            'quantity': {
                                                                'type': ['integer', 'null'],
                                                                'description': 'The quantity of the subscription',
                                                            },
                                                            'schedule': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The schedule attached to the subscription',
                                                            },
                                                            'test_clock': {
                                                                'type': ['string', 'null'],
                                                                'description': 'ID of the test clock this subscription belongs to',
                                                            },
                                                            'transfer_data': {
                                                                'type': ['object', 'null'],
                                                                'description': "The account (if any) the subscription's payments will be attributed to for tax reporting",
                                                            },
                                                            'trial_settings': {
                                                                'type': ['object', 'null'],
                                                                'description': 'Settings related to subscription trials',
                                                                'properties': {
                                                                    'end_behavior': {
                                                                        'type': 'object',
                                                                        'properties': {
                                                                            'missing_payment_method': {'type': 'string', 'description': 'Behavior when the trial ends and payment method is missing'},
                                                                        },
                                                                    },
                                                                },
                                                            },
                                                            'pending_invoice_item_interval': {
                                                                'type': ['object', 'null'],
                                                                'description': 'Specifies an interval for how often to bill for any pending invoice items',
                                                            },
                                                            'pending_setup_intent': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The ID of the SetupIntent to be confirmed',
                                                            },
                                                            'pending_update': {
                                                                'type': ['object', 'null'],
                                                                'description': 'If specified, pending updates that will be applied to the subscription once the latest_invoice has been paid',
                                                            },
                                                        },
                                                        'x-airbyte-entity-name': 'subscriptions',
                                                    },
                                                },
                                                'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                                                'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                            },
                                        },
                                        'tax_exempt': {
                                            'type': ['string', 'null'],
                                            'description': "Describes the customer's tax exemption status",
                                        },
                                        'test_clock': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the test clock this customer belongs to',
                                        },
                                    },
                                    'x-airbyte-entity-name': 'customers',
                                },
                            },
                            'has_more': {'type': 'boolean'},
                            'url': {'type': 'string'},
                        },
                    },
                    record_extractor='$.data',
                    meta_extractor={'has_more': '$.has_more'},
                ),
                Action.CREATE: EndpointDefinition(
                    method='POST',
                    path='/v1/customers',
                    action=Action.CREATE,
                    description='Creates a new customer object.',
                    body_fields=[
                        'email',
                        'name',
                        'description',
                        'phone',
                        'address',
                        'metadata',
                    ],
                    content_type=ContentType.FORM_URLENCODED,
                    request_schema={
                        'type': 'object',
                        'properties': {
                            'email': {'type': 'string', 'description': "Customer's email address"},
                            'name': {'type': 'string', 'description': "The customer's full name or business name"},
                            'description': {'type': 'string', 'description': 'An arbitrary string attached to the object'},
                            'phone': {'type': 'string', 'description': "The customer's phone number"},
                            'address': {
                                'type': 'object',
                                'description': "The customer's address",
                                'properties': {
                                    'line1': {'type': 'string', 'description': 'Address line 1'},
                                    'line2': {'type': 'string', 'description': 'Address line 2'},
                                    'city': {'type': 'string', 'description': 'City, district, suburb, town, or village'},
                                    'state': {'type': 'string', 'description': 'State, county, province, or region'},
                                    'postal_code': {'type': 'string', 'description': 'ZIP or postal code'},
                                    'country': {'type': 'string', 'description': 'Two-letter country code (ISO 3166-1 alpha-2)'},
                                },
                            },
                            'metadata': {
                                'type': 'object',
                                'description': 'Set of key-value pairs that you can attach to an object',
                                'additionalProperties': {'type': 'string'},
                            },
                        },
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'id': {'type': 'string', 'description': 'Unique identifier for the customer'},
                            'object': {
                                'type': 'string',
                                'description': "String representing the object's type",
                                'enum': ['customer'],
                            },
                            'address': {
                                'type': ['object', 'null'],
                                'description': "The customer's address",
                                'properties': {
                                    'city': {
                                        'type': ['string', 'null'],
                                        'description': 'City, district, suburb, town, or village',
                                    },
                                    'country': {
                                        'type': ['string', 'null'],
                                        'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                    },
                                    'line1': {
                                        'type': ['string', 'null'],
                                        'description': 'Address line 1, such as the street, PO Box, or company name',
                                    },
                                    'line2': {
                                        'type': ['string', 'null'],
                                        'description': 'Address line 2, such as the apartment, suite, unit, or building',
                                    },
                                    'postal_code': {
                                        'type': ['string', 'null'],
                                        'description': 'ZIP or postal code',
                                    },
                                    'state': {
                                        'type': ['string', 'null'],
                                        'description': 'State, county, province, or region',
                                    },
                                },
                            },
                            'balance': {'type': 'integer', 'description': 'The current balance stored on the customer'},
                            'business_name': {
                                'type': ['string', 'null'],
                                'description': "The customer's business name",
                            },
                            'cash_balance': {
                                'type': ['object', 'null'],
                                'description': 'The current funds being held by Stripe on behalf of the customer',
                                'properties': {
                                    'object': {'type': 'string', 'description': "String representing the object's type"},
                                    'available': {
                                        'type': ['object', 'null'],
                                        'description': 'A hash of all cash balances available to this customer',
                                    },
                                    'customer': {'type': 'string', 'description': 'The ID of the customer whose cash balance this object represents'},
                                    'customer_account': {
                                        'type': ['string', 'null'],
                                        'description': 'The ID of the account whose cash balance this object represents',
                                    },
                                    'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                    'settings': {
                                        'type': 'object',
                                        'description': 'A hash of settings for this cash balance',
                                        'properties': {
                                            'reconciliation_mode': {
                                                'type': 'string',
                                                'enum': ['automatic', 'manual'],
                                                'description': 'The configuration for how funds that land in the customer cash balance are reconciled',
                                            },
                                            'using_merchant_default': {'type': 'boolean', 'description': "A flag to indicate if reconciliation mode returned is the user's default or is specific to this customer cash balance"},
                                        },
                                    },
                                },
                            },
                            'created': {
                                'type': 'integer',
                                'format': 'int64',
                                'description': 'Time at which the object was created (Unix timestamp)',
                            },
                            'currency': {
                                'type': ['string', 'null'],
                                'description': 'Three-letter ISO code for the currency the customer can be charged in for recurring billing purposes',
                            },
                            'customer_account': {
                                'type': ['string', 'null'],
                                'description': 'The ID of the customer account associated with this customer',
                            },
                            'default_currency': {
                                'type': ['string', 'null'],
                                'description': 'The default currency for the customer',
                            },
                            'default_source': {
                                'type': ['string', 'null'],
                                'description': 'ID of the default payment source for the customer',
                            },
                            'delinquent': {
                                'type': ['boolean', 'null'],
                                'description': 'Whether the customer is delinquent on payments',
                            },
                            'description': {
                                'type': ['string', 'null'],
                                'description': 'An arbitrary string attached to the object',
                            },
                            'discount': {
                                'type': ['object', 'null'],
                                'description': 'Describes the current discount active on the customer, if there is one',
                                'properties': {
                                    'id': {'type': 'string', 'description': 'The ID of the discount object'},
                                    'object': {'type': 'string', 'description': "String representing the object's type"},
                                    'checkout_session': {
                                        'type': ['string', 'null'],
                                        'description': 'The Checkout session that this coupon is applied to, if applicable',
                                    },
                                    'customer': {
                                        'type': ['string', 'null'],
                                        'description': 'The ID of the customer associated with this discount',
                                    },
                                    'customer_account': {
                                        'type': ['string', 'null'],
                                        'description': 'The ID of the account associated with this discount',
                                    },
                                    'end': {
                                        'type': ['integer', 'null'],
                                        'description': 'If the coupon has a duration of repeating, the date that this discount will end',
                                    },
                                    'invoice': {
                                        'type': ['string', 'null'],
                                        'description': "The invoice that the discount's coupon was applied to",
                                    },
                                    'invoice_item': {
                                        'type': ['string', 'null'],
                                        'description': "The invoice item that the discount's coupon was applied to",
                                    },
                                    'promotion_code': {
                                        'type': ['string', 'null'],
                                        'description': 'The promotion code applied to create this discount',
                                    },
                                    'source': {
                                        'type': 'object',
                                        'description': 'The source of the discount',
                                        'properties': {
                                            'coupon': {
                                                'type': ['string', 'null'],
                                                'description': 'The coupon that was redeemed to create this discount',
                                            },
                                            'type': {
                                                'type': 'string',
                                                'enum': ['coupon'],
                                                'description': 'The source type of the discount',
                                            },
                                        },
                                    },
                                    'start': {'type': 'integer', 'description': 'Date that the coupon was applied'},
                                    'subscription': {
                                        'type': ['string', 'null'],
                                        'description': 'The subscription that this coupon is applied to',
                                    },
                                    'subscription_item': {
                                        'type': ['string', 'null'],
                                        'description': 'The subscription item that this coupon is applied to',
                                    },
                                },
                            },
                            'email': {
                                'type': ['string', 'null'],
                                'format': 'email',
                                'description': "The customer's email address",
                            },
                            'individual_name': {
                                'type': ['string', 'null'],
                                'description': "The customer's individual name",
                            },
                            'invoice_credit_balance': {'type': 'object', 'description': 'The current multi-currency balances stored on the customer'},
                            'invoice_prefix': {
                                'type': ['string', 'null'],
                                'description': 'The prefix for the customer used to generate unique invoice numbers',
                            },
                            'invoice_settings': {
                                'type': 'object',
                                'description': "The customer's default invoice settings",
                                'properties': {
                                    'custom_fields': {
                                        'type': ['array', 'null'],
                                        'description': 'Default custom fields to be displayed on invoices for this customer',
                                        'items': {
                                            'type': 'object',
                                            'properties': {
                                                'name': {'type': 'string', 'description': 'The name of the custom field'},
                                                'value': {'type': 'string', 'description': 'The value of the custom field'},
                                            },
                                        },
                                    },
                                    'default_payment_method': {
                                        'type': ['string', 'null'],
                                        'description': "ID of a payment method that's attached to the customer",
                                    },
                                    'footer': {
                                        'type': ['string', 'null'],
                                        'description': 'Default footer to be displayed on invoices for this customer',
                                    },
                                    'rendering_options': {
                                        'type': ['object', 'null'],
                                        'description': 'Default options for invoice PDF rendering for this customer',
                                        'properties': {
                                            'amount_tax_display': {
                                                'type': ['string', 'null'],
                                                'description': 'How line-item prices and amounts will be displayed with respect to tax on invoice PDFs',
                                            },
                                            'template': {
                                                'type': ['string', 'null'],
                                                'description': "ID of the invoice rendering template to be used for this customer's invoices",
                                            },
                                        },
                                    },
                                },
                            },
                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                            'metadata': {
                                'type': 'object',
                                'additionalProperties': {'type': 'string'},
                                'description': 'Set of key-value pairs that you can attach to an object',
                            },
                            'name': {
                                'type': ['string', 'null'],
                                'description': "The customer's full name or business name",
                            },
                            'next_invoice_sequence': {
                                'type': ['integer', 'null'],
                                'description': "The suffix of the customer's next invoice number",
                            },
                            'phone': {
                                'type': ['string', 'null'],
                                'description': "The customer's phone number",
                            },
                            'preferred_locales': {
                                'type': ['array', 'null'],
                                'items': {'type': 'string'},
                                'description': "The customer's preferred locales (languages), ordered by preference",
                            },
                            'shipping': {
                                'type': ['object', 'null'],
                                'description': 'Mailing and shipping address for the customer',
                                'properties': {
                                    'address': {
                                        'type': 'object',
                                        'description': 'Customer shipping address',
                                        'properties': {
                                            'city': {
                                                'type': ['string', 'null'],
                                                'description': 'City, district, suburb, town, or village',
                                            },
                                            'country': {
                                                'type': ['string', 'null'],
                                                'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                            },
                                            'line1': {
                                                'type': ['string', 'null'],
                                                'description': 'Address line 1, such as the street, PO Box, or company name',
                                            },
                                            'line2': {
                                                'type': ['string', 'null'],
                                                'description': 'Address line 2, such as the apartment, suite, unit, or building',
                                            },
                                            'postal_code': {
                                                'type': ['string', 'null'],
                                                'description': 'ZIP or postal code',
                                            },
                                            'state': {
                                                'type': ['string', 'null'],
                                                'description': 'State, county, province, or region',
                                            },
                                        },
                                    },
                                    'name': {'type': 'string', 'description': 'Customer name'},
                                    'phone': {
                                        'type': ['string', 'null'],
                                        'description': 'Customer phone (including extension)',
                                    },
                                },
                            },
                            'sources': {
                                'type': ['object', 'null'],
                                'description': "The customer's payment sources, if any",
                                'properties': {
                                    'object': {
                                        'type': 'string',
                                        'enum': ['list'],
                                        'description': "String representing the object's type",
                                    },
                                    'data': {
                                        'type': 'array',
                                        'description': 'Details about each object',
                                        'items': {
                                            'type': 'object',
                                            'properties': {
                                                'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                'object': {'type': 'string', 'description': "String representing the object's type"},
                                                'account': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The account this bank account belongs to',
                                                },
                                                'account_holder_name': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The name of the person or business that owns the bank account',
                                                },
                                                'account_holder_type': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The type of entity that holds the account',
                                                },
                                                'account_type': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The bank account type',
                                                },
                                                'available_payout_methods': {
                                                    'type': ['array', 'null'],
                                                    'description': 'A set of available payout methods for this bank account',
                                                    'items': {
                                                        'type': 'string',
                                                        'enum': ['instant', 'standard'],
                                                    },
                                                },
                                                'bank_name': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Name of the bank associated with the routing number',
                                                },
                                                'country': {'type': 'string', 'description': 'Two-letter ISO code representing the country the bank account is located in'},
                                                'currency': {'type': 'string', 'description': 'Three-letter ISO code for the currency paid out to the bank account'},
                                                'customer': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The ID of the customer that the bank account is associated with',
                                                },
                                                'fingerprint': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Uniquely identifies this particular bank account',
                                                },
                                                'last4': {'type': 'string', 'description': 'The last four digits of the bank account number'},
                                                'metadata': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Set of key-value pairs that you can attach to an object',
                                                    'additionalProperties': {'type': 'string'},
                                                },
                                                'routing_number': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The routing transit number for the bank account',
                                                },
                                                'status': {'type': 'string', 'description': 'The status of the bank account'},
                                            },
                                        },
                                    },
                                    'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                                    'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                },
                            },
                            'subscriptions': {
                                'type': ['object', 'null'],
                                'description': "The customer's current subscriptions, if any",
                                'properties': {
                                    'object': {
                                        'type': 'string',
                                        'enum': ['list'],
                                        'description': "String representing the object's type",
                                    },
                                    'data': {
                                        'type': 'array',
                                        'description': 'Details about each subscription',
                                        'items': {
                                            'type': 'object',
                                            'properties': {
                                                'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                'object': {
                                                    'type': 'string',
                                                    'description': "String representing the object's type",
                                                    'enum': ['subscription'],
                                                },
                                                'application': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the Connect Application that created the subscription',
                                                },
                                                'application_fee_percent': {
                                                    'type': ['number', 'null'],
                                                    'format': 'float',
                                                    'description': 'A non-negative decimal between 0 and 100, with at most two decimal places',
                                                },
                                                'automatic_tax': {
                                                    'type': 'object',
                                                    'description': 'Automatic tax settings for this subscription',
                                                    'properties': {
                                                        'disabled_reason': {
                                                            'type': ['string', 'null'],
                                                            'description': 'If Stripe disabled automatic tax, this enum describes why',
                                                        },
                                                        'enabled': {'type': 'boolean', 'description': 'Whether Stripe automatically computes tax on this subscription'},
                                                        'liability': {
                                                            'type': ['object', 'null'],
                                                            'description': "The account that's liable for tax",
                                                            'properties': {
                                                                'account': {
                                                                    'type': ['string', 'null'],
                                                                    'description': 'The connected account being referenced when type is account',
                                                                },
                                                                'type': {
                                                                    'type': 'string',
                                                                    'enum': ['account', 'self'],
                                                                    'description': 'Type of the account referenced',
                                                                },
                                                            },
                                                        },
                                                    },
                                                },
                                                'billing_cycle_anchor': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'The reference point that aligns future billing cycle dates',
                                                },
                                                'billing_cycle_anchor_config': {
                                                    'type': ['object', 'null'],
                                                    'description': 'The fixed values used to calculate the billing_cycle_anchor',
                                                    'properties': {
                                                        'day_of_month': {'type': 'integer', 'description': 'The day of the month of the billing_cycle_anchor'},
                                                        'hour': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'The hour of the day of the billing_cycle_anchor',
                                                        },
                                                        'minute': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'The minute of the hour of the billing_cycle_anchor',
                                                        },
                                                        'month': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'The month to start full cycle billing periods',
                                                        },
                                                        'second': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'The second of the minute of the billing_cycle_anchor',
                                                        },
                                                    },
                                                },
                                                'billing_mode': {
                                                    'type': 'object',
                                                    'description': 'Controls how prorations and invoices for subscriptions are calculated and orchestrated',
                                                    'properties': {
                                                        'flexible': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Configure behavior for flexible billing mode',
                                                            'properties': {
                                                                'proration_discounts': {
                                                                    'type': 'string',
                                                                    'enum': ['included', 'itemized'],
                                                                    'description': 'Controls how invoices and invoice items display proration amounts and discount amounts',
                                                                },
                                                            },
                                                        },
                                                        'type': {
                                                            'type': 'string',
                                                            'enum': ['classic', 'flexible'],
                                                            'description': 'Controls how prorations and invoices for subscriptions are calculated and orchestrated',
                                                        },
                                                        'updated_at': {
                                                            'type': ['integer', 'null'],
                                                            'format': 'int64',
                                                            'description': 'Details on when the current billing_mode was adopted',
                                                        },
                                                    },
                                                },
                                                'billing_thresholds': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period',
                                                    'properties': {
                                                        'amount_gte': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'Monetary threshold that triggers the subscription to create an invoice',
                                                        },
                                                        'reset_billing_cycle_anchor': {
                                                            'type': ['boolean', 'null'],
                                                            'description': 'Indicates if the billing_cycle_anchor should be reset when a threshold is reached',
                                                        },
                                                    },
                                                },
                                                'cancel_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'A date in the future at which the subscription will automatically get canceled',
                                                },
                                                'cancel_at_period_end': {'type': 'boolean', 'description': 'Whether this subscription will (if status=active) or did (if status=canceled) cancel at the end of the current billing period'},
                                                'canceled_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'If the subscription has been canceled, the date of that cancellation',
                                                },
                                                'cancellation_details': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Details about why this subscription was cancelled',
                                                    'properties': {
                                                        'comment': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Additional comments about why the user canceled the subscription',
                                                        },
                                                        'feedback': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The customer submitted reason for why they canceled',
                                                        },
                                                        'reason': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Why this subscription was canceled',
                                                        },
                                                    },
                                                },
                                                'collection_method': {
                                                    'type': 'string',
                                                    'enum': ['charge_automatically', 'send_invoice'],
                                                    'description': 'Either charge_automatically, or send_invoice',
                                                },
                                                'created': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'Time at which the object was created. Measured in seconds since the Unix epoch',
                                                },
                                                'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                                'customer': {'type': 'string', 'description': 'ID of the customer who owns the subscription'},
                                                'customer_account': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the account who owns the subscription',
                                                },
                                                'days_until_due': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Number of days a customer has to pay invoices generated by this subscription',
                                                },
                                                'default_payment_method': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the default payment method for the subscription',
                                                },
                                                'default_source': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the default payment source for the subscription',
                                                },
                                                'default_tax_rates': {
                                                    'type': ['array', 'null'],
                                                    'description': 'The tax rates that will apply to any subscription item that does not have tax_rates set',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                            'object': {'type': 'string', 'description': "String representing the object's type"},
                                                            'active': {'type': 'boolean', 'description': 'Defaults to true'},
                                                            'country': {
                                                                'type': ['string', 'null'],
                                                                'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                            },
                                                            'created': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': 'Time at which the object was created',
                                                            },
                                                            'description': {
                                                                'type': ['string', 'null'],
                                                                'description': 'An arbitrary string attached to the tax rate for your internal use only',
                                                            },
                                                            'display_name': {'type': 'string', 'description': 'The display name of the tax rates'},
                                                            'effective_percentage': {
                                                                'type': ['number', 'null'],
                                                                'description': 'Actual/effective tax rate percentage out of 100',
                                                            },
                                                            'flat_amount': {
                                                                'type': ['object', 'null'],
                                                                'description': 'The amount of the tax rate when the rate_type is flat_amount',
                                                                'properties': {
                                                                    'amount': {'type': 'integer', 'description': 'Amount of the tax when the rate_type is flat_amount'},
                                                                    'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                                                },
                                                            },
                                                            'inclusive': {'type': 'boolean', 'description': 'This specifies if the tax rate is inclusive or exclusive'},
                                                            'jurisdiction': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The jurisdiction for the tax rate',
                                                            },
                                                            'jurisdiction_level': {
                                                                'type': ['string', 'null'],
                                                                'enum': [
                                                                    'city',
                                                                    'country',
                                                                    'county',
                                                                    'district',
                                                                    'multiple',
                                                                    'state',
                                                                ],
                                                                'description': 'The level of the jurisdiction that imposes this tax rate',
                                                            },
                                                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                                            'metadata': {
                                                                'type': ['object', 'null'],
                                                                'description': 'Set of key-value pairs',
                                                                'additionalProperties': {'type': 'string'},
                                                            },
                                                            'percentage': {'type': 'number', 'description': 'Tax rate percentage out of 100'},
                                                            'rate_type': {
                                                                'type': ['string', 'null'],
                                                                'enum': ['flat_amount', 'percentage'],
                                                                'description': 'Indicates the type of tax rate applied to the taxable amount',
                                                            },
                                                            'state': {
                                                                'type': ['string', 'null'],
                                                                'description': 'ISO 3166-2 subdivision code, without country prefix',
                                                            },
                                                            'tax_type': {
                                                                'type': ['string', 'null'],
                                                                'enum': [
                                                                    'amusement_tax',
                                                                    'communications_tax',
                                                                    'gst',
                                                                    'hst',
                                                                    'igst',
                                                                    'jct',
                                                                    'lease_tax',
                                                                    'pst',
                                                                    'qst',
                                                                    'retail_delivery_fee',
                                                                    'rst',
                                                                    'sales_tax',
                                                                    'service_tax',
                                                                    'vat',
                                                                ],
                                                                'description': 'The high-level tax type',
                                                            },
                                                        },
                                                    },
                                                },
                                                'description': {
                                                    'type': ['string', 'null'],
                                                    'description': "The subscription's description, meant to be displayable to the customer",
                                                },
                                                'discounts': {
                                                    'type': 'array',
                                                    'items': {'type': 'string'},
                                                    'description': 'The discounts applied to the subscription',
                                                },
                                                'ended_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'If the subscription has ended, the date the subscription ended',
                                                },
                                                'invoice_settings': {
                                                    'type': 'object',
                                                    'description': 'All invoices will be billed using the specified settings',
                                                    'properties': {
                                                        'account_tax_ids': {
                                                            'type': ['array', 'null'],
                                                            'description': 'The account tax IDs associated with the subscription',
                                                            'items': {'type': 'string'},
                                                        },
                                                        'issuer': {
                                                            'type': 'object',
                                                            'description': 'The connected account that issues the invoice',
                                                            'properties': {
                                                                'account': {
                                                                    'type': ['string', 'null'],
                                                                    'description': 'The connected account being referenced when type is account',
                                                                },
                                                                'type': {
                                                                    'type': 'string',
                                                                    'enum': ['account', 'self'],
                                                                    'description': 'Type of the account referenced',
                                                                },
                                                            },
                                                        },
                                                    },
                                                },
                                                'items': {
                                                    'type': 'object',
                                                    'description': 'List of subscription items, each with an attached price',
                                                    'properties': {
                                                        'object': {
                                                            'type': 'string',
                                                            'enum': ['list'],
                                                            'description': "String representing the object's type",
                                                        },
                                                        'data': {
                                                            'type': 'array',
                                                            'description': 'Details about each object',
                                                            'items': {
                                                                'type': 'object',
                                                                'properties': {
                                                                    'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                                    'object': {'type': 'string', 'description': "String representing the object's type"},
                                                                    'billing_thresholds': {
                                                                        'type': ['object', 'null'],
                                                                        'description': 'Define thresholds at which an invoice will be sent',
                                                                        'properties': {
                                                                            'usage_gte': {
                                                                                'type': ['integer', 'null'],
                                                                                'description': 'Usage threshold that triggers the subscription to create an invoice',
                                                                            },
                                                                        },
                                                                    },
                                                                    'created': {
                                                                        'type': 'integer',
                                                                        'format': 'int64',
                                                                        'description': 'Time at which the object was created',
                                                                    },
                                                                    'current_period_end': {
                                                                        'type': 'integer',
                                                                        'format': 'int64',
                                                                        'description': "The end time of this subscription item's current billing period",
                                                                    },
                                                                    'current_period_start': {
                                                                        'type': 'integer',
                                                                        'format': 'int64',
                                                                        'description': "The start time of this subscription item's current billing period",
                                                                    },
                                                                    'discounts': {
                                                                        'type': 'array',
                                                                        'items': {'type': 'string'},
                                                                        'description': 'The discounts applied to the subscription item',
                                                                    },
                                                                    'metadata': {
                                                                        'type': 'object',
                                                                        'description': 'Set of key-value pairs',
                                                                        'additionalProperties': {'type': 'string'},
                                                                    },
                                                                    'plan': {
                                                                        'type': ['object', 'null'],
                                                                        'description': 'The plan the customer is subscribed to (deprecated, use price instead)',
                                                                        'additionalProperties': True,
                                                                    },
                                                                    'price': {
                                                                        'type': 'object',
                                                                        'description': 'The price the customer is subscribed to',
                                                                        'additionalProperties': True,
                                                                    },
                                                                    'quantity': {
                                                                        'type': ['integer', 'null'],
                                                                        'description': 'The quantity of the plan to which the customer should be subscribed',
                                                                    },
                                                                    'subscription': {'type': 'string', 'description': 'The subscription this subscription_item belongs to'},
                                                                    'tax_rates': {
                                                                        'type': ['array', 'null'],
                                                                        'description': 'The tax rates which apply to this subscription_item',
                                                                        'items': {'type': 'object', 'additionalProperties': True},
                                                                    },
                                                                },
                                                            },
                                                        },
                                                        'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                                                        'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                                        'total_count': {'type': 'integer', 'description': 'The total count of items in the list'},
                                                    },
                                                },
                                                'latest_invoice': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The most recent invoice this subscription has generated',
                                                },
                                                'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                                'metadata': {
                                                    'type': 'object',
                                                    'additionalProperties': {'type': 'string'},
                                                    'description': 'Set of key-value pairs',
                                                },
                                                'next_pending_invoice_item_invoice': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'Specifies the approximate timestamp on which any pending invoice items will be billed',
                                                },
                                                'on_behalf_of': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The account (if any) the charge was made on behalf of for charges associated with this subscription',
                                                },
                                                'pause_collection': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If specified, payment collection for this subscription will be paused',
                                                    'properties': {
                                                        'behavior': {
                                                            'type': 'string',
                                                            'enum': ['keep_as_draft', 'mark_uncollectible', 'void'],
                                                            'description': 'The payment collection behavior for this subscription while paused',
                                                        },
                                                        'resumes_at': {
                                                            'type': ['integer', 'null'],
                                                            'format': 'int64',
                                                            'description': 'The time after which the subscription will resume collecting payments',
                                                        },
                                                    },
                                                },
                                                'payment_settings': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Payment settings passed on to invoices created by the subscription',
                                                    'properties': {
                                                        'payment_method_options': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Payment-method-specific configuration to provide to invoices',
                                                            'additionalProperties': True,
                                                        },
                                                        'payment_method_types': {
                                                            'type': ['array', 'null'],
                                                            'description': 'The list of payment method types to provide to every invoice',
                                                            'items': {'type': 'string'},
                                                        },
                                                    },
                                                },
                                                'status': {
                                                    'type': 'string',
                                                    'enum': [
                                                        'incomplete',
                                                        'incomplete_expired',
                                                        'trialing',
                                                        'active',
                                                        'past_due',
                                                        'canceled',
                                                        'unpaid',
                                                        'paused',
                                                    ],
                                                    'description': 'The status of the subscription',
                                                },
                                                'current_period_start': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'Start of the current period for which the subscription has been invoiced',
                                                },
                                                'current_period_end': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'End of the current period for which the subscription has been invoiced',
                                                },
                                                'start_date': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'Date when the subscription was first created',
                                                },
                                                'trial_start': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'If the subscription has a trial, the beginning of that trial',
                                                },
                                                'trial_end': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'If the subscription has a trial, the end of that trial',
                                                },
                                                'discount': {
                                                    'type': ['object', 'null'],
                                                    'description': 'The discount applied to the subscription',
                                                },
                                                'plan': {
                                                    'type': ['object', 'null'],
                                                    'description': 'The subscription plan (deprecated, use price instead)',
                                                },
                                                'quantity': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'The quantity of the subscription',
                                                },
                                                'schedule': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The schedule attached to the subscription',
                                                },
                                                'test_clock': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the test clock this subscription belongs to',
                                                },
                                                'transfer_data': {
                                                    'type': ['object', 'null'],
                                                    'description': "The account (if any) the subscription's payments will be attributed to for tax reporting",
                                                },
                                                'trial_settings': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Settings related to subscription trials',
                                                    'properties': {
                                                        'end_behavior': {
                                                            'type': 'object',
                                                            'properties': {
                                                                'missing_payment_method': {'type': 'string', 'description': 'Behavior when the trial ends and payment method is missing'},
                                                            },
                                                        },
                                                    },
                                                },
                                                'pending_invoice_item_interval': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Specifies an interval for how often to bill for any pending invoice items',
                                                },
                                                'pending_setup_intent': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The ID of the SetupIntent to be confirmed',
                                                },
                                                'pending_update': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If specified, pending updates that will be applied to the subscription once the latest_invoice has been paid',
                                                },
                                            },
                                            'x-airbyte-entity-name': 'subscriptions',
                                        },
                                    },
                                    'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                                    'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                },
                            },
                            'tax_exempt': {
                                'type': ['string', 'null'],
                                'description': "Describes the customer's tax exemption status",
                            },
                            'test_clock': {
                                'type': ['string', 'null'],
                                'description': 'ID of the test clock this customer belongs to',
                            },
                        },
                        'x-airbyte-entity-name': 'customers',
                    },
                ),
                Action.GET: EndpointDefinition(
                    method='GET',
                    path='/v1/customers/{id}',
                    action=Action.GET,
                    description='Retrieves a Customer object.',
                    path_params=['id'],
                    path_params_schema={
                        'id': {'type': 'string', 'required': True},
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'id': {'type': 'string', 'description': 'Unique identifier for the customer'},
                            'object': {
                                'type': 'string',
                                'description': "String representing the object's type",
                                'enum': ['customer'],
                            },
                            'address': {
                                'type': ['object', 'null'],
                                'description': "The customer's address",
                                'properties': {
                                    'city': {
                                        'type': ['string', 'null'],
                                        'description': 'City, district, suburb, town, or village',
                                    },
                                    'country': {
                                        'type': ['string', 'null'],
                                        'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                    },
                                    'line1': {
                                        'type': ['string', 'null'],
                                        'description': 'Address line 1, such as the street, PO Box, or company name',
                                    },
                                    'line2': {
                                        'type': ['string', 'null'],
                                        'description': 'Address line 2, such as the apartment, suite, unit, or building',
                                    },
                                    'postal_code': {
                                        'type': ['string', 'null'],
                                        'description': 'ZIP or postal code',
                                    },
                                    'state': {
                                        'type': ['string', 'null'],
                                        'description': 'State, county, province, or region',
                                    },
                                },
                            },
                            'balance': {'type': 'integer', 'description': 'The current balance stored on the customer'},
                            'business_name': {
                                'type': ['string', 'null'],
                                'description': "The customer's business name",
                            },
                            'cash_balance': {
                                'type': ['object', 'null'],
                                'description': 'The current funds being held by Stripe on behalf of the customer',
                                'properties': {
                                    'object': {'type': 'string', 'description': "String representing the object's type"},
                                    'available': {
                                        'type': ['object', 'null'],
                                        'description': 'A hash of all cash balances available to this customer',
                                    },
                                    'customer': {'type': 'string', 'description': 'The ID of the customer whose cash balance this object represents'},
                                    'customer_account': {
                                        'type': ['string', 'null'],
                                        'description': 'The ID of the account whose cash balance this object represents',
                                    },
                                    'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                    'settings': {
                                        'type': 'object',
                                        'description': 'A hash of settings for this cash balance',
                                        'properties': {
                                            'reconciliation_mode': {
                                                'type': 'string',
                                                'enum': ['automatic', 'manual'],
                                                'description': 'The configuration for how funds that land in the customer cash balance are reconciled',
                                            },
                                            'using_merchant_default': {'type': 'boolean', 'description': "A flag to indicate if reconciliation mode returned is the user's default or is specific to this customer cash balance"},
                                        },
                                    },
                                },
                            },
                            'created': {
                                'type': 'integer',
                                'format': 'int64',
                                'description': 'Time at which the object was created (Unix timestamp)',
                            },
                            'currency': {
                                'type': ['string', 'null'],
                                'description': 'Three-letter ISO code for the currency the customer can be charged in for recurring billing purposes',
                            },
                            'customer_account': {
                                'type': ['string', 'null'],
                                'description': 'The ID of the customer account associated with this customer',
                            },
                            'default_currency': {
                                'type': ['string', 'null'],
                                'description': 'The default currency for the customer',
                            },
                            'default_source': {
                                'type': ['string', 'null'],
                                'description': 'ID of the default payment source for the customer',
                            },
                            'delinquent': {
                                'type': ['boolean', 'null'],
                                'description': 'Whether the customer is delinquent on payments',
                            },
                            'description': {
                                'type': ['string', 'null'],
                                'description': 'An arbitrary string attached to the object',
                            },
                            'discount': {
                                'type': ['object', 'null'],
                                'description': 'Describes the current discount active on the customer, if there is one',
                                'properties': {
                                    'id': {'type': 'string', 'description': 'The ID of the discount object'},
                                    'object': {'type': 'string', 'description': "String representing the object's type"},
                                    'checkout_session': {
                                        'type': ['string', 'null'],
                                        'description': 'The Checkout session that this coupon is applied to, if applicable',
                                    },
                                    'customer': {
                                        'type': ['string', 'null'],
                                        'description': 'The ID of the customer associated with this discount',
                                    },
                                    'customer_account': {
                                        'type': ['string', 'null'],
                                        'description': 'The ID of the account associated with this discount',
                                    },
                                    'end': {
                                        'type': ['integer', 'null'],
                                        'description': 'If the coupon has a duration of repeating, the date that this discount will end',
                                    },
                                    'invoice': {
                                        'type': ['string', 'null'],
                                        'description': "The invoice that the discount's coupon was applied to",
                                    },
                                    'invoice_item': {
                                        'type': ['string', 'null'],
                                        'description': "The invoice item that the discount's coupon was applied to",
                                    },
                                    'promotion_code': {
                                        'type': ['string', 'null'],
                                        'description': 'The promotion code applied to create this discount',
                                    },
                                    'source': {
                                        'type': 'object',
                                        'description': 'The source of the discount',
                                        'properties': {
                                            'coupon': {
                                                'type': ['string', 'null'],
                                                'description': 'The coupon that was redeemed to create this discount',
                                            },
                                            'type': {
                                                'type': 'string',
                                                'enum': ['coupon'],
                                                'description': 'The source type of the discount',
                                            },
                                        },
                                    },
                                    'start': {'type': 'integer', 'description': 'Date that the coupon was applied'},
                                    'subscription': {
                                        'type': ['string', 'null'],
                                        'description': 'The subscription that this coupon is applied to',
                                    },
                                    'subscription_item': {
                                        'type': ['string', 'null'],
                                        'description': 'The subscription item that this coupon is applied to',
                                    },
                                },
                            },
                            'email': {
                                'type': ['string', 'null'],
                                'format': 'email',
                                'description': "The customer's email address",
                            },
                            'individual_name': {
                                'type': ['string', 'null'],
                                'description': "The customer's individual name",
                            },
                            'invoice_credit_balance': {'type': 'object', 'description': 'The current multi-currency balances stored on the customer'},
                            'invoice_prefix': {
                                'type': ['string', 'null'],
                                'description': 'The prefix for the customer used to generate unique invoice numbers',
                            },
                            'invoice_settings': {
                                'type': 'object',
                                'description': "The customer's default invoice settings",
                                'properties': {
                                    'custom_fields': {
                                        'type': ['array', 'null'],
                                        'description': 'Default custom fields to be displayed on invoices for this customer',
                                        'items': {
                                            'type': 'object',
                                            'properties': {
                                                'name': {'type': 'string', 'description': 'The name of the custom field'},
                                                'value': {'type': 'string', 'description': 'The value of the custom field'},
                                            },
                                        },
                                    },
                                    'default_payment_method': {
                                        'type': ['string', 'null'],
                                        'description': "ID of a payment method that's attached to the customer",
                                    },
                                    'footer': {
                                        'type': ['string', 'null'],
                                        'description': 'Default footer to be displayed on invoices for this customer',
                                    },
                                    'rendering_options': {
                                        'type': ['object', 'null'],
                                        'description': 'Default options for invoice PDF rendering for this customer',
                                        'properties': {
                                            'amount_tax_display': {
                                                'type': ['string', 'null'],
                                                'description': 'How line-item prices and amounts will be displayed with respect to tax on invoice PDFs',
                                            },
                                            'template': {
                                                'type': ['string', 'null'],
                                                'description': "ID of the invoice rendering template to be used for this customer's invoices",
                                            },
                                        },
                                    },
                                },
                            },
                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                            'metadata': {
                                'type': 'object',
                                'additionalProperties': {'type': 'string'},
                                'description': 'Set of key-value pairs that you can attach to an object',
                            },
                            'name': {
                                'type': ['string', 'null'],
                                'description': "The customer's full name or business name",
                            },
                            'next_invoice_sequence': {
                                'type': ['integer', 'null'],
                                'description': "The suffix of the customer's next invoice number",
                            },
                            'phone': {
                                'type': ['string', 'null'],
                                'description': "The customer's phone number",
                            },
                            'preferred_locales': {
                                'type': ['array', 'null'],
                                'items': {'type': 'string'},
                                'description': "The customer's preferred locales (languages), ordered by preference",
                            },
                            'shipping': {
                                'type': ['object', 'null'],
                                'description': 'Mailing and shipping address for the customer',
                                'properties': {
                                    'address': {
                                        'type': 'object',
                                        'description': 'Customer shipping address',
                                        'properties': {
                                            'city': {
                                                'type': ['string', 'null'],
                                                'description': 'City, district, suburb, town, or village',
                                            },
                                            'country': {
                                                'type': ['string', 'null'],
                                                'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                            },
                                            'line1': {
                                                'type': ['string', 'null'],
                                                'description': 'Address line 1, such as the street, PO Box, or company name',
                                            },
                                            'line2': {
                                                'type': ['string', 'null'],
                                                'description': 'Address line 2, such as the apartment, suite, unit, or building',
                                            },
                                            'postal_code': {
                                                'type': ['string', 'null'],
                                                'description': 'ZIP or postal code',
                                            },
                                            'state': {
                                                'type': ['string', 'null'],
                                                'description': 'State, county, province, or region',
                                            },
                                        },
                                    },
                                    'name': {'type': 'string', 'description': 'Customer name'},
                                    'phone': {
                                        'type': ['string', 'null'],
                                        'description': 'Customer phone (including extension)',
                                    },
                                },
                            },
                            'sources': {
                                'type': ['object', 'null'],
                                'description': "The customer's payment sources, if any",
                                'properties': {
                                    'object': {
                                        'type': 'string',
                                        'enum': ['list'],
                                        'description': "String representing the object's type",
                                    },
                                    'data': {
                                        'type': 'array',
                                        'description': 'Details about each object',
                                        'items': {
                                            'type': 'object',
                                            'properties': {
                                                'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                'object': {'type': 'string', 'description': "String representing the object's type"},
                                                'account': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The account this bank account belongs to',
                                                },
                                                'account_holder_name': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The name of the person or business that owns the bank account',
                                                },
                                                'account_holder_type': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The type of entity that holds the account',
                                                },
                                                'account_type': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The bank account type',
                                                },
                                                'available_payout_methods': {
                                                    'type': ['array', 'null'],
                                                    'description': 'A set of available payout methods for this bank account',
                                                    'items': {
                                                        'type': 'string',
                                                        'enum': ['instant', 'standard'],
                                                    },
                                                },
                                                'bank_name': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Name of the bank associated with the routing number',
                                                },
                                                'country': {'type': 'string', 'description': 'Two-letter ISO code representing the country the bank account is located in'},
                                                'currency': {'type': 'string', 'description': 'Three-letter ISO code for the currency paid out to the bank account'},
                                                'customer': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The ID of the customer that the bank account is associated with',
                                                },
                                                'fingerprint': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Uniquely identifies this particular bank account',
                                                },
                                                'last4': {'type': 'string', 'description': 'The last four digits of the bank account number'},
                                                'metadata': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Set of key-value pairs that you can attach to an object',
                                                    'additionalProperties': {'type': 'string'},
                                                },
                                                'routing_number': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The routing transit number for the bank account',
                                                },
                                                'status': {'type': 'string', 'description': 'The status of the bank account'},
                                            },
                                        },
                                    },
                                    'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                                    'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                },
                            },
                            'subscriptions': {
                                'type': ['object', 'null'],
                                'description': "The customer's current subscriptions, if any",
                                'properties': {
                                    'object': {
                                        'type': 'string',
                                        'enum': ['list'],
                                        'description': "String representing the object's type",
                                    },
                                    'data': {
                                        'type': 'array',
                                        'description': 'Details about each subscription',
                                        'items': {
                                            'type': 'object',
                                            'properties': {
                                                'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                'object': {
                                                    'type': 'string',
                                                    'description': "String representing the object's type",
                                                    'enum': ['subscription'],
                                                },
                                                'application': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the Connect Application that created the subscription',
                                                },
                                                'application_fee_percent': {
                                                    'type': ['number', 'null'],
                                                    'format': 'float',
                                                    'description': 'A non-negative decimal between 0 and 100, with at most two decimal places',
                                                },
                                                'automatic_tax': {
                                                    'type': 'object',
                                                    'description': 'Automatic tax settings for this subscription',
                                                    'properties': {
                                                        'disabled_reason': {
                                                            'type': ['string', 'null'],
                                                            'description': 'If Stripe disabled automatic tax, this enum describes why',
                                                        },
                                                        'enabled': {'type': 'boolean', 'description': 'Whether Stripe automatically computes tax on this subscription'},
                                                        'liability': {
                                                            'type': ['object', 'null'],
                                                            'description': "The account that's liable for tax",
                                                            'properties': {
                                                                'account': {
                                                                    'type': ['string', 'null'],
                                                                    'description': 'The connected account being referenced when type is account',
                                                                },
                                                                'type': {
                                                                    'type': 'string',
                                                                    'enum': ['account', 'self'],
                                                                    'description': 'Type of the account referenced',
                                                                },
                                                            },
                                                        },
                                                    },
                                                },
                                                'billing_cycle_anchor': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'The reference point that aligns future billing cycle dates',
                                                },
                                                'billing_cycle_anchor_config': {
                                                    'type': ['object', 'null'],
                                                    'description': 'The fixed values used to calculate the billing_cycle_anchor',
                                                    'properties': {
                                                        'day_of_month': {'type': 'integer', 'description': 'The day of the month of the billing_cycle_anchor'},
                                                        'hour': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'The hour of the day of the billing_cycle_anchor',
                                                        },
                                                        'minute': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'The minute of the hour of the billing_cycle_anchor',
                                                        },
                                                        'month': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'The month to start full cycle billing periods',
                                                        },
                                                        'second': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'The second of the minute of the billing_cycle_anchor',
                                                        },
                                                    },
                                                },
                                                'billing_mode': {
                                                    'type': 'object',
                                                    'description': 'Controls how prorations and invoices for subscriptions are calculated and orchestrated',
                                                    'properties': {
                                                        'flexible': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Configure behavior for flexible billing mode',
                                                            'properties': {
                                                                'proration_discounts': {
                                                                    'type': 'string',
                                                                    'enum': ['included', 'itemized'],
                                                                    'description': 'Controls how invoices and invoice items display proration amounts and discount amounts',
                                                                },
                                                            },
                                                        },
                                                        'type': {
                                                            'type': 'string',
                                                            'enum': ['classic', 'flexible'],
                                                            'description': 'Controls how prorations and invoices for subscriptions are calculated and orchestrated',
                                                        },
                                                        'updated_at': {
                                                            'type': ['integer', 'null'],
                                                            'format': 'int64',
                                                            'description': 'Details on when the current billing_mode was adopted',
                                                        },
                                                    },
                                                },
                                                'billing_thresholds': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period',
                                                    'properties': {
                                                        'amount_gte': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'Monetary threshold that triggers the subscription to create an invoice',
                                                        },
                                                        'reset_billing_cycle_anchor': {
                                                            'type': ['boolean', 'null'],
                                                            'description': 'Indicates if the billing_cycle_anchor should be reset when a threshold is reached',
                                                        },
                                                    },
                                                },
                                                'cancel_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'A date in the future at which the subscription will automatically get canceled',
                                                },
                                                'cancel_at_period_end': {'type': 'boolean', 'description': 'Whether this subscription will (if status=active) or did (if status=canceled) cancel at the end of the current billing period'},
                                                'canceled_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'If the subscription has been canceled, the date of that cancellation',
                                                },
                                                'cancellation_details': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Details about why this subscription was cancelled',
                                                    'properties': {
                                                        'comment': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Additional comments about why the user canceled the subscription',
                                                        },
                                                        'feedback': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The customer submitted reason for why they canceled',
                                                        },
                                                        'reason': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Why this subscription was canceled',
                                                        },
                                                    },
                                                },
                                                'collection_method': {
                                                    'type': 'string',
                                                    'enum': ['charge_automatically', 'send_invoice'],
                                                    'description': 'Either charge_automatically, or send_invoice',
                                                },
                                                'created': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'Time at which the object was created. Measured in seconds since the Unix epoch',
                                                },
                                                'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                                'customer': {'type': 'string', 'description': 'ID of the customer who owns the subscription'},
                                                'customer_account': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the account who owns the subscription',
                                                },
                                                'days_until_due': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Number of days a customer has to pay invoices generated by this subscription',
                                                },
                                                'default_payment_method': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the default payment method for the subscription',
                                                },
                                                'default_source': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the default payment source for the subscription',
                                                },
                                                'default_tax_rates': {
                                                    'type': ['array', 'null'],
                                                    'description': 'The tax rates that will apply to any subscription item that does not have tax_rates set',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                            'object': {'type': 'string', 'description': "String representing the object's type"},
                                                            'active': {'type': 'boolean', 'description': 'Defaults to true'},
                                                            'country': {
                                                                'type': ['string', 'null'],
                                                                'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                            },
                                                            'created': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': 'Time at which the object was created',
                                                            },
                                                            'description': {
                                                                'type': ['string', 'null'],
                                                                'description': 'An arbitrary string attached to the tax rate for your internal use only',
                                                            },
                                                            'display_name': {'type': 'string', 'description': 'The display name of the tax rates'},
                                                            'effective_percentage': {
                                                                'type': ['number', 'null'],
                                                                'description': 'Actual/effective tax rate percentage out of 100',
                                                            },
                                                            'flat_amount': {
                                                                'type': ['object', 'null'],
                                                                'description': 'The amount of the tax rate when the rate_type is flat_amount',
                                                                'properties': {
                                                                    'amount': {'type': 'integer', 'description': 'Amount of the tax when the rate_type is flat_amount'},
                                                                    'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                                                },
                                                            },
                                                            'inclusive': {'type': 'boolean', 'description': 'This specifies if the tax rate is inclusive or exclusive'},
                                                            'jurisdiction': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The jurisdiction for the tax rate',
                                                            },
                                                            'jurisdiction_level': {
                                                                'type': ['string', 'null'],
                                                                'enum': [
                                                                    'city',
                                                                    'country',
                                                                    'county',
                                                                    'district',
                                                                    'multiple',
                                                                    'state',
                                                                ],
                                                                'description': 'The level of the jurisdiction that imposes this tax rate',
                                                            },
                                                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                                            'metadata': {
                                                                'type': ['object', 'null'],
                                                                'description': 'Set of key-value pairs',
                                                                'additionalProperties': {'type': 'string'},
                                                            },
                                                            'percentage': {'type': 'number', 'description': 'Tax rate percentage out of 100'},
                                                            'rate_type': {
                                                                'type': ['string', 'null'],
                                                                'enum': ['flat_amount', 'percentage'],
                                                                'description': 'Indicates the type of tax rate applied to the taxable amount',
                                                            },
                                                            'state': {
                                                                'type': ['string', 'null'],
                                                                'description': 'ISO 3166-2 subdivision code, without country prefix',
                                                            },
                                                            'tax_type': {
                                                                'type': ['string', 'null'],
                                                                'enum': [
                                                                    'amusement_tax',
                                                                    'communications_tax',
                                                                    'gst',
                                                                    'hst',
                                                                    'igst',
                                                                    'jct',
                                                                    'lease_tax',
                                                                    'pst',
                                                                    'qst',
                                                                    'retail_delivery_fee',
                                                                    'rst',
                                                                    'sales_tax',
                                                                    'service_tax',
                                                                    'vat',
                                                                ],
                                                                'description': 'The high-level tax type',
                                                            },
                                                        },
                                                    },
                                                },
                                                'description': {
                                                    'type': ['string', 'null'],
                                                    'description': "The subscription's description, meant to be displayable to the customer",
                                                },
                                                'discounts': {
                                                    'type': 'array',
                                                    'items': {'type': 'string'},
                                                    'description': 'The discounts applied to the subscription',
                                                },
                                                'ended_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'If the subscription has ended, the date the subscription ended',
                                                },
                                                'invoice_settings': {
                                                    'type': 'object',
                                                    'description': 'All invoices will be billed using the specified settings',
                                                    'properties': {
                                                        'account_tax_ids': {
                                                            'type': ['array', 'null'],
                                                            'description': 'The account tax IDs associated with the subscription',
                                                            'items': {'type': 'string'},
                                                        },
                                                        'issuer': {
                                                            'type': 'object',
                                                            'description': 'The connected account that issues the invoice',
                                                            'properties': {
                                                                'account': {
                                                                    'type': ['string', 'null'],
                                                                    'description': 'The connected account being referenced when type is account',
                                                                },
                                                                'type': {
                                                                    'type': 'string',
                                                                    'enum': ['account', 'self'],
                                                                    'description': 'Type of the account referenced',
                                                                },
                                                            },
                                                        },
                                                    },
                                                },
                                                'items': {
                                                    'type': 'object',
                                                    'description': 'List of subscription items, each with an attached price',
                                                    'properties': {
                                                        'object': {
                                                            'type': 'string',
                                                            'enum': ['list'],
                                                            'description': "String representing the object's type",
                                                        },
                                                        'data': {
                                                            'type': 'array',
                                                            'description': 'Details about each object',
                                                            'items': {
                                                                'type': 'object',
                                                                'properties': {
                                                                    'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                                    'object': {'type': 'string', 'description': "String representing the object's type"},
                                                                    'billing_thresholds': {
                                                                        'type': ['object', 'null'],
                                                                        'description': 'Define thresholds at which an invoice will be sent',
                                                                        'properties': {
                                                                            'usage_gte': {
                                                                                'type': ['integer', 'null'],
                                                                                'description': 'Usage threshold that triggers the subscription to create an invoice',
                                                                            },
                                                                        },
                                                                    },
                                                                    'created': {
                                                                        'type': 'integer',
                                                                        'format': 'int64',
                                                                        'description': 'Time at which the object was created',
                                                                    },
                                                                    'current_period_end': {
                                                                        'type': 'integer',
                                                                        'format': 'int64',
                                                                        'description': "The end time of this subscription item's current billing period",
                                                                    },
                                                                    'current_period_start': {
                                                                        'type': 'integer',
                                                                        'format': 'int64',
                                                                        'description': "The start time of this subscription item's current billing period",
                                                                    },
                                                                    'discounts': {
                                                                        'type': 'array',
                                                                        'items': {'type': 'string'},
                                                                        'description': 'The discounts applied to the subscription item',
                                                                    },
                                                                    'metadata': {
                                                                        'type': 'object',
                                                                        'description': 'Set of key-value pairs',
                                                                        'additionalProperties': {'type': 'string'},
                                                                    },
                                                                    'plan': {
                                                                        'type': ['object', 'null'],
                                                                        'description': 'The plan the customer is subscribed to (deprecated, use price instead)',
                                                                        'additionalProperties': True,
                                                                    },
                                                                    'price': {
                                                                        'type': 'object',
                                                                        'description': 'The price the customer is subscribed to',
                                                                        'additionalProperties': True,
                                                                    },
                                                                    'quantity': {
                                                                        'type': ['integer', 'null'],
                                                                        'description': 'The quantity of the plan to which the customer should be subscribed',
                                                                    },
                                                                    'subscription': {'type': 'string', 'description': 'The subscription this subscription_item belongs to'},
                                                                    'tax_rates': {
                                                                        'type': ['array', 'null'],
                                                                        'description': 'The tax rates which apply to this subscription_item',
                                                                        'items': {'type': 'object', 'additionalProperties': True},
                                                                    },
                                                                },
                                                            },
                                                        },
                                                        'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                                                        'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                                        'total_count': {'type': 'integer', 'description': 'The total count of items in the list'},
                                                    },
                                                },
                                                'latest_invoice': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The most recent invoice this subscription has generated',
                                                },
                                                'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                                'metadata': {
                                                    'type': 'object',
                                                    'additionalProperties': {'type': 'string'},
                                                    'description': 'Set of key-value pairs',
                                                },
                                                'next_pending_invoice_item_invoice': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'Specifies the approximate timestamp on which any pending invoice items will be billed',
                                                },
                                                'on_behalf_of': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The account (if any) the charge was made on behalf of for charges associated with this subscription',
                                                },
                                                'pause_collection': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If specified, payment collection for this subscription will be paused',
                                                    'properties': {
                                                        'behavior': {
                                                            'type': 'string',
                                                            'enum': ['keep_as_draft', 'mark_uncollectible', 'void'],
                                                            'description': 'The payment collection behavior for this subscription while paused',
                                                        },
                                                        'resumes_at': {
                                                            'type': ['integer', 'null'],
                                                            'format': 'int64',
                                                            'description': 'The time after which the subscription will resume collecting payments',
                                                        },
                                                    },
                                                },
                                                'payment_settings': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Payment settings passed on to invoices created by the subscription',
                                                    'properties': {
                                                        'payment_method_options': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Payment-method-specific configuration to provide to invoices',
                                                            'additionalProperties': True,
                                                        },
                                                        'payment_method_types': {
                                                            'type': ['array', 'null'],
                                                            'description': 'The list of payment method types to provide to every invoice',
                                                            'items': {'type': 'string'},
                                                        },
                                                    },
                                                },
                                                'status': {
                                                    'type': 'string',
                                                    'enum': [
                                                        'incomplete',
                                                        'incomplete_expired',
                                                        'trialing',
                                                        'active',
                                                        'past_due',
                                                        'canceled',
                                                        'unpaid',
                                                        'paused',
                                                    ],
                                                    'description': 'The status of the subscription',
                                                },
                                                'current_period_start': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'Start of the current period for which the subscription has been invoiced',
                                                },
                                                'current_period_end': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'End of the current period for which the subscription has been invoiced',
                                                },
                                                'start_date': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'Date when the subscription was first created',
                                                },
                                                'trial_start': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'If the subscription has a trial, the beginning of that trial',
                                                },
                                                'trial_end': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'If the subscription has a trial, the end of that trial',
                                                },
                                                'discount': {
                                                    'type': ['object', 'null'],
                                                    'description': 'The discount applied to the subscription',
                                                },
                                                'plan': {
                                                    'type': ['object', 'null'],
                                                    'description': 'The subscription plan (deprecated, use price instead)',
                                                },
                                                'quantity': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'The quantity of the subscription',
                                                },
                                                'schedule': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The schedule attached to the subscription',
                                                },
                                                'test_clock': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the test clock this subscription belongs to',
                                                },
                                                'transfer_data': {
                                                    'type': ['object', 'null'],
                                                    'description': "The account (if any) the subscription's payments will be attributed to for tax reporting",
                                                },
                                                'trial_settings': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Settings related to subscription trials',
                                                    'properties': {
                                                        'end_behavior': {
                                                            'type': 'object',
                                                            'properties': {
                                                                'missing_payment_method': {'type': 'string', 'description': 'Behavior when the trial ends and payment method is missing'},
                                                            },
                                                        },
                                                    },
                                                },
                                                'pending_invoice_item_interval': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Specifies an interval for how often to bill for any pending invoice items',
                                                },
                                                'pending_setup_intent': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The ID of the SetupIntent to be confirmed',
                                                },
                                                'pending_update': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If specified, pending updates that will be applied to the subscription once the latest_invoice has been paid',
                                                },
                                            },
                                            'x-airbyte-entity-name': 'subscriptions',
                                        },
                                    },
                                    'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                                    'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                },
                            },
                            'tax_exempt': {
                                'type': ['string', 'null'],
                                'description': "Describes the customer's tax exemption status",
                            },
                            'test_clock': {
                                'type': ['string', 'null'],
                                'description': 'ID of the test clock this customer belongs to',
                            },
                        },
                        'x-airbyte-entity-name': 'customers',
                    },
                ),
                Action.UPDATE: EndpointDefinition(
                    method='POST',
                    path='/v1/customers/{id}',
                    action=Action.UPDATE,
                    description='Updates the specified customer by setting the values of the parameters passed.',
                    body_fields=[
                        'email',
                        'name',
                        'description',
                        'phone',
                        'address',
                        'metadata',
                    ],
                    path_params=['id'],
                    path_params_schema={
                        'id': {'type': 'string', 'required': True},
                    },
                    content_type=ContentType.FORM_URLENCODED,
                    request_schema={
                        'type': 'object',
                        'properties': {
                            'email': {'type': 'string', 'description': "Customer's email address"},
                            'name': {'type': 'string', 'description': "The customer's full name or business name"},
                            'description': {'type': 'string', 'description': 'An arbitrary string attached to the object'},
                            'phone': {'type': 'string', 'description': "The customer's phone number"},
                            'address': {
                                'type': 'object',
                                'description': "The customer's address",
                                'properties': {
                                    'line1': {'type': 'string', 'description': 'Address line 1'},
                                    'line2': {'type': 'string', 'description': 'Address line 2'},
                                    'city': {'type': 'string', 'description': 'City, district, suburb, town, or village'},
                                    'state': {'type': 'string', 'description': 'State, county, province, or region'},
                                    'postal_code': {'type': 'string', 'description': 'ZIP or postal code'},
                                    'country': {'type': 'string', 'description': 'Two-letter country code (ISO 3166-1 alpha-2)'},
                                },
                            },
                            'metadata': {
                                'type': 'object',
                                'description': 'Set of key-value pairs that you can attach to an object',
                                'additionalProperties': {'type': 'string'},
                            },
                        },
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'id': {'type': 'string', 'description': 'Unique identifier for the customer'},
                            'object': {
                                'type': 'string',
                                'description': "String representing the object's type",
                                'enum': ['customer'],
                            },
                            'address': {
                                'type': ['object', 'null'],
                                'description': "The customer's address",
                                'properties': {
                                    'city': {
                                        'type': ['string', 'null'],
                                        'description': 'City, district, suburb, town, or village',
                                    },
                                    'country': {
                                        'type': ['string', 'null'],
                                        'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                    },
                                    'line1': {
                                        'type': ['string', 'null'],
                                        'description': 'Address line 1, such as the street, PO Box, or company name',
                                    },
                                    'line2': {
                                        'type': ['string', 'null'],
                                        'description': 'Address line 2, such as the apartment, suite, unit, or building',
                                    },
                                    'postal_code': {
                                        'type': ['string', 'null'],
                                        'description': 'ZIP or postal code',
                                    },
                                    'state': {
                                        'type': ['string', 'null'],
                                        'description': 'State, county, province, or region',
                                    },
                                },
                            },
                            'balance': {'type': 'integer', 'description': 'The current balance stored on the customer'},
                            'business_name': {
                                'type': ['string', 'null'],
                                'description': "The customer's business name",
                            },
                            'cash_balance': {
                                'type': ['object', 'null'],
                                'description': 'The current funds being held by Stripe on behalf of the customer',
                                'properties': {
                                    'object': {'type': 'string', 'description': "String representing the object's type"},
                                    'available': {
                                        'type': ['object', 'null'],
                                        'description': 'A hash of all cash balances available to this customer',
                                    },
                                    'customer': {'type': 'string', 'description': 'The ID of the customer whose cash balance this object represents'},
                                    'customer_account': {
                                        'type': ['string', 'null'],
                                        'description': 'The ID of the account whose cash balance this object represents',
                                    },
                                    'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                    'settings': {
                                        'type': 'object',
                                        'description': 'A hash of settings for this cash balance',
                                        'properties': {
                                            'reconciliation_mode': {
                                                'type': 'string',
                                                'enum': ['automatic', 'manual'],
                                                'description': 'The configuration for how funds that land in the customer cash balance are reconciled',
                                            },
                                            'using_merchant_default': {'type': 'boolean', 'description': "A flag to indicate if reconciliation mode returned is the user's default or is specific to this customer cash balance"},
                                        },
                                    },
                                },
                            },
                            'created': {
                                'type': 'integer',
                                'format': 'int64',
                                'description': 'Time at which the object was created (Unix timestamp)',
                            },
                            'currency': {
                                'type': ['string', 'null'],
                                'description': 'Three-letter ISO code for the currency the customer can be charged in for recurring billing purposes',
                            },
                            'customer_account': {
                                'type': ['string', 'null'],
                                'description': 'The ID of the customer account associated with this customer',
                            },
                            'default_currency': {
                                'type': ['string', 'null'],
                                'description': 'The default currency for the customer',
                            },
                            'default_source': {
                                'type': ['string', 'null'],
                                'description': 'ID of the default payment source for the customer',
                            },
                            'delinquent': {
                                'type': ['boolean', 'null'],
                                'description': 'Whether the customer is delinquent on payments',
                            },
                            'description': {
                                'type': ['string', 'null'],
                                'description': 'An arbitrary string attached to the object',
                            },
                            'discount': {
                                'type': ['object', 'null'],
                                'description': 'Describes the current discount active on the customer, if there is one',
                                'properties': {
                                    'id': {'type': 'string', 'description': 'The ID of the discount object'},
                                    'object': {'type': 'string', 'description': "String representing the object's type"},
                                    'checkout_session': {
                                        'type': ['string', 'null'],
                                        'description': 'The Checkout session that this coupon is applied to, if applicable',
                                    },
                                    'customer': {
                                        'type': ['string', 'null'],
                                        'description': 'The ID of the customer associated with this discount',
                                    },
                                    'customer_account': {
                                        'type': ['string', 'null'],
                                        'description': 'The ID of the account associated with this discount',
                                    },
                                    'end': {
                                        'type': ['integer', 'null'],
                                        'description': 'If the coupon has a duration of repeating, the date that this discount will end',
                                    },
                                    'invoice': {
                                        'type': ['string', 'null'],
                                        'description': "The invoice that the discount's coupon was applied to",
                                    },
                                    'invoice_item': {
                                        'type': ['string', 'null'],
                                        'description': "The invoice item that the discount's coupon was applied to",
                                    },
                                    'promotion_code': {
                                        'type': ['string', 'null'],
                                        'description': 'The promotion code applied to create this discount',
                                    },
                                    'source': {
                                        'type': 'object',
                                        'description': 'The source of the discount',
                                        'properties': {
                                            'coupon': {
                                                'type': ['string', 'null'],
                                                'description': 'The coupon that was redeemed to create this discount',
                                            },
                                            'type': {
                                                'type': 'string',
                                                'enum': ['coupon'],
                                                'description': 'The source type of the discount',
                                            },
                                        },
                                    },
                                    'start': {'type': 'integer', 'description': 'Date that the coupon was applied'},
                                    'subscription': {
                                        'type': ['string', 'null'],
                                        'description': 'The subscription that this coupon is applied to',
                                    },
                                    'subscription_item': {
                                        'type': ['string', 'null'],
                                        'description': 'The subscription item that this coupon is applied to',
                                    },
                                },
                            },
                            'email': {
                                'type': ['string', 'null'],
                                'format': 'email',
                                'description': "The customer's email address",
                            },
                            'individual_name': {
                                'type': ['string', 'null'],
                                'description': "The customer's individual name",
                            },
                            'invoice_credit_balance': {'type': 'object', 'description': 'The current multi-currency balances stored on the customer'},
                            'invoice_prefix': {
                                'type': ['string', 'null'],
                                'description': 'The prefix for the customer used to generate unique invoice numbers',
                            },
                            'invoice_settings': {
                                'type': 'object',
                                'description': "The customer's default invoice settings",
                                'properties': {
                                    'custom_fields': {
                                        'type': ['array', 'null'],
                                        'description': 'Default custom fields to be displayed on invoices for this customer',
                                        'items': {
                                            'type': 'object',
                                            'properties': {
                                                'name': {'type': 'string', 'description': 'The name of the custom field'},
                                                'value': {'type': 'string', 'description': 'The value of the custom field'},
                                            },
                                        },
                                    },
                                    'default_payment_method': {
                                        'type': ['string', 'null'],
                                        'description': "ID of a payment method that's attached to the customer",
                                    },
                                    'footer': {
                                        'type': ['string', 'null'],
                                        'description': 'Default footer to be displayed on invoices for this customer',
                                    },
                                    'rendering_options': {
                                        'type': ['object', 'null'],
                                        'description': 'Default options for invoice PDF rendering for this customer',
                                        'properties': {
                                            'amount_tax_display': {
                                                'type': ['string', 'null'],
                                                'description': 'How line-item prices and amounts will be displayed with respect to tax on invoice PDFs',
                                            },
                                            'template': {
                                                'type': ['string', 'null'],
                                                'description': "ID of the invoice rendering template to be used for this customer's invoices",
                                            },
                                        },
                                    },
                                },
                            },
                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                            'metadata': {
                                'type': 'object',
                                'additionalProperties': {'type': 'string'},
                                'description': 'Set of key-value pairs that you can attach to an object',
                            },
                            'name': {
                                'type': ['string', 'null'],
                                'description': "The customer's full name or business name",
                            },
                            'next_invoice_sequence': {
                                'type': ['integer', 'null'],
                                'description': "The suffix of the customer's next invoice number",
                            },
                            'phone': {
                                'type': ['string', 'null'],
                                'description': "The customer's phone number",
                            },
                            'preferred_locales': {
                                'type': ['array', 'null'],
                                'items': {'type': 'string'},
                                'description': "The customer's preferred locales (languages), ordered by preference",
                            },
                            'shipping': {
                                'type': ['object', 'null'],
                                'description': 'Mailing and shipping address for the customer',
                                'properties': {
                                    'address': {
                                        'type': 'object',
                                        'description': 'Customer shipping address',
                                        'properties': {
                                            'city': {
                                                'type': ['string', 'null'],
                                                'description': 'City, district, suburb, town, or village',
                                            },
                                            'country': {
                                                'type': ['string', 'null'],
                                                'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                            },
                                            'line1': {
                                                'type': ['string', 'null'],
                                                'description': 'Address line 1, such as the street, PO Box, or company name',
                                            },
                                            'line2': {
                                                'type': ['string', 'null'],
                                                'description': 'Address line 2, such as the apartment, suite, unit, or building',
                                            },
                                            'postal_code': {
                                                'type': ['string', 'null'],
                                                'description': 'ZIP or postal code',
                                            },
                                            'state': {
                                                'type': ['string', 'null'],
                                                'description': 'State, county, province, or region',
                                            },
                                        },
                                    },
                                    'name': {'type': 'string', 'description': 'Customer name'},
                                    'phone': {
                                        'type': ['string', 'null'],
                                        'description': 'Customer phone (including extension)',
                                    },
                                },
                            },
                            'sources': {
                                'type': ['object', 'null'],
                                'description': "The customer's payment sources, if any",
                                'properties': {
                                    'object': {
                                        'type': 'string',
                                        'enum': ['list'],
                                        'description': "String representing the object's type",
                                    },
                                    'data': {
                                        'type': 'array',
                                        'description': 'Details about each object',
                                        'items': {
                                            'type': 'object',
                                            'properties': {
                                                'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                'object': {'type': 'string', 'description': "String representing the object's type"},
                                                'account': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The account this bank account belongs to',
                                                },
                                                'account_holder_name': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The name of the person or business that owns the bank account',
                                                },
                                                'account_holder_type': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The type of entity that holds the account',
                                                },
                                                'account_type': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The bank account type',
                                                },
                                                'available_payout_methods': {
                                                    'type': ['array', 'null'],
                                                    'description': 'A set of available payout methods for this bank account',
                                                    'items': {
                                                        'type': 'string',
                                                        'enum': ['instant', 'standard'],
                                                    },
                                                },
                                                'bank_name': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Name of the bank associated with the routing number',
                                                },
                                                'country': {'type': 'string', 'description': 'Two-letter ISO code representing the country the bank account is located in'},
                                                'currency': {'type': 'string', 'description': 'Three-letter ISO code for the currency paid out to the bank account'},
                                                'customer': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The ID of the customer that the bank account is associated with',
                                                },
                                                'fingerprint': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Uniquely identifies this particular bank account',
                                                },
                                                'last4': {'type': 'string', 'description': 'The last four digits of the bank account number'},
                                                'metadata': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Set of key-value pairs that you can attach to an object',
                                                    'additionalProperties': {'type': 'string'},
                                                },
                                                'routing_number': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The routing transit number for the bank account',
                                                },
                                                'status': {'type': 'string', 'description': 'The status of the bank account'},
                                            },
                                        },
                                    },
                                    'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                                    'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                },
                            },
                            'subscriptions': {
                                'type': ['object', 'null'],
                                'description': "The customer's current subscriptions, if any",
                                'properties': {
                                    'object': {
                                        'type': 'string',
                                        'enum': ['list'],
                                        'description': "String representing the object's type",
                                    },
                                    'data': {
                                        'type': 'array',
                                        'description': 'Details about each subscription',
                                        'items': {
                                            'type': 'object',
                                            'properties': {
                                                'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                'object': {
                                                    'type': 'string',
                                                    'description': "String representing the object's type",
                                                    'enum': ['subscription'],
                                                },
                                                'application': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the Connect Application that created the subscription',
                                                },
                                                'application_fee_percent': {
                                                    'type': ['number', 'null'],
                                                    'format': 'float',
                                                    'description': 'A non-negative decimal between 0 and 100, with at most two decimal places',
                                                },
                                                'automatic_tax': {
                                                    'type': 'object',
                                                    'description': 'Automatic tax settings for this subscription',
                                                    'properties': {
                                                        'disabled_reason': {
                                                            'type': ['string', 'null'],
                                                            'description': 'If Stripe disabled automatic tax, this enum describes why',
                                                        },
                                                        'enabled': {'type': 'boolean', 'description': 'Whether Stripe automatically computes tax on this subscription'},
                                                        'liability': {
                                                            'type': ['object', 'null'],
                                                            'description': "The account that's liable for tax",
                                                            'properties': {
                                                                'account': {
                                                                    'type': ['string', 'null'],
                                                                    'description': 'The connected account being referenced when type is account',
                                                                },
                                                                'type': {
                                                                    'type': 'string',
                                                                    'enum': ['account', 'self'],
                                                                    'description': 'Type of the account referenced',
                                                                },
                                                            },
                                                        },
                                                    },
                                                },
                                                'billing_cycle_anchor': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'The reference point that aligns future billing cycle dates',
                                                },
                                                'billing_cycle_anchor_config': {
                                                    'type': ['object', 'null'],
                                                    'description': 'The fixed values used to calculate the billing_cycle_anchor',
                                                    'properties': {
                                                        'day_of_month': {'type': 'integer', 'description': 'The day of the month of the billing_cycle_anchor'},
                                                        'hour': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'The hour of the day of the billing_cycle_anchor',
                                                        },
                                                        'minute': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'The minute of the hour of the billing_cycle_anchor',
                                                        },
                                                        'month': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'The month to start full cycle billing periods',
                                                        },
                                                        'second': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'The second of the minute of the billing_cycle_anchor',
                                                        },
                                                    },
                                                },
                                                'billing_mode': {
                                                    'type': 'object',
                                                    'description': 'Controls how prorations and invoices for subscriptions are calculated and orchestrated',
                                                    'properties': {
                                                        'flexible': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Configure behavior for flexible billing mode',
                                                            'properties': {
                                                                'proration_discounts': {
                                                                    'type': 'string',
                                                                    'enum': ['included', 'itemized'],
                                                                    'description': 'Controls how invoices and invoice items display proration amounts and discount amounts',
                                                                },
                                                            },
                                                        },
                                                        'type': {
                                                            'type': 'string',
                                                            'enum': ['classic', 'flexible'],
                                                            'description': 'Controls how prorations and invoices for subscriptions are calculated and orchestrated',
                                                        },
                                                        'updated_at': {
                                                            'type': ['integer', 'null'],
                                                            'format': 'int64',
                                                            'description': 'Details on when the current billing_mode was adopted',
                                                        },
                                                    },
                                                },
                                                'billing_thresholds': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period',
                                                    'properties': {
                                                        'amount_gte': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'Monetary threshold that triggers the subscription to create an invoice',
                                                        },
                                                        'reset_billing_cycle_anchor': {
                                                            'type': ['boolean', 'null'],
                                                            'description': 'Indicates if the billing_cycle_anchor should be reset when a threshold is reached',
                                                        },
                                                    },
                                                },
                                                'cancel_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'A date in the future at which the subscription will automatically get canceled',
                                                },
                                                'cancel_at_period_end': {'type': 'boolean', 'description': 'Whether this subscription will (if status=active) or did (if status=canceled) cancel at the end of the current billing period'},
                                                'canceled_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'If the subscription has been canceled, the date of that cancellation',
                                                },
                                                'cancellation_details': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Details about why this subscription was cancelled',
                                                    'properties': {
                                                        'comment': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Additional comments about why the user canceled the subscription',
                                                        },
                                                        'feedback': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The customer submitted reason for why they canceled',
                                                        },
                                                        'reason': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Why this subscription was canceled',
                                                        },
                                                    },
                                                },
                                                'collection_method': {
                                                    'type': 'string',
                                                    'enum': ['charge_automatically', 'send_invoice'],
                                                    'description': 'Either charge_automatically, or send_invoice',
                                                },
                                                'created': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'Time at which the object was created. Measured in seconds since the Unix epoch',
                                                },
                                                'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                                'customer': {'type': 'string', 'description': 'ID of the customer who owns the subscription'},
                                                'customer_account': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the account who owns the subscription',
                                                },
                                                'days_until_due': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Number of days a customer has to pay invoices generated by this subscription',
                                                },
                                                'default_payment_method': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the default payment method for the subscription',
                                                },
                                                'default_source': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the default payment source for the subscription',
                                                },
                                                'default_tax_rates': {
                                                    'type': ['array', 'null'],
                                                    'description': 'The tax rates that will apply to any subscription item that does not have tax_rates set',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                            'object': {'type': 'string', 'description': "String representing the object's type"},
                                                            'active': {'type': 'boolean', 'description': 'Defaults to true'},
                                                            'country': {
                                                                'type': ['string', 'null'],
                                                                'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                            },
                                                            'created': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': 'Time at which the object was created',
                                                            },
                                                            'description': {
                                                                'type': ['string', 'null'],
                                                                'description': 'An arbitrary string attached to the tax rate for your internal use only',
                                                            },
                                                            'display_name': {'type': 'string', 'description': 'The display name of the tax rates'},
                                                            'effective_percentage': {
                                                                'type': ['number', 'null'],
                                                                'description': 'Actual/effective tax rate percentage out of 100',
                                                            },
                                                            'flat_amount': {
                                                                'type': ['object', 'null'],
                                                                'description': 'The amount of the tax rate when the rate_type is flat_amount',
                                                                'properties': {
                                                                    'amount': {'type': 'integer', 'description': 'Amount of the tax when the rate_type is flat_amount'},
                                                                    'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                                                },
                                                            },
                                                            'inclusive': {'type': 'boolean', 'description': 'This specifies if the tax rate is inclusive or exclusive'},
                                                            'jurisdiction': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The jurisdiction for the tax rate',
                                                            },
                                                            'jurisdiction_level': {
                                                                'type': ['string', 'null'],
                                                                'enum': [
                                                                    'city',
                                                                    'country',
                                                                    'county',
                                                                    'district',
                                                                    'multiple',
                                                                    'state',
                                                                ],
                                                                'description': 'The level of the jurisdiction that imposes this tax rate',
                                                            },
                                                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                                            'metadata': {
                                                                'type': ['object', 'null'],
                                                                'description': 'Set of key-value pairs',
                                                                'additionalProperties': {'type': 'string'},
                                                            },
                                                            'percentage': {'type': 'number', 'description': 'Tax rate percentage out of 100'},
                                                            'rate_type': {
                                                                'type': ['string', 'null'],
                                                                'enum': ['flat_amount', 'percentage'],
                                                                'description': 'Indicates the type of tax rate applied to the taxable amount',
                                                            },
                                                            'state': {
                                                                'type': ['string', 'null'],
                                                                'description': 'ISO 3166-2 subdivision code, without country prefix',
                                                            },
                                                            'tax_type': {
                                                                'type': ['string', 'null'],
                                                                'enum': [
                                                                    'amusement_tax',
                                                                    'communications_tax',
                                                                    'gst',
                                                                    'hst',
                                                                    'igst',
                                                                    'jct',
                                                                    'lease_tax',
                                                                    'pst',
                                                                    'qst',
                                                                    'retail_delivery_fee',
                                                                    'rst',
                                                                    'sales_tax',
                                                                    'service_tax',
                                                                    'vat',
                                                                ],
                                                                'description': 'The high-level tax type',
                                                            },
                                                        },
                                                    },
                                                },
                                                'description': {
                                                    'type': ['string', 'null'],
                                                    'description': "The subscription's description, meant to be displayable to the customer",
                                                },
                                                'discounts': {
                                                    'type': 'array',
                                                    'items': {'type': 'string'},
                                                    'description': 'The discounts applied to the subscription',
                                                },
                                                'ended_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'If the subscription has ended, the date the subscription ended',
                                                },
                                                'invoice_settings': {
                                                    'type': 'object',
                                                    'description': 'All invoices will be billed using the specified settings',
                                                    'properties': {
                                                        'account_tax_ids': {
                                                            'type': ['array', 'null'],
                                                            'description': 'The account tax IDs associated with the subscription',
                                                            'items': {'type': 'string'},
                                                        },
                                                        'issuer': {
                                                            'type': 'object',
                                                            'description': 'The connected account that issues the invoice',
                                                            'properties': {
                                                                'account': {
                                                                    'type': ['string', 'null'],
                                                                    'description': 'The connected account being referenced when type is account',
                                                                },
                                                                'type': {
                                                                    'type': 'string',
                                                                    'enum': ['account', 'self'],
                                                                    'description': 'Type of the account referenced',
                                                                },
                                                            },
                                                        },
                                                    },
                                                },
                                                'items': {
                                                    'type': 'object',
                                                    'description': 'List of subscription items, each with an attached price',
                                                    'properties': {
                                                        'object': {
                                                            'type': 'string',
                                                            'enum': ['list'],
                                                            'description': "String representing the object's type",
                                                        },
                                                        'data': {
                                                            'type': 'array',
                                                            'description': 'Details about each object',
                                                            'items': {
                                                                'type': 'object',
                                                                'properties': {
                                                                    'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                                    'object': {'type': 'string', 'description': "String representing the object's type"},
                                                                    'billing_thresholds': {
                                                                        'type': ['object', 'null'],
                                                                        'description': 'Define thresholds at which an invoice will be sent',
                                                                        'properties': {
                                                                            'usage_gte': {
                                                                                'type': ['integer', 'null'],
                                                                                'description': 'Usage threshold that triggers the subscription to create an invoice',
                                                                            },
                                                                        },
                                                                    },
                                                                    'created': {
                                                                        'type': 'integer',
                                                                        'format': 'int64',
                                                                        'description': 'Time at which the object was created',
                                                                    },
                                                                    'current_period_end': {
                                                                        'type': 'integer',
                                                                        'format': 'int64',
                                                                        'description': "The end time of this subscription item's current billing period",
                                                                    },
                                                                    'current_period_start': {
                                                                        'type': 'integer',
                                                                        'format': 'int64',
                                                                        'description': "The start time of this subscription item's current billing period",
                                                                    },
                                                                    'discounts': {
                                                                        'type': 'array',
                                                                        'items': {'type': 'string'},
                                                                        'description': 'The discounts applied to the subscription item',
                                                                    },
                                                                    'metadata': {
                                                                        'type': 'object',
                                                                        'description': 'Set of key-value pairs',
                                                                        'additionalProperties': {'type': 'string'},
                                                                    },
                                                                    'plan': {
                                                                        'type': ['object', 'null'],
                                                                        'description': 'The plan the customer is subscribed to (deprecated, use price instead)',
                                                                        'additionalProperties': True,
                                                                    },
                                                                    'price': {
                                                                        'type': 'object',
                                                                        'description': 'The price the customer is subscribed to',
                                                                        'additionalProperties': True,
                                                                    },
                                                                    'quantity': {
                                                                        'type': ['integer', 'null'],
                                                                        'description': 'The quantity of the plan to which the customer should be subscribed',
                                                                    },
                                                                    'subscription': {'type': 'string', 'description': 'The subscription this subscription_item belongs to'},
                                                                    'tax_rates': {
                                                                        'type': ['array', 'null'],
                                                                        'description': 'The tax rates which apply to this subscription_item',
                                                                        'items': {'type': 'object', 'additionalProperties': True},
                                                                    },
                                                                },
                                                            },
                                                        },
                                                        'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                                                        'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                                        'total_count': {'type': 'integer', 'description': 'The total count of items in the list'},
                                                    },
                                                },
                                                'latest_invoice': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The most recent invoice this subscription has generated',
                                                },
                                                'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                                'metadata': {
                                                    'type': 'object',
                                                    'additionalProperties': {'type': 'string'},
                                                    'description': 'Set of key-value pairs',
                                                },
                                                'next_pending_invoice_item_invoice': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'Specifies the approximate timestamp on which any pending invoice items will be billed',
                                                },
                                                'on_behalf_of': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The account (if any) the charge was made on behalf of for charges associated with this subscription',
                                                },
                                                'pause_collection': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If specified, payment collection for this subscription will be paused',
                                                    'properties': {
                                                        'behavior': {
                                                            'type': 'string',
                                                            'enum': ['keep_as_draft', 'mark_uncollectible', 'void'],
                                                            'description': 'The payment collection behavior for this subscription while paused',
                                                        },
                                                        'resumes_at': {
                                                            'type': ['integer', 'null'],
                                                            'format': 'int64',
                                                            'description': 'The time after which the subscription will resume collecting payments',
                                                        },
                                                    },
                                                },
                                                'payment_settings': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Payment settings passed on to invoices created by the subscription',
                                                    'properties': {
                                                        'payment_method_options': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Payment-method-specific configuration to provide to invoices',
                                                            'additionalProperties': True,
                                                        },
                                                        'payment_method_types': {
                                                            'type': ['array', 'null'],
                                                            'description': 'The list of payment method types to provide to every invoice',
                                                            'items': {'type': 'string'},
                                                        },
                                                    },
                                                },
                                                'status': {
                                                    'type': 'string',
                                                    'enum': [
                                                        'incomplete',
                                                        'incomplete_expired',
                                                        'trialing',
                                                        'active',
                                                        'past_due',
                                                        'canceled',
                                                        'unpaid',
                                                        'paused',
                                                    ],
                                                    'description': 'The status of the subscription',
                                                },
                                                'current_period_start': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'Start of the current period for which the subscription has been invoiced',
                                                },
                                                'current_period_end': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'End of the current period for which the subscription has been invoiced',
                                                },
                                                'start_date': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'Date when the subscription was first created',
                                                },
                                                'trial_start': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'If the subscription has a trial, the beginning of that trial',
                                                },
                                                'trial_end': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'If the subscription has a trial, the end of that trial',
                                                },
                                                'discount': {
                                                    'type': ['object', 'null'],
                                                    'description': 'The discount applied to the subscription',
                                                },
                                                'plan': {
                                                    'type': ['object', 'null'],
                                                    'description': 'The subscription plan (deprecated, use price instead)',
                                                },
                                                'quantity': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'The quantity of the subscription',
                                                },
                                                'schedule': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The schedule attached to the subscription',
                                                },
                                                'test_clock': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the test clock this subscription belongs to',
                                                },
                                                'transfer_data': {
                                                    'type': ['object', 'null'],
                                                    'description': "The account (if any) the subscription's payments will be attributed to for tax reporting",
                                                },
                                                'trial_settings': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Settings related to subscription trials',
                                                    'properties': {
                                                        'end_behavior': {
                                                            'type': 'object',
                                                            'properties': {
                                                                'missing_payment_method': {'type': 'string', 'description': 'Behavior when the trial ends and payment method is missing'},
                                                            },
                                                        },
                                                    },
                                                },
                                                'pending_invoice_item_interval': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Specifies an interval for how often to bill for any pending invoice items',
                                                },
                                                'pending_setup_intent': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The ID of the SetupIntent to be confirmed',
                                                },
                                                'pending_update': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If specified, pending updates that will be applied to the subscription once the latest_invoice has been paid',
                                                },
                                            },
                                            'x-airbyte-entity-name': 'subscriptions',
                                        },
                                    },
                                    'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                                    'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                },
                            },
                            'tax_exempt': {
                                'type': ['string', 'null'],
                                'description': "Describes the customer's tax exemption status",
                            },
                            'test_clock': {
                                'type': ['string', 'null'],
                                'description': 'ID of the test clock this customer belongs to',
                            },
                        },
                        'x-airbyte-entity-name': 'customers',
                    },
                ),
                Action.DELETE: EndpointDefinition(
                    method='DELETE',
                    path='/v1/customers/{id}',
                    action=Action.DELETE,
                    description='Permanently deletes a customer. It cannot be undone.',
                    path_params=['id'],
                    path_params_schema={
                        'id': {'type': 'string', 'required': True},
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'id': {'type': 'string', 'description': 'The ID of the deleted customer'},
                            'object': {
                                'type': 'string',
                                'enum': ['customer'],
                                'description': "String representing the object's type",
                            },
                            'deleted': {'type': 'boolean', 'description': 'Always true for a deleted object'},
                        },
                    },
                ),
                Action.API_SEARCH: EndpointDefinition(
                    method='GET',
                    path='/v1/customers/search',
                    action=Action.API_SEARCH,
                    description="Search for customers using Stripe's Search Query Language.",
                    query_params=['query', 'limit', 'page'],
                    query_params_schema={
                        'query': {'type': 'string', 'required': True},
                        'limit': {'type': 'integer', 'required': False},
                        'page': {'type': 'string', 'required': False},
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['search_result'],
                            },
                            'data': {
                                'type': 'array',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the customer'},
                                        'object': {
                                            'type': 'string',
                                            'description': "String representing the object's type",
                                            'enum': ['customer'],
                                        },
                                        'address': {
                                            'type': ['object', 'null'],
                                            'description': "The customer's address",
                                            'properties': {
                                                'city': {
                                                    'type': ['string', 'null'],
                                                    'description': 'City, district, suburb, town, or village',
                                                },
                                                'country': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                },
                                                'line1': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Address line 1, such as the street, PO Box, or company name',
                                                },
                                                'line2': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Address line 2, such as the apartment, suite, unit, or building',
                                                },
                                                'postal_code': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ZIP or postal code',
                                                },
                                                'state': {
                                                    'type': ['string', 'null'],
                                                    'description': 'State, county, province, or region',
                                                },
                                            },
                                        },
                                        'balance': {'type': 'integer', 'description': 'The current balance stored on the customer'},
                                        'business_name': {
                                            'type': ['string', 'null'],
                                            'description': "The customer's business name",
                                        },
                                        'cash_balance': {
                                            'type': ['object', 'null'],
                                            'description': 'The current funds being held by Stripe on behalf of the customer',
                                            'properties': {
                                                'object': {'type': 'string', 'description': "String representing the object's type"},
                                                'available': {
                                                    'type': ['object', 'null'],
                                                    'description': 'A hash of all cash balances available to this customer',
                                                },
                                                'customer': {'type': 'string', 'description': 'The ID of the customer whose cash balance this object represents'},
                                                'customer_account': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The ID of the account whose cash balance this object represents',
                                                },
                                                'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                                'settings': {
                                                    'type': 'object',
                                                    'description': 'A hash of settings for this cash balance',
                                                    'properties': {
                                                        'reconciliation_mode': {
                                                            'type': 'string',
                                                            'enum': ['automatic', 'manual'],
                                                            'description': 'The configuration for how funds that land in the customer cash balance are reconciled',
                                                        },
                                                        'using_merchant_default': {'type': 'boolean', 'description': "A flag to indicate if reconciliation mode returned is the user's default or is specific to this customer cash balance"},
                                                    },
                                                },
                                            },
                                        },
                                        'created': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'Time at which the object was created (Unix timestamp)',
                                        },
                                        'currency': {
                                            'type': ['string', 'null'],
                                            'description': 'Three-letter ISO code for the currency the customer can be charged in for recurring billing purposes',
                                        },
                                        'customer_account': {
                                            'type': ['string', 'null'],
                                            'description': 'The ID of the customer account associated with this customer',
                                        },
                                        'default_currency': {
                                            'type': ['string', 'null'],
                                            'description': 'The default currency for the customer',
                                        },
                                        'default_source': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the default payment source for the customer',
                                        },
                                        'delinquent': {
                                            'type': ['boolean', 'null'],
                                            'description': 'Whether the customer is delinquent on payments',
                                        },
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': 'An arbitrary string attached to the object',
                                        },
                                        'discount': {
                                            'type': ['object', 'null'],
                                            'description': 'Describes the current discount active on the customer, if there is one',
                                            'properties': {
                                                'id': {'type': 'string', 'description': 'The ID of the discount object'},
                                                'object': {'type': 'string', 'description': "String representing the object's type"},
                                                'checkout_session': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The Checkout session that this coupon is applied to, if applicable',
                                                },
                                                'customer': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The ID of the customer associated with this discount',
                                                },
                                                'customer_account': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The ID of the account associated with this discount',
                                                },
                                                'end': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'If the coupon has a duration of repeating, the date that this discount will end',
                                                },
                                                'invoice': {
                                                    'type': ['string', 'null'],
                                                    'description': "The invoice that the discount's coupon was applied to",
                                                },
                                                'invoice_item': {
                                                    'type': ['string', 'null'],
                                                    'description': "The invoice item that the discount's coupon was applied to",
                                                },
                                                'promotion_code': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The promotion code applied to create this discount',
                                                },
                                                'source': {
                                                    'type': 'object',
                                                    'description': 'The source of the discount',
                                                    'properties': {
                                                        'coupon': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The coupon that was redeemed to create this discount',
                                                        },
                                                        'type': {
                                                            'type': 'string',
                                                            'enum': ['coupon'],
                                                            'description': 'The source type of the discount',
                                                        },
                                                    },
                                                },
                                                'start': {'type': 'integer', 'description': 'Date that the coupon was applied'},
                                                'subscription': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The subscription that this coupon is applied to',
                                                },
                                                'subscription_item': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The subscription item that this coupon is applied to',
                                                },
                                            },
                                        },
                                        'email': {
                                            'type': ['string', 'null'],
                                            'format': 'email',
                                            'description': "The customer's email address",
                                        },
                                        'individual_name': {
                                            'type': ['string', 'null'],
                                            'description': "The customer's individual name",
                                        },
                                        'invoice_credit_balance': {'type': 'object', 'description': 'The current multi-currency balances stored on the customer'},
                                        'invoice_prefix': {
                                            'type': ['string', 'null'],
                                            'description': 'The prefix for the customer used to generate unique invoice numbers',
                                        },
                                        'invoice_settings': {
                                            'type': 'object',
                                            'description': "The customer's default invoice settings",
                                            'properties': {
                                                'custom_fields': {
                                                    'type': ['array', 'null'],
                                                    'description': 'Default custom fields to be displayed on invoices for this customer',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'name': {'type': 'string', 'description': 'The name of the custom field'},
                                                            'value': {'type': 'string', 'description': 'The value of the custom field'},
                                                        },
                                                    },
                                                },
                                                'default_payment_method': {
                                                    'type': ['string', 'null'],
                                                    'description': "ID of a payment method that's attached to the customer",
                                                },
                                                'footer': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Default footer to be displayed on invoices for this customer',
                                                },
                                                'rendering_options': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Default options for invoice PDF rendering for this customer',
                                                    'properties': {
                                                        'amount_tax_display': {
                                                            'type': ['string', 'null'],
                                                            'description': 'How line-item prices and amounts will be displayed with respect to tax on invoice PDFs',
                                                        },
                                                        'template': {
                                                            'type': ['string', 'null'],
                                                            'description': "ID of the invoice rendering template to be used for this customer's invoices",
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                        'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                        'metadata': {
                                            'type': 'object',
                                            'additionalProperties': {'type': 'string'},
                                            'description': 'Set of key-value pairs that you can attach to an object',
                                        },
                                        'name': {
                                            'type': ['string', 'null'],
                                            'description': "The customer's full name or business name",
                                        },
                                        'next_invoice_sequence': {
                                            'type': ['integer', 'null'],
                                            'description': "The suffix of the customer's next invoice number",
                                        },
                                        'phone': {
                                            'type': ['string', 'null'],
                                            'description': "The customer's phone number",
                                        },
                                        'preferred_locales': {
                                            'type': ['array', 'null'],
                                            'items': {'type': 'string'},
                                            'description': "The customer's preferred locales (languages), ordered by preference",
                                        },
                                        'shipping': {
                                            'type': ['object', 'null'],
                                            'description': 'Mailing and shipping address for the customer',
                                            'properties': {
                                                'address': {
                                                    'type': 'object',
                                                    'description': 'Customer shipping address',
                                                    'properties': {
                                                        'city': {
                                                            'type': ['string', 'null'],
                                                            'description': 'City, district, suburb, town, or village',
                                                        },
                                                        'country': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                        },
                                                        'line1': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Address line 1, such as the street, PO Box, or company name',
                                                        },
                                                        'line2': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Address line 2, such as the apartment, suite, unit, or building',
                                                        },
                                                        'postal_code': {
                                                            'type': ['string', 'null'],
                                                            'description': 'ZIP or postal code',
                                                        },
                                                        'state': {
                                                            'type': ['string', 'null'],
                                                            'description': 'State, county, province, or region',
                                                        },
                                                    },
                                                },
                                                'name': {'type': 'string', 'description': 'Customer name'},
                                                'phone': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Customer phone (including extension)',
                                                },
                                            },
                                        },
                                        'sources': {
                                            'type': ['object', 'null'],
                                            'description': "The customer's payment sources, if any",
                                            'properties': {
                                                'object': {
                                                    'type': 'string',
                                                    'enum': ['list'],
                                                    'description': "String representing the object's type",
                                                },
                                                'data': {
                                                    'type': 'array',
                                                    'description': 'Details about each object',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                            'object': {'type': 'string', 'description': "String representing the object's type"},
                                                            'account': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The account this bank account belongs to',
                                                            },
                                                            'account_holder_name': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The name of the person or business that owns the bank account',
                                                            },
                                                            'account_holder_type': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The type of entity that holds the account',
                                                            },
                                                            'account_type': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The bank account type',
                                                            },
                                                            'available_payout_methods': {
                                                                'type': ['array', 'null'],
                                                                'description': 'A set of available payout methods for this bank account',
                                                                'items': {
                                                                    'type': 'string',
                                                                    'enum': ['instant', 'standard'],
                                                                },
                                                            },
                                                            'bank_name': {
                                                                'type': ['string', 'null'],
                                                                'description': 'Name of the bank associated with the routing number',
                                                            },
                                                            'country': {'type': 'string', 'description': 'Two-letter ISO code representing the country the bank account is located in'},
                                                            'currency': {'type': 'string', 'description': 'Three-letter ISO code for the currency paid out to the bank account'},
                                                            'customer': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The ID of the customer that the bank account is associated with',
                                                            },
                                                            'fingerprint': {
                                                                'type': ['string', 'null'],
                                                                'description': 'Uniquely identifies this particular bank account',
                                                            },
                                                            'last4': {'type': 'string', 'description': 'The last four digits of the bank account number'},
                                                            'metadata': {
                                                                'type': ['object', 'null'],
                                                                'description': 'Set of key-value pairs that you can attach to an object',
                                                                'additionalProperties': {'type': 'string'},
                                                            },
                                                            'routing_number': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The routing transit number for the bank account',
                                                            },
                                                            'status': {'type': 'string', 'description': 'The status of the bank account'},
                                                        },
                                                    },
                                                },
                                                'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                                                'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                            },
                                        },
                                        'subscriptions': {
                                            'type': ['object', 'null'],
                                            'description': "The customer's current subscriptions, if any",
                                            'properties': {
                                                'object': {
                                                    'type': 'string',
                                                    'enum': ['list'],
                                                    'description': "String representing the object's type",
                                                },
                                                'data': {
                                                    'type': 'array',
                                                    'description': 'Details about each subscription',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                            'object': {
                                                                'type': 'string',
                                                                'description': "String representing the object's type",
                                                                'enum': ['subscription'],
                                                            },
                                                            'application': {
                                                                'type': ['string', 'null'],
                                                                'description': 'ID of the Connect Application that created the subscription',
                                                            },
                                                            'application_fee_percent': {
                                                                'type': ['number', 'null'],
                                                                'format': 'float',
                                                                'description': 'A non-negative decimal between 0 and 100, with at most two decimal places',
                                                            },
                                                            'automatic_tax': {
                                                                'type': 'object',
                                                                'description': 'Automatic tax settings for this subscription',
                                                                'properties': {
                                                                    'disabled_reason': {
                                                                        'type': ['string', 'null'],
                                                                        'description': 'If Stripe disabled automatic tax, this enum describes why',
                                                                    },
                                                                    'enabled': {'type': 'boolean', 'description': 'Whether Stripe automatically computes tax on this subscription'},
                                                                    'liability': {
                                                                        'type': ['object', 'null'],
                                                                        'description': "The account that's liable for tax",
                                                                        'properties': {
                                                                            'account': {
                                                                                'type': ['string', 'null'],
                                                                                'description': 'The connected account being referenced when type is account',
                                                                            },
                                                                            'type': {
                                                                                'type': 'string',
                                                                                'enum': ['account', 'self'],
                                                                                'description': 'Type of the account referenced',
                                                                            },
                                                                        },
                                                                    },
                                                                },
                                                            },
                                                            'billing_cycle_anchor': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': 'The reference point that aligns future billing cycle dates',
                                                            },
                                                            'billing_cycle_anchor_config': {
                                                                'type': ['object', 'null'],
                                                                'description': 'The fixed values used to calculate the billing_cycle_anchor',
                                                                'properties': {
                                                                    'day_of_month': {'type': 'integer', 'description': 'The day of the month of the billing_cycle_anchor'},
                                                                    'hour': {
                                                                        'type': ['integer', 'null'],
                                                                        'description': 'The hour of the day of the billing_cycle_anchor',
                                                                    },
                                                                    'minute': {
                                                                        'type': ['integer', 'null'],
                                                                        'description': 'The minute of the hour of the billing_cycle_anchor',
                                                                    },
                                                                    'month': {
                                                                        'type': ['integer', 'null'],
                                                                        'description': 'The month to start full cycle billing periods',
                                                                    },
                                                                    'second': {
                                                                        'type': ['integer', 'null'],
                                                                        'description': 'The second of the minute of the billing_cycle_anchor',
                                                                    },
                                                                },
                                                            },
                                                            'billing_mode': {
                                                                'type': 'object',
                                                                'description': 'Controls how prorations and invoices for subscriptions are calculated and orchestrated',
                                                                'properties': {
                                                                    'flexible': {
                                                                        'type': ['object', 'null'],
                                                                        'description': 'Configure behavior for flexible billing mode',
                                                                        'properties': {
                                                                            'proration_discounts': {
                                                                                'type': 'string',
                                                                                'enum': ['included', 'itemized'],
                                                                                'description': 'Controls how invoices and invoice items display proration amounts and discount amounts',
                                                                            },
                                                                        },
                                                                    },
                                                                    'type': {
                                                                        'type': 'string',
                                                                        'enum': ['classic', 'flexible'],
                                                                        'description': 'Controls how prorations and invoices for subscriptions are calculated and orchestrated',
                                                                    },
                                                                    'updated_at': {
                                                                        'type': ['integer', 'null'],
                                                                        'format': 'int64',
                                                                        'description': 'Details on when the current billing_mode was adopted',
                                                                    },
                                                                },
                                                            },
                                                            'billing_thresholds': {
                                                                'type': ['object', 'null'],
                                                                'description': 'Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period',
                                                                'properties': {
                                                                    'amount_gte': {
                                                                        'type': ['integer', 'null'],
                                                                        'description': 'Monetary threshold that triggers the subscription to create an invoice',
                                                                    },
                                                                    'reset_billing_cycle_anchor': {
                                                                        'type': ['boolean', 'null'],
                                                                        'description': 'Indicates if the billing_cycle_anchor should be reset when a threshold is reached',
                                                                    },
                                                                },
                                                            },
                                                            'cancel_at': {
                                                                'type': ['integer', 'null'],
                                                                'format': 'int64',
                                                                'description': 'A date in the future at which the subscription will automatically get canceled',
                                                            },
                                                            'cancel_at_period_end': {'type': 'boolean', 'description': 'Whether this subscription will (if status=active) or did (if status=canceled) cancel at the end of the current billing period'},
                                                            'canceled_at': {
                                                                'type': ['integer', 'null'],
                                                                'format': 'int64',
                                                                'description': 'If the subscription has been canceled, the date of that cancellation',
                                                            },
                                                            'cancellation_details': {
                                                                'type': ['object', 'null'],
                                                                'description': 'Details about why this subscription was cancelled',
                                                                'properties': {
                                                                    'comment': {
                                                                        'type': ['string', 'null'],
                                                                        'description': 'Additional comments about why the user canceled the subscription',
                                                                    },
                                                                    'feedback': {
                                                                        'type': ['string', 'null'],
                                                                        'description': 'The customer submitted reason for why they canceled',
                                                                    },
                                                                    'reason': {
                                                                        'type': ['string', 'null'],
                                                                        'description': 'Why this subscription was canceled',
                                                                    },
                                                                },
                                                            },
                                                            'collection_method': {
                                                                'type': 'string',
                                                                'enum': ['charge_automatically', 'send_invoice'],
                                                                'description': 'Either charge_automatically, or send_invoice',
                                                            },
                                                            'created': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': 'Time at which the object was created. Measured in seconds since the Unix epoch',
                                                            },
                                                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                                            'customer': {'type': 'string', 'description': 'ID of the customer who owns the subscription'},
                                                            'customer_account': {
                                                                'type': ['string', 'null'],
                                                                'description': 'ID of the account who owns the subscription',
                                                            },
                                                            'days_until_due': {
                                                                'type': ['integer', 'null'],
                                                                'description': 'Number of days a customer has to pay invoices generated by this subscription',
                                                            },
                                                            'default_payment_method': {
                                                                'type': ['string', 'null'],
                                                                'description': 'ID of the default payment method for the subscription',
                                                            },
                                                            'default_source': {
                                                                'type': ['string', 'null'],
                                                                'description': 'ID of the default payment source for the subscription',
                                                            },
                                                            'default_tax_rates': {
                                                                'type': ['array', 'null'],
                                                                'description': 'The tax rates that will apply to any subscription item that does not have tax_rates set',
                                                                'items': {
                                                                    'type': 'object',
                                                                    'properties': {
                                                                        'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                                        'object': {'type': 'string', 'description': "String representing the object's type"},
                                                                        'active': {'type': 'boolean', 'description': 'Defaults to true'},
                                                                        'country': {
                                                                            'type': ['string', 'null'],
                                                                            'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                                        },
                                                                        'created': {
                                                                            'type': 'integer',
                                                                            'format': 'int64',
                                                                            'description': 'Time at which the object was created',
                                                                        },
                                                                        'description': {
                                                                            'type': ['string', 'null'],
                                                                            'description': 'An arbitrary string attached to the tax rate for your internal use only',
                                                                        },
                                                                        'display_name': {'type': 'string', 'description': 'The display name of the tax rates'},
                                                                        'effective_percentage': {
                                                                            'type': ['number', 'null'],
                                                                            'description': 'Actual/effective tax rate percentage out of 100',
                                                                        },
                                                                        'flat_amount': {
                                                                            'type': ['object', 'null'],
                                                                            'description': 'The amount of the tax rate when the rate_type is flat_amount',
                                                                            'properties': {
                                                                                'amount': {'type': 'integer', 'description': 'Amount of the tax when the rate_type is flat_amount'},
                                                                                'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                                                            },
                                                                        },
                                                                        'inclusive': {'type': 'boolean', 'description': 'This specifies if the tax rate is inclusive or exclusive'},
                                                                        'jurisdiction': {
                                                                            'type': ['string', 'null'],
                                                                            'description': 'The jurisdiction for the tax rate',
                                                                        },
                                                                        'jurisdiction_level': {
                                                                            'type': ['string', 'null'],
                                                                            'enum': [
                                                                                'city',
                                                                                'country',
                                                                                'county',
                                                                                'district',
                                                                                'multiple',
                                                                                'state',
                                                                            ],
                                                                            'description': 'The level of the jurisdiction that imposes this tax rate',
                                                                        },
                                                                        'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                                                        'metadata': {
                                                                            'type': ['object', 'null'],
                                                                            'description': 'Set of key-value pairs',
                                                                            'additionalProperties': {'type': 'string'},
                                                                        },
                                                                        'percentage': {'type': 'number', 'description': 'Tax rate percentage out of 100'},
                                                                        'rate_type': {
                                                                            'type': ['string', 'null'],
                                                                            'enum': ['flat_amount', 'percentage'],
                                                                            'description': 'Indicates the type of tax rate applied to the taxable amount',
                                                                        },
                                                                        'state': {
                                                                            'type': ['string', 'null'],
                                                                            'description': 'ISO 3166-2 subdivision code, without country prefix',
                                                                        },
                                                                        'tax_type': {
                                                                            'type': ['string', 'null'],
                                                                            'enum': [
                                                                                'amusement_tax',
                                                                                'communications_tax',
                                                                                'gst',
                                                                                'hst',
                                                                                'igst',
                                                                                'jct',
                                                                                'lease_tax',
                                                                                'pst',
                                                                                'qst',
                                                                                'retail_delivery_fee',
                                                                                'rst',
                                                                                'sales_tax',
                                                                                'service_tax',
                                                                                'vat',
                                                                            ],
                                                                            'description': 'The high-level tax type',
                                                                        },
                                                                    },
                                                                },
                                                            },
                                                            'description': {
                                                                'type': ['string', 'null'],
                                                                'description': "The subscription's description, meant to be displayable to the customer",
                                                            },
                                                            'discounts': {
                                                                'type': 'array',
                                                                'items': {'type': 'string'},
                                                                'description': 'The discounts applied to the subscription',
                                                            },
                                                            'ended_at': {
                                                                'type': ['integer', 'null'],
                                                                'format': 'int64',
                                                                'description': 'If the subscription has ended, the date the subscription ended',
                                                            },
                                                            'invoice_settings': {
                                                                'type': 'object',
                                                                'description': 'All invoices will be billed using the specified settings',
                                                                'properties': {
                                                                    'account_tax_ids': {
                                                                        'type': ['array', 'null'],
                                                                        'description': 'The account tax IDs associated with the subscription',
                                                                        'items': {'type': 'string'},
                                                                    },
                                                                    'issuer': {
                                                                        'type': 'object',
                                                                        'description': 'The connected account that issues the invoice',
                                                                        'properties': {
                                                                            'account': {
                                                                                'type': ['string', 'null'],
                                                                                'description': 'The connected account being referenced when type is account',
                                                                            },
                                                                            'type': {
                                                                                'type': 'string',
                                                                                'enum': ['account', 'self'],
                                                                                'description': 'Type of the account referenced',
                                                                            },
                                                                        },
                                                                    },
                                                                },
                                                            },
                                                            'items': {
                                                                'type': 'object',
                                                                'description': 'List of subscription items, each with an attached price',
                                                                'properties': {
                                                                    'object': {
                                                                        'type': 'string',
                                                                        'enum': ['list'],
                                                                        'description': "String representing the object's type",
                                                                    },
                                                                    'data': {
                                                                        'type': 'array',
                                                                        'description': 'Details about each object',
                                                                        'items': {
                                                                            'type': 'object',
                                                                            'properties': {
                                                                                'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                                                'object': {'type': 'string', 'description': "String representing the object's type"},
                                                                                'billing_thresholds': {
                                                                                    'type': ['object', 'null'],
                                                                                    'description': 'Define thresholds at which an invoice will be sent',
                                                                                    'properties': {
                                                                                        'usage_gte': {
                                                                                            'type': ['integer', 'null'],
                                                                                            'description': 'Usage threshold that triggers the subscription to create an invoice',
                                                                                        },
                                                                                    },
                                                                                },
                                                                                'created': {
                                                                                    'type': 'integer',
                                                                                    'format': 'int64',
                                                                                    'description': 'Time at which the object was created',
                                                                                },
                                                                                'current_period_end': {
                                                                                    'type': 'integer',
                                                                                    'format': 'int64',
                                                                                    'description': "The end time of this subscription item's current billing period",
                                                                                },
                                                                                'current_period_start': {
                                                                                    'type': 'integer',
                                                                                    'format': 'int64',
                                                                                    'description': "The start time of this subscription item's current billing period",
                                                                                },
                                                                                'discounts': {
                                                                                    'type': 'array',
                                                                                    'items': {'type': 'string'},
                                                                                    'description': 'The discounts applied to the subscription item',
                                                                                },
                                                                                'metadata': {
                                                                                    'type': 'object',
                                                                                    'description': 'Set of key-value pairs',
                                                                                    'additionalProperties': {'type': 'string'},
                                                                                },
                                                                                'plan': {
                                                                                    'type': ['object', 'null'],
                                                                                    'description': 'The plan the customer is subscribed to (deprecated, use price instead)',
                                                                                    'additionalProperties': True,
                                                                                },
                                                                                'price': {
                                                                                    'type': 'object',
                                                                                    'description': 'The price the customer is subscribed to',
                                                                                    'additionalProperties': True,
                                                                                },
                                                                                'quantity': {
                                                                                    'type': ['integer', 'null'],
                                                                                    'description': 'The quantity of the plan to which the customer should be subscribed',
                                                                                },
                                                                                'subscription': {'type': 'string', 'description': 'The subscription this subscription_item belongs to'},
                                                                                'tax_rates': {
                                                                                    'type': ['array', 'null'],
                                                                                    'description': 'The tax rates which apply to this subscription_item',
                                                                                    'items': {'type': 'object', 'additionalProperties': True},
                                                                                },
                                                                            },
                                                                        },
                                                                    },
                                                                    'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                                                                    'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                                                    'total_count': {'type': 'integer', 'description': 'The total count of items in the list'},
                                                                },
                                                            },
                                                            'latest_invoice': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The most recent invoice this subscription has generated',
                                                            },
                                                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                                            'metadata': {
                                                                'type': 'object',
                                                                'additionalProperties': {'type': 'string'},
                                                                'description': 'Set of key-value pairs',
                                                            },
                                                            'next_pending_invoice_item_invoice': {
                                                                'type': ['integer', 'null'],
                                                                'format': 'int64',
                                                                'description': 'Specifies the approximate timestamp on which any pending invoice items will be billed',
                                                            },
                                                            'on_behalf_of': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The account (if any) the charge was made on behalf of for charges associated with this subscription',
                                                            },
                                                            'pause_collection': {
                                                                'type': ['object', 'null'],
                                                                'description': 'If specified, payment collection for this subscription will be paused',
                                                                'properties': {
                                                                    'behavior': {
                                                                        'type': 'string',
                                                                        'enum': ['keep_as_draft', 'mark_uncollectible', 'void'],
                                                                        'description': 'The payment collection behavior for this subscription while paused',
                                                                    },
                                                                    'resumes_at': {
                                                                        'type': ['integer', 'null'],
                                                                        'format': 'int64',
                                                                        'description': 'The time after which the subscription will resume collecting payments',
                                                                    },
                                                                },
                                                            },
                                                            'payment_settings': {
                                                                'type': ['object', 'null'],
                                                                'description': 'Payment settings passed on to invoices created by the subscription',
                                                                'properties': {
                                                                    'payment_method_options': {
                                                                        'type': ['object', 'null'],
                                                                        'description': 'Payment-method-specific configuration to provide to invoices',
                                                                        'additionalProperties': True,
                                                                    },
                                                                    'payment_method_types': {
                                                                        'type': ['array', 'null'],
                                                                        'description': 'The list of payment method types to provide to every invoice',
                                                                        'items': {'type': 'string'},
                                                                    },
                                                                },
                                                            },
                                                            'status': {
                                                                'type': 'string',
                                                                'enum': [
                                                                    'incomplete',
                                                                    'incomplete_expired',
                                                                    'trialing',
                                                                    'active',
                                                                    'past_due',
                                                                    'canceled',
                                                                    'unpaid',
                                                                    'paused',
                                                                ],
                                                                'description': 'The status of the subscription',
                                                            },
                                                            'current_period_start': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': 'Start of the current period for which the subscription has been invoiced',
                                                            },
                                                            'current_period_end': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': 'End of the current period for which the subscription has been invoiced',
                                                            },
                                                            'start_date': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': 'Date when the subscription was first created',
                                                            },
                                                            'trial_start': {
                                                                'type': ['integer', 'null'],
                                                                'format': 'int64',
                                                                'description': 'If the subscription has a trial, the beginning of that trial',
                                                            },
                                                            'trial_end': {
                                                                'type': ['integer', 'null'],
                                                                'format': 'int64',
                                                                'description': 'If the subscription has a trial, the end of that trial',
                                                            },
                                                            'discount': {
                                                                'type': ['object', 'null'],
                                                                'description': 'The discount applied to the subscription',
                                                            },
                                                            'plan': {
                                                                'type': ['object', 'null'],
                                                                'description': 'The subscription plan (deprecated, use price instead)',
                                                            },
                                                            'quantity': {
                                                                'type': ['integer', 'null'],
                                                                'description': 'The quantity of the subscription',
                                                            },
                                                            'schedule': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The schedule attached to the subscription',
                                                            },
                                                            'test_clock': {
                                                                'type': ['string', 'null'],
                                                                'description': 'ID of the test clock this subscription belongs to',
                                                            },
                                                            'transfer_data': {
                                                                'type': ['object', 'null'],
                                                                'description': "The account (if any) the subscription's payments will be attributed to for tax reporting",
                                                            },
                                                            'trial_settings': {
                                                                'type': ['object', 'null'],
                                                                'description': 'Settings related to subscription trials',
                                                                'properties': {
                                                                    'end_behavior': {
                                                                        'type': 'object',
                                                                        'properties': {
                                                                            'missing_payment_method': {'type': 'string', 'description': 'Behavior when the trial ends and payment method is missing'},
                                                                        },
                                                                    },
                                                                },
                                                            },
                                                            'pending_invoice_item_interval': {
                                                                'type': ['object', 'null'],
                                                                'description': 'Specifies an interval for how often to bill for any pending invoice items',
                                                            },
                                                            'pending_setup_intent': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The ID of the SetupIntent to be confirmed',
                                                            },
                                                            'pending_update': {
                                                                'type': ['object', 'null'],
                                                                'description': 'If specified, pending updates that will be applied to the subscription once the latest_invoice has been paid',
                                                            },
                                                        },
                                                        'x-airbyte-entity-name': 'subscriptions',
                                                    },
                                                },
                                                'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                                                'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                            },
                                        },
                                        'tax_exempt': {
                                            'type': ['string', 'null'],
                                            'description': "Describes the customer's tax exemption status",
                                        },
                                        'test_clock': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the test clock this customer belongs to',
                                        },
                                    },
                                    'x-airbyte-entity-name': 'customers',
                                },
                            },
                            'has_more': {'type': 'boolean', 'description': 'Whether there are more results available'},
                            'next_page': {
                                'type': ['string', 'null'],
                                'description': 'Cursor for the next page of results',
                            },
                            'url': {'type': 'string', 'description': 'The URL for accessing this list'},
                        },
                    },
                    record_extractor='$.data',
                    meta_extractor={'has_more': '$.has_more'},
                ),
            },
            entity_schema={
                'type': 'object',
                'properties': {
                    'id': {'type': 'string', 'description': 'Unique identifier for the customer'},
                    'object': {
                        'type': 'string',
                        'description': "String representing the object's type",
                        'enum': ['customer'],
                    },
                    'address': {
                        'type': ['object', 'null'],
                        'description': "The customer's address",
                        'properties': {
                            'city': {
                                'type': ['string', 'null'],
                                'description': 'City, district, suburb, town, or village',
                            },
                            'country': {
                                'type': ['string', 'null'],
                                'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                            },
                            'line1': {
                                'type': ['string', 'null'],
                                'description': 'Address line 1, such as the street, PO Box, or company name',
                            },
                            'line2': {
                                'type': ['string', 'null'],
                                'description': 'Address line 2, such as the apartment, suite, unit, or building',
                            },
                            'postal_code': {
                                'type': ['string', 'null'],
                                'description': 'ZIP or postal code',
                            },
                            'state': {
                                'type': ['string', 'null'],
                                'description': 'State, county, province, or region',
                            },
                        },
                    },
                    'balance': {'type': 'integer', 'description': 'The current balance stored on the customer'},
                    'business_name': {
                        'type': ['string', 'null'],
                        'description': "The customer's business name",
                    },
                    'cash_balance': {
                        'type': ['object', 'null'],
                        'description': 'The current funds being held by Stripe on behalf of the customer',
                        'properties': {
                            'object': {'type': 'string', 'description': "String representing the object's type"},
                            'available': {
                                'type': ['object', 'null'],
                                'description': 'A hash of all cash balances available to this customer',
                            },
                            'customer': {'type': 'string', 'description': 'The ID of the customer whose cash balance this object represents'},
                            'customer_account': {
                                'type': ['string', 'null'],
                                'description': 'The ID of the account whose cash balance this object represents',
                            },
                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                            'settings': {
                                'type': 'object',
                                'description': 'A hash of settings for this cash balance',
                                'properties': {
                                    'reconciliation_mode': {
                                        'type': 'string',
                                        'enum': ['automatic', 'manual'],
                                        'description': 'The configuration for how funds that land in the customer cash balance are reconciled',
                                    },
                                    'using_merchant_default': {'type': 'boolean', 'description': "A flag to indicate if reconciliation mode returned is the user's default or is specific to this customer cash balance"},
                                },
                            },
                        },
                    },
                    'created': {
                        'type': 'integer',
                        'format': 'int64',
                        'description': 'Time at which the object was created (Unix timestamp)',
                    },
                    'currency': {
                        'type': ['string', 'null'],
                        'description': 'Three-letter ISO code for the currency the customer can be charged in for recurring billing purposes',
                    },
                    'customer_account': {
                        'type': ['string', 'null'],
                        'description': 'The ID of the customer account associated with this customer',
                    },
                    'default_currency': {
                        'type': ['string', 'null'],
                        'description': 'The default currency for the customer',
                    },
                    'default_source': {
                        'type': ['string', 'null'],
                        'description': 'ID of the default payment source for the customer',
                    },
                    'delinquent': {
                        'type': ['boolean', 'null'],
                        'description': 'Whether the customer is delinquent on payments',
                    },
                    'description': {
                        'type': ['string', 'null'],
                        'description': 'An arbitrary string attached to the object',
                    },
                    'discount': {
                        'type': ['object', 'null'],
                        'description': 'Describes the current discount active on the customer, if there is one',
                        'properties': {
                            'id': {'type': 'string', 'description': 'The ID of the discount object'},
                            'object': {'type': 'string', 'description': "String representing the object's type"},
                            'checkout_session': {
                                'type': ['string', 'null'],
                                'description': 'The Checkout session that this coupon is applied to, if applicable',
                            },
                            'customer': {
                                'type': ['string', 'null'],
                                'description': 'The ID of the customer associated with this discount',
                            },
                            'customer_account': {
                                'type': ['string', 'null'],
                                'description': 'The ID of the account associated with this discount',
                            },
                            'end': {
                                'type': ['integer', 'null'],
                                'description': 'If the coupon has a duration of repeating, the date that this discount will end',
                            },
                            'invoice': {
                                'type': ['string', 'null'],
                                'description': "The invoice that the discount's coupon was applied to",
                            },
                            'invoice_item': {
                                'type': ['string', 'null'],
                                'description': "The invoice item that the discount's coupon was applied to",
                            },
                            'promotion_code': {
                                'type': ['string', 'null'],
                                'description': 'The promotion code applied to create this discount',
                            },
                            'source': {
                                'type': 'object',
                                'description': 'The source of the discount',
                                'properties': {
                                    'coupon': {
                                        'type': ['string', 'null'],
                                        'description': 'The coupon that was redeemed to create this discount',
                                    },
                                    'type': {
                                        'type': 'string',
                                        'enum': ['coupon'],
                                        'description': 'The source type of the discount',
                                    },
                                },
                            },
                            'start': {'type': 'integer', 'description': 'Date that the coupon was applied'},
                            'subscription': {
                                'type': ['string', 'null'],
                                'description': 'The subscription that this coupon is applied to',
                            },
                            'subscription_item': {
                                'type': ['string', 'null'],
                                'description': 'The subscription item that this coupon is applied to',
                            },
                        },
                    },
                    'email': {
                        'type': ['string', 'null'],
                        'format': 'email',
                        'description': "The customer's email address",
                    },
                    'individual_name': {
                        'type': ['string', 'null'],
                        'description': "The customer's individual name",
                    },
                    'invoice_credit_balance': {'type': 'object', 'description': 'The current multi-currency balances stored on the customer'},
                    'invoice_prefix': {
                        'type': ['string', 'null'],
                        'description': 'The prefix for the customer used to generate unique invoice numbers',
                    },
                    'invoice_settings': {
                        'type': 'object',
                        'description': "The customer's default invoice settings",
                        'properties': {
                            'custom_fields': {
                                'type': ['array', 'null'],
                                'description': 'Default custom fields to be displayed on invoices for this customer',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'name': {'type': 'string', 'description': 'The name of the custom field'},
                                        'value': {'type': 'string', 'description': 'The value of the custom field'},
                                    },
                                },
                            },
                            'default_payment_method': {
                                'type': ['string', 'null'],
                                'description': "ID of a payment method that's attached to the customer",
                            },
                            'footer': {
                                'type': ['string', 'null'],
                                'description': 'Default footer to be displayed on invoices for this customer',
                            },
                            'rendering_options': {
                                'type': ['object', 'null'],
                                'description': 'Default options for invoice PDF rendering for this customer',
                                'properties': {
                                    'amount_tax_display': {
                                        'type': ['string', 'null'],
                                        'description': 'How line-item prices and amounts will be displayed with respect to tax on invoice PDFs',
                                    },
                                    'template': {
                                        'type': ['string', 'null'],
                                        'description': "ID of the invoice rendering template to be used for this customer's invoices",
                                    },
                                },
                            },
                        },
                    },
                    'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                    'metadata': {
                        'type': 'object',
                        'additionalProperties': {'type': 'string'},
                        'description': 'Set of key-value pairs that you can attach to an object',
                    },
                    'name': {
                        'type': ['string', 'null'],
                        'description': "The customer's full name or business name",
                    },
                    'next_invoice_sequence': {
                        'type': ['integer', 'null'],
                        'description': "The suffix of the customer's next invoice number",
                    },
                    'phone': {
                        'type': ['string', 'null'],
                        'description': "The customer's phone number",
                    },
                    'preferred_locales': {
                        'type': ['array', 'null'],
                        'items': {'type': 'string'},
                        'description': "The customer's preferred locales (languages), ordered by preference",
                    },
                    'shipping': {
                        'type': ['object', 'null'],
                        'description': 'Mailing and shipping address for the customer',
                        'properties': {
                            'address': {
                                'type': 'object',
                                'description': 'Customer shipping address',
                                'properties': {
                                    'city': {
                                        'type': ['string', 'null'],
                                        'description': 'City, district, suburb, town, or village',
                                    },
                                    'country': {
                                        'type': ['string', 'null'],
                                        'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                    },
                                    'line1': {
                                        'type': ['string', 'null'],
                                        'description': 'Address line 1, such as the street, PO Box, or company name',
                                    },
                                    'line2': {
                                        'type': ['string', 'null'],
                                        'description': 'Address line 2, such as the apartment, suite, unit, or building',
                                    },
                                    'postal_code': {
                                        'type': ['string', 'null'],
                                        'description': 'ZIP or postal code',
                                    },
                                    'state': {
                                        'type': ['string', 'null'],
                                        'description': 'State, county, province, or region',
                                    },
                                },
                            },
                            'name': {'type': 'string', 'description': 'Customer name'},
                            'phone': {
                                'type': ['string', 'null'],
                                'description': 'Customer phone (including extension)',
                            },
                        },
                    },
                    'sources': {
                        'type': ['object', 'null'],
                        'description': "The customer's payment sources, if any",
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['list'],
                                'description': "String representing the object's type",
                            },
                            'data': {
                                'type': 'array',
                                'description': 'Details about each object',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                        'object': {'type': 'string', 'description': "String representing the object's type"},
                                        'account': {
                                            'type': ['string', 'null'],
                                            'description': 'The account this bank account belongs to',
                                        },
                                        'account_holder_name': {
                                            'type': ['string', 'null'],
                                            'description': 'The name of the person or business that owns the bank account',
                                        },
                                        'account_holder_type': {
                                            'type': ['string', 'null'],
                                            'description': 'The type of entity that holds the account',
                                        },
                                        'account_type': {
                                            'type': ['string', 'null'],
                                            'description': 'The bank account type',
                                        },
                                        'available_payout_methods': {
                                            'type': ['array', 'null'],
                                            'description': 'A set of available payout methods for this bank account',
                                            'items': {
                                                'type': 'string',
                                                'enum': ['instant', 'standard'],
                                            },
                                        },
                                        'bank_name': {
                                            'type': ['string', 'null'],
                                            'description': 'Name of the bank associated with the routing number',
                                        },
                                        'country': {'type': 'string', 'description': 'Two-letter ISO code representing the country the bank account is located in'},
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO code for the currency paid out to the bank account'},
                                        'customer': {
                                            'type': ['string', 'null'],
                                            'description': 'The ID of the customer that the bank account is associated with',
                                        },
                                        'fingerprint': {
                                            'type': ['string', 'null'],
                                            'description': 'Uniquely identifies this particular bank account',
                                        },
                                        'last4': {'type': 'string', 'description': 'The last four digits of the bank account number'},
                                        'metadata': {
                                            'type': ['object', 'null'],
                                            'description': 'Set of key-value pairs that you can attach to an object',
                                            'additionalProperties': {'type': 'string'},
                                        },
                                        'routing_number': {
                                            'type': ['string', 'null'],
                                            'description': 'The routing transit number for the bank account',
                                        },
                                        'status': {'type': 'string', 'description': 'The status of the bank account'},
                                    },
                                },
                            },
                            'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                            'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                        },
                    },
                    'subscriptions': {
                        'type': ['object', 'null'],
                        'description': "The customer's current subscriptions, if any",
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['list'],
                                'description': "String representing the object's type",
                            },
                            'data': {
                                'type': 'array',
                                'description': 'Details about each subscription',
                                'items': {'$ref': '#/components/schemas/Subscription'},
                            },
                            'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                            'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                        },
                    },
                    'tax_exempt': {
                        'type': ['string', 'null'],
                        'description': "Describes the customer's tax exemption status",
                    },
                    'test_clock': {
                        'type': ['string', 'null'],
                        'description': 'ID of the test clock this customer belongs to',
                    },
                },
                'x-airbyte-entity-name': 'customers',
            },
        ),
        EntityDefinition(
            name='invoices',
            actions=[Action.LIST, Action.GET, Action.API_SEARCH],
            endpoints={
                Action.LIST: EndpointDefinition(
                    method='GET',
                    path='/v1/invoices',
                    action=Action.LIST,
                    description='Returns a list of invoices',
                    query_params=[
                        'collection_method',
                        'created',
                        'customer',
                        'customer_account',
                        'ending_before',
                        'limit',
                        'starting_after',
                        'status',
                        'subscription',
                    ],
                    query_params_schema={
                        'collection_method': {'type': 'string', 'required': False},
                        'created': {'type': 'object', 'required': False},
                        'customer': {'type': 'string', 'required': False},
                        'customer_account': {'type': 'string', 'required': False},
                        'ending_before': {'type': 'string', 'required': False},
                        'limit': {'type': 'integer', 'required': False},
                        'starting_after': {'type': 'string', 'required': False},
                        'status': {'type': 'string', 'required': False},
                        'subscription': {'type': 'string', 'required': False},
                    },
                    deep_object_params=['created'],
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['list'],
                            },
                            'data': {
                                'type': 'array',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the invoice'},
                                        'object': {
                                            'type': 'string',
                                            'description': "String representing the object's type",
                                            'enum': ['invoice'],
                                        },
                                        'account_country': {
                                            'type': ['string', 'null'],
                                            'description': 'The country of the business associated with this invoice',
                                        },
                                        'account_name': {
                                            'type': ['string', 'null'],
                                            'description': 'The public name of the business associated with this invoice',
                                        },
                                        'account_tax_ids': {
                                            'type': ['array', 'null'],
                                            'description': 'The account tax IDs associated with the invoice',
                                            'items': {'type': 'string'},
                                        },
                                        'amount_due': {'type': 'integer', 'description': 'Final amount due at this time for this invoice'},
                                        'amount_overpaid': {'type': 'integer', 'description': 'Amount that was overpaid on the invoice'},
                                        'amount_paid': {'type': 'integer', 'description': 'The amount that was paid'},
                                        'amount_remaining': {'type': 'integer', 'description': 'The difference between amount_due and amount_paid'},
                                        'amount_shipping': {'type': 'integer', 'description': 'This is the sum of all the shipping amounts'},
                                        'application': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the Connect Application that created the invoice',
                                        },
                                        'application_fee_amount': {
                                            'type': ['integer', 'null'],
                                            'description': "The fee in cents that will be applied to the invoice and transferred to the application owner's Stripe account",
                                        },
                                        'attempt_count': {'type': 'integer', 'description': 'Number of payment attempts made for this invoice'},
                                        'attempted': {'type': 'boolean', 'description': 'Whether an attempt has been made to pay the invoice'},
                                        'auto_advance': {'type': 'boolean', 'description': 'Controls whether Stripe performs automatic collection'},
                                        'automatic_tax': {
                                            'type': 'object',
                                            'description': 'Settings and latest results for automatic tax lookup for this invoice',
                                            'properties': {
                                                'disabled_reason': {
                                                    'type': ['string', 'null'],
                                                    'description': 'If Stripe disabled automatic tax, this enum describes why',
                                                },
                                                'enabled': {'type': 'boolean', 'description': 'Whether Stripe automatically computes tax on this invoice'},
                                                'liability': {
                                                    'type': ['object', 'null'],
                                                    'description': "The account that's liable for tax",
                                                    'properties': {
                                                        'account': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The connected account being referenced when type is account',
                                                        },
                                                        'type': {
                                                            'type': 'string',
                                                            'enum': ['account', 'self'],
                                                            'description': 'Type of the account referenced',
                                                        },
                                                    },
                                                },
                                                'provider': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The tax provider powering automatic tax',
                                                },
                                                'status': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The status of the most recent automated tax calculation for this invoice',
                                                },
                                            },
                                        },
                                        'automatically_finalizes_at': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'The time when this invoice is currently scheduled to be automatically finalized',
                                        },
                                        'billing_reason': {
                                            'type': ['string', 'null'],
                                            'enum': [
                                                'automatic_pending_invoice_item_invoice',
                                                'manual',
                                                'quote_accept',
                                                'subscription',
                                                'subscription_create',
                                                'subscription_cycle',
                                                'subscription_threshold',
                                                'subscription_update',
                                                'upcoming',
                                            ],
                                            'description': 'Indicates the reason why the invoice was created',
                                        },
                                        'charge': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the latest charge generated for this invoice, if any',
                                        },
                                        'collection_method': {
                                            'type': 'string',
                                            'enum': ['charge_automatically', 'send_invoice'],
                                            'description': 'How the invoice will be paid',
                                        },
                                        'confirmation_secret': {
                                            'type': ['object', 'null'],
                                            'description': 'The confirmation secret associated with this invoice',
                                            'properties': {
                                                'client_secret': {'type': 'string', 'description': 'The client_secret of the payment that Stripe creates for the invoice after finalization'},
                                                'type': {'type': 'string', 'description': 'The type of client_secret'},
                                            },
                                        },
                                        'created': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'Time at which the object was created (Unix timestamp)',
                                        },
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                        'custom_fields': {
                                            'type': ['array', 'null'],
                                            'description': 'Custom fields displayed on the invoice',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'name': {'type': 'string', 'description': 'The name of the custom field'},
                                                    'value': {'type': 'string', 'description': 'The value of the custom field'},
                                                },
                                            },
                                        },
                                        'customer': {'type': 'string', 'description': 'The ID of the customer who will be billed'},
                                        'customer_account': {
                                            'type': ['string', 'null'],
                                            'description': 'The ID of the account who will be billed',
                                        },
                                        'customer_address': {
                                            'type': ['object', 'null'],
                                            'description': "The customer's address",
                                            'properties': {
                                                'city': {
                                                    'type': ['string', 'null'],
                                                    'description': 'City, district, suburb, town, or village',
                                                },
                                                'country': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                },
                                                'line1': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Address line 1',
                                                },
                                                'line2': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Address line 2',
                                                },
                                                'postal_code': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ZIP or postal code',
                                                },
                                                'state': {
                                                    'type': ['string', 'null'],
                                                    'description': 'State, county, province, or region',
                                                },
                                            },
                                        },
                                        'customer_email': {
                                            'type': ['string', 'null'],
                                            'description': "The customer's email",
                                        },
                                        'customer_name': {
                                            'type': ['string', 'null'],
                                            'description': "The customer's name",
                                        },
                                        'customer_phone': {
                                            'type': ['string', 'null'],
                                            'description': "The customer's phone number",
                                        },
                                        'customer_shipping': {
                                            'type': ['object', 'null'],
                                            'description': "The customer's shipping information",
                                            'properties': {
                                                'address': {
                                                    'type': 'object',
                                                    'description': 'Customer shipping address',
                                                    'properties': {
                                                        'city': {
                                                            'type': ['string', 'null'],
                                                            'description': 'City, district, suburb, town, or village',
                                                        },
                                                        'country': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                        },
                                                        'line1': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Address line 1',
                                                        },
                                                        'line2': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Address line 2',
                                                        },
                                                        'postal_code': {
                                                            'type': ['string', 'null'],
                                                            'description': 'ZIP or postal code',
                                                        },
                                                        'state': {
                                                            'type': ['string', 'null'],
                                                            'description': 'State, county, province, or region',
                                                        },
                                                    },
                                                },
                                                'name': {'type': 'string', 'description': 'Customer name'},
                                                'phone': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Customer phone (including extension)',
                                                },
                                            },
                                        },
                                        'customer_tax_exempt': {
                                            'type': ['string', 'null'],
                                            'enum': ['exempt', 'none', 'reverse'],
                                            'description': "The customer's tax exempt status",
                                        },
                                        'customer_tax_ids': {
                                            'type': ['array', 'null'],
                                            'description': "The customer's tax IDs",
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'type': {'type': 'string', 'description': 'The type of the tax ID'},
                                                    'value': {
                                                        'type': ['string', 'null'],
                                                        'description': 'The value of the tax ID',
                                                    },
                                                },
                                            },
                                        },
                                        'default_payment_method': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the default payment method for the invoice',
                                        },
                                        'default_source': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the default payment source for the invoice',
                                        },
                                        'default_tax_rates': {
                                            'type': 'array',
                                            'description': 'The tax rates applied to this invoice',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                    'object': {'type': 'string', 'description': "String representing the object's type"},
                                                    'active': {'type': 'boolean', 'description': 'Defaults to true'},
                                                    'country': {
                                                        'type': ['string', 'null'],
                                                        'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                    },
                                                    'created': {'type': 'integer', 'description': 'Time at which the object was created'},
                                                    'description': {
                                                        'type': ['string', 'null'],
                                                        'description': 'An arbitrary string attached to the tax rate for your internal use only',
                                                    },
                                                    'display_name': {'type': 'string', 'description': 'The display name of the tax rate'},
                                                    'effective_percentage': {
                                                        'type': ['number', 'null'],
                                                        'description': 'Actual/effective tax rate percentage out of 100',
                                                    },
                                                    'inclusive': {'type': 'boolean', 'description': 'This specifies if the tax rate is inclusive or exclusive'},
                                                    'jurisdiction': {
                                                        'type': ['string', 'null'],
                                                        'description': 'The jurisdiction for the tax rate',
                                                    },
                                                    'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode'},
                                                    'metadata': {
                                                        'type': ['object', 'null'],
                                                        'description': 'Set of key-value pairs',
                                                        'additionalProperties': {'type': 'string'},
                                                    },
                                                    'percentage': {'type': 'number', 'description': 'Tax rate percentage out of 100'},
                                                    'flat_amount': {
                                                        'type': ['object', 'null'],
                                                        'description': 'The amount of the tax rate when the rate_type is flat_amount',
                                                        'properties': {
                                                            'amount': {'type': 'integer', 'description': 'Amount of the tax when the rate_type is flat_amount'},
                                                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                                        },
                                                    },
                                                    'jurisdiction_level': {
                                                        'type': ['string', 'null'],
                                                        'enum': [
                                                            'city',
                                                            'country',
                                                            'county',
                                                            'district',
                                                            'multiple',
                                                            'state',
                                                        ],
                                                        'description': 'The level of the jurisdiction that imposes this tax rate',
                                                    },
                                                    'rate_type': {
                                                        'type': ['string', 'null'],
                                                        'enum': ['flat_amount', 'percentage'],
                                                        'description': 'Indicates the type of tax rate applied to the taxable amount',
                                                    },
                                                    'state': {
                                                        'type': ['string', 'null'],
                                                        'description': 'ISO 3166-2 subdivision code',
                                                    },
                                                    'tax_type': {
                                                        'type': ['string', 'null'],
                                                        'enum': [
                                                            'amusement_tax',
                                                            'communications_tax',
                                                            'gst',
                                                            'hst',
                                                            'igst',
                                                            'jct',
                                                            'lease_tax',
                                                            'pst',
                                                            'qst',
                                                            'retail_delivery_fee',
                                                            'rst',
                                                            'sales_tax',
                                                            'service_tax',
                                                            'vat',
                                                        ],
                                                        'description': 'The high-level tax type',
                                                    },
                                                },
                                            },
                                        },
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': 'An arbitrary string attached to the object',
                                        },
                                        'discount': {
                                            'type': ['object', 'null'],
                                            'description': 'The discount applied to the invoice',
                                            'properties': {
                                                'id': {'type': 'string'},
                                                'object': {'type': 'string'},
                                                'checkout_session': {
                                                    'type': ['string', 'null'],
                                                },
                                                'coupon': {
                                                    'type': ['object', 'null'],
                                                    'properties': {
                                                        'id': {'type': 'string'},
                                                        'object': {'type': 'string'},
                                                        'amount_off': {
                                                            'type': ['integer', 'null'],
                                                        },
                                                        'created': {'type': 'integer'},
                                                        'currency': {
                                                            'type': ['string', 'null'],
                                                        },
                                                        'duration': {'type': 'string'},
                                                        'duration_in_months': {
                                                            'type': ['integer', 'null'],
                                                        },
                                                        'livemode': {'type': 'boolean'},
                                                        'max_redemptions': {
                                                            'type': ['integer', 'null'],
                                                        },
                                                        'metadata': {
                                                            'type': 'object',
                                                            'additionalProperties': {'type': 'string'},
                                                        },
                                                        'name': {'type': 'string'},
                                                        'percent_off': {
                                                            'type': ['number', 'null'],
                                                        },
                                                        'redeem_by': {
                                                            'type': ['integer', 'null'],
                                                        },
                                                        'times_redeemed': {'type': 'integer'},
                                                        'valid': {'type': 'boolean'},
                                                    },
                                                },
                                                'customer': {'type': 'string'},
                                                'customer_account': {
                                                    'type': ['string', 'null'],
                                                },
                                                'end': {
                                                    'type': ['integer', 'null'],
                                                },
                                                'invoice': {
                                                    'type': ['string', 'null'],
                                                },
                                                'invoice_item': {
                                                    'type': ['string', 'null'],
                                                },
                                                'promotion_code': {
                                                    'type': ['string', 'null'],
                                                },
                                                'start': {'type': 'integer'},
                                                'subscription': {
                                                    'type': ['string', 'null'],
                                                },
                                                'subscription_item': {
                                                    'type': ['string', 'null'],
                                                },
                                            },
                                        },
                                        'discounts': {
                                            'type': 'array',
                                            'items': {'type': 'string'},
                                            'description': 'The discounts applied to the invoice',
                                        },
                                        'due_date': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'The date on which payment for this invoice is due (Unix timestamp)',
                                        },
                                        'effective_at': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'The date when this invoice is in effect',
                                        },
                                        'ending_balance': {
                                            'type': ['integer', 'null'],
                                            'description': 'Ending customer balance after the invoice is finalized',
                                        },
                                        'footer': {
                                            'type': ['string', 'null'],
                                            'description': 'Footer to be displayed on the invoice',
                                        },
                                        'from_invoice': {
                                            'type': ['object', 'null'],
                                            'description': 'Details of the invoice that was cloned',
                                            'properties': {
                                                'action': {'type': 'string'},
                                                'invoice': {'type': 'string'},
                                            },
                                        },
                                        'hosted_invoice_url': {
                                            'type': ['string', 'null'],
                                            'description': 'The URL for the hosted invoice page',
                                        },
                                        'invoice_pdf': {
                                            'type': ['string', 'null'],
                                            'description': 'The link to download the PDF for the invoice',
                                        },
                                        'issuer': {
                                            'type': 'object',
                                            'description': 'The connected account that issues the invoice',
                                            'properties': {
                                                'account': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The connected account being referenced when type is account',
                                                },
                                                'type': {
                                                    'type': 'string',
                                                    'enum': ['account', 'self'],
                                                    'description': 'Type of the account referenced',
                                                },
                                            },
                                        },
                                        'last_finalization_error': {
                                            'type': ['object', 'null'],
                                            'description': 'The error encountered during the last finalization attempt',
                                            'properties': {
                                                'advice_code': {
                                                    'type': ['string', 'null'],
                                                    'description': 'For card errors resulting from a card issuer decline',
                                                },
                                                'code': {
                                                    'type': ['string', 'null'],
                                                    'description': 'For some errors that could be handled programmatically, a short string indicating the error code',
                                                },
                                                'doc_url': {
                                                    'type': ['string', 'null'],
                                                    'description': 'A URL to more information about the error code reported',
                                                },
                                                'message': {
                                                    'type': ['string', 'null'],
                                                    'description': 'A human-readable message providing more details about the error',
                                                },
                                                'network_advice_code': {
                                                    'type': ['string', 'null'],
                                                    'description': 'For card errors resulting from a card issuer decline',
                                                },
                                                'network_decline_code': {
                                                    'type': ['string', 'null'],
                                                    'description': 'For payments declined by the network',
                                                },
                                                'param': {
                                                    'type': ['string', 'null'],
                                                    'description': 'If the error is parameter-specific, the parameter related to the error',
                                                },
                                                'payment_method_type': {
                                                    'type': ['string', 'null'],
                                                    'description': 'If the error is specific to the type of payment method',
                                                },
                                                'type': {
                                                    'type': 'string',
                                                    'enum': [
                                                        'api_error',
                                                        'card_error',
                                                        'idempotency_error',
                                                        'invalid_request_error',
                                                    ],
                                                    'description': 'The type of error returned',
                                                },
                                            },
                                        },
                                        'latest_revision': {
                                            'type': ['string', 'null'],
                                            'description': 'The ID of the most recent revision of this invoice',
                                        },
                                        'lines': {
                                            'type': 'object',
                                            'description': 'The individual line items that make up the invoice',
                                            'properties': {
                                                'object': {
                                                    'type': 'string',
                                                    'enum': ['list'],
                                                },
                                                'data': {
                                                    'type': 'array',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                            'object': {'type': 'string', 'description': "String representing the object's type"},
                                                            'amount': {'type': 'integer', 'description': 'The amount in cents'},
                                                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                                            'description': {
                                                                'type': ['string', 'null'],
                                                                'description': 'An arbitrary string attached to the object',
                                                            },
                                                            'discount_amounts': {
                                                                'type': ['array', 'null'],
                                                                'description': 'The amount of discount calculated per discount for this line item',
                                                                'items': {
                                                                    'type': 'object',
                                                                    'properties': {
                                                                        'amount': {'type': 'integer', 'description': 'The amount of the discount'},
                                                                        'discount': {'type': 'string', 'description': 'The discount that was applied'},
                                                                    },
                                                                },
                                                            },
                                                            'discountable': {'type': 'boolean', 'description': 'If true, discounts will apply to this line item'},
                                                            'discounts': {
                                                                'type': 'array',
                                                                'description': 'The discounts applied to the invoice line item',
                                                                'items': {'type': 'string'},
                                                            },
                                                            'invoice': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The ID of the invoice that contains this line item',
                                                            },
                                                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode'},
                                                            'metadata': {
                                                                'type': 'object',
                                                                'description': 'Set of key-value pairs',
                                                                'additionalProperties': {'type': 'string'},
                                                            },
                                                            'period': {
                                                                'type': 'object',
                                                                'description': 'The period this line_item covers',
                                                                'properties': {
                                                                    'end': {
                                                                        'type': 'integer',
                                                                        'format': 'int64',
                                                                        'description': 'The end of the period',
                                                                    },
                                                                    'start': {
                                                                        'type': 'integer',
                                                                        'format': 'int64',
                                                                        'description': 'The start of the period',
                                                                    },
                                                                },
                                                            },
                                                            'proration': {'type': 'boolean', 'description': 'Whether this is a proration'},
                                                            'quantity': {
                                                                'type': ['integer', 'null'],
                                                                'description': 'The quantity of the subscription',
                                                            },
                                                        },
                                                    },
                                                },
                                                'has_more': {'type': 'boolean'},
                                                'total_count': {
                                                    'type': ['integer', 'null'],
                                                },
                                                'url': {
                                                    'type': ['string', 'null'],
                                                },
                                            },
                                        },
                                        'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode'},
                                        'metadata': {
                                            'type': 'object',
                                            'additionalProperties': {'type': 'string'},
                                            'description': 'Set of key-value pairs for storing additional information',
                                        },
                                        'next_payment_attempt': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'The time at which payment will next be attempted',
                                        },
                                        'number': {
                                            'type': ['string', 'null'],
                                            'description': 'A unique, identifying string that appears on emails sent to the customer',
                                        },
                                        'on_behalf_of': {
                                            'type': ['string', 'null'],
                                            'description': 'The account (if any) for which the funds are intended',
                                        },
                                        'paid': {
                                            'type': ['boolean', 'null'],
                                            'description': 'Whether payment was successfully collected for this invoice',
                                        },
                                        'paid_out_of_band': {
                                            'type': ['boolean', 'null'],
                                            'description': 'Whether the invoice has been marked as paid by marking it manually or using the mark_as_paid endpoint',
                                        },
                                        'parent': {
                                            'type': ['object', 'null'],
                                            'description': 'The parent that generated this invoice',
                                            'properties': {
                                                'quote_details': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Details about the quote that generated this invoice',
                                                    'properties': {
                                                        'quote': {'type': 'string', 'description': 'The quote that generated this invoice'},
                                                    },
                                                },
                                                'subscription_details': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Details about the subscription that generated this invoice',
                                                    'properties': {
                                                        'metadata': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Set of key-value pairs defined as subscription metadata',
                                                            'additionalProperties': {'type': 'string'},
                                                        },
                                                        'subscription': {'type': 'string', 'description': 'The subscription that generated this invoice'},
                                                        'subscription_proration_date': {
                                                            'type': ['integer', 'null'],
                                                            'format': 'int64',
                                                            'description': 'Only set for upcoming invoices that preview prorations',
                                                        },
                                                    },
                                                },
                                                'type': {
                                                    'type': 'string',
                                                    'enum': ['quote_details', 'subscription_details'],
                                                    'description': 'The type of parent that generated this invoice',
                                                },
                                            },
                                        },
                                        'payment_intent': {
                                            'type': ['string', 'null'],
                                            'description': 'The PaymentIntent associated with this invoice',
                                        },
                                        'payment_settings': {
                                            'type': 'object',
                                            'description': 'Configuration settings for the PaymentIntent that is generated when the invoice is finalized',
                                            'properties': {
                                                'default_mandate': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the mandate to be used for this invoice',
                                                },
                                                'payment_method_options': {
                                                    'type': ['object', 'null'],
                                                    'description': "Payment-method-specific configuration to provide to the invoice's PaymentIntent",
                                                },
                                                'payment_method_types': {
                                                    'type': ['array', 'null'],
                                                    'description': "The list of payment method types to provide to the invoice's PaymentIntent",
                                                    'items': {'type': 'string'},
                                                },
                                            },
                                        },
                                        'payments': {
                                            'type': 'object',
                                            'description': 'Payments for this invoice',
                                            'properties': {
                                                'object': {
                                                    'type': 'string',
                                                    'enum': ['list'],
                                                    'description': "String representing the object's type",
                                                },
                                                'data': {
                                                    'type': 'array',
                                                    'description': 'Details about each payment',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                            'object': {'type': 'string', 'description': "String representing the object's type"},
                                                            'amount_paid': {
                                                                'type': ['integer', 'null'],
                                                                'description': 'Amount that was actually paid for this invoice',
                                                            },
                                                            'amount_requested': {'type': 'integer', 'description': 'Amount intended to be paid toward this invoice'},
                                                            'created': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': 'Time at which the object was created',
                                                            },
                                                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                                            'invoice': {'type': 'string', 'description': 'The invoice that was paid'},
                                                            'is_default': {'type': 'boolean', 'description': 'Whether this is the default payment created when the invoice was finalized'},
                                                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode'},
                                                            'status': {'type': 'string', 'description': 'The status of the payment'},
                                                        },
                                                    },
                                                },
                                                'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items'},
                                                'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                            },
                                        },
                                        'period_end': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'End of the usage period covered by the invoice',
                                        },
                                        'period_start': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'Start of the usage period covered by the invoice',
                                        },
                                        'post_payment_credit_notes_amount': {'type': 'integer', 'description': 'Total amount of all post-payment credit notes'},
                                        'pre_payment_credit_notes_amount': {'type': 'integer', 'description': 'Total amount of all pre-payment credit notes'},
                                        'quote': {
                                            'type': ['string', 'null'],
                                            'description': 'The quote this invoice was generated from',
                                        },
                                        'receipt_number': {
                                            'type': ['string', 'null'],
                                            'description': 'The transaction number that appears on email receipts',
                                        },
                                        'rendering': {
                                            'type': ['object', 'null'],
                                            'description': 'The rendering-related settings that control how the invoice is displayed',
                                            'properties': {
                                                'amount_tax_display': {
                                                    'type': ['string', 'null'],
                                                    'description': 'How line-item prices and amounts will be displayed with respect to tax',
                                                },
                                                'pdf': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Invoice pdf rendering options',
                                                    'properties': {
                                                        'page_size': {
                                                            'type': ['string', 'null'],
                                                            'enum': ['a4', 'auto', 'letter'],
                                                            'description': 'Page size of invoice pdf',
                                                        },
                                                    },
                                                },
                                                'template': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the rendering template that the invoice is formatted by',
                                                },
                                                'template_version': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Version of the rendering template that the invoice is using',
                                                },
                                            },
                                        },
                                        'rendering_options': {
                                            'type': ['object', 'null'],
                                            'description': 'Options for invoice rendering',
                                        },
                                        'shipping_cost': {
                                            'type': ['object', 'null'],
                                            'description': 'The details of the cost of shipping',
                                            'properties': {
                                                'amount_subtotal': {'type': 'integer', 'description': 'Total shipping cost before any taxes are applied'},
                                                'amount_tax': {'type': 'integer', 'description': 'Total tax amount applied due to shipping costs'},
                                                'amount_total': {'type': 'integer', 'description': 'Total shipping cost after taxes are applied'},
                                                'shipping_rate': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The ID of the ShippingRate for this invoice',
                                                },
                                                'taxes': {
                                                    'type': ['array', 'null'],
                                                    'description': 'The taxes applied to the shipping rate',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'amount': {'type': 'integer', 'description': 'Amount of tax applied for this rate'},
                                                            'taxability_reason': {
                                                                'type': ['string', 'null'],
                                                                'enum': [
                                                                    'customer_exempt',
                                                                    'not_collecting',
                                                                    'not_subject_to_tax',
                                                                    'not_supported',
                                                                    'portion_product_exempt',
                                                                    'portion_reduced_rated',
                                                                    'portion_standard_rated',
                                                                    'product_exempt',
                                                                    'product_exempt_holiday',
                                                                    'proportionally_rated',
                                                                    'reduced_rated',
                                                                    'reverse_charge',
                                                                    'standard_rated',
                                                                    'taxable_basis_reduced',
                                                                    'zero_rated',
                                                                ],
                                                                'description': 'The reasoning behind this tax',
                                                            },
                                                            'taxable_amount': {
                                                                'type': ['integer', 'null'],
                                                                'description': 'The amount on which tax is calculated',
                                                            },
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                        'shipping_details': {
                                            'type': ['object', 'null'],
                                            'description': 'Shipping details for the invoice',
                                            'properties': {
                                                'address': {
                                                    'type': 'object',
                                                    'description': 'Shipping address',
                                                    'properties': {
                                                        'city': {
                                                            'type': ['string', 'null'],
                                                            'description': 'City, district, suburb, town, or village',
                                                        },
                                                        'country': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                        },
                                                        'line1': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Address line 1',
                                                        },
                                                        'line2': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Address line 2',
                                                        },
                                                        'postal_code': {
                                                            'type': ['string', 'null'],
                                                            'description': 'ZIP or postal code',
                                                        },
                                                        'state': {
                                                            'type': ['string', 'null'],
                                                            'description': 'State, county, province, or region',
                                                        },
                                                    },
                                                },
                                                'name': {'type': 'string', 'description': 'Recipient name'},
                                                'phone': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Recipient phone',
                                                },
                                            },
                                        },
                                        'starting_balance': {'type': 'integer', 'description': 'Starting customer balance before the invoice is finalized'},
                                        'statement_descriptor': {
                                            'type': ['string', 'null'],
                                            'description': "Extra information about an invoice for the customer's credit card statement",
                                        },
                                        'status': {
                                            'type': ['string', 'null'],
                                            'enum': [
                                                'draft',
                                                'open',
                                                'paid',
                                                'uncollectible',
                                                'void',
                                            ],
                                            'description': 'The status of the invoice',
                                        },
                                        'status_transitions': {
                                            'type': 'object',
                                            'description': 'Status transition timestamps',
                                            'properties': {
                                                'finalized_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'The time that the invoice draft was finalized',
                                                },
                                                'marked_uncollectible_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'The time that the invoice was marked uncollectible',
                                                },
                                                'paid_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'The time that the invoice was paid',
                                                },
                                                'voided_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'The time that the invoice was voided',
                                                },
                                            },
                                        },
                                        'subscription': {
                                            'type': ['string', 'null'],
                                            'description': 'The subscription that this invoice was prepared for, if any',
                                        },
                                        'subscription_details': {
                                            'type': ['object', 'null'],
                                            'description': 'Details about the subscription that this invoice was prepared for, if any',
                                            'properties': {
                                                'metadata': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Set of key-value pairs defined as subscription metadata when the invoice is created',
                                                    'additionalProperties': {'type': 'string'},
                                                },
                                            },
                                        },
                                        'subtotal': {'type': 'integer', 'description': 'Total of all subscriptions, invoice items, and prorations before any discounts or taxes'},
                                        'subtotal_excluding_tax': {
                                            'type': ['integer', 'null'],
                                            'description': 'The integer amount in cents representing the subtotal excluding tax',
                                        },
                                        'tax': {
                                            'type': ['integer', 'null'],
                                            'description': 'The amount of tax on this invoice',
                                        },
                                        'test_clock': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the test clock this invoice belongs to',
                                        },
                                        'threshold_reason': {
                                            'type': ['object', 'null'],
                                            'description': 'If billing_reason is set to subscription_threshold this returns more information',
                                            'properties': {
                                                'amount_gte': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'The total invoice amount threshold boundary if it triggered the threshold invoice',
                                                },
                                                'item_reasons': {
                                                    'type': 'array',
                                                    'description': 'Indicates which line items triggered a threshold invoice',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'line_item_ids': {
                                                                'type': 'array',
                                                                'description': 'The IDs of the line items that triggered the threshold invoice',
                                                                'items': {'type': 'string'},
                                                            },
                                                            'usage_gte': {'type': 'integer', 'description': 'The quantity threshold boundary that applied to the given line item'},
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                        'total': {'type': 'integer', 'description': 'Total after discounts and taxes'},
                                        'total_discount_amounts': {
                                            'type': ['array', 'null'],
                                            'description': 'The aggregate amounts calculated per discount across all line items',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'amount': {'type': 'integer', 'description': 'The amount of the discount'},
                                                    'discount': {'type': 'string', 'description': 'The discount that was applied'},
                                                },
                                            },
                                        },
                                        'total_excluding_tax': {
                                            'type': ['integer', 'null'],
                                            'description': 'The integer amount in cents representing the total amount excluding tax',
                                        },
                                        'total_pretax_credit_amounts': {
                                            'type': ['array', 'null'],
                                            'description': 'Contains pretax credit amounts that apply to this invoice',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'amount': {'type': 'integer', 'description': 'The amount of the pretax credit amount'},
                                                    'credit_balance_transaction': {
                                                        'type': ['string', 'null'],
                                                        'description': 'The credit balance transaction that was applied',
                                                    },
                                                    'discount': {
                                                        'type': ['string', 'null'],
                                                        'description': 'The discount that was applied',
                                                    },
                                                    'type': {
                                                        'type': 'string',
                                                        'enum': ['credit_balance_transaction', 'discount'],
                                                        'description': 'Type of the pretax credit amount referenced',
                                                    },
                                                },
                                            },
                                        },
                                        'total_tax_amounts': {
                                            'type': ['array', 'null'],
                                            'description': 'The amount of tax on this invoice',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'amount': {'type': 'integer', 'description': 'The amount of the tax'},
                                                    'inclusive': {'type': 'boolean', 'description': 'Whether the tax amount is included in the line item amount'},
                                                    'tax_rate': {'type': 'string', 'description': 'The tax rate applied'},
                                                    'taxability_reason': {
                                                        'type': ['string', 'null'],
                                                        'description': 'The reasoning behind the tax',
                                                    },
                                                    'taxable_amount': {'type': 'integer', 'description': 'The amount on which tax is calculated'},
                                                },
                                            },
                                        },
                                        'total_taxes': {
                                            'type': ['array', 'null'],
                                            'description': 'The aggregate tax information of all line items',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'amount': {'type': 'integer', 'description': 'The amount of the tax'},
                                                    'tax_behavior': {
                                                        'type': 'string',
                                                        'enum': ['exclusive', 'inclusive'],
                                                        'description': 'Whether this tax is inclusive or exclusive',
                                                    },
                                                    'tax_rate_details': {
                                                        'type': ['object', 'null'],
                                                        'description': 'Additional details about the tax rate',
                                                    },
                                                    'taxability_reason': {
                                                        'type': 'string',
                                                        'enum': [
                                                            'customer_exempt',
                                                            'not_available',
                                                            'not_collecting',
                                                            'not_subject_to_tax',
                                                            'not_supported',
                                                            'portion_product_exempt',
                                                            'portion_reduced_rated',
                                                            'portion_standard_rated',
                                                            'product_exempt',
                                                            'product_exempt_holiday',
                                                            'proportionally_rated',
                                                            'reduced_rated',
                                                            'reverse_charge',
                                                            'standard_rated',
                                                            'taxable_basis_reduced',
                                                            'zero_rated',
                                                        ],
                                                        'description': 'The reasoning behind this tax',
                                                    },
                                                    'taxable_amount': {
                                                        'type': ['integer', 'null'],
                                                        'description': 'The amount on which tax is calculated',
                                                    },
                                                    'type': {'type': 'string', 'description': 'The type of tax information'},
                                                },
                                            },
                                        },
                                        'transfer_data': {
                                            'type': ['object', 'null'],
                                            'description': 'The account (if any) the payment will be attributed to',
                                        },
                                        'webhooks_delivered_at': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'Invoices are automatically paid or sent 1 hour after webhooks are delivered',
                                        },
                                    },
                                    'x-airbyte-entity-name': 'invoices',
                                },
                            },
                            'has_more': {'type': 'boolean'},
                            'url': {'type': 'string'},
                        },
                    },
                    record_extractor='$.data',
                    meta_extractor={'has_more': '$.has_more'},
                ),
                Action.GET: EndpointDefinition(
                    method='GET',
                    path='/v1/invoices/{id}',
                    action=Action.GET,
                    description='Retrieves the invoice with the given ID',
                    path_params=['id'],
                    path_params_schema={
                        'id': {'type': 'string', 'required': True},
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'id': {'type': 'string', 'description': 'Unique identifier for the invoice'},
                            'object': {
                                'type': 'string',
                                'description': "String representing the object's type",
                                'enum': ['invoice'],
                            },
                            'account_country': {
                                'type': ['string', 'null'],
                                'description': 'The country of the business associated with this invoice',
                            },
                            'account_name': {
                                'type': ['string', 'null'],
                                'description': 'The public name of the business associated with this invoice',
                            },
                            'account_tax_ids': {
                                'type': ['array', 'null'],
                                'description': 'The account tax IDs associated with the invoice',
                                'items': {'type': 'string'},
                            },
                            'amount_due': {'type': 'integer', 'description': 'Final amount due at this time for this invoice'},
                            'amount_overpaid': {'type': 'integer', 'description': 'Amount that was overpaid on the invoice'},
                            'amount_paid': {'type': 'integer', 'description': 'The amount that was paid'},
                            'amount_remaining': {'type': 'integer', 'description': 'The difference between amount_due and amount_paid'},
                            'amount_shipping': {'type': 'integer', 'description': 'This is the sum of all the shipping amounts'},
                            'application': {
                                'type': ['string', 'null'],
                                'description': 'ID of the Connect Application that created the invoice',
                            },
                            'application_fee_amount': {
                                'type': ['integer', 'null'],
                                'description': "The fee in cents that will be applied to the invoice and transferred to the application owner's Stripe account",
                            },
                            'attempt_count': {'type': 'integer', 'description': 'Number of payment attempts made for this invoice'},
                            'attempted': {'type': 'boolean', 'description': 'Whether an attempt has been made to pay the invoice'},
                            'auto_advance': {'type': 'boolean', 'description': 'Controls whether Stripe performs automatic collection'},
                            'automatic_tax': {
                                'type': 'object',
                                'description': 'Settings and latest results for automatic tax lookup for this invoice',
                                'properties': {
                                    'disabled_reason': {
                                        'type': ['string', 'null'],
                                        'description': 'If Stripe disabled automatic tax, this enum describes why',
                                    },
                                    'enabled': {'type': 'boolean', 'description': 'Whether Stripe automatically computes tax on this invoice'},
                                    'liability': {
                                        'type': ['object', 'null'],
                                        'description': "The account that's liable for tax",
                                        'properties': {
                                            'account': {
                                                'type': ['string', 'null'],
                                                'description': 'The connected account being referenced when type is account',
                                            },
                                            'type': {
                                                'type': 'string',
                                                'enum': ['account', 'self'],
                                                'description': 'Type of the account referenced',
                                            },
                                        },
                                    },
                                    'provider': {
                                        'type': ['string', 'null'],
                                        'description': 'The tax provider powering automatic tax',
                                    },
                                    'status': {
                                        'type': ['string', 'null'],
                                        'description': 'The status of the most recent automated tax calculation for this invoice',
                                    },
                                },
                            },
                            'automatically_finalizes_at': {
                                'type': ['integer', 'null'],
                                'format': 'int64',
                                'description': 'The time when this invoice is currently scheduled to be automatically finalized',
                            },
                            'billing_reason': {
                                'type': ['string', 'null'],
                                'enum': [
                                    'automatic_pending_invoice_item_invoice',
                                    'manual',
                                    'quote_accept',
                                    'subscription',
                                    'subscription_create',
                                    'subscription_cycle',
                                    'subscription_threshold',
                                    'subscription_update',
                                    'upcoming',
                                ],
                                'description': 'Indicates the reason why the invoice was created',
                            },
                            'charge': {
                                'type': ['string', 'null'],
                                'description': 'ID of the latest charge generated for this invoice, if any',
                            },
                            'collection_method': {
                                'type': 'string',
                                'enum': ['charge_automatically', 'send_invoice'],
                                'description': 'How the invoice will be paid',
                            },
                            'confirmation_secret': {
                                'type': ['object', 'null'],
                                'description': 'The confirmation secret associated with this invoice',
                                'properties': {
                                    'client_secret': {'type': 'string', 'description': 'The client_secret of the payment that Stripe creates for the invoice after finalization'},
                                    'type': {'type': 'string', 'description': 'The type of client_secret'},
                                },
                            },
                            'created': {
                                'type': 'integer',
                                'format': 'int64',
                                'description': 'Time at which the object was created (Unix timestamp)',
                            },
                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                            'custom_fields': {
                                'type': ['array', 'null'],
                                'description': 'Custom fields displayed on the invoice',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'name': {'type': 'string', 'description': 'The name of the custom field'},
                                        'value': {'type': 'string', 'description': 'The value of the custom field'},
                                    },
                                },
                            },
                            'customer': {'type': 'string', 'description': 'The ID of the customer who will be billed'},
                            'customer_account': {
                                'type': ['string', 'null'],
                                'description': 'The ID of the account who will be billed',
                            },
                            'customer_address': {
                                'type': ['object', 'null'],
                                'description': "The customer's address",
                                'properties': {
                                    'city': {
                                        'type': ['string', 'null'],
                                        'description': 'City, district, suburb, town, or village',
                                    },
                                    'country': {
                                        'type': ['string', 'null'],
                                        'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                    },
                                    'line1': {
                                        'type': ['string', 'null'],
                                        'description': 'Address line 1',
                                    },
                                    'line2': {
                                        'type': ['string', 'null'],
                                        'description': 'Address line 2',
                                    },
                                    'postal_code': {
                                        'type': ['string', 'null'],
                                        'description': 'ZIP or postal code',
                                    },
                                    'state': {
                                        'type': ['string', 'null'],
                                        'description': 'State, county, province, or region',
                                    },
                                },
                            },
                            'customer_email': {
                                'type': ['string', 'null'],
                                'description': "The customer's email",
                            },
                            'customer_name': {
                                'type': ['string', 'null'],
                                'description': "The customer's name",
                            },
                            'customer_phone': {
                                'type': ['string', 'null'],
                                'description': "The customer's phone number",
                            },
                            'customer_shipping': {
                                'type': ['object', 'null'],
                                'description': "The customer's shipping information",
                                'properties': {
                                    'address': {
                                        'type': 'object',
                                        'description': 'Customer shipping address',
                                        'properties': {
                                            'city': {
                                                'type': ['string', 'null'],
                                                'description': 'City, district, suburb, town, or village',
                                            },
                                            'country': {
                                                'type': ['string', 'null'],
                                                'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                            },
                                            'line1': {
                                                'type': ['string', 'null'],
                                                'description': 'Address line 1',
                                            },
                                            'line2': {
                                                'type': ['string', 'null'],
                                                'description': 'Address line 2',
                                            },
                                            'postal_code': {
                                                'type': ['string', 'null'],
                                                'description': 'ZIP or postal code',
                                            },
                                            'state': {
                                                'type': ['string', 'null'],
                                                'description': 'State, county, province, or region',
                                            },
                                        },
                                    },
                                    'name': {'type': 'string', 'description': 'Customer name'},
                                    'phone': {
                                        'type': ['string', 'null'],
                                        'description': 'Customer phone (including extension)',
                                    },
                                },
                            },
                            'customer_tax_exempt': {
                                'type': ['string', 'null'],
                                'enum': ['exempt', 'none', 'reverse'],
                                'description': "The customer's tax exempt status",
                            },
                            'customer_tax_ids': {
                                'type': ['array', 'null'],
                                'description': "The customer's tax IDs",
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'type': {'type': 'string', 'description': 'The type of the tax ID'},
                                        'value': {
                                            'type': ['string', 'null'],
                                            'description': 'The value of the tax ID',
                                        },
                                    },
                                },
                            },
                            'default_payment_method': {
                                'type': ['string', 'null'],
                                'description': 'ID of the default payment method for the invoice',
                            },
                            'default_source': {
                                'type': ['string', 'null'],
                                'description': 'ID of the default payment source for the invoice',
                            },
                            'default_tax_rates': {
                                'type': 'array',
                                'description': 'The tax rates applied to this invoice',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                        'object': {'type': 'string', 'description': "String representing the object's type"},
                                        'active': {'type': 'boolean', 'description': 'Defaults to true'},
                                        'country': {
                                            'type': ['string', 'null'],
                                            'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                        },
                                        'created': {'type': 'integer', 'description': 'Time at which the object was created'},
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': 'An arbitrary string attached to the tax rate for your internal use only',
                                        },
                                        'display_name': {'type': 'string', 'description': 'The display name of the tax rate'},
                                        'effective_percentage': {
                                            'type': ['number', 'null'],
                                            'description': 'Actual/effective tax rate percentage out of 100',
                                        },
                                        'inclusive': {'type': 'boolean', 'description': 'This specifies if the tax rate is inclusive or exclusive'},
                                        'jurisdiction': {
                                            'type': ['string', 'null'],
                                            'description': 'The jurisdiction for the tax rate',
                                        },
                                        'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode'},
                                        'metadata': {
                                            'type': ['object', 'null'],
                                            'description': 'Set of key-value pairs',
                                            'additionalProperties': {'type': 'string'},
                                        },
                                        'percentage': {'type': 'number', 'description': 'Tax rate percentage out of 100'},
                                        'flat_amount': {
                                            'type': ['object', 'null'],
                                            'description': 'The amount of the tax rate when the rate_type is flat_amount',
                                            'properties': {
                                                'amount': {'type': 'integer', 'description': 'Amount of the tax when the rate_type is flat_amount'},
                                                'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                            },
                                        },
                                        'jurisdiction_level': {
                                            'type': ['string', 'null'],
                                            'enum': [
                                                'city',
                                                'country',
                                                'county',
                                                'district',
                                                'multiple',
                                                'state',
                                            ],
                                            'description': 'The level of the jurisdiction that imposes this tax rate',
                                        },
                                        'rate_type': {
                                            'type': ['string', 'null'],
                                            'enum': ['flat_amount', 'percentage'],
                                            'description': 'Indicates the type of tax rate applied to the taxable amount',
                                        },
                                        'state': {
                                            'type': ['string', 'null'],
                                            'description': 'ISO 3166-2 subdivision code',
                                        },
                                        'tax_type': {
                                            'type': ['string', 'null'],
                                            'enum': [
                                                'amusement_tax',
                                                'communications_tax',
                                                'gst',
                                                'hst',
                                                'igst',
                                                'jct',
                                                'lease_tax',
                                                'pst',
                                                'qst',
                                                'retail_delivery_fee',
                                                'rst',
                                                'sales_tax',
                                                'service_tax',
                                                'vat',
                                            ],
                                            'description': 'The high-level tax type',
                                        },
                                    },
                                },
                            },
                            'description': {
                                'type': ['string', 'null'],
                                'description': 'An arbitrary string attached to the object',
                            },
                            'discount': {
                                'type': ['object', 'null'],
                                'description': 'The discount applied to the invoice',
                                'properties': {
                                    'id': {'type': 'string'},
                                    'object': {'type': 'string'},
                                    'checkout_session': {
                                        'type': ['string', 'null'],
                                    },
                                    'coupon': {
                                        'type': ['object', 'null'],
                                        'properties': {
                                            'id': {'type': 'string'},
                                            'object': {'type': 'string'},
                                            'amount_off': {
                                                'type': ['integer', 'null'],
                                            },
                                            'created': {'type': 'integer'},
                                            'currency': {
                                                'type': ['string', 'null'],
                                            },
                                            'duration': {'type': 'string'},
                                            'duration_in_months': {
                                                'type': ['integer', 'null'],
                                            },
                                            'livemode': {'type': 'boolean'},
                                            'max_redemptions': {
                                                'type': ['integer', 'null'],
                                            },
                                            'metadata': {
                                                'type': 'object',
                                                'additionalProperties': {'type': 'string'},
                                            },
                                            'name': {'type': 'string'},
                                            'percent_off': {
                                                'type': ['number', 'null'],
                                            },
                                            'redeem_by': {
                                                'type': ['integer', 'null'],
                                            },
                                            'times_redeemed': {'type': 'integer'},
                                            'valid': {'type': 'boolean'},
                                        },
                                    },
                                    'customer': {'type': 'string'},
                                    'customer_account': {
                                        'type': ['string', 'null'],
                                    },
                                    'end': {
                                        'type': ['integer', 'null'],
                                    },
                                    'invoice': {
                                        'type': ['string', 'null'],
                                    },
                                    'invoice_item': {
                                        'type': ['string', 'null'],
                                    },
                                    'promotion_code': {
                                        'type': ['string', 'null'],
                                    },
                                    'start': {'type': 'integer'},
                                    'subscription': {
                                        'type': ['string', 'null'],
                                    },
                                    'subscription_item': {
                                        'type': ['string', 'null'],
                                    },
                                },
                            },
                            'discounts': {
                                'type': 'array',
                                'items': {'type': 'string'},
                                'description': 'The discounts applied to the invoice',
                            },
                            'due_date': {
                                'type': ['integer', 'null'],
                                'format': 'int64',
                                'description': 'The date on which payment for this invoice is due (Unix timestamp)',
                            },
                            'effective_at': {
                                'type': ['integer', 'null'],
                                'format': 'int64',
                                'description': 'The date when this invoice is in effect',
                            },
                            'ending_balance': {
                                'type': ['integer', 'null'],
                                'description': 'Ending customer balance after the invoice is finalized',
                            },
                            'footer': {
                                'type': ['string', 'null'],
                                'description': 'Footer to be displayed on the invoice',
                            },
                            'from_invoice': {
                                'type': ['object', 'null'],
                                'description': 'Details of the invoice that was cloned',
                                'properties': {
                                    'action': {'type': 'string'},
                                    'invoice': {'type': 'string'},
                                },
                            },
                            'hosted_invoice_url': {
                                'type': ['string', 'null'],
                                'description': 'The URL for the hosted invoice page',
                            },
                            'invoice_pdf': {
                                'type': ['string', 'null'],
                                'description': 'The link to download the PDF for the invoice',
                            },
                            'issuer': {
                                'type': 'object',
                                'description': 'The connected account that issues the invoice',
                                'properties': {
                                    'account': {
                                        'type': ['string', 'null'],
                                        'description': 'The connected account being referenced when type is account',
                                    },
                                    'type': {
                                        'type': 'string',
                                        'enum': ['account', 'self'],
                                        'description': 'Type of the account referenced',
                                    },
                                },
                            },
                            'last_finalization_error': {
                                'type': ['object', 'null'],
                                'description': 'The error encountered during the last finalization attempt',
                                'properties': {
                                    'advice_code': {
                                        'type': ['string', 'null'],
                                        'description': 'For card errors resulting from a card issuer decline',
                                    },
                                    'code': {
                                        'type': ['string', 'null'],
                                        'description': 'For some errors that could be handled programmatically, a short string indicating the error code',
                                    },
                                    'doc_url': {
                                        'type': ['string', 'null'],
                                        'description': 'A URL to more information about the error code reported',
                                    },
                                    'message': {
                                        'type': ['string', 'null'],
                                        'description': 'A human-readable message providing more details about the error',
                                    },
                                    'network_advice_code': {
                                        'type': ['string', 'null'],
                                        'description': 'For card errors resulting from a card issuer decline',
                                    },
                                    'network_decline_code': {
                                        'type': ['string', 'null'],
                                        'description': 'For payments declined by the network',
                                    },
                                    'param': {
                                        'type': ['string', 'null'],
                                        'description': 'If the error is parameter-specific, the parameter related to the error',
                                    },
                                    'payment_method_type': {
                                        'type': ['string', 'null'],
                                        'description': 'If the error is specific to the type of payment method',
                                    },
                                    'type': {
                                        'type': 'string',
                                        'enum': [
                                            'api_error',
                                            'card_error',
                                            'idempotency_error',
                                            'invalid_request_error',
                                        ],
                                        'description': 'The type of error returned',
                                    },
                                },
                            },
                            'latest_revision': {
                                'type': ['string', 'null'],
                                'description': 'The ID of the most recent revision of this invoice',
                            },
                            'lines': {
                                'type': 'object',
                                'description': 'The individual line items that make up the invoice',
                                'properties': {
                                    'object': {
                                        'type': 'string',
                                        'enum': ['list'],
                                    },
                                    'data': {
                                        'type': 'array',
                                        'items': {
                                            'type': 'object',
                                            'properties': {
                                                'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                'object': {'type': 'string', 'description': "String representing the object's type"},
                                                'amount': {'type': 'integer', 'description': 'The amount in cents'},
                                                'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                                'description': {
                                                    'type': ['string', 'null'],
                                                    'description': 'An arbitrary string attached to the object',
                                                },
                                                'discount_amounts': {
                                                    'type': ['array', 'null'],
                                                    'description': 'The amount of discount calculated per discount for this line item',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'amount': {'type': 'integer', 'description': 'The amount of the discount'},
                                                            'discount': {'type': 'string', 'description': 'The discount that was applied'},
                                                        },
                                                    },
                                                },
                                                'discountable': {'type': 'boolean', 'description': 'If true, discounts will apply to this line item'},
                                                'discounts': {
                                                    'type': 'array',
                                                    'description': 'The discounts applied to the invoice line item',
                                                    'items': {'type': 'string'},
                                                },
                                                'invoice': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The ID of the invoice that contains this line item',
                                                },
                                                'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode'},
                                                'metadata': {
                                                    'type': 'object',
                                                    'description': 'Set of key-value pairs',
                                                    'additionalProperties': {'type': 'string'},
                                                },
                                                'period': {
                                                    'type': 'object',
                                                    'description': 'The period this line_item covers',
                                                    'properties': {
                                                        'end': {
                                                            'type': 'integer',
                                                            'format': 'int64',
                                                            'description': 'The end of the period',
                                                        },
                                                        'start': {
                                                            'type': 'integer',
                                                            'format': 'int64',
                                                            'description': 'The start of the period',
                                                        },
                                                    },
                                                },
                                                'proration': {'type': 'boolean', 'description': 'Whether this is a proration'},
                                                'quantity': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'The quantity of the subscription',
                                                },
                                            },
                                        },
                                    },
                                    'has_more': {'type': 'boolean'},
                                    'total_count': {
                                        'type': ['integer', 'null'],
                                    },
                                    'url': {
                                        'type': ['string', 'null'],
                                    },
                                },
                            },
                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode'},
                            'metadata': {
                                'type': 'object',
                                'additionalProperties': {'type': 'string'},
                                'description': 'Set of key-value pairs for storing additional information',
                            },
                            'next_payment_attempt': {
                                'type': ['integer', 'null'],
                                'format': 'int64',
                                'description': 'The time at which payment will next be attempted',
                            },
                            'number': {
                                'type': ['string', 'null'],
                                'description': 'A unique, identifying string that appears on emails sent to the customer',
                            },
                            'on_behalf_of': {
                                'type': ['string', 'null'],
                                'description': 'The account (if any) for which the funds are intended',
                            },
                            'paid': {
                                'type': ['boolean', 'null'],
                                'description': 'Whether payment was successfully collected for this invoice',
                            },
                            'paid_out_of_band': {
                                'type': ['boolean', 'null'],
                                'description': 'Whether the invoice has been marked as paid by marking it manually or using the mark_as_paid endpoint',
                            },
                            'parent': {
                                'type': ['object', 'null'],
                                'description': 'The parent that generated this invoice',
                                'properties': {
                                    'quote_details': {
                                        'type': ['object', 'null'],
                                        'description': 'Details about the quote that generated this invoice',
                                        'properties': {
                                            'quote': {'type': 'string', 'description': 'The quote that generated this invoice'},
                                        },
                                    },
                                    'subscription_details': {
                                        'type': ['object', 'null'],
                                        'description': 'Details about the subscription that generated this invoice',
                                        'properties': {
                                            'metadata': {
                                                'type': ['object', 'null'],
                                                'description': 'Set of key-value pairs defined as subscription metadata',
                                                'additionalProperties': {'type': 'string'},
                                            },
                                            'subscription': {'type': 'string', 'description': 'The subscription that generated this invoice'},
                                            'subscription_proration_date': {
                                                'type': ['integer', 'null'],
                                                'format': 'int64',
                                                'description': 'Only set for upcoming invoices that preview prorations',
                                            },
                                        },
                                    },
                                    'type': {
                                        'type': 'string',
                                        'enum': ['quote_details', 'subscription_details'],
                                        'description': 'The type of parent that generated this invoice',
                                    },
                                },
                            },
                            'payment_intent': {
                                'type': ['string', 'null'],
                                'description': 'The PaymentIntent associated with this invoice',
                            },
                            'payment_settings': {
                                'type': 'object',
                                'description': 'Configuration settings for the PaymentIntent that is generated when the invoice is finalized',
                                'properties': {
                                    'default_mandate': {
                                        'type': ['string', 'null'],
                                        'description': 'ID of the mandate to be used for this invoice',
                                    },
                                    'payment_method_options': {
                                        'type': ['object', 'null'],
                                        'description': "Payment-method-specific configuration to provide to the invoice's PaymentIntent",
                                    },
                                    'payment_method_types': {
                                        'type': ['array', 'null'],
                                        'description': "The list of payment method types to provide to the invoice's PaymentIntent",
                                        'items': {'type': 'string'},
                                    },
                                },
                            },
                            'payments': {
                                'type': 'object',
                                'description': 'Payments for this invoice',
                                'properties': {
                                    'object': {
                                        'type': 'string',
                                        'enum': ['list'],
                                        'description': "String representing the object's type",
                                    },
                                    'data': {
                                        'type': 'array',
                                        'description': 'Details about each payment',
                                        'items': {
                                            'type': 'object',
                                            'properties': {
                                                'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                'object': {'type': 'string', 'description': "String representing the object's type"},
                                                'amount_paid': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount that was actually paid for this invoice',
                                                },
                                                'amount_requested': {'type': 'integer', 'description': 'Amount intended to be paid toward this invoice'},
                                                'created': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'Time at which the object was created',
                                                },
                                                'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                                'invoice': {'type': 'string', 'description': 'The invoice that was paid'},
                                                'is_default': {'type': 'boolean', 'description': 'Whether this is the default payment created when the invoice was finalized'},
                                                'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode'},
                                                'status': {'type': 'string', 'description': 'The status of the payment'},
                                            },
                                        },
                                    },
                                    'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items'},
                                    'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                },
                            },
                            'period_end': {
                                'type': 'integer',
                                'format': 'int64',
                                'description': 'End of the usage period covered by the invoice',
                            },
                            'period_start': {
                                'type': 'integer',
                                'format': 'int64',
                                'description': 'Start of the usage period covered by the invoice',
                            },
                            'post_payment_credit_notes_amount': {'type': 'integer', 'description': 'Total amount of all post-payment credit notes'},
                            'pre_payment_credit_notes_amount': {'type': 'integer', 'description': 'Total amount of all pre-payment credit notes'},
                            'quote': {
                                'type': ['string', 'null'],
                                'description': 'The quote this invoice was generated from',
                            },
                            'receipt_number': {
                                'type': ['string', 'null'],
                                'description': 'The transaction number that appears on email receipts',
                            },
                            'rendering': {
                                'type': ['object', 'null'],
                                'description': 'The rendering-related settings that control how the invoice is displayed',
                                'properties': {
                                    'amount_tax_display': {
                                        'type': ['string', 'null'],
                                        'description': 'How line-item prices and amounts will be displayed with respect to tax',
                                    },
                                    'pdf': {
                                        'type': ['object', 'null'],
                                        'description': 'Invoice pdf rendering options',
                                        'properties': {
                                            'page_size': {
                                                'type': ['string', 'null'],
                                                'enum': ['a4', 'auto', 'letter'],
                                                'description': 'Page size of invoice pdf',
                                            },
                                        },
                                    },
                                    'template': {
                                        'type': ['string', 'null'],
                                        'description': 'ID of the rendering template that the invoice is formatted by',
                                    },
                                    'template_version': {
                                        'type': ['integer', 'null'],
                                        'description': 'Version of the rendering template that the invoice is using',
                                    },
                                },
                            },
                            'rendering_options': {
                                'type': ['object', 'null'],
                                'description': 'Options for invoice rendering',
                            },
                            'shipping_cost': {
                                'type': ['object', 'null'],
                                'description': 'The details of the cost of shipping',
                                'properties': {
                                    'amount_subtotal': {'type': 'integer', 'description': 'Total shipping cost before any taxes are applied'},
                                    'amount_tax': {'type': 'integer', 'description': 'Total tax amount applied due to shipping costs'},
                                    'amount_total': {'type': 'integer', 'description': 'Total shipping cost after taxes are applied'},
                                    'shipping_rate': {
                                        'type': ['string', 'null'],
                                        'description': 'The ID of the ShippingRate for this invoice',
                                    },
                                    'taxes': {
                                        'type': ['array', 'null'],
                                        'description': 'The taxes applied to the shipping rate',
                                        'items': {
                                            'type': 'object',
                                            'properties': {
                                                'amount': {'type': 'integer', 'description': 'Amount of tax applied for this rate'},
                                                'taxability_reason': {
                                                    'type': ['string', 'null'],
                                                    'enum': [
                                                        'customer_exempt',
                                                        'not_collecting',
                                                        'not_subject_to_tax',
                                                        'not_supported',
                                                        'portion_product_exempt',
                                                        'portion_reduced_rated',
                                                        'portion_standard_rated',
                                                        'product_exempt',
                                                        'product_exempt_holiday',
                                                        'proportionally_rated',
                                                        'reduced_rated',
                                                        'reverse_charge',
                                                        'standard_rated',
                                                        'taxable_basis_reduced',
                                                        'zero_rated',
                                                    ],
                                                    'description': 'The reasoning behind this tax',
                                                },
                                                'taxable_amount': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'The amount on which tax is calculated',
                                                },
                                            },
                                        },
                                    },
                                },
                            },
                            'shipping_details': {
                                'type': ['object', 'null'],
                                'description': 'Shipping details for the invoice',
                                'properties': {
                                    'address': {
                                        'type': 'object',
                                        'description': 'Shipping address',
                                        'properties': {
                                            'city': {
                                                'type': ['string', 'null'],
                                                'description': 'City, district, suburb, town, or village',
                                            },
                                            'country': {
                                                'type': ['string', 'null'],
                                                'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                            },
                                            'line1': {
                                                'type': ['string', 'null'],
                                                'description': 'Address line 1',
                                            },
                                            'line2': {
                                                'type': ['string', 'null'],
                                                'description': 'Address line 2',
                                            },
                                            'postal_code': {
                                                'type': ['string', 'null'],
                                                'description': 'ZIP or postal code',
                                            },
                                            'state': {
                                                'type': ['string', 'null'],
                                                'description': 'State, county, province, or region',
                                            },
                                        },
                                    },
                                    'name': {'type': 'string', 'description': 'Recipient name'},
                                    'phone': {
                                        'type': ['string', 'null'],
                                        'description': 'Recipient phone',
                                    },
                                },
                            },
                            'starting_balance': {'type': 'integer', 'description': 'Starting customer balance before the invoice is finalized'},
                            'statement_descriptor': {
                                'type': ['string', 'null'],
                                'description': "Extra information about an invoice for the customer's credit card statement",
                            },
                            'status': {
                                'type': ['string', 'null'],
                                'enum': [
                                    'draft',
                                    'open',
                                    'paid',
                                    'uncollectible',
                                    'void',
                                ],
                                'description': 'The status of the invoice',
                            },
                            'status_transitions': {
                                'type': 'object',
                                'description': 'Status transition timestamps',
                                'properties': {
                                    'finalized_at': {
                                        'type': ['integer', 'null'],
                                        'format': 'int64',
                                        'description': 'The time that the invoice draft was finalized',
                                    },
                                    'marked_uncollectible_at': {
                                        'type': ['integer', 'null'],
                                        'format': 'int64',
                                        'description': 'The time that the invoice was marked uncollectible',
                                    },
                                    'paid_at': {
                                        'type': ['integer', 'null'],
                                        'format': 'int64',
                                        'description': 'The time that the invoice was paid',
                                    },
                                    'voided_at': {
                                        'type': ['integer', 'null'],
                                        'format': 'int64',
                                        'description': 'The time that the invoice was voided',
                                    },
                                },
                            },
                            'subscription': {
                                'type': ['string', 'null'],
                                'description': 'The subscription that this invoice was prepared for, if any',
                            },
                            'subscription_details': {
                                'type': ['object', 'null'],
                                'description': 'Details about the subscription that this invoice was prepared for, if any',
                                'properties': {
                                    'metadata': {
                                        'type': ['object', 'null'],
                                        'description': 'Set of key-value pairs defined as subscription metadata when the invoice is created',
                                        'additionalProperties': {'type': 'string'},
                                    },
                                },
                            },
                            'subtotal': {'type': 'integer', 'description': 'Total of all subscriptions, invoice items, and prorations before any discounts or taxes'},
                            'subtotal_excluding_tax': {
                                'type': ['integer', 'null'],
                                'description': 'The integer amount in cents representing the subtotal excluding tax',
                            },
                            'tax': {
                                'type': ['integer', 'null'],
                                'description': 'The amount of tax on this invoice',
                            },
                            'test_clock': {
                                'type': ['string', 'null'],
                                'description': 'ID of the test clock this invoice belongs to',
                            },
                            'threshold_reason': {
                                'type': ['object', 'null'],
                                'description': 'If billing_reason is set to subscription_threshold this returns more information',
                                'properties': {
                                    'amount_gte': {
                                        'type': ['integer', 'null'],
                                        'description': 'The total invoice amount threshold boundary if it triggered the threshold invoice',
                                    },
                                    'item_reasons': {
                                        'type': 'array',
                                        'description': 'Indicates which line items triggered a threshold invoice',
                                        'items': {
                                            'type': 'object',
                                            'properties': {
                                                'line_item_ids': {
                                                    'type': 'array',
                                                    'description': 'The IDs of the line items that triggered the threshold invoice',
                                                    'items': {'type': 'string'},
                                                },
                                                'usage_gte': {'type': 'integer', 'description': 'The quantity threshold boundary that applied to the given line item'},
                                            },
                                        },
                                    },
                                },
                            },
                            'total': {'type': 'integer', 'description': 'Total after discounts and taxes'},
                            'total_discount_amounts': {
                                'type': ['array', 'null'],
                                'description': 'The aggregate amounts calculated per discount across all line items',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'amount': {'type': 'integer', 'description': 'The amount of the discount'},
                                        'discount': {'type': 'string', 'description': 'The discount that was applied'},
                                    },
                                },
                            },
                            'total_excluding_tax': {
                                'type': ['integer', 'null'],
                                'description': 'The integer amount in cents representing the total amount excluding tax',
                            },
                            'total_pretax_credit_amounts': {
                                'type': ['array', 'null'],
                                'description': 'Contains pretax credit amounts that apply to this invoice',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'amount': {'type': 'integer', 'description': 'The amount of the pretax credit amount'},
                                        'credit_balance_transaction': {
                                            'type': ['string', 'null'],
                                            'description': 'The credit balance transaction that was applied',
                                        },
                                        'discount': {
                                            'type': ['string', 'null'],
                                            'description': 'The discount that was applied',
                                        },
                                        'type': {
                                            'type': 'string',
                                            'enum': ['credit_balance_transaction', 'discount'],
                                            'description': 'Type of the pretax credit amount referenced',
                                        },
                                    },
                                },
                            },
                            'total_tax_amounts': {
                                'type': ['array', 'null'],
                                'description': 'The amount of tax on this invoice',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'amount': {'type': 'integer', 'description': 'The amount of the tax'},
                                        'inclusive': {'type': 'boolean', 'description': 'Whether the tax amount is included in the line item amount'},
                                        'tax_rate': {'type': 'string', 'description': 'The tax rate applied'},
                                        'taxability_reason': {
                                            'type': ['string', 'null'],
                                            'description': 'The reasoning behind the tax',
                                        },
                                        'taxable_amount': {'type': 'integer', 'description': 'The amount on which tax is calculated'},
                                    },
                                },
                            },
                            'total_taxes': {
                                'type': ['array', 'null'],
                                'description': 'The aggregate tax information of all line items',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'amount': {'type': 'integer', 'description': 'The amount of the tax'},
                                        'tax_behavior': {
                                            'type': 'string',
                                            'enum': ['exclusive', 'inclusive'],
                                            'description': 'Whether this tax is inclusive or exclusive',
                                        },
                                        'tax_rate_details': {
                                            'type': ['object', 'null'],
                                            'description': 'Additional details about the tax rate',
                                        },
                                        'taxability_reason': {
                                            'type': 'string',
                                            'enum': [
                                                'customer_exempt',
                                                'not_available',
                                                'not_collecting',
                                                'not_subject_to_tax',
                                                'not_supported',
                                                'portion_product_exempt',
                                                'portion_reduced_rated',
                                                'portion_standard_rated',
                                                'product_exempt',
                                                'product_exempt_holiday',
                                                'proportionally_rated',
                                                'reduced_rated',
                                                'reverse_charge',
                                                'standard_rated',
                                                'taxable_basis_reduced',
                                                'zero_rated',
                                            ],
                                            'description': 'The reasoning behind this tax',
                                        },
                                        'taxable_amount': {
                                            'type': ['integer', 'null'],
                                            'description': 'The amount on which tax is calculated',
                                        },
                                        'type': {'type': 'string', 'description': 'The type of tax information'},
                                    },
                                },
                            },
                            'transfer_data': {
                                'type': ['object', 'null'],
                                'description': 'The account (if any) the payment will be attributed to',
                            },
                            'webhooks_delivered_at': {
                                'type': ['integer', 'null'],
                                'format': 'int64',
                                'description': 'Invoices are automatically paid or sent 1 hour after webhooks are delivered',
                            },
                        },
                        'x-airbyte-entity-name': 'invoices',
                    },
                ),
                Action.API_SEARCH: EndpointDefinition(
                    method='GET',
                    path='/v1/invoices/search',
                    action=Action.API_SEARCH,
                    description="Search for invoices using Stripe's Search Query Language",
                    query_params=['query', 'limit', 'page'],
                    query_params_schema={
                        'query': {'type': 'string', 'required': True},
                        'limit': {'type': 'integer', 'required': False},
                        'page': {'type': 'string', 'required': False},
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['search_result'],
                            },
                            'data': {
                                'type': 'array',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the invoice'},
                                        'object': {
                                            'type': 'string',
                                            'description': "String representing the object's type",
                                            'enum': ['invoice'],
                                        },
                                        'account_country': {
                                            'type': ['string', 'null'],
                                            'description': 'The country of the business associated with this invoice',
                                        },
                                        'account_name': {
                                            'type': ['string', 'null'],
                                            'description': 'The public name of the business associated with this invoice',
                                        },
                                        'account_tax_ids': {
                                            'type': ['array', 'null'],
                                            'description': 'The account tax IDs associated with the invoice',
                                            'items': {'type': 'string'},
                                        },
                                        'amount_due': {'type': 'integer', 'description': 'Final amount due at this time for this invoice'},
                                        'amount_overpaid': {'type': 'integer', 'description': 'Amount that was overpaid on the invoice'},
                                        'amount_paid': {'type': 'integer', 'description': 'The amount that was paid'},
                                        'amount_remaining': {'type': 'integer', 'description': 'The difference between amount_due and amount_paid'},
                                        'amount_shipping': {'type': 'integer', 'description': 'This is the sum of all the shipping amounts'},
                                        'application': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the Connect Application that created the invoice',
                                        },
                                        'application_fee_amount': {
                                            'type': ['integer', 'null'],
                                            'description': "The fee in cents that will be applied to the invoice and transferred to the application owner's Stripe account",
                                        },
                                        'attempt_count': {'type': 'integer', 'description': 'Number of payment attempts made for this invoice'},
                                        'attempted': {'type': 'boolean', 'description': 'Whether an attempt has been made to pay the invoice'},
                                        'auto_advance': {'type': 'boolean', 'description': 'Controls whether Stripe performs automatic collection'},
                                        'automatic_tax': {
                                            'type': 'object',
                                            'description': 'Settings and latest results for automatic tax lookup for this invoice',
                                            'properties': {
                                                'disabled_reason': {
                                                    'type': ['string', 'null'],
                                                    'description': 'If Stripe disabled automatic tax, this enum describes why',
                                                },
                                                'enabled': {'type': 'boolean', 'description': 'Whether Stripe automatically computes tax on this invoice'},
                                                'liability': {
                                                    'type': ['object', 'null'],
                                                    'description': "The account that's liable for tax",
                                                    'properties': {
                                                        'account': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The connected account being referenced when type is account',
                                                        },
                                                        'type': {
                                                            'type': 'string',
                                                            'enum': ['account', 'self'],
                                                            'description': 'Type of the account referenced',
                                                        },
                                                    },
                                                },
                                                'provider': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The tax provider powering automatic tax',
                                                },
                                                'status': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The status of the most recent automated tax calculation for this invoice',
                                                },
                                            },
                                        },
                                        'automatically_finalizes_at': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'The time when this invoice is currently scheduled to be automatically finalized',
                                        },
                                        'billing_reason': {
                                            'type': ['string', 'null'],
                                            'enum': [
                                                'automatic_pending_invoice_item_invoice',
                                                'manual',
                                                'quote_accept',
                                                'subscription',
                                                'subscription_create',
                                                'subscription_cycle',
                                                'subscription_threshold',
                                                'subscription_update',
                                                'upcoming',
                                            ],
                                            'description': 'Indicates the reason why the invoice was created',
                                        },
                                        'charge': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the latest charge generated for this invoice, if any',
                                        },
                                        'collection_method': {
                                            'type': 'string',
                                            'enum': ['charge_automatically', 'send_invoice'],
                                            'description': 'How the invoice will be paid',
                                        },
                                        'confirmation_secret': {
                                            'type': ['object', 'null'],
                                            'description': 'The confirmation secret associated with this invoice',
                                            'properties': {
                                                'client_secret': {'type': 'string', 'description': 'The client_secret of the payment that Stripe creates for the invoice after finalization'},
                                                'type': {'type': 'string', 'description': 'The type of client_secret'},
                                            },
                                        },
                                        'created': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'Time at which the object was created (Unix timestamp)',
                                        },
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                        'custom_fields': {
                                            'type': ['array', 'null'],
                                            'description': 'Custom fields displayed on the invoice',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'name': {'type': 'string', 'description': 'The name of the custom field'},
                                                    'value': {'type': 'string', 'description': 'The value of the custom field'},
                                                },
                                            },
                                        },
                                        'customer': {'type': 'string', 'description': 'The ID of the customer who will be billed'},
                                        'customer_account': {
                                            'type': ['string', 'null'],
                                            'description': 'The ID of the account who will be billed',
                                        },
                                        'customer_address': {
                                            'type': ['object', 'null'],
                                            'description': "The customer's address",
                                            'properties': {
                                                'city': {
                                                    'type': ['string', 'null'],
                                                    'description': 'City, district, suburb, town, or village',
                                                },
                                                'country': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                },
                                                'line1': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Address line 1',
                                                },
                                                'line2': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Address line 2',
                                                },
                                                'postal_code': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ZIP or postal code',
                                                },
                                                'state': {
                                                    'type': ['string', 'null'],
                                                    'description': 'State, county, province, or region',
                                                },
                                            },
                                        },
                                        'customer_email': {
                                            'type': ['string', 'null'],
                                            'description': "The customer's email",
                                        },
                                        'customer_name': {
                                            'type': ['string', 'null'],
                                            'description': "The customer's name",
                                        },
                                        'customer_phone': {
                                            'type': ['string', 'null'],
                                            'description': "The customer's phone number",
                                        },
                                        'customer_shipping': {
                                            'type': ['object', 'null'],
                                            'description': "The customer's shipping information",
                                            'properties': {
                                                'address': {
                                                    'type': 'object',
                                                    'description': 'Customer shipping address',
                                                    'properties': {
                                                        'city': {
                                                            'type': ['string', 'null'],
                                                            'description': 'City, district, suburb, town, or village',
                                                        },
                                                        'country': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                        },
                                                        'line1': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Address line 1',
                                                        },
                                                        'line2': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Address line 2',
                                                        },
                                                        'postal_code': {
                                                            'type': ['string', 'null'],
                                                            'description': 'ZIP or postal code',
                                                        },
                                                        'state': {
                                                            'type': ['string', 'null'],
                                                            'description': 'State, county, province, or region',
                                                        },
                                                    },
                                                },
                                                'name': {'type': 'string', 'description': 'Customer name'},
                                                'phone': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Customer phone (including extension)',
                                                },
                                            },
                                        },
                                        'customer_tax_exempt': {
                                            'type': ['string', 'null'],
                                            'enum': ['exempt', 'none', 'reverse'],
                                            'description': "The customer's tax exempt status",
                                        },
                                        'customer_tax_ids': {
                                            'type': ['array', 'null'],
                                            'description': "The customer's tax IDs",
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'type': {'type': 'string', 'description': 'The type of the tax ID'},
                                                    'value': {
                                                        'type': ['string', 'null'],
                                                        'description': 'The value of the tax ID',
                                                    },
                                                },
                                            },
                                        },
                                        'default_payment_method': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the default payment method for the invoice',
                                        },
                                        'default_source': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the default payment source for the invoice',
                                        },
                                        'default_tax_rates': {
                                            'type': 'array',
                                            'description': 'The tax rates applied to this invoice',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                    'object': {'type': 'string', 'description': "String representing the object's type"},
                                                    'active': {'type': 'boolean', 'description': 'Defaults to true'},
                                                    'country': {
                                                        'type': ['string', 'null'],
                                                        'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                    },
                                                    'created': {'type': 'integer', 'description': 'Time at which the object was created'},
                                                    'description': {
                                                        'type': ['string', 'null'],
                                                        'description': 'An arbitrary string attached to the tax rate for your internal use only',
                                                    },
                                                    'display_name': {'type': 'string', 'description': 'The display name of the tax rate'},
                                                    'effective_percentage': {
                                                        'type': ['number', 'null'],
                                                        'description': 'Actual/effective tax rate percentage out of 100',
                                                    },
                                                    'inclusive': {'type': 'boolean', 'description': 'This specifies if the tax rate is inclusive or exclusive'},
                                                    'jurisdiction': {
                                                        'type': ['string', 'null'],
                                                        'description': 'The jurisdiction for the tax rate',
                                                    },
                                                    'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode'},
                                                    'metadata': {
                                                        'type': ['object', 'null'],
                                                        'description': 'Set of key-value pairs',
                                                        'additionalProperties': {'type': 'string'},
                                                    },
                                                    'percentage': {'type': 'number', 'description': 'Tax rate percentage out of 100'},
                                                    'flat_amount': {
                                                        'type': ['object', 'null'],
                                                        'description': 'The amount of the tax rate when the rate_type is flat_amount',
                                                        'properties': {
                                                            'amount': {'type': 'integer', 'description': 'Amount of the tax when the rate_type is flat_amount'},
                                                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                                        },
                                                    },
                                                    'jurisdiction_level': {
                                                        'type': ['string', 'null'],
                                                        'enum': [
                                                            'city',
                                                            'country',
                                                            'county',
                                                            'district',
                                                            'multiple',
                                                            'state',
                                                        ],
                                                        'description': 'The level of the jurisdiction that imposes this tax rate',
                                                    },
                                                    'rate_type': {
                                                        'type': ['string', 'null'],
                                                        'enum': ['flat_amount', 'percentage'],
                                                        'description': 'Indicates the type of tax rate applied to the taxable amount',
                                                    },
                                                    'state': {
                                                        'type': ['string', 'null'],
                                                        'description': 'ISO 3166-2 subdivision code',
                                                    },
                                                    'tax_type': {
                                                        'type': ['string', 'null'],
                                                        'enum': [
                                                            'amusement_tax',
                                                            'communications_tax',
                                                            'gst',
                                                            'hst',
                                                            'igst',
                                                            'jct',
                                                            'lease_tax',
                                                            'pst',
                                                            'qst',
                                                            'retail_delivery_fee',
                                                            'rst',
                                                            'sales_tax',
                                                            'service_tax',
                                                            'vat',
                                                        ],
                                                        'description': 'The high-level tax type',
                                                    },
                                                },
                                            },
                                        },
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': 'An arbitrary string attached to the object',
                                        },
                                        'discount': {
                                            'type': ['object', 'null'],
                                            'description': 'The discount applied to the invoice',
                                            'properties': {
                                                'id': {'type': 'string'},
                                                'object': {'type': 'string'},
                                                'checkout_session': {
                                                    'type': ['string', 'null'],
                                                },
                                                'coupon': {
                                                    'type': ['object', 'null'],
                                                    'properties': {
                                                        'id': {'type': 'string'},
                                                        'object': {'type': 'string'},
                                                        'amount_off': {
                                                            'type': ['integer', 'null'],
                                                        },
                                                        'created': {'type': 'integer'},
                                                        'currency': {
                                                            'type': ['string', 'null'],
                                                        },
                                                        'duration': {'type': 'string'},
                                                        'duration_in_months': {
                                                            'type': ['integer', 'null'],
                                                        },
                                                        'livemode': {'type': 'boolean'},
                                                        'max_redemptions': {
                                                            'type': ['integer', 'null'],
                                                        },
                                                        'metadata': {
                                                            'type': 'object',
                                                            'additionalProperties': {'type': 'string'},
                                                        },
                                                        'name': {'type': 'string'},
                                                        'percent_off': {
                                                            'type': ['number', 'null'],
                                                        },
                                                        'redeem_by': {
                                                            'type': ['integer', 'null'],
                                                        },
                                                        'times_redeemed': {'type': 'integer'},
                                                        'valid': {'type': 'boolean'},
                                                    },
                                                },
                                                'customer': {'type': 'string'},
                                                'customer_account': {
                                                    'type': ['string', 'null'],
                                                },
                                                'end': {
                                                    'type': ['integer', 'null'],
                                                },
                                                'invoice': {
                                                    'type': ['string', 'null'],
                                                },
                                                'invoice_item': {
                                                    'type': ['string', 'null'],
                                                },
                                                'promotion_code': {
                                                    'type': ['string', 'null'],
                                                },
                                                'start': {'type': 'integer'},
                                                'subscription': {
                                                    'type': ['string', 'null'],
                                                },
                                                'subscription_item': {
                                                    'type': ['string', 'null'],
                                                },
                                            },
                                        },
                                        'discounts': {
                                            'type': 'array',
                                            'items': {'type': 'string'},
                                            'description': 'The discounts applied to the invoice',
                                        },
                                        'due_date': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'The date on which payment for this invoice is due (Unix timestamp)',
                                        },
                                        'effective_at': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'The date when this invoice is in effect',
                                        },
                                        'ending_balance': {
                                            'type': ['integer', 'null'],
                                            'description': 'Ending customer balance after the invoice is finalized',
                                        },
                                        'footer': {
                                            'type': ['string', 'null'],
                                            'description': 'Footer to be displayed on the invoice',
                                        },
                                        'from_invoice': {
                                            'type': ['object', 'null'],
                                            'description': 'Details of the invoice that was cloned',
                                            'properties': {
                                                'action': {'type': 'string'},
                                                'invoice': {'type': 'string'},
                                            },
                                        },
                                        'hosted_invoice_url': {
                                            'type': ['string', 'null'],
                                            'description': 'The URL for the hosted invoice page',
                                        },
                                        'invoice_pdf': {
                                            'type': ['string', 'null'],
                                            'description': 'The link to download the PDF for the invoice',
                                        },
                                        'issuer': {
                                            'type': 'object',
                                            'description': 'The connected account that issues the invoice',
                                            'properties': {
                                                'account': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The connected account being referenced when type is account',
                                                },
                                                'type': {
                                                    'type': 'string',
                                                    'enum': ['account', 'self'],
                                                    'description': 'Type of the account referenced',
                                                },
                                            },
                                        },
                                        'last_finalization_error': {
                                            'type': ['object', 'null'],
                                            'description': 'The error encountered during the last finalization attempt',
                                            'properties': {
                                                'advice_code': {
                                                    'type': ['string', 'null'],
                                                    'description': 'For card errors resulting from a card issuer decline',
                                                },
                                                'code': {
                                                    'type': ['string', 'null'],
                                                    'description': 'For some errors that could be handled programmatically, a short string indicating the error code',
                                                },
                                                'doc_url': {
                                                    'type': ['string', 'null'],
                                                    'description': 'A URL to more information about the error code reported',
                                                },
                                                'message': {
                                                    'type': ['string', 'null'],
                                                    'description': 'A human-readable message providing more details about the error',
                                                },
                                                'network_advice_code': {
                                                    'type': ['string', 'null'],
                                                    'description': 'For card errors resulting from a card issuer decline',
                                                },
                                                'network_decline_code': {
                                                    'type': ['string', 'null'],
                                                    'description': 'For payments declined by the network',
                                                },
                                                'param': {
                                                    'type': ['string', 'null'],
                                                    'description': 'If the error is parameter-specific, the parameter related to the error',
                                                },
                                                'payment_method_type': {
                                                    'type': ['string', 'null'],
                                                    'description': 'If the error is specific to the type of payment method',
                                                },
                                                'type': {
                                                    'type': 'string',
                                                    'enum': [
                                                        'api_error',
                                                        'card_error',
                                                        'idempotency_error',
                                                        'invalid_request_error',
                                                    ],
                                                    'description': 'The type of error returned',
                                                },
                                            },
                                        },
                                        'latest_revision': {
                                            'type': ['string', 'null'],
                                            'description': 'The ID of the most recent revision of this invoice',
                                        },
                                        'lines': {
                                            'type': 'object',
                                            'description': 'The individual line items that make up the invoice',
                                            'properties': {
                                                'object': {
                                                    'type': 'string',
                                                    'enum': ['list'],
                                                },
                                                'data': {
                                                    'type': 'array',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                            'object': {'type': 'string', 'description': "String representing the object's type"},
                                                            'amount': {'type': 'integer', 'description': 'The amount in cents'},
                                                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                                            'description': {
                                                                'type': ['string', 'null'],
                                                                'description': 'An arbitrary string attached to the object',
                                                            },
                                                            'discount_amounts': {
                                                                'type': ['array', 'null'],
                                                                'description': 'The amount of discount calculated per discount for this line item',
                                                                'items': {
                                                                    'type': 'object',
                                                                    'properties': {
                                                                        'amount': {'type': 'integer', 'description': 'The amount of the discount'},
                                                                        'discount': {'type': 'string', 'description': 'The discount that was applied'},
                                                                    },
                                                                },
                                                            },
                                                            'discountable': {'type': 'boolean', 'description': 'If true, discounts will apply to this line item'},
                                                            'discounts': {
                                                                'type': 'array',
                                                                'description': 'The discounts applied to the invoice line item',
                                                                'items': {'type': 'string'},
                                                            },
                                                            'invoice': {
                                                                'type': ['string', 'null'],
                                                                'description': 'The ID of the invoice that contains this line item',
                                                            },
                                                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode'},
                                                            'metadata': {
                                                                'type': 'object',
                                                                'description': 'Set of key-value pairs',
                                                                'additionalProperties': {'type': 'string'},
                                                            },
                                                            'period': {
                                                                'type': 'object',
                                                                'description': 'The period this line_item covers',
                                                                'properties': {
                                                                    'end': {
                                                                        'type': 'integer',
                                                                        'format': 'int64',
                                                                        'description': 'The end of the period',
                                                                    },
                                                                    'start': {
                                                                        'type': 'integer',
                                                                        'format': 'int64',
                                                                        'description': 'The start of the period',
                                                                    },
                                                                },
                                                            },
                                                            'proration': {'type': 'boolean', 'description': 'Whether this is a proration'},
                                                            'quantity': {
                                                                'type': ['integer', 'null'],
                                                                'description': 'The quantity of the subscription',
                                                            },
                                                        },
                                                    },
                                                },
                                                'has_more': {'type': 'boolean'},
                                                'total_count': {
                                                    'type': ['integer', 'null'],
                                                },
                                                'url': {
                                                    'type': ['string', 'null'],
                                                },
                                            },
                                        },
                                        'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode'},
                                        'metadata': {
                                            'type': 'object',
                                            'additionalProperties': {'type': 'string'},
                                            'description': 'Set of key-value pairs for storing additional information',
                                        },
                                        'next_payment_attempt': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'The time at which payment will next be attempted',
                                        },
                                        'number': {
                                            'type': ['string', 'null'],
                                            'description': 'A unique, identifying string that appears on emails sent to the customer',
                                        },
                                        'on_behalf_of': {
                                            'type': ['string', 'null'],
                                            'description': 'The account (if any) for which the funds are intended',
                                        },
                                        'paid': {
                                            'type': ['boolean', 'null'],
                                            'description': 'Whether payment was successfully collected for this invoice',
                                        },
                                        'paid_out_of_band': {
                                            'type': ['boolean', 'null'],
                                            'description': 'Whether the invoice has been marked as paid by marking it manually or using the mark_as_paid endpoint',
                                        },
                                        'parent': {
                                            'type': ['object', 'null'],
                                            'description': 'The parent that generated this invoice',
                                            'properties': {
                                                'quote_details': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Details about the quote that generated this invoice',
                                                    'properties': {
                                                        'quote': {'type': 'string', 'description': 'The quote that generated this invoice'},
                                                    },
                                                },
                                                'subscription_details': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Details about the subscription that generated this invoice',
                                                    'properties': {
                                                        'metadata': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Set of key-value pairs defined as subscription metadata',
                                                            'additionalProperties': {'type': 'string'},
                                                        },
                                                        'subscription': {'type': 'string', 'description': 'The subscription that generated this invoice'},
                                                        'subscription_proration_date': {
                                                            'type': ['integer', 'null'],
                                                            'format': 'int64',
                                                            'description': 'Only set for upcoming invoices that preview prorations',
                                                        },
                                                    },
                                                },
                                                'type': {
                                                    'type': 'string',
                                                    'enum': ['quote_details', 'subscription_details'],
                                                    'description': 'The type of parent that generated this invoice',
                                                },
                                            },
                                        },
                                        'payment_intent': {
                                            'type': ['string', 'null'],
                                            'description': 'The PaymentIntent associated with this invoice',
                                        },
                                        'payment_settings': {
                                            'type': 'object',
                                            'description': 'Configuration settings for the PaymentIntent that is generated when the invoice is finalized',
                                            'properties': {
                                                'default_mandate': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the mandate to be used for this invoice',
                                                },
                                                'payment_method_options': {
                                                    'type': ['object', 'null'],
                                                    'description': "Payment-method-specific configuration to provide to the invoice's PaymentIntent",
                                                },
                                                'payment_method_types': {
                                                    'type': ['array', 'null'],
                                                    'description': "The list of payment method types to provide to the invoice's PaymentIntent",
                                                    'items': {'type': 'string'},
                                                },
                                            },
                                        },
                                        'payments': {
                                            'type': 'object',
                                            'description': 'Payments for this invoice',
                                            'properties': {
                                                'object': {
                                                    'type': 'string',
                                                    'enum': ['list'],
                                                    'description': "String representing the object's type",
                                                },
                                                'data': {
                                                    'type': 'array',
                                                    'description': 'Details about each payment',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                            'object': {'type': 'string', 'description': "String representing the object's type"},
                                                            'amount_paid': {
                                                                'type': ['integer', 'null'],
                                                                'description': 'Amount that was actually paid for this invoice',
                                                            },
                                                            'amount_requested': {'type': 'integer', 'description': 'Amount intended to be paid toward this invoice'},
                                                            'created': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': 'Time at which the object was created',
                                                            },
                                                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                                            'invoice': {'type': 'string', 'description': 'The invoice that was paid'},
                                                            'is_default': {'type': 'boolean', 'description': 'Whether this is the default payment created when the invoice was finalized'},
                                                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode'},
                                                            'status': {'type': 'string', 'description': 'The status of the payment'},
                                                        },
                                                    },
                                                },
                                                'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items'},
                                                'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                            },
                                        },
                                        'period_end': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'End of the usage period covered by the invoice',
                                        },
                                        'period_start': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'Start of the usage period covered by the invoice',
                                        },
                                        'post_payment_credit_notes_amount': {'type': 'integer', 'description': 'Total amount of all post-payment credit notes'},
                                        'pre_payment_credit_notes_amount': {'type': 'integer', 'description': 'Total amount of all pre-payment credit notes'},
                                        'quote': {
                                            'type': ['string', 'null'],
                                            'description': 'The quote this invoice was generated from',
                                        },
                                        'receipt_number': {
                                            'type': ['string', 'null'],
                                            'description': 'The transaction number that appears on email receipts',
                                        },
                                        'rendering': {
                                            'type': ['object', 'null'],
                                            'description': 'The rendering-related settings that control how the invoice is displayed',
                                            'properties': {
                                                'amount_tax_display': {
                                                    'type': ['string', 'null'],
                                                    'description': 'How line-item prices and amounts will be displayed with respect to tax',
                                                },
                                                'pdf': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Invoice pdf rendering options',
                                                    'properties': {
                                                        'page_size': {
                                                            'type': ['string', 'null'],
                                                            'enum': ['a4', 'auto', 'letter'],
                                                            'description': 'Page size of invoice pdf',
                                                        },
                                                    },
                                                },
                                                'template': {
                                                    'type': ['string', 'null'],
                                                    'description': 'ID of the rendering template that the invoice is formatted by',
                                                },
                                                'template_version': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Version of the rendering template that the invoice is using',
                                                },
                                            },
                                        },
                                        'rendering_options': {
                                            'type': ['object', 'null'],
                                            'description': 'Options for invoice rendering',
                                        },
                                        'shipping_cost': {
                                            'type': ['object', 'null'],
                                            'description': 'The details of the cost of shipping',
                                            'properties': {
                                                'amount_subtotal': {'type': 'integer', 'description': 'Total shipping cost before any taxes are applied'},
                                                'amount_tax': {'type': 'integer', 'description': 'Total tax amount applied due to shipping costs'},
                                                'amount_total': {'type': 'integer', 'description': 'Total shipping cost after taxes are applied'},
                                                'shipping_rate': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The ID of the ShippingRate for this invoice',
                                                },
                                                'taxes': {
                                                    'type': ['array', 'null'],
                                                    'description': 'The taxes applied to the shipping rate',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'amount': {'type': 'integer', 'description': 'Amount of tax applied for this rate'},
                                                            'taxability_reason': {
                                                                'type': ['string', 'null'],
                                                                'enum': [
                                                                    'customer_exempt',
                                                                    'not_collecting',
                                                                    'not_subject_to_tax',
                                                                    'not_supported',
                                                                    'portion_product_exempt',
                                                                    'portion_reduced_rated',
                                                                    'portion_standard_rated',
                                                                    'product_exempt',
                                                                    'product_exempt_holiday',
                                                                    'proportionally_rated',
                                                                    'reduced_rated',
                                                                    'reverse_charge',
                                                                    'standard_rated',
                                                                    'taxable_basis_reduced',
                                                                    'zero_rated',
                                                                ],
                                                                'description': 'The reasoning behind this tax',
                                                            },
                                                            'taxable_amount': {
                                                                'type': ['integer', 'null'],
                                                                'description': 'The amount on which tax is calculated',
                                                            },
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                        'shipping_details': {
                                            'type': ['object', 'null'],
                                            'description': 'Shipping details for the invoice',
                                            'properties': {
                                                'address': {
                                                    'type': 'object',
                                                    'description': 'Shipping address',
                                                    'properties': {
                                                        'city': {
                                                            'type': ['string', 'null'],
                                                            'description': 'City, district, suburb, town, or village',
                                                        },
                                                        'country': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                        },
                                                        'line1': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Address line 1',
                                                        },
                                                        'line2': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Address line 2',
                                                        },
                                                        'postal_code': {
                                                            'type': ['string', 'null'],
                                                            'description': 'ZIP or postal code',
                                                        },
                                                        'state': {
                                                            'type': ['string', 'null'],
                                                            'description': 'State, county, province, or region',
                                                        },
                                                    },
                                                },
                                                'name': {'type': 'string', 'description': 'Recipient name'},
                                                'phone': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Recipient phone',
                                                },
                                            },
                                        },
                                        'starting_balance': {'type': 'integer', 'description': 'Starting customer balance before the invoice is finalized'},
                                        'statement_descriptor': {
                                            'type': ['string', 'null'],
                                            'description': "Extra information about an invoice for the customer's credit card statement",
                                        },
                                        'status': {
                                            'type': ['string', 'null'],
                                            'enum': [
                                                'draft',
                                                'open',
                                                'paid',
                                                'uncollectible',
                                                'void',
                                            ],
                                            'description': 'The status of the invoice',
                                        },
                                        'status_transitions': {
                                            'type': 'object',
                                            'description': 'Status transition timestamps',
                                            'properties': {
                                                'finalized_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'The time that the invoice draft was finalized',
                                                },
                                                'marked_uncollectible_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'The time that the invoice was marked uncollectible',
                                                },
                                                'paid_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'The time that the invoice was paid',
                                                },
                                                'voided_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'The time that the invoice was voided',
                                                },
                                            },
                                        },
                                        'subscription': {
                                            'type': ['string', 'null'],
                                            'description': 'The subscription that this invoice was prepared for, if any',
                                        },
                                        'subscription_details': {
                                            'type': ['object', 'null'],
                                            'description': 'Details about the subscription that this invoice was prepared for, if any',
                                            'properties': {
                                                'metadata': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Set of key-value pairs defined as subscription metadata when the invoice is created',
                                                    'additionalProperties': {'type': 'string'},
                                                },
                                            },
                                        },
                                        'subtotal': {'type': 'integer', 'description': 'Total of all subscriptions, invoice items, and prorations before any discounts or taxes'},
                                        'subtotal_excluding_tax': {
                                            'type': ['integer', 'null'],
                                            'description': 'The integer amount in cents representing the subtotal excluding tax',
                                        },
                                        'tax': {
                                            'type': ['integer', 'null'],
                                            'description': 'The amount of tax on this invoice',
                                        },
                                        'test_clock': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the test clock this invoice belongs to',
                                        },
                                        'threshold_reason': {
                                            'type': ['object', 'null'],
                                            'description': 'If billing_reason is set to subscription_threshold this returns more information',
                                            'properties': {
                                                'amount_gte': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'The total invoice amount threshold boundary if it triggered the threshold invoice',
                                                },
                                                'item_reasons': {
                                                    'type': 'array',
                                                    'description': 'Indicates which line items triggered a threshold invoice',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'line_item_ids': {
                                                                'type': 'array',
                                                                'description': 'The IDs of the line items that triggered the threshold invoice',
                                                                'items': {'type': 'string'},
                                                            },
                                                            'usage_gte': {'type': 'integer', 'description': 'The quantity threshold boundary that applied to the given line item'},
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                        'total': {'type': 'integer', 'description': 'Total after discounts and taxes'},
                                        'total_discount_amounts': {
                                            'type': ['array', 'null'],
                                            'description': 'The aggregate amounts calculated per discount across all line items',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'amount': {'type': 'integer', 'description': 'The amount of the discount'},
                                                    'discount': {'type': 'string', 'description': 'The discount that was applied'},
                                                },
                                            },
                                        },
                                        'total_excluding_tax': {
                                            'type': ['integer', 'null'],
                                            'description': 'The integer amount in cents representing the total amount excluding tax',
                                        },
                                        'total_pretax_credit_amounts': {
                                            'type': ['array', 'null'],
                                            'description': 'Contains pretax credit amounts that apply to this invoice',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'amount': {'type': 'integer', 'description': 'The amount of the pretax credit amount'},
                                                    'credit_balance_transaction': {
                                                        'type': ['string', 'null'],
                                                        'description': 'The credit balance transaction that was applied',
                                                    },
                                                    'discount': {
                                                        'type': ['string', 'null'],
                                                        'description': 'The discount that was applied',
                                                    },
                                                    'type': {
                                                        'type': 'string',
                                                        'enum': ['credit_balance_transaction', 'discount'],
                                                        'description': 'Type of the pretax credit amount referenced',
                                                    },
                                                },
                                            },
                                        },
                                        'total_tax_amounts': {
                                            'type': ['array', 'null'],
                                            'description': 'The amount of tax on this invoice',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'amount': {'type': 'integer', 'description': 'The amount of the tax'},
                                                    'inclusive': {'type': 'boolean', 'description': 'Whether the tax amount is included in the line item amount'},
                                                    'tax_rate': {'type': 'string', 'description': 'The tax rate applied'},
                                                    'taxability_reason': {
                                                        'type': ['string', 'null'],
                                                        'description': 'The reasoning behind the tax',
                                                    },
                                                    'taxable_amount': {'type': 'integer', 'description': 'The amount on which tax is calculated'},
                                                },
                                            },
                                        },
                                        'total_taxes': {
                                            'type': ['array', 'null'],
                                            'description': 'The aggregate tax information of all line items',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'amount': {'type': 'integer', 'description': 'The amount of the tax'},
                                                    'tax_behavior': {
                                                        'type': 'string',
                                                        'enum': ['exclusive', 'inclusive'],
                                                        'description': 'Whether this tax is inclusive or exclusive',
                                                    },
                                                    'tax_rate_details': {
                                                        'type': ['object', 'null'],
                                                        'description': 'Additional details about the tax rate',
                                                    },
                                                    'taxability_reason': {
                                                        'type': 'string',
                                                        'enum': [
                                                            'customer_exempt',
                                                            'not_available',
                                                            'not_collecting',
                                                            'not_subject_to_tax',
                                                            'not_supported',
                                                            'portion_product_exempt',
                                                            'portion_reduced_rated',
                                                            'portion_standard_rated',
                                                            'product_exempt',
                                                            'product_exempt_holiday',
                                                            'proportionally_rated',
                                                            'reduced_rated',
                                                            'reverse_charge',
                                                            'standard_rated',
                                                            'taxable_basis_reduced',
                                                            'zero_rated',
                                                        ],
                                                        'description': 'The reasoning behind this tax',
                                                    },
                                                    'taxable_amount': {
                                                        'type': ['integer', 'null'],
                                                        'description': 'The amount on which tax is calculated',
                                                    },
                                                    'type': {'type': 'string', 'description': 'The type of tax information'},
                                                },
                                            },
                                        },
                                        'transfer_data': {
                                            'type': ['object', 'null'],
                                            'description': 'The account (if any) the payment will be attributed to',
                                        },
                                        'webhooks_delivered_at': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'Invoices are automatically paid or sent 1 hour after webhooks are delivered',
                                        },
                                    },
                                    'x-airbyte-entity-name': 'invoices',
                                },
                            },
                            'has_more': {'type': 'boolean', 'description': 'Whether there are more results available'},
                            'next_page': {
                                'type': ['string', 'null'],
                                'description': 'Cursor for the next page of results',
                            },
                            'url': {'type': 'string', 'description': 'The URL for accessing this list'},
                        },
                    },
                ),
            },
            entity_schema={
                'type': 'object',
                'properties': {
                    'id': {'type': 'string', 'description': 'Unique identifier for the invoice'},
                    'object': {
                        'type': 'string',
                        'description': "String representing the object's type",
                        'enum': ['invoice'],
                    },
                    'account_country': {
                        'type': ['string', 'null'],
                        'description': 'The country of the business associated with this invoice',
                    },
                    'account_name': {
                        'type': ['string', 'null'],
                        'description': 'The public name of the business associated with this invoice',
                    },
                    'account_tax_ids': {
                        'type': ['array', 'null'],
                        'description': 'The account tax IDs associated with the invoice',
                        'items': {'type': 'string'},
                    },
                    'amount_due': {'type': 'integer', 'description': 'Final amount due at this time for this invoice'},
                    'amount_overpaid': {'type': 'integer', 'description': 'Amount that was overpaid on the invoice'},
                    'amount_paid': {'type': 'integer', 'description': 'The amount that was paid'},
                    'amount_remaining': {'type': 'integer', 'description': 'The difference between amount_due and amount_paid'},
                    'amount_shipping': {'type': 'integer', 'description': 'This is the sum of all the shipping amounts'},
                    'application': {
                        'type': ['string', 'null'],
                        'description': 'ID of the Connect Application that created the invoice',
                    },
                    'application_fee_amount': {
                        'type': ['integer', 'null'],
                        'description': "The fee in cents that will be applied to the invoice and transferred to the application owner's Stripe account",
                    },
                    'attempt_count': {'type': 'integer', 'description': 'Number of payment attempts made for this invoice'},
                    'attempted': {'type': 'boolean', 'description': 'Whether an attempt has been made to pay the invoice'},
                    'auto_advance': {'type': 'boolean', 'description': 'Controls whether Stripe performs automatic collection'},
                    'automatic_tax': {
                        'type': 'object',
                        'description': 'Settings and latest results for automatic tax lookup for this invoice',
                        'properties': {
                            'disabled_reason': {
                                'type': ['string', 'null'],
                                'description': 'If Stripe disabled automatic tax, this enum describes why',
                            },
                            'enabled': {'type': 'boolean', 'description': 'Whether Stripe automatically computes tax on this invoice'},
                            'liability': {
                                'type': ['object', 'null'],
                                'description': "The account that's liable for tax",
                                'properties': {
                                    'account': {
                                        'type': ['string', 'null'],
                                        'description': 'The connected account being referenced when type is account',
                                    },
                                    'type': {
                                        'type': 'string',
                                        'enum': ['account', 'self'],
                                        'description': 'Type of the account referenced',
                                    },
                                },
                            },
                            'provider': {
                                'type': ['string', 'null'],
                                'description': 'The tax provider powering automatic tax',
                            },
                            'status': {
                                'type': ['string', 'null'],
                                'description': 'The status of the most recent automated tax calculation for this invoice',
                            },
                        },
                    },
                    'automatically_finalizes_at': {
                        'type': ['integer', 'null'],
                        'format': 'int64',
                        'description': 'The time when this invoice is currently scheduled to be automatically finalized',
                    },
                    'billing_reason': {
                        'type': ['string', 'null'],
                        'enum': [
                            'automatic_pending_invoice_item_invoice',
                            'manual',
                            'quote_accept',
                            'subscription',
                            'subscription_create',
                            'subscription_cycle',
                            'subscription_threshold',
                            'subscription_update',
                            'upcoming',
                        ],
                        'description': 'Indicates the reason why the invoice was created',
                    },
                    'charge': {
                        'type': ['string', 'null'],
                        'description': 'ID of the latest charge generated for this invoice, if any',
                    },
                    'collection_method': {
                        'type': 'string',
                        'enum': ['charge_automatically', 'send_invoice'],
                        'description': 'How the invoice will be paid',
                    },
                    'confirmation_secret': {
                        'type': ['object', 'null'],
                        'description': 'The confirmation secret associated with this invoice',
                        'properties': {
                            'client_secret': {'type': 'string', 'description': 'The client_secret of the payment that Stripe creates for the invoice after finalization'},
                            'type': {'type': 'string', 'description': 'The type of client_secret'},
                        },
                    },
                    'created': {
                        'type': 'integer',
                        'format': 'int64',
                        'description': 'Time at which the object was created (Unix timestamp)',
                    },
                    'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                    'custom_fields': {
                        'type': ['array', 'null'],
                        'description': 'Custom fields displayed on the invoice',
                        'items': {
                            'type': 'object',
                            'properties': {
                                'name': {'type': 'string', 'description': 'The name of the custom field'},
                                'value': {'type': 'string', 'description': 'The value of the custom field'},
                            },
                        },
                    },
                    'customer': {'type': 'string', 'description': 'The ID of the customer who will be billed'},
                    'customer_account': {
                        'type': ['string', 'null'],
                        'description': 'The ID of the account who will be billed',
                    },
                    'customer_address': {
                        'type': ['object', 'null'],
                        'description': "The customer's address",
                        'properties': {
                            'city': {
                                'type': ['string', 'null'],
                                'description': 'City, district, suburb, town, or village',
                            },
                            'country': {
                                'type': ['string', 'null'],
                                'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                            },
                            'line1': {
                                'type': ['string', 'null'],
                                'description': 'Address line 1',
                            },
                            'line2': {
                                'type': ['string', 'null'],
                                'description': 'Address line 2',
                            },
                            'postal_code': {
                                'type': ['string', 'null'],
                                'description': 'ZIP or postal code',
                            },
                            'state': {
                                'type': ['string', 'null'],
                                'description': 'State, county, province, or region',
                            },
                        },
                    },
                    'customer_email': {
                        'type': ['string', 'null'],
                        'description': "The customer's email",
                    },
                    'customer_name': {
                        'type': ['string', 'null'],
                        'description': "The customer's name",
                    },
                    'customer_phone': {
                        'type': ['string', 'null'],
                        'description': "The customer's phone number",
                    },
                    'customer_shipping': {
                        'type': ['object', 'null'],
                        'description': "The customer's shipping information",
                        'properties': {
                            'address': {
                                'type': 'object',
                                'description': 'Customer shipping address',
                                'properties': {
                                    'city': {
                                        'type': ['string', 'null'],
                                        'description': 'City, district, suburb, town, or village',
                                    },
                                    'country': {
                                        'type': ['string', 'null'],
                                        'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                    },
                                    'line1': {
                                        'type': ['string', 'null'],
                                        'description': 'Address line 1',
                                    },
                                    'line2': {
                                        'type': ['string', 'null'],
                                        'description': 'Address line 2',
                                    },
                                    'postal_code': {
                                        'type': ['string', 'null'],
                                        'description': 'ZIP or postal code',
                                    },
                                    'state': {
                                        'type': ['string', 'null'],
                                        'description': 'State, county, province, or region',
                                    },
                                },
                            },
                            'name': {'type': 'string', 'description': 'Customer name'},
                            'phone': {
                                'type': ['string', 'null'],
                                'description': 'Customer phone (including extension)',
                            },
                        },
                    },
                    'customer_tax_exempt': {
                        'type': ['string', 'null'],
                        'enum': ['exempt', 'none', 'reverse'],
                        'description': "The customer's tax exempt status",
                    },
                    'customer_tax_ids': {
                        'type': ['array', 'null'],
                        'description': "The customer's tax IDs",
                        'items': {
                            'type': 'object',
                            'properties': {
                                'type': {'type': 'string', 'description': 'The type of the tax ID'},
                                'value': {
                                    'type': ['string', 'null'],
                                    'description': 'The value of the tax ID',
                                },
                            },
                        },
                    },
                    'default_payment_method': {
                        'type': ['string', 'null'],
                        'description': 'ID of the default payment method for the invoice',
                    },
                    'default_source': {
                        'type': ['string', 'null'],
                        'description': 'ID of the default payment source for the invoice',
                    },
                    'default_tax_rates': {
                        'type': 'array',
                        'description': 'The tax rates applied to this invoice',
                        'items': {
                            'type': 'object',
                            'properties': {
                                'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                'object': {'type': 'string', 'description': "String representing the object's type"},
                                'active': {'type': 'boolean', 'description': 'Defaults to true'},
                                'country': {
                                    'type': ['string', 'null'],
                                    'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                },
                                'created': {'type': 'integer', 'description': 'Time at which the object was created'},
                                'description': {
                                    'type': ['string', 'null'],
                                    'description': 'An arbitrary string attached to the tax rate for your internal use only',
                                },
                                'display_name': {'type': 'string', 'description': 'The display name of the tax rate'},
                                'effective_percentage': {
                                    'type': ['number', 'null'],
                                    'description': 'Actual/effective tax rate percentage out of 100',
                                },
                                'inclusive': {'type': 'boolean', 'description': 'This specifies if the tax rate is inclusive or exclusive'},
                                'jurisdiction': {
                                    'type': ['string', 'null'],
                                    'description': 'The jurisdiction for the tax rate',
                                },
                                'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode'},
                                'metadata': {
                                    'type': ['object', 'null'],
                                    'description': 'Set of key-value pairs',
                                    'additionalProperties': {'type': 'string'},
                                },
                                'percentage': {'type': 'number', 'description': 'Tax rate percentage out of 100'},
                                'flat_amount': {
                                    'type': ['object', 'null'],
                                    'description': 'The amount of the tax rate when the rate_type is flat_amount',
                                    'properties': {
                                        'amount': {'type': 'integer', 'description': 'Amount of the tax when the rate_type is flat_amount'},
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                    },
                                },
                                'jurisdiction_level': {
                                    'type': ['string', 'null'],
                                    'enum': [
                                        'city',
                                        'country',
                                        'county',
                                        'district',
                                        'multiple',
                                        'state',
                                    ],
                                    'description': 'The level of the jurisdiction that imposes this tax rate',
                                },
                                'rate_type': {
                                    'type': ['string', 'null'],
                                    'enum': ['flat_amount', 'percentage'],
                                    'description': 'Indicates the type of tax rate applied to the taxable amount',
                                },
                                'state': {
                                    'type': ['string', 'null'],
                                    'description': 'ISO 3166-2 subdivision code',
                                },
                                'tax_type': {
                                    'type': ['string', 'null'],
                                    'enum': [
                                        'amusement_tax',
                                        'communications_tax',
                                        'gst',
                                        'hst',
                                        'igst',
                                        'jct',
                                        'lease_tax',
                                        'pst',
                                        'qst',
                                        'retail_delivery_fee',
                                        'rst',
                                        'sales_tax',
                                        'service_tax',
                                        'vat',
                                    ],
                                    'description': 'The high-level tax type',
                                },
                            },
                        },
                    },
                    'description': {
                        'type': ['string', 'null'],
                        'description': 'An arbitrary string attached to the object',
                    },
                    'discount': {
                        'type': ['object', 'null'],
                        'description': 'The discount applied to the invoice',
                        'properties': {
                            'id': {'type': 'string'},
                            'object': {'type': 'string'},
                            'checkout_session': {
                                'type': ['string', 'null'],
                            },
                            'coupon': {
                                'type': ['object', 'null'],
                                'properties': {
                                    'id': {'type': 'string'},
                                    'object': {'type': 'string'},
                                    'amount_off': {
                                        'type': ['integer', 'null'],
                                    },
                                    'created': {'type': 'integer'},
                                    'currency': {
                                        'type': ['string', 'null'],
                                    },
                                    'duration': {'type': 'string'},
                                    'duration_in_months': {
                                        'type': ['integer', 'null'],
                                    },
                                    'livemode': {'type': 'boolean'},
                                    'max_redemptions': {
                                        'type': ['integer', 'null'],
                                    },
                                    'metadata': {
                                        'type': 'object',
                                        'additionalProperties': {'type': 'string'},
                                    },
                                    'name': {'type': 'string'},
                                    'percent_off': {
                                        'type': ['number', 'null'],
                                    },
                                    'redeem_by': {
                                        'type': ['integer', 'null'],
                                    },
                                    'times_redeemed': {'type': 'integer'},
                                    'valid': {'type': 'boolean'},
                                },
                            },
                            'customer': {'type': 'string'},
                            'customer_account': {
                                'type': ['string', 'null'],
                            },
                            'end': {
                                'type': ['integer', 'null'],
                            },
                            'invoice': {
                                'type': ['string', 'null'],
                            },
                            'invoice_item': {
                                'type': ['string', 'null'],
                            },
                            'promotion_code': {
                                'type': ['string', 'null'],
                            },
                            'start': {'type': 'integer'},
                            'subscription': {
                                'type': ['string', 'null'],
                            },
                            'subscription_item': {
                                'type': ['string', 'null'],
                            },
                        },
                    },
                    'discounts': {
                        'type': 'array',
                        'items': {'type': 'string'},
                        'description': 'The discounts applied to the invoice',
                    },
                    'due_date': {
                        'type': ['integer', 'null'],
                        'format': 'int64',
                        'description': 'The date on which payment for this invoice is due (Unix timestamp)',
                    },
                    'effective_at': {
                        'type': ['integer', 'null'],
                        'format': 'int64',
                        'description': 'The date when this invoice is in effect',
                    },
                    'ending_balance': {
                        'type': ['integer', 'null'],
                        'description': 'Ending customer balance after the invoice is finalized',
                    },
                    'footer': {
                        'type': ['string', 'null'],
                        'description': 'Footer to be displayed on the invoice',
                    },
                    'from_invoice': {
                        'type': ['object', 'null'],
                        'description': 'Details of the invoice that was cloned',
                        'properties': {
                            'action': {'type': 'string'},
                            'invoice': {'type': 'string'},
                        },
                    },
                    'hosted_invoice_url': {
                        'type': ['string', 'null'],
                        'description': 'The URL for the hosted invoice page',
                    },
                    'invoice_pdf': {
                        'type': ['string', 'null'],
                        'description': 'The link to download the PDF for the invoice',
                    },
                    'issuer': {
                        'type': 'object',
                        'description': 'The connected account that issues the invoice',
                        'properties': {
                            'account': {
                                'type': ['string', 'null'],
                                'description': 'The connected account being referenced when type is account',
                            },
                            'type': {
                                'type': 'string',
                                'enum': ['account', 'self'],
                                'description': 'Type of the account referenced',
                            },
                        },
                    },
                    'last_finalization_error': {
                        'type': ['object', 'null'],
                        'description': 'The error encountered during the last finalization attempt',
                        'properties': {
                            'advice_code': {
                                'type': ['string', 'null'],
                                'description': 'For card errors resulting from a card issuer decline',
                            },
                            'code': {
                                'type': ['string', 'null'],
                                'description': 'For some errors that could be handled programmatically, a short string indicating the error code',
                            },
                            'doc_url': {
                                'type': ['string', 'null'],
                                'description': 'A URL to more information about the error code reported',
                            },
                            'message': {
                                'type': ['string', 'null'],
                                'description': 'A human-readable message providing more details about the error',
                            },
                            'network_advice_code': {
                                'type': ['string', 'null'],
                                'description': 'For card errors resulting from a card issuer decline',
                            },
                            'network_decline_code': {
                                'type': ['string', 'null'],
                                'description': 'For payments declined by the network',
                            },
                            'param': {
                                'type': ['string', 'null'],
                                'description': 'If the error is parameter-specific, the parameter related to the error',
                            },
                            'payment_method_type': {
                                'type': ['string', 'null'],
                                'description': 'If the error is specific to the type of payment method',
                            },
                            'type': {
                                'type': 'string',
                                'enum': [
                                    'api_error',
                                    'card_error',
                                    'idempotency_error',
                                    'invalid_request_error',
                                ],
                                'description': 'The type of error returned',
                            },
                        },
                    },
                    'latest_revision': {
                        'type': ['string', 'null'],
                        'description': 'The ID of the most recent revision of this invoice',
                    },
                    'lines': {
                        'type': 'object',
                        'description': 'The individual line items that make up the invoice',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['list'],
                            },
                            'data': {
                                'type': 'array',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                        'object': {'type': 'string', 'description': "String representing the object's type"},
                                        'amount': {'type': 'integer', 'description': 'The amount in cents'},
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': 'An arbitrary string attached to the object',
                                        },
                                        'discount_amounts': {
                                            'type': ['array', 'null'],
                                            'description': 'The amount of discount calculated per discount for this line item',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'amount': {'type': 'integer', 'description': 'The amount of the discount'},
                                                    'discount': {'type': 'string', 'description': 'The discount that was applied'},
                                                },
                                            },
                                        },
                                        'discountable': {'type': 'boolean', 'description': 'If true, discounts will apply to this line item'},
                                        'discounts': {
                                            'type': 'array',
                                            'description': 'The discounts applied to the invoice line item',
                                            'items': {'type': 'string'},
                                        },
                                        'invoice': {
                                            'type': ['string', 'null'],
                                            'description': 'The ID of the invoice that contains this line item',
                                        },
                                        'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode'},
                                        'metadata': {
                                            'type': 'object',
                                            'description': 'Set of key-value pairs',
                                            'additionalProperties': {'type': 'string'},
                                        },
                                        'period': {
                                            'type': 'object',
                                            'description': 'The period this line_item covers',
                                            'properties': {
                                                'end': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'The end of the period',
                                                },
                                                'start': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'The start of the period',
                                                },
                                            },
                                        },
                                        'proration': {'type': 'boolean', 'description': 'Whether this is a proration'},
                                        'quantity': {
                                            'type': ['integer', 'null'],
                                            'description': 'The quantity of the subscription',
                                        },
                                    },
                                },
                            },
                            'has_more': {'type': 'boolean'},
                            'total_count': {
                                'type': ['integer', 'null'],
                            },
                            'url': {
                                'type': ['string', 'null'],
                            },
                        },
                    },
                    'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode'},
                    'metadata': {
                        'type': 'object',
                        'additionalProperties': {'type': 'string'},
                        'description': 'Set of key-value pairs for storing additional information',
                    },
                    'next_payment_attempt': {
                        'type': ['integer', 'null'],
                        'format': 'int64',
                        'description': 'The time at which payment will next be attempted',
                    },
                    'number': {
                        'type': ['string', 'null'],
                        'description': 'A unique, identifying string that appears on emails sent to the customer',
                    },
                    'on_behalf_of': {
                        'type': ['string', 'null'],
                        'description': 'The account (if any) for which the funds are intended',
                    },
                    'paid': {
                        'type': ['boolean', 'null'],
                        'description': 'Whether payment was successfully collected for this invoice',
                    },
                    'paid_out_of_band': {
                        'type': ['boolean', 'null'],
                        'description': 'Whether the invoice has been marked as paid by marking it manually or using the mark_as_paid endpoint',
                    },
                    'parent': {
                        'type': ['object', 'null'],
                        'description': 'The parent that generated this invoice',
                        'properties': {
                            'quote_details': {
                                'type': ['object', 'null'],
                                'description': 'Details about the quote that generated this invoice',
                                'properties': {
                                    'quote': {'type': 'string', 'description': 'The quote that generated this invoice'},
                                },
                            },
                            'subscription_details': {
                                'type': ['object', 'null'],
                                'description': 'Details about the subscription that generated this invoice',
                                'properties': {
                                    'metadata': {
                                        'type': ['object', 'null'],
                                        'description': 'Set of key-value pairs defined as subscription metadata',
                                        'additionalProperties': {'type': 'string'},
                                    },
                                    'subscription': {'type': 'string', 'description': 'The subscription that generated this invoice'},
                                    'subscription_proration_date': {
                                        'type': ['integer', 'null'],
                                        'format': 'int64',
                                        'description': 'Only set for upcoming invoices that preview prorations',
                                    },
                                },
                            },
                            'type': {
                                'type': 'string',
                                'enum': ['quote_details', 'subscription_details'],
                                'description': 'The type of parent that generated this invoice',
                            },
                        },
                    },
                    'payment_intent': {
                        'type': ['string', 'null'],
                        'description': 'The PaymentIntent associated with this invoice',
                    },
                    'payment_settings': {
                        'type': 'object',
                        'description': 'Configuration settings for the PaymentIntent that is generated when the invoice is finalized',
                        'properties': {
                            'default_mandate': {
                                'type': ['string', 'null'],
                                'description': 'ID of the mandate to be used for this invoice',
                            },
                            'payment_method_options': {
                                'type': ['object', 'null'],
                                'description': "Payment-method-specific configuration to provide to the invoice's PaymentIntent",
                            },
                            'payment_method_types': {
                                'type': ['array', 'null'],
                                'description': "The list of payment method types to provide to the invoice's PaymentIntent",
                                'items': {'type': 'string'},
                            },
                        },
                    },
                    'payments': {
                        'type': 'object',
                        'description': 'Payments for this invoice',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['list'],
                                'description': "String representing the object's type",
                            },
                            'data': {
                                'type': 'array',
                                'description': 'Details about each payment',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                        'object': {'type': 'string', 'description': "String representing the object's type"},
                                        'amount_paid': {
                                            'type': ['integer', 'null'],
                                            'description': 'Amount that was actually paid for this invoice',
                                        },
                                        'amount_requested': {'type': 'integer', 'description': 'Amount intended to be paid toward this invoice'},
                                        'created': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'Time at which the object was created',
                                        },
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                        'invoice': {'type': 'string', 'description': 'The invoice that was paid'},
                                        'is_default': {'type': 'boolean', 'description': 'Whether this is the default payment created when the invoice was finalized'},
                                        'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode'},
                                        'status': {'type': 'string', 'description': 'The status of the payment'},
                                    },
                                },
                            },
                            'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items'},
                            'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                        },
                    },
                    'period_end': {
                        'type': 'integer',
                        'format': 'int64',
                        'description': 'End of the usage period covered by the invoice',
                    },
                    'period_start': {
                        'type': 'integer',
                        'format': 'int64',
                        'description': 'Start of the usage period covered by the invoice',
                    },
                    'post_payment_credit_notes_amount': {'type': 'integer', 'description': 'Total amount of all post-payment credit notes'},
                    'pre_payment_credit_notes_amount': {'type': 'integer', 'description': 'Total amount of all pre-payment credit notes'},
                    'quote': {
                        'type': ['string', 'null'],
                        'description': 'The quote this invoice was generated from',
                    },
                    'receipt_number': {
                        'type': ['string', 'null'],
                        'description': 'The transaction number that appears on email receipts',
                    },
                    'rendering': {
                        'type': ['object', 'null'],
                        'description': 'The rendering-related settings that control how the invoice is displayed',
                        'properties': {
                            'amount_tax_display': {
                                'type': ['string', 'null'],
                                'description': 'How line-item prices and amounts will be displayed with respect to tax',
                            },
                            'pdf': {
                                'type': ['object', 'null'],
                                'description': 'Invoice pdf rendering options',
                                'properties': {
                                    'page_size': {
                                        'type': ['string', 'null'],
                                        'enum': ['a4', 'auto', 'letter'],
                                        'description': 'Page size of invoice pdf',
                                    },
                                },
                            },
                            'template': {
                                'type': ['string', 'null'],
                                'description': 'ID of the rendering template that the invoice is formatted by',
                            },
                            'template_version': {
                                'type': ['integer', 'null'],
                                'description': 'Version of the rendering template that the invoice is using',
                            },
                        },
                    },
                    'rendering_options': {
                        'type': ['object', 'null'],
                        'description': 'Options for invoice rendering',
                    },
                    'shipping_cost': {
                        'type': ['object', 'null'],
                        'description': 'The details of the cost of shipping',
                        'properties': {
                            'amount_subtotal': {'type': 'integer', 'description': 'Total shipping cost before any taxes are applied'},
                            'amount_tax': {'type': 'integer', 'description': 'Total tax amount applied due to shipping costs'},
                            'amount_total': {'type': 'integer', 'description': 'Total shipping cost after taxes are applied'},
                            'shipping_rate': {
                                'type': ['string', 'null'],
                                'description': 'The ID of the ShippingRate for this invoice',
                            },
                            'taxes': {
                                'type': ['array', 'null'],
                                'description': 'The taxes applied to the shipping rate',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'amount': {'type': 'integer', 'description': 'Amount of tax applied for this rate'},
                                        'taxability_reason': {
                                            'type': ['string', 'null'],
                                            'enum': [
                                                'customer_exempt',
                                                'not_collecting',
                                                'not_subject_to_tax',
                                                'not_supported',
                                                'portion_product_exempt',
                                                'portion_reduced_rated',
                                                'portion_standard_rated',
                                                'product_exempt',
                                                'product_exempt_holiday',
                                                'proportionally_rated',
                                                'reduced_rated',
                                                'reverse_charge',
                                                'standard_rated',
                                                'taxable_basis_reduced',
                                                'zero_rated',
                                            ],
                                            'description': 'The reasoning behind this tax',
                                        },
                                        'taxable_amount': {
                                            'type': ['integer', 'null'],
                                            'description': 'The amount on which tax is calculated',
                                        },
                                    },
                                },
                            },
                        },
                    },
                    'shipping_details': {
                        'type': ['object', 'null'],
                        'description': 'Shipping details for the invoice',
                        'properties': {
                            'address': {
                                'type': 'object',
                                'description': 'Shipping address',
                                'properties': {
                                    'city': {
                                        'type': ['string', 'null'],
                                        'description': 'City, district, suburb, town, or village',
                                    },
                                    'country': {
                                        'type': ['string', 'null'],
                                        'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                    },
                                    'line1': {
                                        'type': ['string', 'null'],
                                        'description': 'Address line 1',
                                    },
                                    'line2': {
                                        'type': ['string', 'null'],
                                        'description': 'Address line 2',
                                    },
                                    'postal_code': {
                                        'type': ['string', 'null'],
                                        'description': 'ZIP or postal code',
                                    },
                                    'state': {
                                        'type': ['string', 'null'],
                                        'description': 'State, county, province, or region',
                                    },
                                },
                            },
                            'name': {'type': 'string', 'description': 'Recipient name'},
                            'phone': {
                                'type': ['string', 'null'],
                                'description': 'Recipient phone',
                            },
                        },
                    },
                    'starting_balance': {'type': 'integer', 'description': 'Starting customer balance before the invoice is finalized'},
                    'statement_descriptor': {
                        'type': ['string', 'null'],
                        'description': "Extra information about an invoice for the customer's credit card statement",
                    },
                    'status': {
                        'type': ['string', 'null'],
                        'enum': [
                            'draft',
                            'open',
                            'paid',
                            'uncollectible',
                            'void',
                        ],
                        'description': 'The status of the invoice',
                    },
                    'status_transitions': {
                        'type': 'object',
                        'description': 'Status transition timestamps',
                        'properties': {
                            'finalized_at': {
                                'type': ['integer', 'null'],
                                'format': 'int64',
                                'description': 'The time that the invoice draft was finalized',
                            },
                            'marked_uncollectible_at': {
                                'type': ['integer', 'null'],
                                'format': 'int64',
                                'description': 'The time that the invoice was marked uncollectible',
                            },
                            'paid_at': {
                                'type': ['integer', 'null'],
                                'format': 'int64',
                                'description': 'The time that the invoice was paid',
                            },
                            'voided_at': {
                                'type': ['integer', 'null'],
                                'format': 'int64',
                                'description': 'The time that the invoice was voided',
                            },
                        },
                    },
                    'subscription': {
                        'type': ['string', 'null'],
                        'description': 'The subscription that this invoice was prepared for, if any',
                    },
                    'subscription_details': {
                        'type': ['object', 'null'],
                        'description': 'Details about the subscription that this invoice was prepared for, if any',
                        'properties': {
                            'metadata': {
                                'type': ['object', 'null'],
                                'description': 'Set of key-value pairs defined as subscription metadata when the invoice is created',
                                'additionalProperties': {'type': 'string'},
                            },
                        },
                    },
                    'subtotal': {'type': 'integer', 'description': 'Total of all subscriptions, invoice items, and prorations before any discounts or taxes'},
                    'subtotal_excluding_tax': {
                        'type': ['integer', 'null'],
                        'description': 'The integer amount in cents representing the subtotal excluding tax',
                    },
                    'tax': {
                        'type': ['integer', 'null'],
                        'description': 'The amount of tax on this invoice',
                    },
                    'test_clock': {
                        'type': ['string', 'null'],
                        'description': 'ID of the test clock this invoice belongs to',
                    },
                    'threshold_reason': {
                        'type': ['object', 'null'],
                        'description': 'If billing_reason is set to subscription_threshold this returns more information',
                        'properties': {
                            'amount_gte': {
                                'type': ['integer', 'null'],
                                'description': 'The total invoice amount threshold boundary if it triggered the threshold invoice',
                            },
                            'item_reasons': {
                                'type': 'array',
                                'description': 'Indicates which line items triggered a threshold invoice',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'line_item_ids': {
                                            'type': 'array',
                                            'description': 'The IDs of the line items that triggered the threshold invoice',
                                            'items': {'type': 'string'},
                                        },
                                        'usage_gte': {'type': 'integer', 'description': 'The quantity threshold boundary that applied to the given line item'},
                                    },
                                },
                            },
                        },
                    },
                    'total': {'type': 'integer', 'description': 'Total after discounts and taxes'},
                    'total_discount_amounts': {
                        'type': ['array', 'null'],
                        'description': 'The aggregate amounts calculated per discount across all line items',
                        'items': {
                            'type': 'object',
                            'properties': {
                                'amount': {'type': 'integer', 'description': 'The amount of the discount'},
                                'discount': {'type': 'string', 'description': 'The discount that was applied'},
                            },
                        },
                    },
                    'total_excluding_tax': {
                        'type': ['integer', 'null'],
                        'description': 'The integer amount in cents representing the total amount excluding tax',
                    },
                    'total_pretax_credit_amounts': {
                        'type': ['array', 'null'],
                        'description': 'Contains pretax credit amounts that apply to this invoice',
                        'items': {
                            'type': 'object',
                            'properties': {
                                'amount': {'type': 'integer', 'description': 'The amount of the pretax credit amount'},
                                'credit_balance_transaction': {
                                    'type': ['string', 'null'],
                                    'description': 'The credit balance transaction that was applied',
                                },
                                'discount': {
                                    'type': ['string', 'null'],
                                    'description': 'The discount that was applied',
                                },
                                'type': {
                                    'type': 'string',
                                    'enum': ['credit_balance_transaction', 'discount'],
                                    'description': 'Type of the pretax credit amount referenced',
                                },
                            },
                        },
                    },
                    'total_tax_amounts': {
                        'type': ['array', 'null'],
                        'description': 'The amount of tax on this invoice',
                        'items': {
                            'type': 'object',
                            'properties': {
                                'amount': {'type': 'integer', 'description': 'The amount of the tax'},
                                'inclusive': {'type': 'boolean', 'description': 'Whether the tax amount is included in the line item amount'},
                                'tax_rate': {'type': 'string', 'description': 'The tax rate applied'},
                                'taxability_reason': {
                                    'type': ['string', 'null'],
                                    'description': 'The reasoning behind the tax',
                                },
                                'taxable_amount': {'type': 'integer', 'description': 'The amount on which tax is calculated'},
                            },
                        },
                    },
                    'total_taxes': {
                        'type': ['array', 'null'],
                        'description': 'The aggregate tax information of all line items',
                        'items': {
                            'type': 'object',
                            'properties': {
                                'amount': {'type': 'integer', 'description': 'The amount of the tax'},
                                'tax_behavior': {
                                    'type': 'string',
                                    'enum': ['exclusive', 'inclusive'],
                                    'description': 'Whether this tax is inclusive or exclusive',
                                },
                                'tax_rate_details': {
                                    'type': ['object', 'null'],
                                    'description': 'Additional details about the tax rate',
                                },
                                'taxability_reason': {
                                    'type': 'string',
                                    'enum': [
                                        'customer_exempt',
                                        'not_available',
                                        'not_collecting',
                                        'not_subject_to_tax',
                                        'not_supported',
                                        'portion_product_exempt',
                                        'portion_reduced_rated',
                                        'portion_standard_rated',
                                        'product_exempt',
                                        'product_exempt_holiday',
                                        'proportionally_rated',
                                        'reduced_rated',
                                        'reverse_charge',
                                        'standard_rated',
                                        'taxable_basis_reduced',
                                        'zero_rated',
                                    ],
                                    'description': 'The reasoning behind this tax',
                                },
                                'taxable_amount': {
                                    'type': ['integer', 'null'],
                                    'description': 'The amount on which tax is calculated',
                                },
                                'type': {'type': 'string', 'description': 'The type of tax information'},
                            },
                        },
                    },
                    'transfer_data': {
                        'type': ['object', 'null'],
                        'description': 'The account (if any) the payment will be attributed to',
                    },
                    'webhooks_delivered_at': {
                        'type': ['integer', 'null'],
                        'format': 'int64',
                        'description': 'Invoices are automatically paid or sent 1 hour after webhooks are delivered',
                    },
                },
                'x-airbyte-entity-name': 'invoices',
            },
        ),
        EntityDefinition(
            name='charges',
            actions=[Action.LIST, Action.GET, Action.API_SEARCH],
            endpoints={
                Action.LIST: EndpointDefinition(
                    method='GET',
                    path='/v1/charges',
                    action=Action.LIST,
                    description="Returns a list of charges you've previously created. The charges are returned in sorted order, with the most recent charges appearing first.",
                    query_params=[
                        'created',
                        'customer',
                        'ending_before',
                        'limit',
                        'payment_intent',
                        'starting_after',
                    ],
                    query_params_schema={
                        'created': {'type': 'object', 'required': False},
                        'customer': {'type': 'string', 'required': False},
                        'ending_before': {'type': 'string', 'required': False},
                        'limit': {'type': 'integer', 'required': False},
                        'payment_intent': {'type': 'string', 'required': False},
                        'starting_after': {'type': 'string', 'required': False},
                    },
                    deep_object_params=['created'],
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['list'],
                            },
                            'data': {
                                'type': 'array',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the charge'},
                                        'object': {
                                            'type': 'string',
                                            'description': "String representing the object's type",
                                            'enum': ['charge'],
                                        },
                                        'created': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'Time at which the charge was created (Unix timestamp)',
                                        },
                                        'livemode': {'type': 'boolean', 'description': 'Whether this is a live or test mode object'},
                                        'amount': {'type': 'integer', 'description': 'Amount intended to be collected by this charge (in smallest currency unit)'},
                                        'amount_captured': {'type': 'integer', 'description': 'Amount captured (can be less than the amount attribute for partial captures)'},
                                        'amount_refunded': {'type': 'integer', 'description': 'Amount refunded (can be less than the amount attribute for partial refunds)'},
                                        'amount_updates': {
                                            'type': ['array', 'null'],
                                            'description': 'A list of amount updates for this charge',
                                            'items': {'type': 'object'},
                                        },
                                        'application': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the Connect application that created the charge',
                                        },
                                        'application_fee': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the application fee for this charge',
                                        },
                                        'application_fee_amount': {
                                            'type': ['integer', 'null'],
                                            'description': 'Amount in cents of the application fee',
                                        },
                                        'calculated_statement_descriptor': {
                                            'type': ['string', 'null'],
                                            'description': 'The full statement descriptor that is passed to card networks',
                                        },
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                        'customer': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the customer this charge is for if one exists',
                                        },
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': 'An arbitrary string attached to the charge',
                                        },
                                        'destination': {
                                            'type': ['string', 'null'],
                                            'description': 'The account to which this charge is being transferred to',
                                        },
                                        'dispute': {
                                            'type': ['string', 'null'],
                                            'description': 'Details about the dispute if the charge has been disputed',
                                        },
                                        'disputed': {'type': 'boolean', 'description': 'Whether the charge has been disputed'},
                                        'failure_balance_transaction': {
                                            'type': ['string', 'null'],
                                            'description': 'Transaction that represents the amount returned to your available balance',
                                        },
                                        'failure_code': {
                                            'type': ['string', 'null'],
                                            'description': 'Error code explaining reason for charge failure if available',
                                        },
                                        'failure_message': {
                                            'type': ['string', 'null'],
                                            'description': 'Message to user further explaining reason for charge failure if available',
                                        },
                                        'fraud_details': {
                                            'type': ['object', 'null'],
                                            'description': 'Information on fraud assessments for the charge',
                                            'properties': {
                                                'stripe_report': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Assessments from Stripe. If set, the value is `fraudulent`.',
                                                },
                                                'user_report': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Assessments from you or your users. Possible values are `fraudulent` and `safe`',
                                                },
                                            },
                                        },
                                        'invoice': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the invoice this charge is for if one exists',
                                        },
                                        'on_behalf_of': {
                                            'type': ['string', 'null'],
                                            'description': 'The account (if any) the charge was made on behalf of',
                                        },
                                        'order': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the order this charge is for if one exists',
                                        },
                                        'outcome': {
                                            'type': ['object', 'null'],
                                            'description': 'Details about whether the payment was accepted, and why',
                                            'properties': {
                                                'advice_code': {
                                                    'type': ['string', 'null'],
                                                },
                                                'network_advice_code': {
                                                    'type': ['string', 'null'],
                                                },
                                                'network_decline_code': {
                                                    'type': ['string', 'null'],
                                                },
                                                'network_status': {'type': 'string'},
                                                'reason': {
                                                    'type': ['string', 'null'],
                                                },
                                                'risk_level': {'type': 'string'},
                                                'risk_score': {'type': 'integer'},
                                                'seller_message': {'type': 'string'},
                                                'type': {'type': 'string'},
                                            },
                                        },
                                        'paid': {'type': 'boolean', 'description': 'True if the charge succeeded, or was successfully authorized for later capture'},
                                        'payment_intent': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the PaymentIntent associated with this charge, if one exists',
                                        },
                                        'payment_method': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the payment method used in this charge',
                                        },
                                        'payment_method_details': {
                                            'type': ['object', 'null'],
                                            'description': 'Details about the payment method at the time of the transaction',
                                            'properties': {
                                                'type': {'type': 'string'},
                                                'card': {
                                                    'type': ['object', 'null'],
                                                    'properties': {
                                                        'amount_authorized': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'Amount authorized on the card',
                                                        },
                                                        'authorization_code': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Authorization code on the charge',
                                                        },
                                                        'brand': {'type': 'string', 'description': 'Card brand'},
                                                        'checks': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Check results by Card networks on Card address and CVC',
                                                            'properties': {
                                                                'address_line1_check': {
                                                                    'type': ['string', 'null'],
                                                                },
                                                                'address_postal_code_check': {
                                                                    'type': ['string', 'null'],
                                                                },
                                                                'cvc_check': {
                                                                    'type': ['string', 'null'],
                                                                },
                                                            },
                                                        },
                                                        'country': {'type': 'string', 'description': 'Two-letter ISO code representing the country of the card'},
                                                        'exp_month': {'type': 'integer', 'description': "Two-digit number representing the card's expiration month"},
                                                        'exp_year': {'type': 'integer', 'description': "Four-digit number representing the card's expiration year"},
                                                        'extended_authorization': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Extended authorization details',
                                                            'properties': {
                                                                'status': {'type': 'string'},
                                                            },
                                                        },
                                                        'fingerprint': {'type': 'string', 'description': 'Uniquely identifies this particular card number'},
                                                        'funding': {'type': 'string', 'description': 'Card funding type'},
                                                        'incremental_authorization': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Incremental authorization details',
                                                            'properties': {
                                                                'status': {'type': 'string'},
                                                            },
                                                        },
                                                        'installments': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Installment details',
                                                        },
                                                        'last4': {'type': 'string', 'description': 'The last four digits of the card'},
                                                        'mandate': {
                                                            'type': ['string', 'null'],
                                                            'description': 'ID of the mandate used to make this payment',
                                                        },
                                                        'multicapture': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Multicapture details',
                                                            'properties': {
                                                                'status': {'type': 'string'},
                                                            },
                                                        },
                                                        'network': {'type': 'string', 'description': 'Card network'},
                                                        'network_token': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Network token details',
                                                            'properties': {
                                                                'used': {'type': 'boolean'},
                                                            },
                                                        },
                                                        'network_transaction_id': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Network transaction identifier',
                                                        },
                                                        'overcapture': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Overcapture details',
                                                            'properties': {
                                                                'maximum_amount_capturable': {'type': 'integer'},
                                                                'status': {'type': 'string'},
                                                            },
                                                        },
                                                        'regulated_status': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Regulated status of the card',
                                                        },
                                                        'three_d_secure': {
                                                            'type': ['object', 'null'],
                                                            'description': '3D Secure details',
                                                        },
                                                        'wallet': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Digital wallet details if used',
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                        'presentment_details': {
                                            'type': ['object', 'null'],
                                            'description': 'Currency presentation information for multi-currency charges',
                                            'properties': {
                                                'amount_authorized': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount authorized in the presentment currency',
                                                },
                                                'amount_charged': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount charged in the presentment currency',
                                                },
                                                'currency': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Three-letter ISO currency code for presentment',
                                                },
                                            },
                                        },
                                        'receipt_email': {
                                            'type': ['string', 'null'],
                                            'description': 'The email address that the receipt for this charge was sent to',
                                        },
                                        'receipt_number': {
                                            'type': ['string', 'null'],
                                            'description': 'The transaction number that appears on email receipts',
                                        },
                                        'receipt_url': {
                                            'type': ['string', 'null'],
                                            'description': 'URL to view the receipt for this charge',
                                        },
                                        'refunded': {'type': 'boolean', 'description': 'Whether the charge has been fully refunded'},
                                        'refunds': {
                                            'type': ['object', 'null'],
                                            'description': 'A list of refunds that have been applied to the charge',
                                            'properties': {
                                                'object': {
                                                    'type': 'string',
                                                    'enum': ['list'],
                                                },
                                                'data': {
                                                    'type': 'array',
                                                    'items': {'type': 'object'},
                                                },
                                                'has_more': {'type': 'boolean'},
                                                'total_count': {'type': 'integer', 'description': 'Total number of refunds'},
                                                'url': {'type': 'string', 'description': 'URL to access the refunds list'},
                                            },
                                        },
                                        'review': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the review associated with this charge if one exists',
                                        },
                                        'shipping': {
                                            'type': ['object', 'null'],
                                            'description': 'Shipping information for the charge',
                                        },
                                        'source': {
                                            'type': ['object', 'null'],
                                            'description': 'The payment source used for this charge',
                                            'additionalProperties': True,
                                        },
                                        'source_transfer': {
                                            'type': ['string', 'null'],
                                            'description': 'The transfer which created this charge',
                                        },
                                        'statement_descriptor': {
                                            'type': ['string', 'null'],
                                            'description': 'For card charges, statement descriptor suffix',
                                        },
                                        'statement_descriptor_suffix': {
                                            'type': ['string', 'null'],
                                            'description': 'Provides information about the charge that customers see on their statements',
                                        },
                                        'status': {
                                            'type': 'string',
                                            'enum': ['succeeded', 'pending', 'failed'],
                                            'description': 'The status of the payment',
                                        },
                                        'transfer_data': {
                                            'type': ['object', 'null'],
                                            'description': 'An optional dictionary including the account to automatically transfer to',
                                        },
                                        'transfer_group': {
                                            'type': ['string', 'null'],
                                            'description': 'A string that identifies this transaction as part of a group',
                                        },
                                        'captured': {'type': 'boolean', 'description': 'If the charge was created without capturing, this Boolean represents whether it is still uncaptured'},
                                        'balance_transaction': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the balance transaction that describes the impact on your account balance',
                                        },
                                        'billing_details': {
                                            'type': 'object',
                                            'description': 'Billing information associated with the payment method',
                                            'properties': {
                                                'address': {
                                                    'type': ['object', 'null'],
                                                    'properties': {
                                                        'city': {
                                                            'type': ['string', 'null'],
                                                        },
                                                        'country': {
                                                            'type': ['string', 'null'],
                                                        },
                                                        'line1': {
                                                            'type': ['string', 'null'],
                                                        },
                                                        'line2': {
                                                            'type': ['string', 'null'],
                                                        },
                                                        'postal_code': {
                                                            'type': ['string', 'null'],
                                                        },
                                                        'state': {
                                                            'type': ['string', 'null'],
                                                        },
                                                    },
                                                },
                                                'email': {
                                                    'type': ['string', 'null'],
                                                },
                                                'name': {
                                                    'type': ['string', 'null'],
                                                },
                                                'phone': {
                                                    'type': ['string', 'null'],
                                                },
                                                'tax_id': {
                                                    'type': ['string', 'null'],
                                                },
                                            },
                                        },
                                        'metadata': {
                                            'type': 'object',
                                            'additionalProperties': {'type': 'string'},
                                            'description': 'Set of key-value pairs for storing additional information',
                                        },
                                        'radar_options': {
                                            'type': ['object', 'null'],
                                            'description': 'Options to configure Radar',
                                            'additionalProperties': True,
                                        },
                                    },
                                    'x-airbyte-entity-name': 'charges',
                                },
                            },
                            'has_more': {'type': 'boolean'},
                            'url': {'type': 'string'},
                        },
                    },
                    record_extractor='$.data',
                    meta_extractor={'has_more': '$.has_more'},
                ),
                Action.GET: EndpointDefinition(
                    method='GET',
                    path='/v1/charges/{id}',
                    action=Action.GET,
                    description='Retrieves the details of a charge that has previously been created',
                    path_params=['id'],
                    path_params_schema={
                        'id': {'type': 'string', 'required': True},
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'id': {'type': 'string', 'description': 'Unique identifier for the charge'},
                            'object': {
                                'type': 'string',
                                'description': "String representing the object's type",
                                'enum': ['charge'],
                            },
                            'created': {
                                'type': 'integer',
                                'format': 'int64',
                                'description': 'Time at which the charge was created (Unix timestamp)',
                            },
                            'livemode': {'type': 'boolean', 'description': 'Whether this is a live or test mode object'},
                            'amount': {'type': 'integer', 'description': 'Amount intended to be collected by this charge (in smallest currency unit)'},
                            'amount_captured': {'type': 'integer', 'description': 'Amount captured (can be less than the amount attribute for partial captures)'},
                            'amount_refunded': {'type': 'integer', 'description': 'Amount refunded (can be less than the amount attribute for partial refunds)'},
                            'amount_updates': {
                                'type': ['array', 'null'],
                                'description': 'A list of amount updates for this charge',
                                'items': {'type': 'object'},
                            },
                            'application': {
                                'type': ['string', 'null'],
                                'description': 'ID of the Connect application that created the charge',
                            },
                            'application_fee': {
                                'type': ['string', 'null'],
                                'description': 'ID of the application fee for this charge',
                            },
                            'application_fee_amount': {
                                'type': ['integer', 'null'],
                                'description': 'Amount in cents of the application fee',
                            },
                            'calculated_statement_descriptor': {
                                'type': ['string', 'null'],
                                'description': 'The full statement descriptor that is passed to card networks',
                            },
                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                            'customer': {
                                'type': ['string', 'null'],
                                'description': 'ID of the customer this charge is for if one exists',
                            },
                            'description': {
                                'type': ['string', 'null'],
                                'description': 'An arbitrary string attached to the charge',
                            },
                            'destination': {
                                'type': ['string', 'null'],
                                'description': 'The account to which this charge is being transferred to',
                            },
                            'dispute': {
                                'type': ['string', 'null'],
                                'description': 'Details about the dispute if the charge has been disputed',
                            },
                            'disputed': {'type': 'boolean', 'description': 'Whether the charge has been disputed'},
                            'failure_balance_transaction': {
                                'type': ['string', 'null'],
                                'description': 'Transaction that represents the amount returned to your available balance',
                            },
                            'failure_code': {
                                'type': ['string', 'null'],
                                'description': 'Error code explaining reason for charge failure if available',
                            },
                            'failure_message': {
                                'type': ['string', 'null'],
                                'description': 'Message to user further explaining reason for charge failure if available',
                            },
                            'fraud_details': {
                                'type': ['object', 'null'],
                                'description': 'Information on fraud assessments for the charge',
                                'properties': {
                                    'stripe_report': {
                                        'type': ['string', 'null'],
                                        'description': 'Assessments from Stripe. If set, the value is `fraudulent`.',
                                    },
                                    'user_report': {
                                        'type': ['string', 'null'],
                                        'description': 'Assessments from you or your users. Possible values are `fraudulent` and `safe`',
                                    },
                                },
                            },
                            'invoice': {
                                'type': ['string', 'null'],
                                'description': 'ID of the invoice this charge is for if one exists',
                            },
                            'on_behalf_of': {
                                'type': ['string', 'null'],
                                'description': 'The account (if any) the charge was made on behalf of',
                            },
                            'order': {
                                'type': ['string', 'null'],
                                'description': 'ID of the order this charge is for if one exists',
                            },
                            'outcome': {
                                'type': ['object', 'null'],
                                'description': 'Details about whether the payment was accepted, and why',
                                'properties': {
                                    'advice_code': {
                                        'type': ['string', 'null'],
                                    },
                                    'network_advice_code': {
                                        'type': ['string', 'null'],
                                    },
                                    'network_decline_code': {
                                        'type': ['string', 'null'],
                                    },
                                    'network_status': {'type': 'string'},
                                    'reason': {
                                        'type': ['string', 'null'],
                                    },
                                    'risk_level': {'type': 'string'},
                                    'risk_score': {'type': 'integer'},
                                    'seller_message': {'type': 'string'},
                                    'type': {'type': 'string'},
                                },
                            },
                            'paid': {'type': 'boolean', 'description': 'True if the charge succeeded, or was successfully authorized for later capture'},
                            'payment_intent': {
                                'type': ['string', 'null'],
                                'description': 'ID of the PaymentIntent associated with this charge, if one exists',
                            },
                            'payment_method': {
                                'type': ['string', 'null'],
                                'description': 'ID of the payment method used in this charge',
                            },
                            'payment_method_details': {
                                'type': ['object', 'null'],
                                'description': 'Details about the payment method at the time of the transaction',
                                'properties': {
                                    'type': {'type': 'string'},
                                    'card': {
                                        'type': ['object', 'null'],
                                        'properties': {
                                            'amount_authorized': {
                                                'type': ['integer', 'null'],
                                                'description': 'Amount authorized on the card',
                                            },
                                            'authorization_code': {
                                                'type': ['string', 'null'],
                                                'description': 'Authorization code on the charge',
                                            },
                                            'brand': {'type': 'string', 'description': 'Card brand'},
                                            'checks': {
                                                'type': ['object', 'null'],
                                                'description': 'Check results by Card networks on Card address and CVC',
                                                'properties': {
                                                    'address_line1_check': {
                                                        'type': ['string', 'null'],
                                                    },
                                                    'address_postal_code_check': {
                                                        'type': ['string', 'null'],
                                                    },
                                                    'cvc_check': {
                                                        'type': ['string', 'null'],
                                                    },
                                                },
                                            },
                                            'country': {'type': 'string', 'description': 'Two-letter ISO code representing the country of the card'},
                                            'exp_month': {'type': 'integer', 'description': "Two-digit number representing the card's expiration month"},
                                            'exp_year': {'type': 'integer', 'description': "Four-digit number representing the card's expiration year"},
                                            'extended_authorization': {
                                                'type': ['object', 'null'],
                                                'description': 'Extended authorization details',
                                                'properties': {
                                                    'status': {'type': 'string'},
                                                },
                                            },
                                            'fingerprint': {'type': 'string', 'description': 'Uniquely identifies this particular card number'},
                                            'funding': {'type': 'string', 'description': 'Card funding type'},
                                            'incremental_authorization': {
                                                'type': ['object', 'null'],
                                                'description': 'Incremental authorization details',
                                                'properties': {
                                                    'status': {'type': 'string'},
                                                },
                                            },
                                            'installments': {
                                                'type': ['object', 'null'],
                                                'description': 'Installment details',
                                            },
                                            'last4': {'type': 'string', 'description': 'The last four digits of the card'},
                                            'mandate': {
                                                'type': ['string', 'null'],
                                                'description': 'ID of the mandate used to make this payment',
                                            },
                                            'multicapture': {
                                                'type': ['object', 'null'],
                                                'description': 'Multicapture details',
                                                'properties': {
                                                    'status': {'type': 'string'},
                                                },
                                            },
                                            'network': {'type': 'string', 'description': 'Card network'},
                                            'network_token': {
                                                'type': ['object', 'null'],
                                                'description': 'Network token details',
                                                'properties': {
                                                    'used': {'type': 'boolean'},
                                                },
                                            },
                                            'network_transaction_id': {
                                                'type': ['string', 'null'],
                                                'description': 'Network transaction identifier',
                                            },
                                            'overcapture': {
                                                'type': ['object', 'null'],
                                                'description': 'Overcapture details',
                                                'properties': {
                                                    'maximum_amount_capturable': {'type': 'integer'},
                                                    'status': {'type': 'string'},
                                                },
                                            },
                                            'regulated_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Regulated status of the card',
                                            },
                                            'three_d_secure': {
                                                'type': ['object', 'null'],
                                                'description': '3D Secure details',
                                            },
                                            'wallet': {
                                                'type': ['object', 'null'],
                                                'description': 'Digital wallet details if used',
                                            },
                                        },
                                    },
                                },
                            },
                            'presentment_details': {
                                'type': ['object', 'null'],
                                'description': 'Currency presentation information for multi-currency charges',
                                'properties': {
                                    'amount_authorized': {
                                        'type': ['integer', 'null'],
                                        'description': 'Amount authorized in the presentment currency',
                                    },
                                    'amount_charged': {
                                        'type': ['integer', 'null'],
                                        'description': 'Amount charged in the presentment currency',
                                    },
                                    'currency': {
                                        'type': ['string', 'null'],
                                        'description': 'Three-letter ISO currency code for presentment',
                                    },
                                },
                            },
                            'receipt_email': {
                                'type': ['string', 'null'],
                                'description': 'The email address that the receipt for this charge was sent to',
                            },
                            'receipt_number': {
                                'type': ['string', 'null'],
                                'description': 'The transaction number that appears on email receipts',
                            },
                            'receipt_url': {
                                'type': ['string', 'null'],
                                'description': 'URL to view the receipt for this charge',
                            },
                            'refunded': {'type': 'boolean', 'description': 'Whether the charge has been fully refunded'},
                            'refunds': {
                                'type': ['object', 'null'],
                                'description': 'A list of refunds that have been applied to the charge',
                                'properties': {
                                    'object': {
                                        'type': 'string',
                                        'enum': ['list'],
                                    },
                                    'data': {
                                        'type': 'array',
                                        'items': {'type': 'object'},
                                    },
                                    'has_more': {'type': 'boolean'},
                                    'total_count': {'type': 'integer', 'description': 'Total number of refunds'},
                                    'url': {'type': 'string', 'description': 'URL to access the refunds list'},
                                },
                            },
                            'review': {
                                'type': ['string', 'null'],
                                'description': 'ID of the review associated with this charge if one exists',
                            },
                            'shipping': {
                                'type': ['object', 'null'],
                                'description': 'Shipping information for the charge',
                            },
                            'source': {
                                'type': ['object', 'null'],
                                'description': 'The payment source used for this charge',
                                'additionalProperties': True,
                            },
                            'source_transfer': {
                                'type': ['string', 'null'],
                                'description': 'The transfer which created this charge',
                            },
                            'statement_descriptor': {
                                'type': ['string', 'null'],
                                'description': 'For card charges, statement descriptor suffix',
                            },
                            'statement_descriptor_suffix': {
                                'type': ['string', 'null'],
                                'description': 'Provides information about the charge that customers see on their statements',
                            },
                            'status': {
                                'type': 'string',
                                'enum': ['succeeded', 'pending', 'failed'],
                                'description': 'The status of the payment',
                            },
                            'transfer_data': {
                                'type': ['object', 'null'],
                                'description': 'An optional dictionary including the account to automatically transfer to',
                            },
                            'transfer_group': {
                                'type': ['string', 'null'],
                                'description': 'A string that identifies this transaction as part of a group',
                            },
                            'captured': {'type': 'boolean', 'description': 'If the charge was created without capturing, this Boolean represents whether it is still uncaptured'},
                            'balance_transaction': {
                                'type': ['string', 'null'],
                                'description': 'ID of the balance transaction that describes the impact on your account balance',
                            },
                            'billing_details': {
                                'type': 'object',
                                'description': 'Billing information associated with the payment method',
                                'properties': {
                                    'address': {
                                        'type': ['object', 'null'],
                                        'properties': {
                                            'city': {
                                                'type': ['string', 'null'],
                                            },
                                            'country': {
                                                'type': ['string', 'null'],
                                            },
                                            'line1': {
                                                'type': ['string', 'null'],
                                            },
                                            'line2': {
                                                'type': ['string', 'null'],
                                            },
                                            'postal_code': {
                                                'type': ['string', 'null'],
                                            },
                                            'state': {
                                                'type': ['string', 'null'],
                                            },
                                        },
                                    },
                                    'email': {
                                        'type': ['string', 'null'],
                                    },
                                    'name': {
                                        'type': ['string', 'null'],
                                    },
                                    'phone': {
                                        'type': ['string', 'null'],
                                    },
                                    'tax_id': {
                                        'type': ['string', 'null'],
                                    },
                                },
                            },
                            'metadata': {
                                'type': 'object',
                                'additionalProperties': {'type': 'string'},
                                'description': 'Set of key-value pairs for storing additional information',
                            },
                            'radar_options': {
                                'type': ['object', 'null'],
                                'description': 'Options to configure Radar',
                                'additionalProperties': True,
                            },
                        },
                        'x-airbyte-entity-name': 'charges',
                    },
                ),
                Action.API_SEARCH: EndpointDefinition(
                    method='GET',
                    path='/v1/charges/search',
                    action=Action.API_SEARCH,
                    description="Search for charges using Stripe's Search Query Language",
                    query_params=['query', 'limit', 'page'],
                    query_params_schema={
                        'query': {'type': 'string', 'required': True},
                        'limit': {'type': 'integer', 'required': False},
                        'page': {'type': 'string', 'required': False},
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['search_result'],
                            },
                            'data': {
                                'type': 'array',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the charge'},
                                        'object': {
                                            'type': 'string',
                                            'description': "String representing the object's type",
                                            'enum': ['charge'],
                                        },
                                        'created': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'Time at which the charge was created (Unix timestamp)',
                                        },
                                        'livemode': {'type': 'boolean', 'description': 'Whether this is a live or test mode object'},
                                        'amount': {'type': 'integer', 'description': 'Amount intended to be collected by this charge (in smallest currency unit)'},
                                        'amount_captured': {'type': 'integer', 'description': 'Amount captured (can be less than the amount attribute for partial captures)'},
                                        'amount_refunded': {'type': 'integer', 'description': 'Amount refunded (can be less than the amount attribute for partial refunds)'},
                                        'amount_updates': {
                                            'type': ['array', 'null'],
                                            'description': 'A list of amount updates for this charge',
                                            'items': {'type': 'object'},
                                        },
                                        'application': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the Connect application that created the charge',
                                        },
                                        'application_fee': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the application fee for this charge',
                                        },
                                        'application_fee_amount': {
                                            'type': ['integer', 'null'],
                                            'description': 'Amount in cents of the application fee',
                                        },
                                        'calculated_statement_descriptor': {
                                            'type': ['string', 'null'],
                                            'description': 'The full statement descriptor that is passed to card networks',
                                        },
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                        'customer': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the customer this charge is for if one exists',
                                        },
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': 'An arbitrary string attached to the charge',
                                        },
                                        'destination': {
                                            'type': ['string', 'null'],
                                            'description': 'The account to which this charge is being transferred to',
                                        },
                                        'dispute': {
                                            'type': ['string', 'null'],
                                            'description': 'Details about the dispute if the charge has been disputed',
                                        },
                                        'disputed': {'type': 'boolean', 'description': 'Whether the charge has been disputed'},
                                        'failure_balance_transaction': {
                                            'type': ['string', 'null'],
                                            'description': 'Transaction that represents the amount returned to your available balance',
                                        },
                                        'failure_code': {
                                            'type': ['string', 'null'],
                                            'description': 'Error code explaining reason for charge failure if available',
                                        },
                                        'failure_message': {
                                            'type': ['string', 'null'],
                                            'description': 'Message to user further explaining reason for charge failure if available',
                                        },
                                        'fraud_details': {
                                            'type': ['object', 'null'],
                                            'description': 'Information on fraud assessments for the charge',
                                            'properties': {
                                                'stripe_report': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Assessments from Stripe. If set, the value is `fraudulent`.',
                                                },
                                                'user_report': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Assessments from you or your users. Possible values are `fraudulent` and `safe`',
                                                },
                                            },
                                        },
                                        'invoice': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the invoice this charge is for if one exists',
                                        },
                                        'on_behalf_of': {
                                            'type': ['string', 'null'],
                                            'description': 'The account (if any) the charge was made on behalf of',
                                        },
                                        'order': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the order this charge is for if one exists',
                                        },
                                        'outcome': {
                                            'type': ['object', 'null'],
                                            'description': 'Details about whether the payment was accepted, and why',
                                            'properties': {
                                                'advice_code': {
                                                    'type': ['string', 'null'],
                                                },
                                                'network_advice_code': {
                                                    'type': ['string', 'null'],
                                                },
                                                'network_decline_code': {
                                                    'type': ['string', 'null'],
                                                },
                                                'network_status': {'type': 'string'},
                                                'reason': {
                                                    'type': ['string', 'null'],
                                                },
                                                'risk_level': {'type': 'string'},
                                                'risk_score': {'type': 'integer'},
                                                'seller_message': {'type': 'string'},
                                                'type': {'type': 'string'},
                                            },
                                        },
                                        'paid': {'type': 'boolean', 'description': 'True if the charge succeeded, or was successfully authorized for later capture'},
                                        'payment_intent': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the PaymentIntent associated with this charge, if one exists',
                                        },
                                        'payment_method': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the payment method used in this charge',
                                        },
                                        'payment_method_details': {
                                            'type': ['object', 'null'],
                                            'description': 'Details about the payment method at the time of the transaction',
                                            'properties': {
                                                'type': {'type': 'string'},
                                                'card': {
                                                    'type': ['object', 'null'],
                                                    'properties': {
                                                        'amount_authorized': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'Amount authorized on the card',
                                                        },
                                                        'authorization_code': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Authorization code on the charge',
                                                        },
                                                        'brand': {'type': 'string', 'description': 'Card brand'},
                                                        'checks': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Check results by Card networks on Card address and CVC',
                                                            'properties': {
                                                                'address_line1_check': {
                                                                    'type': ['string', 'null'],
                                                                },
                                                                'address_postal_code_check': {
                                                                    'type': ['string', 'null'],
                                                                },
                                                                'cvc_check': {
                                                                    'type': ['string', 'null'],
                                                                },
                                                            },
                                                        },
                                                        'country': {'type': 'string', 'description': 'Two-letter ISO code representing the country of the card'},
                                                        'exp_month': {'type': 'integer', 'description': "Two-digit number representing the card's expiration month"},
                                                        'exp_year': {'type': 'integer', 'description': "Four-digit number representing the card's expiration year"},
                                                        'extended_authorization': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Extended authorization details',
                                                            'properties': {
                                                                'status': {'type': 'string'},
                                                            },
                                                        },
                                                        'fingerprint': {'type': 'string', 'description': 'Uniquely identifies this particular card number'},
                                                        'funding': {'type': 'string', 'description': 'Card funding type'},
                                                        'incremental_authorization': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Incremental authorization details',
                                                            'properties': {
                                                                'status': {'type': 'string'},
                                                            },
                                                        },
                                                        'installments': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Installment details',
                                                        },
                                                        'last4': {'type': 'string', 'description': 'The last four digits of the card'},
                                                        'mandate': {
                                                            'type': ['string', 'null'],
                                                            'description': 'ID of the mandate used to make this payment',
                                                        },
                                                        'multicapture': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Multicapture details',
                                                            'properties': {
                                                                'status': {'type': 'string'},
                                                            },
                                                        },
                                                        'network': {'type': 'string', 'description': 'Card network'},
                                                        'network_token': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Network token details',
                                                            'properties': {
                                                                'used': {'type': 'boolean'},
                                                            },
                                                        },
                                                        'network_transaction_id': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Network transaction identifier',
                                                        },
                                                        'overcapture': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Overcapture details',
                                                            'properties': {
                                                                'maximum_amount_capturable': {'type': 'integer'},
                                                                'status': {'type': 'string'},
                                                            },
                                                        },
                                                        'regulated_status': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Regulated status of the card',
                                                        },
                                                        'three_d_secure': {
                                                            'type': ['object', 'null'],
                                                            'description': '3D Secure details',
                                                        },
                                                        'wallet': {
                                                            'type': ['object', 'null'],
                                                            'description': 'Digital wallet details if used',
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                        'presentment_details': {
                                            'type': ['object', 'null'],
                                            'description': 'Currency presentation information for multi-currency charges',
                                            'properties': {
                                                'amount_authorized': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount authorized in the presentment currency',
                                                },
                                                'amount_charged': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount charged in the presentment currency',
                                                },
                                                'currency': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Three-letter ISO currency code for presentment',
                                                },
                                            },
                                        },
                                        'receipt_email': {
                                            'type': ['string', 'null'],
                                            'description': 'The email address that the receipt for this charge was sent to',
                                        },
                                        'receipt_number': {
                                            'type': ['string', 'null'],
                                            'description': 'The transaction number that appears on email receipts',
                                        },
                                        'receipt_url': {
                                            'type': ['string', 'null'],
                                            'description': 'URL to view the receipt for this charge',
                                        },
                                        'refunded': {'type': 'boolean', 'description': 'Whether the charge has been fully refunded'},
                                        'refunds': {
                                            'type': ['object', 'null'],
                                            'description': 'A list of refunds that have been applied to the charge',
                                            'properties': {
                                                'object': {
                                                    'type': 'string',
                                                    'enum': ['list'],
                                                },
                                                'data': {
                                                    'type': 'array',
                                                    'items': {'type': 'object'},
                                                },
                                                'has_more': {'type': 'boolean'},
                                                'total_count': {'type': 'integer', 'description': 'Total number of refunds'},
                                                'url': {'type': 'string', 'description': 'URL to access the refunds list'},
                                            },
                                        },
                                        'review': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the review associated with this charge if one exists',
                                        },
                                        'shipping': {
                                            'type': ['object', 'null'],
                                            'description': 'Shipping information for the charge',
                                        },
                                        'source': {
                                            'type': ['object', 'null'],
                                            'description': 'The payment source used for this charge',
                                            'additionalProperties': True,
                                        },
                                        'source_transfer': {
                                            'type': ['string', 'null'],
                                            'description': 'The transfer which created this charge',
                                        },
                                        'statement_descriptor': {
                                            'type': ['string', 'null'],
                                            'description': 'For card charges, statement descriptor suffix',
                                        },
                                        'statement_descriptor_suffix': {
                                            'type': ['string', 'null'],
                                            'description': 'Provides information about the charge that customers see on their statements',
                                        },
                                        'status': {
                                            'type': 'string',
                                            'enum': ['succeeded', 'pending', 'failed'],
                                            'description': 'The status of the payment',
                                        },
                                        'transfer_data': {
                                            'type': ['object', 'null'],
                                            'description': 'An optional dictionary including the account to automatically transfer to',
                                        },
                                        'transfer_group': {
                                            'type': ['string', 'null'],
                                            'description': 'A string that identifies this transaction as part of a group',
                                        },
                                        'captured': {'type': 'boolean', 'description': 'If the charge was created without capturing, this Boolean represents whether it is still uncaptured'},
                                        'balance_transaction': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the balance transaction that describes the impact on your account balance',
                                        },
                                        'billing_details': {
                                            'type': 'object',
                                            'description': 'Billing information associated with the payment method',
                                            'properties': {
                                                'address': {
                                                    'type': ['object', 'null'],
                                                    'properties': {
                                                        'city': {
                                                            'type': ['string', 'null'],
                                                        },
                                                        'country': {
                                                            'type': ['string', 'null'],
                                                        },
                                                        'line1': {
                                                            'type': ['string', 'null'],
                                                        },
                                                        'line2': {
                                                            'type': ['string', 'null'],
                                                        },
                                                        'postal_code': {
                                                            'type': ['string', 'null'],
                                                        },
                                                        'state': {
                                                            'type': ['string', 'null'],
                                                        },
                                                    },
                                                },
                                                'email': {
                                                    'type': ['string', 'null'],
                                                },
                                                'name': {
                                                    'type': ['string', 'null'],
                                                },
                                                'phone': {
                                                    'type': ['string', 'null'],
                                                },
                                                'tax_id': {
                                                    'type': ['string', 'null'],
                                                },
                                            },
                                        },
                                        'metadata': {
                                            'type': 'object',
                                            'additionalProperties': {'type': 'string'},
                                            'description': 'Set of key-value pairs for storing additional information',
                                        },
                                        'radar_options': {
                                            'type': ['object', 'null'],
                                            'description': 'Options to configure Radar',
                                            'additionalProperties': True,
                                        },
                                    },
                                    'x-airbyte-entity-name': 'charges',
                                },
                            },
                            'has_more': {'type': 'boolean', 'description': 'Whether there are more results available'},
                            'next_page': {
                                'type': ['string', 'null'],
                                'description': 'Cursor for the next page of results',
                            },
                            'url': {'type': 'string', 'description': 'The URL for accessing this list'},
                        },
                    },
                ),
            },
            entity_schema={
                'type': 'object',
                'properties': {
                    'id': {'type': 'string', 'description': 'Unique identifier for the charge'},
                    'object': {
                        'type': 'string',
                        'description': "String representing the object's type",
                        'enum': ['charge'],
                    },
                    'created': {
                        'type': 'integer',
                        'format': 'int64',
                        'description': 'Time at which the charge was created (Unix timestamp)',
                    },
                    'livemode': {'type': 'boolean', 'description': 'Whether this is a live or test mode object'},
                    'amount': {'type': 'integer', 'description': 'Amount intended to be collected by this charge (in smallest currency unit)'},
                    'amount_captured': {'type': 'integer', 'description': 'Amount captured (can be less than the amount attribute for partial captures)'},
                    'amount_refunded': {'type': 'integer', 'description': 'Amount refunded (can be less than the amount attribute for partial refunds)'},
                    'amount_updates': {
                        'type': ['array', 'null'],
                        'description': 'A list of amount updates for this charge',
                        'items': {'type': 'object'},
                    },
                    'application': {
                        'type': ['string', 'null'],
                        'description': 'ID of the Connect application that created the charge',
                    },
                    'application_fee': {
                        'type': ['string', 'null'],
                        'description': 'ID of the application fee for this charge',
                    },
                    'application_fee_amount': {
                        'type': ['integer', 'null'],
                        'description': 'Amount in cents of the application fee',
                    },
                    'calculated_statement_descriptor': {
                        'type': ['string', 'null'],
                        'description': 'The full statement descriptor that is passed to card networks',
                    },
                    'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                    'customer': {
                        'type': ['string', 'null'],
                        'description': 'ID of the customer this charge is for if one exists',
                    },
                    'description': {
                        'type': ['string', 'null'],
                        'description': 'An arbitrary string attached to the charge',
                    },
                    'destination': {
                        'type': ['string', 'null'],
                        'description': 'The account to which this charge is being transferred to',
                    },
                    'dispute': {
                        'type': ['string', 'null'],
                        'description': 'Details about the dispute if the charge has been disputed',
                    },
                    'disputed': {'type': 'boolean', 'description': 'Whether the charge has been disputed'},
                    'failure_balance_transaction': {
                        'type': ['string', 'null'],
                        'description': 'Transaction that represents the amount returned to your available balance',
                    },
                    'failure_code': {
                        'type': ['string', 'null'],
                        'description': 'Error code explaining reason for charge failure if available',
                    },
                    'failure_message': {
                        'type': ['string', 'null'],
                        'description': 'Message to user further explaining reason for charge failure if available',
                    },
                    'fraud_details': {
                        'type': ['object', 'null'],
                        'description': 'Information on fraud assessments for the charge',
                        'properties': {
                            'stripe_report': {
                                'type': ['string', 'null'],
                                'description': 'Assessments from Stripe. If set, the value is `fraudulent`.',
                            },
                            'user_report': {
                                'type': ['string', 'null'],
                                'description': 'Assessments from you or your users. Possible values are `fraudulent` and `safe`',
                            },
                        },
                    },
                    'invoice': {
                        'type': ['string', 'null'],
                        'description': 'ID of the invoice this charge is for if one exists',
                    },
                    'on_behalf_of': {
                        'type': ['string', 'null'],
                        'description': 'The account (if any) the charge was made on behalf of',
                    },
                    'order': {
                        'type': ['string', 'null'],
                        'description': 'ID of the order this charge is for if one exists',
                    },
                    'outcome': {
                        'type': ['object', 'null'],
                        'description': 'Details about whether the payment was accepted, and why',
                        'properties': {
                            'advice_code': {
                                'type': ['string', 'null'],
                            },
                            'network_advice_code': {
                                'type': ['string', 'null'],
                            },
                            'network_decline_code': {
                                'type': ['string', 'null'],
                            },
                            'network_status': {'type': 'string'},
                            'reason': {
                                'type': ['string', 'null'],
                            },
                            'risk_level': {'type': 'string'},
                            'risk_score': {'type': 'integer'},
                            'seller_message': {'type': 'string'},
                            'type': {'type': 'string'},
                        },
                    },
                    'paid': {'type': 'boolean', 'description': 'True if the charge succeeded, or was successfully authorized for later capture'},
                    'payment_intent': {
                        'type': ['string', 'null'],
                        'description': 'ID of the PaymentIntent associated with this charge, if one exists',
                    },
                    'payment_method': {
                        'type': ['string', 'null'],
                        'description': 'ID of the payment method used in this charge',
                    },
                    'payment_method_details': {
                        'type': ['object', 'null'],
                        'description': 'Details about the payment method at the time of the transaction',
                        'properties': {
                            'type': {'type': 'string'},
                            'card': {
                                'type': ['object', 'null'],
                                'properties': {
                                    'amount_authorized': {
                                        'type': ['integer', 'null'],
                                        'description': 'Amount authorized on the card',
                                    },
                                    'authorization_code': {
                                        'type': ['string', 'null'],
                                        'description': 'Authorization code on the charge',
                                    },
                                    'brand': {'type': 'string', 'description': 'Card brand'},
                                    'checks': {
                                        'type': ['object', 'null'],
                                        'description': 'Check results by Card networks on Card address and CVC',
                                        'properties': {
                                            'address_line1_check': {
                                                'type': ['string', 'null'],
                                            },
                                            'address_postal_code_check': {
                                                'type': ['string', 'null'],
                                            },
                                            'cvc_check': {
                                                'type': ['string', 'null'],
                                            },
                                        },
                                    },
                                    'country': {'type': 'string', 'description': 'Two-letter ISO code representing the country of the card'},
                                    'exp_month': {'type': 'integer', 'description': "Two-digit number representing the card's expiration month"},
                                    'exp_year': {'type': 'integer', 'description': "Four-digit number representing the card's expiration year"},
                                    'extended_authorization': {
                                        'type': ['object', 'null'],
                                        'description': 'Extended authorization details',
                                        'properties': {
                                            'status': {'type': 'string'},
                                        },
                                    },
                                    'fingerprint': {'type': 'string', 'description': 'Uniquely identifies this particular card number'},
                                    'funding': {'type': 'string', 'description': 'Card funding type'},
                                    'incremental_authorization': {
                                        'type': ['object', 'null'],
                                        'description': 'Incremental authorization details',
                                        'properties': {
                                            'status': {'type': 'string'},
                                        },
                                    },
                                    'installments': {
                                        'type': ['object', 'null'],
                                        'description': 'Installment details',
                                    },
                                    'last4': {'type': 'string', 'description': 'The last four digits of the card'},
                                    'mandate': {
                                        'type': ['string', 'null'],
                                        'description': 'ID of the mandate used to make this payment',
                                    },
                                    'multicapture': {
                                        'type': ['object', 'null'],
                                        'description': 'Multicapture details',
                                        'properties': {
                                            'status': {'type': 'string'},
                                        },
                                    },
                                    'network': {'type': 'string', 'description': 'Card network'},
                                    'network_token': {
                                        'type': ['object', 'null'],
                                        'description': 'Network token details',
                                        'properties': {
                                            'used': {'type': 'boolean'},
                                        },
                                    },
                                    'network_transaction_id': {
                                        'type': ['string', 'null'],
                                        'description': 'Network transaction identifier',
                                    },
                                    'overcapture': {
                                        'type': ['object', 'null'],
                                        'description': 'Overcapture details',
                                        'properties': {
                                            'maximum_amount_capturable': {'type': 'integer'},
                                            'status': {'type': 'string'},
                                        },
                                    },
                                    'regulated_status': {
                                        'type': ['string', 'null'],
                                        'description': 'Regulated status of the card',
                                    },
                                    'three_d_secure': {
                                        'type': ['object', 'null'],
                                        'description': '3D Secure details',
                                    },
                                    'wallet': {
                                        'type': ['object', 'null'],
                                        'description': 'Digital wallet details if used',
                                    },
                                },
                            },
                        },
                    },
                    'presentment_details': {
                        'type': ['object', 'null'],
                        'description': 'Currency presentation information for multi-currency charges',
                        'properties': {
                            'amount_authorized': {
                                'type': ['integer', 'null'],
                                'description': 'Amount authorized in the presentment currency',
                            },
                            'amount_charged': {
                                'type': ['integer', 'null'],
                                'description': 'Amount charged in the presentment currency',
                            },
                            'currency': {
                                'type': ['string', 'null'],
                                'description': 'Three-letter ISO currency code for presentment',
                            },
                        },
                    },
                    'receipt_email': {
                        'type': ['string', 'null'],
                        'description': 'The email address that the receipt for this charge was sent to',
                    },
                    'receipt_number': {
                        'type': ['string', 'null'],
                        'description': 'The transaction number that appears on email receipts',
                    },
                    'receipt_url': {
                        'type': ['string', 'null'],
                        'description': 'URL to view the receipt for this charge',
                    },
                    'refunded': {'type': 'boolean', 'description': 'Whether the charge has been fully refunded'},
                    'refunds': {
                        'type': ['object', 'null'],
                        'description': 'A list of refunds that have been applied to the charge',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['list'],
                            },
                            'data': {
                                'type': 'array',
                                'items': {'type': 'object'},
                            },
                            'has_more': {'type': 'boolean'},
                            'total_count': {'type': 'integer', 'description': 'Total number of refunds'},
                            'url': {'type': 'string', 'description': 'URL to access the refunds list'},
                        },
                    },
                    'review': {
                        'type': ['string', 'null'],
                        'description': 'ID of the review associated with this charge if one exists',
                    },
                    'shipping': {
                        'type': ['object', 'null'],
                        'description': 'Shipping information for the charge',
                    },
                    'source': {
                        'type': ['object', 'null'],
                        'description': 'The payment source used for this charge',
                        'additionalProperties': True,
                    },
                    'source_transfer': {
                        'type': ['string', 'null'],
                        'description': 'The transfer which created this charge',
                    },
                    'statement_descriptor': {
                        'type': ['string', 'null'],
                        'description': 'For card charges, statement descriptor suffix',
                    },
                    'statement_descriptor_suffix': {
                        'type': ['string', 'null'],
                        'description': 'Provides information about the charge that customers see on their statements',
                    },
                    'status': {
                        'type': 'string',
                        'enum': ['succeeded', 'pending', 'failed'],
                        'description': 'The status of the payment',
                    },
                    'transfer_data': {
                        'type': ['object', 'null'],
                        'description': 'An optional dictionary including the account to automatically transfer to',
                    },
                    'transfer_group': {
                        'type': ['string', 'null'],
                        'description': 'A string that identifies this transaction as part of a group',
                    },
                    'captured': {'type': 'boolean', 'description': 'If the charge was created without capturing, this Boolean represents whether it is still uncaptured'},
                    'balance_transaction': {
                        'type': ['string', 'null'],
                        'description': 'ID of the balance transaction that describes the impact on your account balance',
                    },
                    'billing_details': {
                        'type': 'object',
                        'description': 'Billing information associated with the payment method',
                        'properties': {
                            'address': {
                                'type': ['object', 'null'],
                                'properties': {
                                    'city': {
                                        'type': ['string', 'null'],
                                    },
                                    'country': {
                                        'type': ['string', 'null'],
                                    },
                                    'line1': {
                                        'type': ['string', 'null'],
                                    },
                                    'line2': {
                                        'type': ['string', 'null'],
                                    },
                                    'postal_code': {
                                        'type': ['string', 'null'],
                                    },
                                    'state': {
                                        'type': ['string', 'null'],
                                    },
                                },
                            },
                            'email': {
                                'type': ['string', 'null'],
                            },
                            'name': {
                                'type': ['string', 'null'],
                            },
                            'phone': {
                                'type': ['string', 'null'],
                            },
                            'tax_id': {
                                'type': ['string', 'null'],
                            },
                        },
                    },
                    'metadata': {
                        'type': 'object',
                        'additionalProperties': {'type': 'string'},
                        'description': 'Set of key-value pairs for storing additional information',
                    },
                    'radar_options': {
                        'type': ['object', 'null'],
                        'description': 'Options to configure Radar',
                        'additionalProperties': True,
                    },
                },
                'x-airbyte-entity-name': 'charges',
            },
        ),
        EntityDefinition(
            name='subscriptions',
            actions=[Action.LIST, Action.GET, Action.API_SEARCH],
            endpoints={
                Action.LIST: EndpointDefinition(
                    method='GET',
                    path='/v1/subscriptions',
                    action=Action.LIST,
                    description='By default, returns a list of subscriptions that have not been canceled',
                    query_params=[
                        'automatic_tax',
                        'collection_method',
                        'created',
                        'current_period_end',
                        'current_period_start',
                        'customer',
                        'customer_account',
                        'ending_before',
                        'limit',
                        'price',
                        'starting_after',
                        'status',
                    ],
                    query_params_schema={
                        'automatic_tax': {'type': 'object', 'required': False},
                        'collection_method': {'type': 'string', 'required': False},
                        'created': {'type': 'object', 'required': False},
                        'current_period_end': {'type': 'object', 'required': False},
                        'current_period_start': {'type': 'object', 'required': False},
                        'customer': {'type': 'string', 'required': False},
                        'customer_account': {'type': 'string', 'required': False},
                        'ending_before': {'type': 'string', 'required': False},
                        'limit': {'type': 'integer', 'required': False},
                        'price': {'type': 'string', 'required': False},
                        'starting_after': {'type': 'string', 'required': False},
                        'status': {'type': 'string', 'required': False},
                    },
                    deep_object_params=[
                        'automatic_tax',
                        'created',
                        'current_period_end',
                        'current_period_start',
                    ],
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['list'],
                            },
                            'data': {
                                'type': 'array',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                        'object': {
                                            'type': 'string',
                                            'description': "String representing the object's type",
                                            'enum': ['subscription'],
                                        },
                                        'application': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the Connect Application that created the subscription',
                                        },
                                        'application_fee_percent': {
                                            'type': ['number', 'null'],
                                            'format': 'float',
                                            'description': 'A non-negative decimal between 0 and 100, with at most two decimal places',
                                        },
                                        'automatic_tax': {
                                            'type': 'object',
                                            'description': 'Automatic tax settings for this subscription',
                                            'properties': {
                                                'disabled_reason': {
                                                    'type': ['string', 'null'],
                                                    'description': 'If Stripe disabled automatic tax, this enum describes why',
                                                },
                                                'enabled': {'type': 'boolean', 'description': 'Whether Stripe automatically computes tax on this subscription'},
                                                'liability': {
                                                    'type': ['object', 'null'],
                                                    'description': "The account that's liable for tax",
                                                    'properties': {
                                                        'account': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The connected account being referenced when type is account',
                                                        },
                                                        'type': {
                                                            'type': 'string',
                                                            'enum': ['account', 'self'],
                                                            'description': 'Type of the account referenced',
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                        'billing_cycle_anchor': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'The reference point that aligns future billing cycle dates',
                                        },
                                        'billing_cycle_anchor_config': {
                                            'type': ['object', 'null'],
                                            'description': 'The fixed values used to calculate the billing_cycle_anchor',
                                            'properties': {
                                                'day_of_month': {'type': 'integer', 'description': 'The day of the month of the billing_cycle_anchor'},
                                                'hour': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'The hour of the day of the billing_cycle_anchor',
                                                },
                                                'minute': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'The minute of the hour of the billing_cycle_anchor',
                                                },
                                                'month': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'The month to start full cycle billing periods',
                                                },
                                                'second': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'The second of the minute of the billing_cycle_anchor',
                                                },
                                            },
                                        },
                                        'billing_mode': {
                                            'type': 'object',
                                            'description': 'Controls how prorations and invoices for subscriptions are calculated and orchestrated',
                                            'properties': {
                                                'flexible': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Configure behavior for flexible billing mode',
                                                    'properties': {
                                                        'proration_discounts': {
                                                            'type': 'string',
                                                            'enum': ['included', 'itemized'],
                                                            'description': 'Controls how invoices and invoice items display proration amounts and discount amounts',
                                                        },
                                                    },
                                                },
                                                'type': {
                                                    'type': 'string',
                                                    'enum': ['classic', 'flexible'],
                                                    'description': 'Controls how prorations and invoices for subscriptions are calculated and orchestrated',
                                                },
                                                'updated_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'Details on when the current billing_mode was adopted',
                                                },
                                            },
                                        },
                                        'billing_thresholds': {
                                            'type': ['object', 'null'],
                                            'description': 'Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period',
                                            'properties': {
                                                'amount_gte': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Monetary threshold that triggers the subscription to create an invoice',
                                                },
                                                'reset_billing_cycle_anchor': {
                                                    'type': ['boolean', 'null'],
                                                    'description': 'Indicates if the billing_cycle_anchor should be reset when a threshold is reached',
                                                },
                                            },
                                        },
                                        'cancel_at': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'A date in the future at which the subscription will automatically get canceled',
                                        },
                                        'cancel_at_period_end': {'type': 'boolean', 'description': 'Whether this subscription will (if status=active) or did (if status=canceled) cancel at the end of the current billing period'},
                                        'canceled_at': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'If the subscription has been canceled, the date of that cancellation',
                                        },
                                        'cancellation_details': {
                                            'type': ['object', 'null'],
                                            'description': 'Details about why this subscription was cancelled',
                                            'properties': {
                                                'comment': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Additional comments about why the user canceled the subscription',
                                                },
                                                'feedback': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The customer submitted reason for why they canceled',
                                                },
                                                'reason': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Why this subscription was canceled',
                                                },
                                            },
                                        },
                                        'collection_method': {
                                            'type': 'string',
                                            'enum': ['charge_automatically', 'send_invoice'],
                                            'description': 'Either charge_automatically, or send_invoice',
                                        },
                                        'created': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'Time at which the object was created. Measured in seconds since the Unix epoch',
                                        },
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                        'customer': {'type': 'string', 'description': 'ID of the customer who owns the subscription'},
                                        'customer_account': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the account who owns the subscription',
                                        },
                                        'days_until_due': {
                                            'type': ['integer', 'null'],
                                            'description': 'Number of days a customer has to pay invoices generated by this subscription',
                                        },
                                        'default_payment_method': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the default payment method for the subscription',
                                        },
                                        'default_source': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the default payment source for the subscription',
                                        },
                                        'default_tax_rates': {
                                            'type': ['array', 'null'],
                                            'description': 'The tax rates that will apply to any subscription item that does not have tax_rates set',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                    'object': {'type': 'string', 'description': "String representing the object's type"},
                                                    'active': {'type': 'boolean', 'description': 'Defaults to true'},
                                                    'country': {
                                                        'type': ['string', 'null'],
                                                        'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                    },
                                                    'created': {
                                                        'type': 'integer',
                                                        'format': 'int64',
                                                        'description': 'Time at which the object was created',
                                                    },
                                                    'description': {
                                                        'type': ['string', 'null'],
                                                        'description': 'An arbitrary string attached to the tax rate for your internal use only',
                                                    },
                                                    'display_name': {'type': 'string', 'description': 'The display name of the tax rates'},
                                                    'effective_percentage': {
                                                        'type': ['number', 'null'],
                                                        'description': 'Actual/effective tax rate percentage out of 100',
                                                    },
                                                    'flat_amount': {
                                                        'type': ['object', 'null'],
                                                        'description': 'The amount of the tax rate when the rate_type is flat_amount',
                                                        'properties': {
                                                            'amount': {'type': 'integer', 'description': 'Amount of the tax when the rate_type is flat_amount'},
                                                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                                        },
                                                    },
                                                    'inclusive': {'type': 'boolean', 'description': 'This specifies if the tax rate is inclusive or exclusive'},
                                                    'jurisdiction': {
                                                        'type': ['string', 'null'],
                                                        'description': 'The jurisdiction for the tax rate',
                                                    },
                                                    'jurisdiction_level': {
                                                        'type': ['string', 'null'],
                                                        'enum': [
                                                            'city',
                                                            'country',
                                                            'county',
                                                            'district',
                                                            'multiple',
                                                            'state',
                                                        ],
                                                        'description': 'The level of the jurisdiction that imposes this tax rate',
                                                    },
                                                    'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                                    'metadata': {
                                                        'type': ['object', 'null'],
                                                        'description': 'Set of key-value pairs',
                                                        'additionalProperties': {'type': 'string'},
                                                    },
                                                    'percentage': {'type': 'number', 'description': 'Tax rate percentage out of 100'},
                                                    'rate_type': {
                                                        'type': ['string', 'null'],
                                                        'enum': ['flat_amount', 'percentage'],
                                                        'description': 'Indicates the type of tax rate applied to the taxable amount',
                                                    },
                                                    'state': {
                                                        'type': ['string', 'null'],
                                                        'description': 'ISO 3166-2 subdivision code, without country prefix',
                                                    },
                                                    'tax_type': {
                                                        'type': ['string', 'null'],
                                                        'enum': [
                                                            'amusement_tax',
                                                            'communications_tax',
                                                            'gst',
                                                            'hst',
                                                            'igst',
                                                            'jct',
                                                            'lease_tax',
                                                            'pst',
                                                            'qst',
                                                            'retail_delivery_fee',
                                                            'rst',
                                                            'sales_tax',
                                                            'service_tax',
                                                            'vat',
                                                        ],
                                                        'description': 'The high-level tax type',
                                                    },
                                                },
                                            },
                                        },
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': "The subscription's description, meant to be displayable to the customer",
                                        },
                                        'discounts': {
                                            'type': 'array',
                                            'items': {'type': 'string'},
                                            'description': 'The discounts applied to the subscription',
                                        },
                                        'ended_at': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'If the subscription has ended, the date the subscription ended',
                                        },
                                        'invoice_settings': {
                                            'type': 'object',
                                            'description': 'All invoices will be billed using the specified settings',
                                            'properties': {
                                                'account_tax_ids': {
                                                    'type': ['array', 'null'],
                                                    'description': 'The account tax IDs associated with the subscription',
                                                    'items': {'type': 'string'},
                                                },
                                                'issuer': {
                                                    'type': 'object',
                                                    'description': 'The connected account that issues the invoice',
                                                    'properties': {
                                                        'account': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The connected account being referenced when type is account',
                                                        },
                                                        'type': {
                                                            'type': 'string',
                                                            'enum': ['account', 'self'],
                                                            'description': 'Type of the account referenced',
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                        'items': {
                                            'type': 'object',
                                            'description': 'List of subscription items, each with an attached price',
                                            'properties': {
                                                'object': {
                                                    'type': 'string',
                                                    'enum': ['list'],
                                                    'description': "String representing the object's type",
                                                },
                                                'data': {
                                                    'type': 'array',
                                                    'description': 'Details about each object',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                            'object': {'type': 'string', 'description': "String representing the object's type"},
                                                            'billing_thresholds': {
                                                                'type': ['object', 'null'],
                                                                'description': 'Define thresholds at which an invoice will be sent',
                                                                'properties': {
                                                                    'usage_gte': {
                                                                        'type': ['integer', 'null'],
                                                                        'description': 'Usage threshold that triggers the subscription to create an invoice',
                                                                    },
                                                                },
                                                            },
                                                            'created': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': 'Time at which the object was created',
                                                            },
                                                            'current_period_end': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': "The end time of this subscription item's current billing period",
                                                            },
                                                            'current_period_start': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': "The start time of this subscription item's current billing period",
                                                            },
                                                            'discounts': {
                                                                'type': 'array',
                                                                'items': {'type': 'string'},
                                                                'description': 'The discounts applied to the subscription item',
                                                            },
                                                            'metadata': {
                                                                'type': 'object',
                                                                'description': 'Set of key-value pairs',
                                                                'additionalProperties': {'type': 'string'},
                                                            },
                                                            'plan': {
                                                                'type': ['object', 'null'],
                                                                'description': 'The plan the customer is subscribed to (deprecated, use price instead)',
                                                                'additionalProperties': True,
                                                            },
                                                            'price': {
                                                                'type': 'object',
                                                                'description': 'The price the customer is subscribed to',
                                                                'additionalProperties': True,
                                                            },
                                                            'quantity': {
                                                                'type': ['integer', 'null'],
                                                                'description': 'The quantity of the plan to which the customer should be subscribed',
                                                            },
                                                            'subscription': {'type': 'string', 'description': 'The subscription this subscription_item belongs to'},
                                                            'tax_rates': {
                                                                'type': ['array', 'null'],
                                                                'description': 'The tax rates which apply to this subscription_item',
                                                                'items': {'type': 'object', 'additionalProperties': True},
                                                            },
                                                        },
                                                    },
                                                },
                                                'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                                                'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                                'total_count': {'type': 'integer', 'description': 'The total count of items in the list'},
                                            },
                                        },
                                        'latest_invoice': {
                                            'type': ['string', 'null'],
                                            'description': 'The most recent invoice this subscription has generated',
                                        },
                                        'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                        'metadata': {
                                            'type': 'object',
                                            'additionalProperties': {'type': 'string'},
                                            'description': 'Set of key-value pairs',
                                        },
                                        'next_pending_invoice_item_invoice': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'Specifies the approximate timestamp on which any pending invoice items will be billed',
                                        },
                                        'on_behalf_of': {
                                            'type': ['string', 'null'],
                                            'description': 'The account (if any) the charge was made on behalf of for charges associated with this subscription',
                                        },
                                        'pause_collection': {
                                            'type': ['object', 'null'],
                                            'description': 'If specified, payment collection for this subscription will be paused',
                                            'properties': {
                                                'behavior': {
                                                    'type': 'string',
                                                    'enum': ['keep_as_draft', 'mark_uncollectible', 'void'],
                                                    'description': 'The payment collection behavior for this subscription while paused',
                                                },
                                                'resumes_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'The time after which the subscription will resume collecting payments',
                                                },
                                            },
                                        },
                                        'payment_settings': {
                                            'type': ['object', 'null'],
                                            'description': 'Payment settings passed on to invoices created by the subscription',
                                            'properties': {
                                                'payment_method_options': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Payment-method-specific configuration to provide to invoices',
                                                    'additionalProperties': True,
                                                },
                                                'payment_method_types': {
                                                    'type': ['array', 'null'],
                                                    'description': 'The list of payment method types to provide to every invoice',
                                                    'items': {'type': 'string'},
                                                },
                                            },
                                        },
                                        'status': {
                                            'type': 'string',
                                            'enum': [
                                                'incomplete',
                                                'incomplete_expired',
                                                'trialing',
                                                'active',
                                                'past_due',
                                                'canceled',
                                                'unpaid',
                                                'paused',
                                            ],
                                            'description': 'The status of the subscription',
                                        },
                                        'current_period_start': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'Start of the current period for which the subscription has been invoiced',
                                        },
                                        'current_period_end': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'End of the current period for which the subscription has been invoiced',
                                        },
                                        'start_date': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'Date when the subscription was first created',
                                        },
                                        'trial_start': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'If the subscription has a trial, the beginning of that trial',
                                        },
                                        'trial_end': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'If the subscription has a trial, the end of that trial',
                                        },
                                        'discount': {
                                            'type': ['object', 'null'],
                                            'description': 'The discount applied to the subscription',
                                        },
                                        'plan': {
                                            'type': ['object', 'null'],
                                            'description': 'The subscription plan (deprecated, use price instead)',
                                        },
                                        'quantity': {
                                            'type': ['integer', 'null'],
                                            'description': 'The quantity of the subscription',
                                        },
                                        'schedule': {
                                            'type': ['string', 'null'],
                                            'description': 'The schedule attached to the subscription',
                                        },
                                        'test_clock': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the test clock this subscription belongs to',
                                        },
                                        'transfer_data': {
                                            'type': ['object', 'null'],
                                            'description': "The account (if any) the subscription's payments will be attributed to for tax reporting",
                                        },
                                        'trial_settings': {
                                            'type': ['object', 'null'],
                                            'description': 'Settings related to subscription trials',
                                            'properties': {
                                                'end_behavior': {
                                                    'type': 'object',
                                                    'properties': {
                                                        'missing_payment_method': {'type': 'string', 'description': 'Behavior when the trial ends and payment method is missing'},
                                                    },
                                                },
                                            },
                                        },
                                        'pending_invoice_item_interval': {
                                            'type': ['object', 'null'],
                                            'description': 'Specifies an interval for how often to bill for any pending invoice items',
                                        },
                                        'pending_setup_intent': {
                                            'type': ['string', 'null'],
                                            'description': 'The ID of the SetupIntent to be confirmed',
                                        },
                                        'pending_update': {
                                            'type': ['object', 'null'],
                                            'description': 'If specified, pending updates that will be applied to the subscription once the latest_invoice has been paid',
                                        },
                                    },
                                    'x-airbyte-entity-name': 'subscriptions',
                                },
                            },
                            'has_more': {'type': 'boolean'},
                            'url': {'type': 'string'},
                        },
                    },
                    record_extractor='$.data',
                    meta_extractor={'has_more': '$.has_more'},
                ),
                Action.GET: EndpointDefinition(
                    method='GET',
                    path='/v1/subscriptions/{id}',
                    action=Action.GET,
                    description='Retrieves the subscription with the given ID',
                    path_params=['id'],
                    path_params_schema={
                        'id': {'type': 'string', 'required': True},
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                            'object': {
                                'type': 'string',
                                'description': "String representing the object's type",
                                'enum': ['subscription'],
                            },
                            'application': {
                                'type': ['string', 'null'],
                                'description': 'ID of the Connect Application that created the subscription',
                            },
                            'application_fee_percent': {
                                'type': ['number', 'null'],
                                'format': 'float',
                                'description': 'A non-negative decimal between 0 and 100, with at most two decimal places',
                            },
                            'automatic_tax': {
                                'type': 'object',
                                'description': 'Automatic tax settings for this subscription',
                                'properties': {
                                    'disabled_reason': {
                                        'type': ['string', 'null'],
                                        'description': 'If Stripe disabled automatic tax, this enum describes why',
                                    },
                                    'enabled': {'type': 'boolean', 'description': 'Whether Stripe automatically computes tax on this subscription'},
                                    'liability': {
                                        'type': ['object', 'null'],
                                        'description': "The account that's liable for tax",
                                        'properties': {
                                            'account': {
                                                'type': ['string', 'null'],
                                                'description': 'The connected account being referenced when type is account',
                                            },
                                            'type': {
                                                'type': 'string',
                                                'enum': ['account', 'self'],
                                                'description': 'Type of the account referenced',
                                            },
                                        },
                                    },
                                },
                            },
                            'billing_cycle_anchor': {
                                'type': 'integer',
                                'format': 'int64',
                                'description': 'The reference point that aligns future billing cycle dates',
                            },
                            'billing_cycle_anchor_config': {
                                'type': ['object', 'null'],
                                'description': 'The fixed values used to calculate the billing_cycle_anchor',
                                'properties': {
                                    'day_of_month': {'type': 'integer', 'description': 'The day of the month of the billing_cycle_anchor'},
                                    'hour': {
                                        'type': ['integer', 'null'],
                                        'description': 'The hour of the day of the billing_cycle_anchor',
                                    },
                                    'minute': {
                                        'type': ['integer', 'null'],
                                        'description': 'The minute of the hour of the billing_cycle_anchor',
                                    },
                                    'month': {
                                        'type': ['integer', 'null'],
                                        'description': 'The month to start full cycle billing periods',
                                    },
                                    'second': {
                                        'type': ['integer', 'null'],
                                        'description': 'The second of the minute of the billing_cycle_anchor',
                                    },
                                },
                            },
                            'billing_mode': {
                                'type': 'object',
                                'description': 'Controls how prorations and invoices for subscriptions are calculated and orchestrated',
                                'properties': {
                                    'flexible': {
                                        'type': ['object', 'null'],
                                        'description': 'Configure behavior for flexible billing mode',
                                        'properties': {
                                            'proration_discounts': {
                                                'type': 'string',
                                                'enum': ['included', 'itemized'],
                                                'description': 'Controls how invoices and invoice items display proration amounts and discount amounts',
                                            },
                                        },
                                    },
                                    'type': {
                                        'type': 'string',
                                        'enum': ['classic', 'flexible'],
                                        'description': 'Controls how prorations and invoices for subscriptions are calculated and orchestrated',
                                    },
                                    'updated_at': {
                                        'type': ['integer', 'null'],
                                        'format': 'int64',
                                        'description': 'Details on when the current billing_mode was adopted',
                                    },
                                },
                            },
                            'billing_thresholds': {
                                'type': ['object', 'null'],
                                'description': 'Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period',
                                'properties': {
                                    'amount_gte': {
                                        'type': ['integer', 'null'],
                                        'description': 'Monetary threshold that triggers the subscription to create an invoice',
                                    },
                                    'reset_billing_cycle_anchor': {
                                        'type': ['boolean', 'null'],
                                        'description': 'Indicates if the billing_cycle_anchor should be reset when a threshold is reached',
                                    },
                                },
                            },
                            'cancel_at': {
                                'type': ['integer', 'null'],
                                'format': 'int64',
                                'description': 'A date in the future at which the subscription will automatically get canceled',
                            },
                            'cancel_at_period_end': {'type': 'boolean', 'description': 'Whether this subscription will (if status=active) or did (if status=canceled) cancel at the end of the current billing period'},
                            'canceled_at': {
                                'type': ['integer', 'null'],
                                'format': 'int64',
                                'description': 'If the subscription has been canceled, the date of that cancellation',
                            },
                            'cancellation_details': {
                                'type': ['object', 'null'],
                                'description': 'Details about why this subscription was cancelled',
                                'properties': {
                                    'comment': {
                                        'type': ['string', 'null'],
                                        'description': 'Additional comments about why the user canceled the subscription',
                                    },
                                    'feedback': {
                                        'type': ['string', 'null'],
                                        'description': 'The customer submitted reason for why they canceled',
                                    },
                                    'reason': {
                                        'type': ['string', 'null'],
                                        'description': 'Why this subscription was canceled',
                                    },
                                },
                            },
                            'collection_method': {
                                'type': 'string',
                                'enum': ['charge_automatically', 'send_invoice'],
                                'description': 'Either charge_automatically, or send_invoice',
                            },
                            'created': {
                                'type': 'integer',
                                'format': 'int64',
                                'description': 'Time at which the object was created. Measured in seconds since the Unix epoch',
                            },
                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                            'customer': {'type': 'string', 'description': 'ID of the customer who owns the subscription'},
                            'customer_account': {
                                'type': ['string', 'null'],
                                'description': 'ID of the account who owns the subscription',
                            },
                            'days_until_due': {
                                'type': ['integer', 'null'],
                                'description': 'Number of days a customer has to pay invoices generated by this subscription',
                            },
                            'default_payment_method': {
                                'type': ['string', 'null'],
                                'description': 'ID of the default payment method for the subscription',
                            },
                            'default_source': {
                                'type': ['string', 'null'],
                                'description': 'ID of the default payment source for the subscription',
                            },
                            'default_tax_rates': {
                                'type': ['array', 'null'],
                                'description': 'The tax rates that will apply to any subscription item that does not have tax_rates set',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                        'object': {'type': 'string', 'description': "String representing the object's type"},
                                        'active': {'type': 'boolean', 'description': 'Defaults to true'},
                                        'country': {
                                            'type': ['string', 'null'],
                                            'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                        },
                                        'created': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'Time at which the object was created',
                                        },
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': 'An arbitrary string attached to the tax rate for your internal use only',
                                        },
                                        'display_name': {'type': 'string', 'description': 'The display name of the tax rates'},
                                        'effective_percentage': {
                                            'type': ['number', 'null'],
                                            'description': 'Actual/effective tax rate percentage out of 100',
                                        },
                                        'flat_amount': {
                                            'type': ['object', 'null'],
                                            'description': 'The amount of the tax rate when the rate_type is flat_amount',
                                            'properties': {
                                                'amount': {'type': 'integer', 'description': 'Amount of the tax when the rate_type is flat_amount'},
                                                'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                            },
                                        },
                                        'inclusive': {'type': 'boolean', 'description': 'This specifies if the tax rate is inclusive or exclusive'},
                                        'jurisdiction': {
                                            'type': ['string', 'null'],
                                            'description': 'The jurisdiction for the tax rate',
                                        },
                                        'jurisdiction_level': {
                                            'type': ['string', 'null'],
                                            'enum': [
                                                'city',
                                                'country',
                                                'county',
                                                'district',
                                                'multiple',
                                                'state',
                                            ],
                                            'description': 'The level of the jurisdiction that imposes this tax rate',
                                        },
                                        'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                        'metadata': {
                                            'type': ['object', 'null'],
                                            'description': 'Set of key-value pairs',
                                            'additionalProperties': {'type': 'string'},
                                        },
                                        'percentage': {'type': 'number', 'description': 'Tax rate percentage out of 100'},
                                        'rate_type': {
                                            'type': ['string', 'null'],
                                            'enum': ['flat_amount', 'percentage'],
                                            'description': 'Indicates the type of tax rate applied to the taxable amount',
                                        },
                                        'state': {
                                            'type': ['string', 'null'],
                                            'description': 'ISO 3166-2 subdivision code, without country prefix',
                                        },
                                        'tax_type': {
                                            'type': ['string', 'null'],
                                            'enum': [
                                                'amusement_tax',
                                                'communications_tax',
                                                'gst',
                                                'hst',
                                                'igst',
                                                'jct',
                                                'lease_tax',
                                                'pst',
                                                'qst',
                                                'retail_delivery_fee',
                                                'rst',
                                                'sales_tax',
                                                'service_tax',
                                                'vat',
                                            ],
                                            'description': 'The high-level tax type',
                                        },
                                    },
                                },
                            },
                            'description': {
                                'type': ['string', 'null'],
                                'description': "The subscription's description, meant to be displayable to the customer",
                            },
                            'discounts': {
                                'type': 'array',
                                'items': {'type': 'string'},
                                'description': 'The discounts applied to the subscription',
                            },
                            'ended_at': {
                                'type': ['integer', 'null'],
                                'format': 'int64',
                                'description': 'If the subscription has ended, the date the subscription ended',
                            },
                            'invoice_settings': {
                                'type': 'object',
                                'description': 'All invoices will be billed using the specified settings',
                                'properties': {
                                    'account_tax_ids': {
                                        'type': ['array', 'null'],
                                        'description': 'The account tax IDs associated with the subscription',
                                        'items': {'type': 'string'},
                                    },
                                    'issuer': {
                                        'type': 'object',
                                        'description': 'The connected account that issues the invoice',
                                        'properties': {
                                            'account': {
                                                'type': ['string', 'null'],
                                                'description': 'The connected account being referenced when type is account',
                                            },
                                            'type': {
                                                'type': 'string',
                                                'enum': ['account', 'self'],
                                                'description': 'Type of the account referenced',
                                            },
                                        },
                                    },
                                },
                            },
                            'items': {
                                'type': 'object',
                                'description': 'List of subscription items, each with an attached price',
                                'properties': {
                                    'object': {
                                        'type': 'string',
                                        'enum': ['list'],
                                        'description': "String representing the object's type",
                                    },
                                    'data': {
                                        'type': 'array',
                                        'description': 'Details about each object',
                                        'items': {
                                            'type': 'object',
                                            'properties': {
                                                'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                'object': {'type': 'string', 'description': "String representing the object's type"},
                                                'billing_thresholds': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Define thresholds at which an invoice will be sent',
                                                    'properties': {
                                                        'usage_gte': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'Usage threshold that triggers the subscription to create an invoice',
                                                        },
                                                    },
                                                },
                                                'created': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': 'Time at which the object was created',
                                                },
                                                'current_period_end': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': "The end time of this subscription item's current billing period",
                                                },
                                                'current_period_start': {
                                                    'type': 'integer',
                                                    'format': 'int64',
                                                    'description': "The start time of this subscription item's current billing period",
                                                },
                                                'discounts': {
                                                    'type': 'array',
                                                    'items': {'type': 'string'},
                                                    'description': 'The discounts applied to the subscription item',
                                                },
                                                'metadata': {
                                                    'type': 'object',
                                                    'description': 'Set of key-value pairs',
                                                    'additionalProperties': {'type': 'string'},
                                                },
                                                'plan': {
                                                    'type': ['object', 'null'],
                                                    'description': 'The plan the customer is subscribed to (deprecated, use price instead)',
                                                    'additionalProperties': True,
                                                },
                                                'price': {
                                                    'type': 'object',
                                                    'description': 'The price the customer is subscribed to',
                                                    'additionalProperties': True,
                                                },
                                                'quantity': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'The quantity of the plan to which the customer should be subscribed',
                                                },
                                                'subscription': {'type': 'string', 'description': 'The subscription this subscription_item belongs to'},
                                                'tax_rates': {
                                                    'type': ['array', 'null'],
                                                    'description': 'The tax rates which apply to this subscription_item',
                                                    'items': {'type': 'object', 'additionalProperties': True},
                                                },
                                            },
                                        },
                                    },
                                    'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                                    'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                    'total_count': {'type': 'integer', 'description': 'The total count of items in the list'},
                                },
                            },
                            'latest_invoice': {
                                'type': ['string', 'null'],
                                'description': 'The most recent invoice this subscription has generated',
                            },
                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                            'metadata': {
                                'type': 'object',
                                'additionalProperties': {'type': 'string'},
                                'description': 'Set of key-value pairs',
                            },
                            'next_pending_invoice_item_invoice': {
                                'type': ['integer', 'null'],
                                'format': 'int64',
                                'description': 'Specifies the approximate timestamp on which any pending invoice items will be billed',
                            },
                            'on_behalf_of': {
                                'type': ['string', 'null'],
                                'description': 'The account (if any) the charge was made on behalf of for charges associated with this subscription',
                            },
                            'pause_collection': {
                                'type': ['object', 'null'],
                                'description': 'If specified, payment collection for this subscription will be paused',
                                'properties': {
                                    'behavior': {
                                        'type': 'string',
                                        'enum': ['keep_as_draft', 'mark_uncollectible', 'void'],
                                        'description': 'The payment collection behavior for this subscription while paused',
                                    },
                                    'resumes_at': {
                                        'type': ['integer', 'null'],
                                        'format': 'int64',
                                        'description': 'The time after which the subscription will resume collecting payments',
                                    },
                                },
                            },
                            'payment_settings': {
                                'type': ['object', 'null'],
                                'description': 'Payment settings passed on to invoices created by the subscription',
                                'properties': {
                                    'payment_method_options': {
                                        'type': ['object', 'null'],
                                        'description': 'Payment-method-specific configuration to provide to invoices',
                                        'additionalProperties': True,
                                    },
                                    'payment_method_types': {
                                        'type': ['array', 'null'],
                                        'description': 'The list of payment method types to provide to every invoice',
                                        'items': {'type': 'string'},
                                    },
                                },
                            },
                            'status': {
                                'type': 'string',
                                'enum': [
                                    'incomplete',
                                    'incomplete_expired',
                                    'trialing',
                                    'active',
                                    'past_due',
                                    'canceled',
                                    'unpaid',
                                    'paused',
                                ],
                                'description': 'The status of the subscription',
                            },
                            'current_period_start': {
                                'type': 'integer',
                                'format': 'int64',
                                'description': 'Start of the current period for which the subscription has been invoiced',
                            },
                            'current_period_end': {
                                'type': 'integer',
                                'format': 'int64',
                                'description': 'End of the current period for which the subscription has been invoiced',
                            },
                            'start_date': {
                                'type': 'integer',
                                'format': 'int64',
                                'description': 'Date when the subscription was first created',
                            },
                            'trial_start': {
                                'type': ['integer', 'null'],
                                'format': 'int64',
                                'description': 'If the subscription has a trial, the beginning of that trial',
                            },
                            'trial_end': {
                                'type': ['integer', 'null'],
                                'format': 'int64',
                                'description': 'If the subscription has a trial, the end of that trial',
                            },
                            'discount': {
                                'type': ['object', 'null'],
                                'description': 'The discount applied to the subscription',
                            },
                            'plan': {
                                'type': ['object', 'null'],
                                'description': 'The subscription plan (deprecated, use price instead)',
                            },
                            'quantity': {
                                'type': ['integer', 'null'],
                                'description': 'The quantity of the subscription',
                            },
                            'schedule': {
                                'type': ['string', 'null'],
                                'description': 'The schedule attached to the subscription',
                            },
                            'test_clock': {
                                'type': ['string', 'null'],
                                'description': 'ID of the test clock this subscription belongs to',
                            },
                            'transfer_data': {
                                'type': ['object', 'null'],
                                'description': "The account (if any) the subscription's payments will be attributed to for tax reporting",
                            },
                            'trial_settings': {
                                'type': ['object', 'null'],
                                'description': 'Settings related to subscription trials',
                                'properties': {
                                    'end_behavior': {
                                        'type': 'object',
                                        'properties': {
                                            'missing_payment_method': {'type': 'string', 'description': 'Behavior when the trial ends and payment method is missing'},
                                        },
                                    },
                                },
                            },
                            'pending_invoice_item_interval': {
                                'type': ['object', 'null'],
                                'description': 'Specifies an interval for how often to bill for any pending invoice items',
                            },
                            'pending_setup_intent': {
                                'type': ['string', 'null'],
                                'description': 'The ID of the SetupIntent to be confirmed',
                            },
                            'pending_update': {
                                'type': ['object', 'null'],
                                'description': 'If specified, pending updates that will be applied to the subscription once the latest_invoice has been paid',
                            },
                        },
                        'x-airbyte-entity-name': 'subscriptions',
                    },
                ),
                Action.API_SEARCH: EndpointDefinition(
                    method='GET',
                    path='/v1/subscriptions/search',
                    action=Action.API_SEARCH,
                    description="Search for subscriptions using Stripe's Search Query Language",
                    query_params=['query', 'limit', 'page'],
                    query_params_schema={
                        'query': {'type': 'string', 'required': True},
                        'limit': {'type': 'integer', 'required': False},
                        'page': {'type': 'string', 'required': False},
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['search_result'],
                            },
                            'data': {
                                'type': 'array',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                        'object': {
                                            'type': 'string',
                                            'description': "String representing the object's type",
                                            'enum': ['subscription'],
                                        },
                                        'application': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the Connect Application that created the subscription',
                                        },
                                        'application_fee_percent': {
                                            'type': ['number', 'null'],
                                            'format': 'float',
                                            'description': 'A non-negative decimal between 0 and 100, with at most two decimal places',
                                        },
                                        'automatic_tax': {
                                            'type': 'object',
                                            'description': 'Automatic tax settings for this subscription',
                                            'properties': {
                                                'disabled_reason': {
                                                    'type': ['string', 'null'],
                                                    'description': 'If Stripe disabled automatic tax, this enum describes why',
                                                },
                                                'enabled': {'type': 'boolean', 'description': 'Whether Stripe automatically computes tax on this subscription'},
                                                'liability': {
                                                    'type': ['object', 'null'],
                                                    'description': "The account that's liable for tax",
                                                    'properties': {
                                                        'account': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The connected account being referenced when type is account',
                                                        },
                                                        'type': {
                                                            'type': 'string',
                                                            'enum': ['account', 'self'],
                                                            'description': 'Type of the account referenced',
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                        'billing_cycle_anchor': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'The reference point that aligns future billing cycle dates',
                                        },
                                        'billing_cycle_anchor_config': {
                                            'type': ['object', 'null'],
                                            'description': 'The fixed values used to calculate the billing_cycle_anchor',
                                            'properties': {
                                                'day_of_month': {'type': 'integer', 'description': 'The day of the month of the billing_cycle_anchor'},
                                                'hour': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'The hour of the day of the billing_cycle_anchor',
                                                },
                                                'minute': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'The minute of the hour of the billing_cycle_anchor',
                                                },
                                                'month': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'The month to start full cycle billing periods',
                                                },
                                                'second': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'The second of the minute of the billing_cycle_anchor',
                                                },
                                            },
                                        },
                                        'billing_mode': {
                                            'type': 'object',
                                            'description': 'Controls how prorations and invoices for subscriptions are calculated and orchestrated',
                                            'properties': {
                                                'flexible': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Configure behavior for flexible billing mode',
                                                    'properties': {
                                                        'proration_discounts': {
                                                            'type': 'string',
                                                            'enum': ['included', 'itemized'],
                                                            'description': 'Controls how invoices and invoice items display proration amounts and discount amounts',
                                                        },
                                                    },
                                                },
                                                'type': {
                                                    'type': 'string',
                                                    'enum': ['classic', 'flexible'],
                                                    'description': 'Controls how prorations and invoices for subscriptions are calculated and orchestrated',
                                                },
                                                'updated_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'Details on when the current billing_mode was adopted',
                                                },
                                            },
                                        },
                                        'billing_thresholds': {
                                            'type': ['object', 'null'],
                                            'description': 'Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period',
                                            'properties': {
                                                'amount_gte': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Monetary threshold that triggers the subscription to create an invoice',
                                                },
                                                'reset_billing_cycle_anchor': {
                                                    'type': ['boolean', 'null'],
                                                    'description': 'Indicates if the billing_cycle_anchor should be reset when a threshold is reached',
                                                },
                                            },
                                        },
                                        'cancel_at': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'A date in the future at which the subscription will automatically get canceled',
                                        },
                                        'cancel_at_period_end': {'type': 'boolean', 'description': 'Whether this subscription will (if status=active) or did (if status=canceled) cancel at the end of the current billing period'},
                                        'canceled_at': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'If the subscription has been canceled, the date of that cancellation',
                                        },
                                        'cancellation_details': {
                                            'type': ['object', 'null'],
                                            'description': 'Details about why this subscription was cancelled',
                                            'properties': {
                                                'comment': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Additional comments about why the user canceled the subscription',
                                                },
                                                'feedback': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The customer submitted reason for why they canceled',
                                                },
                                                'reason': {
                                                    'type': ['string', 'null'],
                                                    'description': 'Why this subscription was canceled',
                                                },
                                            },
                                        },
                                        'collection_method': {
                                            'type': 'string',
                                            'enum': ['charge_automatically', 'send_invoice'],
                                            'description': 'Either charge_automatically, or send_invoice',
                                        },
                                        'created': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'Time at which the object was created. Measured in seconds since the Unix epoch',
                                        },
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                        'customer': {'type': 'string', 'description': 'ID of the customer who owns the subscription'},
                                        'customer_account': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the account who owns the subscription',
                                        },
                                        'days_until_due': {
                                            'type': ['integer', 'null'],
                                            'description': 'Number of days a customer has to pay invoices generated by this subscription',
                                        },
                                        'default_payment_method': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the default payment method for the subscription',
                                        },
                                        'default_source': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the default payment source for the subscription',
                                        },
                                        'default_tax_rates': {
                                            'type': ['array', 'null'],
                                            'description': 'The tax rates that will apply to any subscription item that does not have tax_rates set',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                    'object': {'type': 'string', 'description': "String representing the object's type"},
                                                    'active': {'type': 'boolean', 'description': 'Defaults to true'},
                                                    'country': {
                                                        'type': ['string', 'null'],
                                                        'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                                    },
                                                    'created': {
                                                        'type': 'integer',
                                                        'format': 'int64',
                                                        'description': 'Time at which the object was created',
                                                    },
                                                    'description': {
                                                        'type': ['string', 'null'],
                                                        'description': 'An arbitrary string attached to the tax rate for your internal use only',
                                                    },
                                                    'display_name': {'type': 'string', 'description': 'The display name of the tax rates'},
                                                    'effective_percentage': {
                                                        'type': ['number', 'null'],
                                                        'description': 'Actual/effective tax rate percentage out of 100',
                                                    },
                                                    'flat_amount': {
                                                        'type': ['object', 'null'],
                                                        'description': 'The amount of the tax rate when the rate_type is flat_amount',
                                                        'properties': {
                                                            'amount': {'type': 'integer', 'description': 'Amount of the tax when the rate_type is flat_amount'},
                                                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                                        },
                                                    },
                                                    'inclusive': {'type': 'boolean', 'description': 'This specifies if the tax rate is inclusive or exclusive'},
                                                    'jurisdiction': {
                                                        'type': ['string', 'null'],
                                                        'description': 'The jurisdiction for the tax rate',
                                                    },
                                                    'jurisdiction_level': {
                                                        'type': ['string', 'null'],
                                                        'enum': [
                                                            'city',
                                                            'country',
                                                            'county',
                                                            'district',
                                                            'multiple',
                                                            'state',
                                                        ],
                                                        'description': 'The level of the jurisdiction that imposes this tax rate',
                                                    },
                                                    'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                                    'metadata': {
                                                        'type': ['object', 'null'],
                                                        'description': 'Set of key-value pairs',
                                                        'additionalProperties': {'type': 'string'},
                                                    },
                                                    'percentage': {'type': 'number', 'description': 'Tax rate percentage out of 100'},
                                                    'rate_type': {
                                                        'type': ['string', 'null'],
                                                        'enum': ['flat_amount', 'percentage'],
                                                        'description': 'Indicates the type of tax rate applied to the taxable amount',
                                                    },
                                                    'state': {
                                                        'type': ['string', 'null'],
                                                        'description': 'ISO 3166-2 subdivision code, without country prefix',
                                                    },
                                                    'tax_type': {
                                                        'type': ['string', 'null'],
                                                        'enum': [
                                                            'amusement_tax',
                                                            'communications_tax',
                                                            'gst',
                                                            'hst',
                                                            'igst',
                                                            'jct',
                                                            'lease_tax',
                                                            'pst',
                                                            'qst',
                                                            'retail_delivery_fee',
                                                            'rst',
                                                            'sales_tax',
                                                            'service_tax',
                                                            'vat',
                                                        ],
                                                        'description': 'The high-level tax type',
                                                    },
                                                },
                                            },
                                        },
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': "The subscription's description, meant to be displayable to the customer",
                                        },
                                        'discounts': {
                                            'type': 'array',
                                            'items': {'type': 'string'},
                                            'description': 'The discounts applied to the subscription',
                                        },
                                        'ended_at': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'If the subscription has ended, the date the subscription ended',
                                        },
                                        'invoice_settings': {
                                            'type': 'object',
                                            'description': 'All invoices will be billed using the specified settings',
                                            'properties': {
                                                'account_tax_ids': {
                                                    'type': ['array', 'null'],
                                                    'description': 'The account tax IDs associated with the subscription',
                                                    'items': {'type': 'string'},
                                                },
                                                'issuer': {
                                                    'type': 'object',
                                                    'description': 'The connected account that issues the invoice',
                                                    'properties': {
                                                        'account': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The connected account being referenced when type is account',
                                                        },
                                                        'type': {
                                                            'type': 'string',
                                                            'enum': ['account', 'self'],
                                                            'description': 'Type of the account referenced',
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                        'items': {
                                            'type': 'object',
                                            'description': 'List of subscription items, each with an attached price',
                                            'properties': {
                                                'object': {
                                                    'type': 'string',
                                                    'enum': ['list'],
                                                    'description': "String representing the object's type",
                                                },
                                                'data': {
                                                    'type': 'array',
                                                    'description': 'Details about each object',
                                                    'items': {
                                                        'type': 'object',
                                                        'properties': {
                                                            'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                                            'object': {'type': 'string', 'description': "String representing the object's type"},
                                                            'billing_thresholds': {
                                                                'type': ['object', 'null'],
                                                                'description': 'Define thresholds at which an invoice will be sent',
                                                                'properties': {
                                                                    'usage_gte': {
                                                                        'type': ['integer', 'null'],
                                                                        'description': 'Usage threshold that triggers the subscription to create an invoice',
                                                                    },
                                                                },
                                                            },
                                                            'created': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': 'Time at which the object was created',
                                                            },
                                                            'current_period_end': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': "The end time of this subscription item's current billing period",
                                                            },
                                                            'current_period_start': {
                                                                'type': 'integer',
                                                                'format': 'int64',
                                                                'description': "The start time of this subscription item's current billing period",
                                                            },
                                                            'discounts': {
                                                                'type': 'array',
                                                                'items': {'type': 'string'},
                                                                'description': 'The discounts applied to the subscription item',
                                                            },
                                                            'metadata': {
                                                                'type': 'object',
                                                                'description': 'Set of key-value pairs',
                                                                'additionalProperties': {'type': 'string'},
                                                            },
                                                            'plan': {
                                                                'type': ['object', 'null'],
                                                                'description': 'The plan the customer is subscribed to (deprecated, use price instead)',
                                                                'additionalProperties': True,
                                                            },
                                                            'price': {
                                                                'type': 'object',
                                                                'description': 'The price the customer is subscribed to',
                                                                'additionalProperties': True,
                                                            },
                                                            'quantity': {
                                                                'type': ['integer', 'null'],
                                                                'description': 'The quantity of the plan to which the customer should be subscribed',
                                                            },
                                                            'subscription': {'type': 'string', 'description': 'The subscription this subscription_item belongs to'},
                                                            'tax_rates': {
                                                                'type': ['array', 'null'],
                                                                'description': 'The tax rates which apply to this subscription_item',
                                                                'items': {'type': 'object', 'additionalProperties': True},
                                                            },
                                                        },
                                                    },
                                                },
                                                'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                                                'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                                                'total_count': {'type': 'integer', 'description': 'The total count of items in the list'},
                                            },
                                        },
                                        'latest_invoice': {
                                            'type': ['string', 'null'],
                                            'description': 'The most recent invoice this subscription has generated',
                                        },
                                        'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                        'metadata': {
                                            'type': 'object',
                                            'additionalProperties': {'type': 'string'},
                                            'description': 'Set of key-value pairs',
                                        },
                                        'next_pending_invoice_item_invoice': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'Specifies the approximate timestamp on which any pending invoice items will be billed',
                                        },
                                        'on_behalf_of': {
                                            'type': ['string', 'null'],
                                            'description': 'The account (if any) the charge was made on behalf of for charges associated with this subscription',
                                        },
                                        'pause_collection': {
                                            'type': ['object', 'null'],
                                            'description': 'If specified, payment collection for this subscription will be paused',
                                            'properties': {
                                                'behavior': {
                                                    'type': 'string',
                                                    'enum': ['keep_as_draft', 'mark_uncollectible', 'void'],
                                                    'description': 'The payment collection behavior for this subscription while paused',
                                                },
                                                'resumes_at': {
                                                    'type': ['integer', 'null'],
                                                    'format': 'int64',
                                                    'description': 'The time after which the subscription will resume collecting payments',
                                                },
                                            },
                                        },
                                        'payment_settings': {
                                            'type': ['object', 'null'],
                                            'description': 'Payment settings passed on to invoices created by the subscription',
                                            'properties': {
                                                'payment_method_options': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Payment-method-specific configuration to provide to invoices',
                                                    'additionalProperties': True,
                                                },
                                                'payment_method_types': {
                                                    'type': ['array', 'null'],
                                                    'description': 'The list of payment method types to provide to every invoice',
                                                    'items': {'type': 'string'},
                                                },
                                            },
                                        },
                                        'status': {
                                            'type': 'string',
                                            'enum': [
                                                'incomplete',
                                                'incomplete_expired',
                                                'trialing',
                                                'active',
                                                'past_due',
                                                'canceled',
                                                'unpaid',
                                                'paused',
                                            ],
                                            'description': 'The status of the subscription',
                                        },
                                        'current_period_start': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'Start of the current period for which the subscription has been invoiced',
                                        },
                                        'current_period_end': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'End of the current period for which the subscription has been invoiced',
                                        },
                                        'start_date': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'Date when the subscription was first created',
                                        },
                                        'trial_start': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'If the subscription has a trial, the beginning of that trial',
                                        },
                                        'trial_end': {
                                            'type': ['integer', 'null'],
                                            'format': 'int64',
                                            'description': 'If the subscription has a trial, the end of that trial',
                                        },
                                        'discount': {
                                            'type': ['object', 'null'],
                                            'description': 'The discount applied to the subscription',
                                        },
                                        'plan': {
                                            'type': ['object', 'null'],
                                            'description': 'The subscription plan (deprecated, use price instead)',
                                        },
                                        'quantity': {
                                            'type': ['integer', 'null'],
                                            'description': 'The quantity of the subscription',
                                        },
                                        'schedule': {
                                            'type': ['string', 'null'],
                                            'description': 'The schedule attached to the subscription',
                                        },
                                        'test_clock': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the test clock this subscription belongs to',
                                        },
                                        'transfer_data': {
                                            'type': ['object', 'null'],
                                            'description': "The account (if any) the subscription's payments will be attributed to for tax reporting",
                                        },
                                        'trial_settings': {
                                            'type': ['object', 'null'],
                                            'description': 'Settings related to subscription trials',
                                            'properties': {
                                                'end_behavior': {
                                                    'type': 'object',
                                                    'properties': {
                                                        'missing_payment_method': {'type': 'string', 'description': 'Behavior when the trial ends and payment method is missing'},
                                                    },
                                                },
                                            },
                                        },
                                        'pending_invoice_item_interval': {
                                            'type': ['object', 'null'],
                                            'description': 'Specifies an interval for how often to bill for any pending invoice items',
                                        },
                                        'pending_setup_intent': {
                                            'type': ['string', 'null'],
                                            'description': 'The ID of the SetupIntent to be confirmed',
                                        },
                                        'pending_update': {
                                            'type': ['object', 'null'],
                                            'description': 'If specified, pending updates that will be applied to the subscription once the latest_invoice has been paid',
                                        },
                                    },
                                    'x-airbyte-entity-name': 'subscriptions',
                                },
                            },
                            'has_more': {'type': 'boolean', 'description': 'Whether there are more results available'},
                            'next_page': {
                                'type': ['string', 'null'],
                                'description': 'Cursor for the next page of results',
                            },
                            'url': {'type': 'string', 'description': 'The URL for accessing this list'},
                        },
                    },
                ),
            },
            entity_schema={
                'type': 'object',
                'properties': {
                    'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                    'object': {
                        'type': 'string',
                        'description': "String representing the object's type",
                        'enum': ['subscription'],
                    },
                    'application': {
                        'type': ['string', 'null'],
                        'description': 'ID of the Connect Application that created the subscription',
                    },
                    'application_fee_percent': {
                        'type': ['number', 'null'],
                        'format': 'float',
                        'description': 'A non-negative decimal between 0 and 100, with at most two decimal places',
                    },
                    'automatic_tax': {
                        'type': 'object',
                        'description': 'Automatic tax settings for this subscription',
                        'properties': {
                            'disabled_reason': {
                                'type': ['string', 'null'],
                                'description': 'If Stripe disabled automatic tax, this enum describes why',
                            },
                            'enabled': {'type': 'boolean', 'description': 'Whether Stripe automatically computes tax on this subscription'},
                            'liability': {
                                'type': ['object', 'null'],
                                'description': "The account that's liable for tax",
                                'properties': {
                                    'account': {
                                        'type': ['string', 'null'],
                                        'description': 'The connected account being referenced when type is account',
                                    },
                                    'type': {
                                        'type': 'string',
                                        'enum': ['account', 'self'],
                                        'description': 'Type of the account referenced',
                                    },
                                },
                            },
                        },
                    },
                    'billing_cycle_anchor': {
                        'type': 'integer',
                        'format': 'int64',
                        'description': 'The reference point that aligns future billing cycle dates',
                    },
                    'billing_cycle_anchor_config': {
                        'type': ['object', 'null'],
                        'description': 'The fixed values used to calculate the billing_cycle_anchor',
                        'properties': {
                            'day_of_month': {'type': 'integer', 'description': 'The day of the month of the billing_cycle_anchor'},
                            'hour': {
                                'type': ['integer', 'null'],
                                'description': 'The hour of the day of the billing_cycle_anchor',
                            },
                            'minute': {
                                'type': ['integer', 'null'],
                                'description': 'The minute of the hour of the billing_cycle_anchor',
                            },
                            'month': {
                                'type': ['integer', 'null'],
                                'description': 'The month to start full cycle billing periods',
                            },
                            'second': {
                                'type': ['integer', 'null'],
                                'description': 'The second of the minute of the billing_cycle_anchor',
                            },
                        },
                    },
                    'billing_mode': {
                        'type': 'object',
                        'description': 'Controls how prorations and invoices for subscriptions are calculated and orchestrated',
                        'properties': {
                            'flexible': {
                                'type': ['object', 'null'],
                                'description': 'Configure behavior for flexible billing mode',
                                'properties': {
                                    'proration_discounts': {
                                        'type': 'string',
                                        'enum': ['included', 'itemized'],
                                        'description': 'Controls how invoices and invoice items display proration amounts and discount amounts',
                                    },
                                },
                            },
                            'type': {
                                'type': 'string',
                                'enum': ['classic', 'flexible'],
                                'description': 'Controls how prorations and invoices for subscriptions are calculated and orchestrated',
                            },
                            'updated_at': {
                                'type': ['integer', 'null'],
                                'format': 'int64',
                                'description': 'Details on when the current billing_mode was adopted',
                            },
                        },
                    },
                    'billing_thresholds': {
                        'type': ['object', 'null'],
                        'description': 'Define thresholds at which an invoice will be sent, and the subscription advanced to a new billing period',
                        'properties': {
                            'amount_gte': {
                                'type': ['integer', 'null'],
                                'description': 'Monetary threshold that triggers the subscription to create an invoice',
                            },
                            'reset_billing_cycle_anchor': {
                                'type': ['boolean', 'null'],
                                'description': 'Indicates if the billing_cycle_anchor should be reset when a threshold is reached',
                            },
                        },
                    },
                    'cancel_at': {
                        'type': ['integer', 'null'],
                        'format': 'int64',
                        'description': 'A date in the future at which the subscription will automatically get canceled',
                    },
                    'cancel_at_period_end': {'type': 'boolean', 'description': 'Whether this subscription will (if status=active) or did (if status=canceled) cancel at the end of the current billing period'},
                    'canceled_at': {
                        'type': ['integer', 'null'],
                        'format': 'int64',
                        'description': 'If the subscription has been canceled, the date of that cancellation',
                    },
                    'cancellation_details': {
                        'type': ['object', 'null'],
                        'description': 'Details about why this subscription was cancelled',
                        'properties': {
                            'comment': {
                                'type': ['string', 'null'],
                                'description': 'Additional comments about why the user canceled the subscription',
                            },
                            'feedback': {
                                'type': ['string', 'null'],
                                'description': 'The customer submitted reason for why they canceled',
                            },
                            'reason': {
                                'type': ['string', 'null'],
                                'description': 'Why this subscription was canceled',
                            },
                        },
                    },
                    'collection_method': {
                        'type': 'string',
                        'enum': ['charge_automatically', 'send_invoice'],
                        'description': 'Either charge_automatically, or send_invoice',
                    },
                    'created': {
                        'type': 'integer',
                        'format': 'int64',
                        'description': 'Time at which the object was created. Measured in seconds since the Unix epoch',
                    },
                    'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                    'customer': {'type': 'string', 'description': 'ID of the customer who owns the subscription'},
                    'customer_account': {
                        'type': ['string', 'null'],
                        'description': 'ID of the account who owns the subscription',
                    },
                    'days_until_due': {
                        'type': ['integer', 'null'],
                        'description': 'Number of days a customer has to pay invoices generated by this subscription',
                    },
                    'default_payment_method': {
                        'type': ['string', 'null'],
                        'description': 'ID of the default payment method for the subscription',
                    },
                    'default_source': {
                        'type': ['string', 'null'],
                        'description': 'ID of the default payment source for the subscription',
                    },
                    'default_tax_rates': {
                        'type': ['array', 'null'],
                        'description': 'The tax rates that will apply to any subscription item that does not have tax_rates set',
                        'items': {
                            'type': 'object',
                            'properties': {
                                'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                'object': {'type': 'string', 'description': "String representing the object's type"},
                                'active': {'type': 'boolean', 'description': 'Defaults to true'},
                                'country': {
                                    'type': ['string', 'null'],
                                    'description': 'Two-letter country code (ISO 3166-1 alpha-2)',
                                },
                                'created': {
                                    'type': 'integer',
                                    'format': 'int64',
                                    'description': 'Time at which the object was created',
                                },
                                'description': {
                                    'type': ['string', 'null'],
                                    'description': 'An arbitrary string attached to the tax rate for your internal use only',
                                },
                                'display_name': {'type': 'string', 'description': 'The display name of the tax rates'},
                                'effective_percentage': {
                                    'type': ['number', 'null'],
                                    'description': 'Actual/effective tax rate percentage out of 100',
                                },
                                'flat_amount': {
                                    'type': ['object', 'null'],
                                    'description': 'The amount of the tax rate when the rate_type is flat_amount',
                                    'properties': {
                                        'amount': {'type': 'integer', 'description': 'Amount of the tax when the rate_type is flat_amount'},
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                    },
                                },
                                'inclusive': {'type': 'boolean', 'description': 'This specifies if the tax rate is inclusive or exclusive'},
                                'jurisdiction': {
                                    'type': ['string', 'null'],
                                    'description': 'The jurisdiction for the tax rate',
                                },
                                'jurisdiction_level': {
                                    'type': ['string', 'null'],
                                    'enum': [
                                        'city',
                                        'country',
                                        'county',
                                        'district',
                                        'multiple',
                                        'state',
                                    ],
                                    'description': 'The level of the jurisdiction that imposes this tax rate',
                                },
                                'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                                'metadata': {
                                    'type': ['object', 'null'],
                                    'description': 'Set of key-value pairs',
                                    'additionalProperties': {'type': 'string'},
                                },
                                'percentage': {'type': 'number', 'description': 'Tax rate percentage out of 100'},
                                'rate_type': {
                                    'type': ['string', 'null'],
                                    'enum': ['flat_amount', 'percentage'],
                                    'description': 'Indicates the type of tax rate applied to the taxable amount',
                                },
                                'state': {
                                    'type': ['string', 'null'],
                                    'description': 'ISO 3166-2 subdivision code, without country prefix',
                                },
                                'tax_type': {
                                    'type': ['string', 'null'],
                                    'enum': [
                                        'amusement_tax',
                                        'communications_tax',
                                        'gst',
                                        'hst',
                                        'igst',
                                        'jct',
                                        'lease_tax',
                                        'pst',
                                        'qst',
                                        'retail_delivery_fee',
                                        'rst',
                                        'sales_tax',
                                        'service_tax',
                                        'vat',
                                    ],
                                    'description': 'The high-level tax type',
                                },
                            },
                        },
                    },
                    'description': {
                        'type': ['string', 'null'],
                        'description': "The subscription's description, meant to be displayable to the customer",
                    },
                    'discounts': {
                        'type': 'array',
                        'items': {'type': 'string'},
                        'description': 'The discounts applied to the subscription',
                    },
                    'ended_at': {
                        'type': ['integer', 'null'],
                        'format': 'int64',
                        'description': 'If the subscription has ended, the date the subscription ended',
                    },
                    'invoice_settings': {
                        'type': 'object',
                        'description': 'All invoices will be billed using the specified settings',
                        'properties': {
                            'account_tax_ids': {
                                'type': ['array', 'null'],
                                'description': 'The account tax IDs associated with the subscription',
                                'items': {'type': 'string'},
                            },
                            'issuer': {
                                'type': 'object',
                                'description': 'The connected account that issues the invoice',
                                'properties': {
                                    'account': {
                                        'type': ['string', 'null'],
                                        'description': 'The connected account being referenced when type is account',
                                    },
                                    'type': {
                                        'type': 'string',
                                        'enum': ['account', 'self'],
                                        'description': 'Type of the account referenced',
                                    },
                                },
                            },
                        },
                    },
                    'items': {
                        'type': 'object',
                        'description': 'List of subscription items, each with an attached price',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['list'],
                                'description': "String representing the object's type",
                            },
                            'data': {
                                'type': 'array',
                                'description': 'Details about each object',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the object'},
                                        'object': {'type': 'string', 'description': "String representing the object's type"},
                                        'billing_thresholds': {
                                            'type': ['object', 'null'],
                                            'description': 'Define thresholds at which an invoice will be sent',
                                            'properties': {
                                                'usage_gte': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Usage threshold that triggers the subscription to create an invoice',
                                                },
                                            },
                                        },
                                        'created': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'Time at which the object was created',
                                        },
                                        'current_period_end': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': "The end time of this subscription item's current billing period",
                                        },
                                        'current_period_start': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': "The start time of this subscription item's current billing period",
                                        },
                                        'discounts': {
                                            'type': 'array',
                                            'items': {'type': 'string'},
                                            'description': 'The discounts applied to the subscription item',
                                        },
                                        'metadata': {
                                            'type': 'object',
                                            'description': 'Set of key-value pairs',
                                            'additionalProperties': {'type': 'string'},
                                        },
                                        'plan': {
                                            'type': ['object', 'null'],
                                            'description': 'The plan the customer is subscribed to (deprecated, use price instead)',
                                            'additionalProperties': True,
                                        },
                                        'price': {
                                            'type': 'object',
                                            'description': 'The price the customer is subscribed to',
                                            'additionalProperties': True,
                                        },
                                        'quantity': {
                                            'type': ['integer', 'null'],
                                            'description': 'The quantity of the plan to which the customer should be subscribed',
                                        },
                                        'subscription': {'type': 'string', 'description': 'The subscription this subscription_item belongs to'},
                                        'tax_rates': {
                                            'type': ['array', 'null'],
                                            'description': 'The tax rates which apply to this subscription_item',
                                            'items': {'type': 'object', 'additionalProperties': True},
                                        },
                                    },
                                },
                            },
                            'has_more': {'type': 'boolean', 'description': 'True if this list has another page of items after this one'},
                            'url': {'type': 'string', 'description': 'The URL where this list can be accessed'},
                            'total_count': {'type': 'integer', 'description': 'The total count of items in the list'},
                        },
                    },
                    'latest_invoice': {
                        'type': ['string', 'null'],
                        'description': 'The most recent invoice this subscription has generated',
                    },
                    'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or false if in test mode'},
                    'metadata': {
                        'type': 'object',
                        'additionalProperties': {'type': 'string'},
                        'description': 'Set of key-value pairs',
                    },
                    'next_pending_invoice_item_invoice': {
                        'type': ['integer', 'null'],
                        'format': 'int64',
                        'description': 'Specifies the approximate timestamp on which any pending invoice items will be billed',
                    },
                    'on_behalf_of': {
                        'type': ['string', 'null'],
                        'description': 'The account (if any) the charge was made on behalf of for charges associated with this subscription',
                    },
                    'pause_collection': {
                        'type': ['object', 'null'],
                        'description': 'If specified, payment collection for this subscription will be paused',
                        'properties': {
                            'behavior': {
                                'type': 'string',
                                'enum': ['keep_as_draft', 'mark_uncollectible', 'void'],
                                'description': 'The payment collection behavior for this subscription while paused',
                            },
                            'resumes_at': {
                                'type': ['integer', 'null'],
                                'format': 'int64',
                                'description': 'The time after which the subscription will resume collecting payments',
                            },
                        },
                    },
                    'payment_settings': {
                        'type': ['object', 'null'],
                        'description': 'Payment settings passed on to invoices created by the subscription',
                        'properties': {
                            'payment_method_options': {
                                'type': ['object', 'null'],
                                'description': 'Payment-method-specific configuration to provide to invoices',
                                'additionalProperties': True,
                            },
                            'payment_method_types': {
                                'type': ['array', 'null'],
                                'description': 'The list of payment method types to provide to every invoice',
                                'items': {'type': 'string'},
                            },
                        },
                    },
                    'status': {
                        'type': 'string',
                        'enum': [
                            'incomplete',
                            'incomplete_expired',
                            'trialing',
                            'active',
                            'past_due',
                            'canceled',
                            'unpaid',
                            'paused',
                        ],
                        'description': 'The status of the subscription',
                    },
                    'current_period_start': {
                        'type': 'integer',
                        'format': 'int64',
                        'description': 'Start of the current period for which the subscription has been invoiced',
                    },
                    'current_period_end': {
                        'type': 'integer',
                        'format': 'int64',
                        'description': 'End of the current period for which the subscription has been invoiced',
                    },
                    'start_date': {
                        'type': 'integer',
                        'format': 'int64',
                        'description': 'Date when the subscription was first created',
                    },
                    'trial_start': {
                        'type': ['integer', 'null'],
                        'format': 'int64',
                        'description': 'If the subscription has a trial, the beginning of that trial',
                    },
                    'trial_end': {
                        'type': ['integer', 'null'],
                        'format': 'int64',
                        'description': 'If the subscription has a trial, the end of that trial',
                    },
                    'discount': {
                        'type': ['object', 'null'],
                        'description': 'The discount applied to the subscription',
                    },
                    'plan': {
                        'type': ['object', 'null'],
                        'description': 'The subscription plan (deprecated, use price instead)',
                    },
                    'quantity': {
                        'type': ['integer', 'null'],
                        'description': 'The quantity of the subscription',
                    },
                    'schedule': {
                        'type': ['string', 'null'],
                        'description': 'The schedule attached to the subscription',
                    },
                    'test_clock': {
                        'type': ['string', 'null'],
                        'description': 'ID of the test clock this subscription belongs to',
                    },
                    'transfer_data': {
                        'type': ['object', 'null'],
                        'description': "The account (if any) the subscription's payments will be attributed to for tax reporting",
                    },
                    'trial_settings': {
                        'type': ['object', 'null'],
                        'description': 'Settings related to subscription trials',
                        'properties': {
                            'end_behavior': {
                                'type': 'object',
                                'properties': {
                                    'missing_payment_method': {'type': 'string', 'description': 'Behavior when the trial ends and payment method is missing'},
                                },
                            },
                        },
                    },
                    'pending_invoice_item_interval': {
                        'type': ['object', 'null'],
                        'description': 'Specifies an interval for how often to bill for any pending invoice items',
                    },
                    'pending_setup_intent': {
                        'type': ['string', 'null'],
                        'description': 'The ID of the SetupIntent to be confirmed',
                    },
                    'pending_update': {
                        'type': ['object', 'null'],
                        'description': 'If specified, pending updates that will be applied to the subscription once the latest_invoice has been paid',
                    },
                },
                'x-airbyte-entity-name': 'subscriptions',
            },
        ),
        EntityDefinition(
            name='refunds',
            actions=[Action.LIST, Action.CREATE, Action.GET],
            endpoints={
                Action.LIST: EndpointDefinition(
                    method='GET',
                    path='/v1/refunds',
                    action=Action.LIST,
                    description="Returns a list of all refunds you've previously created. The refunds are returned in sorted order, with the most recent refunds appearing first.",
                    query_params=[
                        'charge',
                        'created',
                        'ending_before',
                        'limit',
                        'payment_intent',
                        'starting_after',
                    ],
                    query_params_schema={
                        'charge': {'type': 'string', 'required': False},
                        'created': {'type': 'object', 'required': False},
                        'ending_before': {'type': 'string', 'required': False},
                        'limit': {'type': 'integer', 'required': False},
                        'payment_intent': {'type': 'string', 'required': False},
                        'starting_after': {'type': 'string', 'required': False},
                    },
                    deep_object_params=['created'],
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['list'],
                            },
                            'count': {'type': 'integer', 'description': 'Total count of refunds'},
                            'data': {
                                'type': 'array',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the refund'},
                                        'object': {
                                            'type': 'string',
                                            'description': "String representing the object's type",
                                            'enum': ['refund'],
                                        },
                                        'amount': {'type': 'integer', 'description': 'Amount refunded (in smallest currency unit)'},
                                        'balance_transaction': {
                                            'type': ['string', 'null'],
                                            'description': 'Balance transaction that describes the impact on your account balance',
                                        },
                                        'charge': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the charge that was refunded',
                                        },
                                        'created': {
                                            'type': 'integer',
                                            'format': 'int64',
                                            'description': 'Time at which the refund was created (Unix timestamp)',
                                        },
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code (lowercase)'},
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': 'An arbitrary string attached to the object',
                                        },
                                        'destination_details': {
                                            'type': ['object', 'null'],
                                            'description': 'Transaction-specific details for the refund',
                                            'properties': {
                                                'affirm': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a affirm refund, this hash contains the transaction specific details',
                                                },
                                                'afterpay_clearpay': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a afterpay_clearpay refund, this hash contains the transaction specific details',
                                                },
                                                'alipay': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a alipay refund, this hash contains the transaction specific details',
                                                },
                                                'alma': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a alma refund, this hash contains the transaction specific details',
                                                },
                                                'amazon_pay': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a amazon_pay refund, this hash contains the transaction specific details',
                                                },
                                                'au_bank_transfer': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a au_bank_transfer refund, this hash contains the transaction specific details',
                                                },
                                                'blik': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a blik refund, this hash contains the transaction specific details',
                                                    'properties': {
                                                        'network_decline_code': {
                                                            'type': ['string', 'null'],
                                                            'description': 'For refunds declined by the network, a decline code provided by the network',
                                                        },
                                                        'reference': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The reference assigned to the refund',
                                                        },
                                                        'reference_status': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Status of the reference on the refund',
                                                            'enum': ['pending', 'available', 'unavailable'],
                                                        },
                                                    },
                                                },
                                                'br_bank_transfer': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a br_bank_transfer refund, this hash contains the transaction specific details',
                                                    'properties': {
                                                        'reference': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The reference assigned to the refund',
                                                        },
                                                        'reference_status': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Status of the reference on the refund',
                                                            'enum': ['pending', 'available', 'unavailable'],
                                                        },
                                                    },
                                                },
                                                'card': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a card refund, this hash contains the transaction specific details',
                                                    'properties': {
                                                        'reference': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Value of the reference number assigned to the refund',
                                                        },
                                                        'reference_status': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Status of the reference number on the refund',
                                                            'enum': ['pending', 'available', 'unavailable'],
                                                        },
                                                        'reference_type': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Type of the reference number assigned to the refund',
                                                        },
                                                        'type': {
                                                            'type': 'string',
                                                            'description': 'The type of refund',
                                                            'enum': ['pending', 'refund', 'reversal'],
                                                        },
                                                    },
                                                },
                                                'cashapp': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a cashapp refund, this hash contains the transaction specific details',
                                                },
                                                'crypto': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a crypto refund, this hash contains the transaction specific details',
                                                    'properties': {
                                                        'reference': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The transaction hash of the refund',
                                                        },
                                                    },
                                                },
                                                'customer_cash_balance': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a customer_cash_balance refund, this hash contains the transaction specific details',
                                                },
                                                'eps': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a eps refund, this hash contains the transaction specific details',
                                                },
                                                'eu_bank_transfer': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a eu_bank_transfer refund, this hash contains the transaction specific details',
                                                    'properties': {
                                                        'reference': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The reference assigned to the refund',
                                                        },
                                                        'reference_status': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Status of the reference on the refund',
                                                            'enum': ['pending', 'available', 'unavailable'],
                                                        },
                                                    },
                                                },
                                                'gb_bank_transfer': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a gb_bank_transfer refund, this hash contains the transaction specific details',
                                                    'properties': {
                                                        'reference': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The reference assigned to the refund',
                                                        },
                                                        'reference_status': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Status of the reference on the refund',
                                                            'enum': ['pending', 'available', 'unavailable'],
                                                        },
                                                    },
                                                },
                                                'giropay': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a giropay refund, this hash contains the transaction specific details',
                                                },
                                                'grabpay': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a grabpay refund, this hash contains the transaction specific details',
                                                },
                                                'jp_bank_transfer': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a jp_bank_transfer refund, this hash contains the transaction specific details',
                                                    'properties': {
                                                        'reference': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The reference assigned to the refund',
                                                        },
                                                        'reference_status': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Status of the reference on the refund',
                                                            'enum': ['pending', 'available', 'unavailable'],
                                                        },
                                                    },
                                                },
                                                'klarna': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a klarna refund, this hash contains the transaction specific details',
                                                },
                                                'mb_way': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a mb_way refund, this hash contains the transaction specific details',
                                                    'properties': {
                                                        'reference': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The reference assigned to the refund',
                                                        },
                                                        'reference_status': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Status of the reference on the refund',
                                                            'enum': ['pending', 'available', 'unavailable'],
                                                        },
                                                    },
                                                },
                                                'multibanco': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a multibanco refund, this hash contains the transaction specific details',
                                                    'properties': {
                                                        'reference': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The reference assigned to the refund',
                                                        },
                                                        'reference_status': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Status of the reference on the refund',
                                                            'enum': ['pending', 'available', 'unavailable'],
                                                        },
                                                    },
                                                },
                                                'mx_bank_transfer': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a mx_bank_transfer refund, this hash contains the transaction specific details',
                                                    'properties': {
                                                        'reference': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The reference assigned to the refund',
                                                        },
                                                        'reference_status': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Status of the reference on the refund',
                                                            'enum': ['pending', 'available', 'unavailable'],
                                                        },
                                                    },
                                                },
                                                'nz_bank_transfer': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a nz_bank_transfer refund, this hash contains the transaction specific details',
                                                },
                                                'p24': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a p24 refund, this hash contains the transaction specific details',
                                                    'properties': {
                                                        'reference': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The reference assigned to the refund',
                                                        },
                                                        'reference_status': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Status of the reference on the refund',
                                                            'enum': ['pending', 'available', 'unavailable'],
                                                        },
                                                    },
                                                },
                                                'paynow': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a paynow refund, this hash contains the transaction specific details',
                                                },
                                                'paypal': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a paypal refund, this hash contains the transaction specific details',
                                                    'properties': {
                                                        'network_decline_code': {
                                                            'type': ['string', 'null'],
                                                            'description': 'For refunds declined by the network, a decline code provided by the network',
                                                        },
                                                    },
                                                },
                                                'pix': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a pix refund, this hash contains the transaction specific details',
                                                },
                                                'revolut': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a revolut refund, this hash contains the transaction specific details',
                                                },
                                                'sofort': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a sofort refund, this hash contains the transaction specific details',
                                                },
                                                'swish': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a swish refund, this hash contains the transaction specific details',
                                                    'properties': {
                                                        'network_decline_code': {
                                                            'type': ['string', 'null'],
                                                            'description': 'For refunds declined by the network, a decline code provided by the network',
                                                        },
                                                        'reference': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The reference assigned to the refund',
                                                        },
                                                        'reference_status': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Status of the reference on the refund',
                                                            'enum': ['pending', 'available', 'unavailable'],
                                                        },
                                                    },
                                                },
                                                'th_bank_transfer': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a th_bank_transfer refund, this hash contains the transaction specific details',
                                                    'properties': {
                                                        'reference': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The reference assigned to the refund',
                                                        },
                                                        'reference_status': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Status of the reference on the refund',
                                                            'enum': ['pending', 'available', 'unavailable'],
                                                        },
                                                    },
                                                },
                                                'twint': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a twint refund, this hash contains the transaction specific details',
                                                },
                                                'type': {'type': 'string', 'description': 'The type of transaction-specific details of the payment method used in the refund'},
                                                'us_bank_transfer': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a us_bank_transfer refund, this hash contains the transaction specific details',
                                                    'properties': {
                                                        'reference': {
                                                            'type': ['string', 'null'],
                                                            'description': 'The reference assigned to the refund',
                                                        },
                                                        'reference_status': {
                                                            'type': ['string', 'null'],
                                                            'description': 'Status of the reference on the refund',
                                                            'enum': ['pending', 'available', 'unavailable'],
                                                        },
                                                    },
                                                },
                                                'wechat_pay': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a wechat_pay refund, this hash contains the transaction specific details',
                                                },
                                                'zip': {
                                                    'type': ['object', 'null'],
                                                    'description': 'If this is a zip refund, this hash contains the transaction specific details',
                                                },
                                            },
                                        },
                                        'failure_balance_transaction': {
                                            'type': ['string', 'null'],
                                            'description': 'After the refund fails, this balance transaction describes the adjustment made on your account balance',
                                        },
                                        'failure_reason': {
                                            'type': ['string', 'null'],
                                            'description': 'Reason for refund failure if status is failed',
                                        },
                                        'instructions_email': {
                                            'type': ['string', 'null'],
                                            'description': 'Email address to which instructions for refund were sent',
                                        },
                                        'metadata': {
                                            'type': ['object', 'null'],
                                            'additionalProperties': {'type': 'string'},
                                            'description': 'Set of key-value pairs for storing additional information',
                                        },
                                        'next_action': {
                                            'type': ['object', 'null'],
                                            'description': 'If the refund has a status of requires_action, this property describes what the refund needs to continue processing',
                                            'properties': {
                                                'display_details': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Contains the refund details',
                                                    'properties': {
                                                        'email_sent': {
                                                            'type': 'object',
                                                            'description': 'Contains information about the email sent to the customer',
                                                            'properties': {
                                                                'email_sent_at': {
                                                                    'type': 'integer',
                                                                    'format': 'int64',
                                                                    'description': 'The timestamp when the email was sent',
                                                                },
                                                                'email_sent_to': {'type': 'string', 'description': "The recipient's email address"},
                                                            },
                                                        },
                                                        'expires_at': {
                                                            'type': 'integer',
                                                            'format': 'int64',
                                                            'description': 'The expiry timestamp',
                                                        },
                                                    },
                                                },
                                                'type': {'type': 'string', 'description': 'Type of the next action to perform'},
                                            },
                                        },
                                        'payment_intent': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the PaymentIntent that was refunded',
                                        },
                                        'pending_reason': {
                                            'type': ['string', 'null'],
                                            'description': 'Reason for why the refund is pending',
                                            'enum': ['processing', 'insufficient_funds', 'charge_pending'],
                                        },
                                        'reason': {
                                            'type': ['string', 'null'],
                                            'description': 'Reason for the refund',
                                        },
                                        'receipt_number': {
                                            'type': ['string', 'null'],
                                            'description': 'Transaction number that appears on email receipts sent for this refund',
                                        },
                                        'source_transfer_reversal': {
                                            'type': ['string', 'null'],
                                            'description': 'The transfer reversal that is associated with the refund',
                                        },
                                        'status': {
                                            'type': ['string', 'null'],
                                            'description': 'Status of the refund',
                                            'enum': [
                                                'pending',
                                                'requires_action',
                                                'succeeded',
                                                'failed',
                                                'canceled',
                                            ],
                                        },
                                        'transfer_reversal': {
                                            'type': ['string', 'null'],
                                            'description': 'If the refund is associated with a transfer, the ID of the transfer reversal',
                                        },
                                    },
                                    'x-airbyte-entity-name': 'refunds',
                                },
                            },
                            'has_more': {'type': 'boolean'},
                            'url': {'type': 'string'},
                        },
                    },
                    record_extractor='$.data',
                    meta_extractor={'has_more': '$.has_more'},
                ),
                Action.CREATE: EndpointDefinition(
                    method='POST',
                    path='/v1/refunds',
                    action=Action.CREATE,
                    description='When you create a new refund, you must specify a Charge or a PaymentIntent object on which to create it. Creating a new refund will refund a charge that has previously been created but not yet refunded.',
                    body_fields=[
                        'charge',
                        'payment_intent',
                        'amount',
                        'metadata',
                        'reason',
                        'refund_application_fee',
                        'reverse_transfer',
                    ],
                    content_type=ContentType.FORM_URLENCODED,
                    request_schema={
                        'type': 'object',
                        'properties': {
                            'charge': {'type': 'string', 'description': 'The identifier of the charge to refund'},
                            'payment_intent': {'type': 'string', 'description': 'The identifier of the PaymentIntent to refund'},
                            'amount': {'type': 'integer', 'description': 'A positive integer in the smallest currency unit representing how much to refund. Can refund only up to the remaining, unrefunded amount'},
                            'metadata': {
                                'type': 'object',
                                'description': 'Set of key-value pairs that you can attach to an object',
                                'additionalProperties': {'type': 'string'},
                            },
                            'reason': {
                                'type': 'string',
                                'enum': ['duplicate', 'fraudulent', 'requested_by_customer'],
                                'description': 'String indicating the reason for the refund',
                            },
                            'refund_application_fee': {'type': 'boolean', 'description': 'Whether to refund the application fee'},
                            'reverse_transfer': {'type': 'boolean', 'description': 'Whether to reverse the transfer'},
                        },
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'id': {'type': 'string', 'description': 'Unique identifier for the refund'},
                            'object': {
                                'type': 'string',
                                'description': "String representing the object's type",
                                'enum': ['refund'],
                            },
                            'amount': {'type': 'integer', 'description': 'Amount refunded (in smallest currency unit)'},
                            'balance_transaction': {
                                'type': ['string', 'null'],
                                'description': 'Balance transaction that describes the impact on your account balance',
                            },
                            'charge': {
                                'type': ['string', 'null'],
                                'description': 'ID of the charge that was refunded',
                            },
                            'created': {
                                'type': 'integer',
                                'format': 'int64',
                                'description': 'Time at which the refund was created (Unix timestamp)',
                            },
                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code (lowercase)'},
                            'description': {
                                'type': ['string', 'null'],
                                'description': 'An arbitrary string attached to the object',
                            },
                            'destination_details': {
                                'type': ['object', 'null'],
                                'description': 'Transaction-specific details for the refund',
                                'properties': {
                                    'affirm': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a affirm refund, this hash contains the transaction specific details',
                                    },
                                    'afterpay_clearpay': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a afterpay_clearpay refund, this hash contains the transaction specific details',
                                    },
                                    'alipay': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a alipay refund, this hash contains the transaction specific details',
                                    },
                                    'alma': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a alma refund, this hash contains the transaction specific details',
                                    },
                                    'amazon_pay': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a amazon_pay refund, this hash contains the transaction specific details',
                                    },
                                    'au_bank_transfer': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a au_bank_transfer refund, this hash contains the transaction specific details',
                                    },
                                    'blik': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a blik refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'network_decline_code': {
                                                'type': ['string', 'null'],
                                                'description': 'For refunds declined by the network, a decline code provided by the network',
                                            },
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'br_bank_transfer': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a br_bank_transfer refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'card': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a card refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'Value of the reference number assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference number on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                            'reference_type': {
                                                'type': ['string', 'null'],
                                                'description': 'Type of the reference number assigned to the refund',
                                            },
                                            'type': {
                                                'type': 'string',
                                                'description': 'The type of refund',
                                                'enum': ['pending', 'refund', 'reversal'],
                                            },
                                        },
                                    },
                                    'cashapp': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a cashapp refund, this hash contains the transaction specific details',
                                    },
                                    'crypto': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a crypto refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The transaction hash of the refund',
                                            },
                                        },
                                    },
                                    'customer_cash_balance': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a customer_cash_balance refund, this hash contains the transaction specific details',
                                    },
                                    'eps': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a eps refund, this hash contains the transaction specific details',
                                    },
                                    'eu_bank_transfer': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a eu_bank_transfer refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'gb_bank_transfer': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a gb_bank_transfer refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'giropay': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a giropay refund, this hash contains the transaction specific details',
                                    },
                                    'grabpay': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a grabpay refund, this hash contains the transaction specific details',
                                    },
                                    'jp_bank_transfer': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a jp_bank_transfer refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'klarna': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a klarna refund, this hash contains the transaction specific details',
                                    },
                                    'mb_way': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a mb_way refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'multibanco': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a multibanco refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'mx_bank_transfer': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a mx_bank_transfer refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'nz_bank_transfer': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a nz_bank_transfer refund, this hash contains the transaction specific details',
                                    },
                                    'p24': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a p24 refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'paynow': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a paynow refund, this hash contains the transaction specific details',
                                    },
                                    'paypal': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a paypal refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'network_decline_code': {
                                                'type': ['string', 'null'],
                                                'description': 'For refunds declined by the network, a decline code provided by the network',
                                            },
                                        },
                                    },
                                    'pix': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a pix refund, this hash contains the transaction specific details',
                                    },
                                    'revolut': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a revolut refund, this hash contains the transaction specific details',
                                    },
                                    'sofort': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a sofort refund, this hash contains the transaction specific details',
                                    },
                                    'swish': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a swish refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'network_decline_code': {
                                                'type': ['string', 'null'],
                                                'description': 'For refunds declined by the network, a decline code provided by the network',
                                            },
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'th_bank_transfer': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a th_bank_transfer refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'twint': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a twint refund, this hash contains the transaction specific details',
                                    },
                                    'type': {'type': 'string', 'description': 'The type of transaction-specific details of the payment method used in the refund'},
                                    'us_bank_transfer': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a us_bank_transfer refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'wechat_pay': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a wechat_pay refund, this hash contains the transaction specific details',
                                    },
                                    'zip': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a zip refund, this hash contains the transaction specific details',
                                    },
                                },
                            },
                            'failure_balance_transaction': {
                                'type': ['string', 'null'],
                                'description': 'After the refund fails, this balance transaction describes the adjustment made on your account balance',
                            },
                            'failure_reason': {
                                'type': ['string', 'null'],
                                'description': 'Reason for refund failure if status is failed',
                            },
                            'instructions_email': {
                                'type': ['string', 'null'],
                                'description': 'Email address to which instructions for refund were sent',
                            },
                            'metadata': {
                                'type': ['object', 'null'],
                                'additionalProperties': {'type': 'string'},
                                'description': 'Set of key-value pairs for storing additional information',
                            },
                            'next_action': {
                                'type': ['object', 'null'],
                                'description': 'If the refund has a status of requires_action, this property describes what the refund needs to continue processing',
                                'properties': {
                                    'display_details': {
                                        'type': ['object', 'null'],
                                        'description': 'Contains the refund details',
                                        'properties': {
                                            'email_sent': {
                                                'type': 'object',
                                                'description': 'Contains information about the email sent to the customer',
                                                'properties': {
                                                    'email_sent_at': {
                                                        'type': 'integer',
                                                        'format': 'int64',
                                                        'description': 'The timestamp when the email was sent',
                                                    },
                                                    'email_sent_to': {'type': 'string', 'description': "The recipient's email address"},
                                                },
                                            },
                                            'expires_at': {
                                                'type': 'integer',
                                                'format': 'int64',
                                                'description': 'The expiry timestamp',
                                            },
                                        },
                                    },
                                    'type': {'type': 'string', 'description': 'Type of the next action to perform'},
                                },
                            },
                            'payment_intent': {
                                'type': ['string', 'null'],
                                'description': 'ID of the PaymentIntent that was refunded',
                            },
                            'pending_reason': {
                                'type': ['string', 'null'],
                                'description': 'Reason for why the refund is pending',
                                'enum': ['processing', 'insufficient_funds', 'charge_pending'],
                            },
                            'reason': {
                                'type': ['string', 'null'],
                                'description': 'Reason for the refund',
                            },
                            'receipt_number': {
                                'type': ['string', 'null'],
                                'description': 'Transaction number that appears on email receipts sent for this refund',
                            },
                            'source_transfer_reversal': {
                                'type': ['string', 'null'],
                                'description': 'The transfer reversal that is associated with the refund',
                            },
                            'status': {
                                'type': ['string', 'null'],
                                'description': 'Status of the refund',
                                'enum': [
                                    'pending',
                                    'requires_action',
                                    'succeeded',
                                    'failed',
                                    'canceled',
                                ],
                            },
                            'transfer_reversal': {
                                'type': ['string', 'null'],
                                'description': 'If the refund is associated with a transfer, the ID of the transfer reversal',
                            },
                        },
                        'x-airbyte-entity-name': 'refunds',
                    },
                ),
                Action.GET: EndpointDefinition(
                    method='GET',
                    path='/v1/refunds/{id}',
                    action=Action.GET,
                    description='Retrieves the details of an existing refund',
                    path_params=['id'],
                    path_params_schema={
                        'id': {'type': 'string', 'required': True},
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'id': {'type': 'string', 'description': 'Unique identifier for the refund'},
                            'object': {
                                'type': 'string',
                                'description': "String representing the object's type",
                                'enum': ['refund'],
                            },
                            'amount': {'type': 'integer', 'description': 'Amount refunded (in smallest currency unit)'},
                            'balance_transaction': {
                                'type': ['string', 'null'],
                                'description': 'Balance transaction that describes the impact on your account balance',
                            },
                            'charge': {
                                'type': ['string', 'null'],
                                'description': 'ID of the charge that was refunded',
                            },
                            'created': {
                                'type': 'integer',
                                'format': 'int64',
                                'description': 'Time at which the refund was created (Unix timestamp)',
                            },
                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code (lowercase)'},
                            'description': {
                                'type': ['string', 'null'],
                                'description': 'An arbitrary string attached to the object',
                            },
                            'destination_details': {
                                'type': ['object', 'null'],
                                'description': 'Transaction-specific details for the refund',
                                'properties': {
                                    'affirm': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a affirm refund, this hash contains the transaction specific details',
                                    },
                                    'afterpay_clearpay': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a afterpay_clearpay refund, this hash contains the transaction specific details',
                                    },
                                    'alipay': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a alipay refund, this hash contains the transaction specific details',
                                    },
                                    'alma': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a alma refund, this hash contains the transaction specific details',
                                    },
                                    'amazon_pay': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a amazon_pay refund, this hash contains the transaction specific details',
                                    },
                                    'au_bank_transfer': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a au_bank_transfer refund, this hash contains the transaction specific details',
                                    },
                                    'blik': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a blik refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'network_decline_code': {
                                                'type': ['string', 'null'],
                                                'description': 'For refunds declined by the network, a decline code provided by the network',
                                            },
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'br_bank_transfer': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a br_bank_transfer refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'card': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a card refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'Value of the reference number assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference number on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                            'reference_type': {
                                                'type': ['string', 'null'],
                                                'description': 'Type of the reference number assigned to the refund',
                                            },
                                            'type': {
                                                'type': 'string',
                                                'description': 'The type of refund',
                                                'enum': ['pending', 'refund', 'reversal'],
                                            },
                                        },
                                    },
                                    'cashapp': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a cashapp refund, this hash contains the transaction specific details',
                                    },
                                    'crypto': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a crypto refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The transaction hash of the refund',
                                            },
                                        },
                                    },
                                    'customer_cash_balance': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a customer_cash_balance refund, this hash contains the transaction specific details',
                                    },
                                    'eps': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a eps refund, this hash contains the transaction specific details',
                                    },
                                    'eu_bank_transfer': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a eu_bank_transfer refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'gb_bank_transfer': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a gb_bank_transfer refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'giropay': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a giropay refund, this hash contains the transaction specific details',
                                    },
                                    'grabpay': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a grabpay refund, this hash contains the transaction specific details',
                                    },
                                    'jp_bank_transfer': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a jp_bank_transfer refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'klarna': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a klarna refund, this hash contains the transaction specific details',
                                    },
                                    'mb_way': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a mb_way refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'multibanco': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a multibanco refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'mx_bank_transfer': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a mx_bank_transfer refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'nz_bank_transfer': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a nz_bank_transfer refund, this hash contains the transaction specific details',
                                    },
                                    'p24': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a p24 refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'paynow': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a paynow refund, this hash contains the transaction specific details',
                                    },
                                    'paypal': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a paypal refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'network_decline_code': {
                                                'type': ['string', 'null'],
                                                'description': 'For refunds declined by the network, a decline code provided by the network',
                                            },
                                        },
                                    },
                                    'pix': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a pix refund, this hash contains the transaction specific details',
                                    },
                                    'revolut': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a revolut refund, this hash contains the transaction specific details',
                                    },
                                    'sofort': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a sofort refund, this hash contains the transaction specific details',
                                    },
                                    'swish': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a swish refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'network_decline_code': {
                                                'type': ['string', 'null'],
                                                'description': 'For refunds declined by the network, a decline code provided by the network',
                                            },
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'th_bank_transfer': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a th_bank_transfer refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'twint': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a twint refund, this hash contains the transaction specific details',
                                    },
                                    'type': {'type': 'string', 'description': 'The type of transaction-specific details of the payment method used in the refund'},
                                    'us_bank_transfer': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a us_bank_transfer refund, this hash contains the transaction specific details',
                                        'properties': {
                                            'reference': {
                                                'type': ['string', 'null'],
                                                'description': 'The reference assigned to the refund',
                                            },
                                            'reference_status': {
                                                'type': ['string', 'null'],
                                                'description': 'Status of the reference on the refund',
                                                'enum': ['pending', 'available', 'unavailable'],
                                            },
                                        },
                                    },
                                    'wechat_pay': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a wechat_pay refund, this hash contains the transaction specific details',
                                    },
                                    'zip': {
                                        'type': ['object', 'null'],
                                        'description': 'If this is a zip refund, this hash contains the transaction specific details',
                                    },
                                },
                            },
                            'failure_balance_transaction': {
                                'type': ['string', 'null'],
                                'description': 'After the refund fails, this balance transaction describes the adjustment made on your account balance',
                            },
                            'failure_reason': {
                                'type': ['string', 'null'],
                                'description': 'Reason for refund failure if status is failed',
                            },
                            'instructions_email': {
                                'type': ['string', 'null'],
                                'description': 'Email address to which instructions for refund were sent',
                            },
                            'metadata': {
                                'type': ['object', 'null'],
                                'additionalProperties': {'type': 'string'},
                                'description': 'Set of key-value pairs for storing additional information',
                            },
                            'next_action': {
                                'type': ['object', 'null'],
                                'description': 'If the refund has a status of requires_action, this property describes what the refund needs to continue processing',
                                'properties': {
                                    'display_details': {
                                        'type': ['object', 'null'],
                                        'description': 'Contains the refund details',
                                        'properties': {
                                            'email_sent': {
                                                'type': 'object',
                                                'description': 'Contains information about the email sent to the customer',
                                                'properties': {
                                                    'email_sent_at': {
                                                        'type': 'integer',
                                                        'format': 'int64',
                                                        'description': 'The timestamp when the email was sent',
                                                    },
                                                    'email_sent_to': {'type': 'string', 'description': "The recipient's email address"},
                                                },
                                            },
                                            'expires_at': {
                                                'type': 'integer',
                                                'format': 'int64',
                                                'description': 'The expiry timestamp',
                                            },
                                        },
                                    },
                                    'type': {'type': 'string', 'description': 'Type of the next action to perform'},
                                },
                            },
                            'payment_intent': {
                                'type': ['string', 'null'],
                                'description': 'ID of the PaymentIntent that was refunded',
                            },
                            'pending_reason': {
                                'type': ['string', 'null'],
                                'description': 'Reason for why the refund is pending',
                                'enum': ['processing', 'insufficient_funds', 'charge_pending'],
                            },
                            'reason': {
                                'type': ['string', 'null'],
                                'description': 'Reason for the refund',
                            },
                            'receipt_number': {
                                'type': ['string', 'null'],
                                'description': 'Transaction number that appears on email receipts sent for this refund',
                            },
                            'source_transfer_reversal': {
                                'type': ['string', 'null'],
                                'description': 'The transfer reversal that is associated with the refund',
                            },
                            'status': {
                                'type': ['string', 'null'],
                                'description': 'Status of the refund',
                                'enum': [
                                    'pending',
                                    'requires_action',
                                    'succeeded',
                                    'failed',
                                    'canceled',
                                ],
                            },
                            'transfer_reversal': {
                                'type': ['string', 'null'],
                                'description': 'If the refund is associated with a transfer, the ID of the transfer reversal',
                            },
                        },
                        'x-airbyte-entity-name': 'refunds',
                    },
                ),
            },
            entity_schema={
                'type': 'object',
                'properties': {
                    'id': {'type': 'string', 'description': 'Unique identifier for the refund'},
                    'object': {
                        'type': 'string',
                        'description': "String representing the object's type",
                        'enum': ['refund'],
                    },
                    'amount': {'type': 'integer', 'description': 'Amount refunded (in smallest currency unit)'},
                    'balance_transaction': {
                        'type': ['string', 'null'],
                        'description': 'Balance transaction that describes the impact on your account balance',
                    },
                    'charge': {
                        'type': ['string', 'null'],
                        'description': 'ID of the charge that was refunded',
                    },
                    'created': {
                        'type': 'integer',
                        'format': 'int64',
                        'description': 'Time at which the refund was created (Unix timestamp)',
                    },
                    'currency': {'type': 'string', 'description': 'Three-letter ISO currency code (lowercase)'},
                    'description': {
                        'type': ['string', 'null'],
                        'description': 'An arbitrary string attached to the object',
                    },
                    'destination_details': {
                        'type': ['object', 'null'],
                        'description': 'Transaction-specific details for the refund',
                        'properties': {
                            'affirm': {
                                'type': ['object', 'null'],
                                'description': 'If this is a affirm refund, this hash contains the transaction specific details',
                            },
                            'afterpay_clearpay': {
                                'type': ['object', 'null'],
                                'description': 'If this is a afterpay_clearpay refund, this hash contains the transaction specific details',
                            },
                            'alipay': {
                                'type': ['object', 'null'],
                                'description': 'If this is a alipay refund, this hash contains the transaction specific details',
                            },
                            'alma': {
                                'type': ['object', 'null'],
                                'description': 'If this is a alma refund, this hash contains the transaction specific details',
                            },
                            'amazon_pay': {
                                'type': ['object', 'null'],
                                'description': 'If this is a amazon_pay refund, this hash contains the transaction specific details',
                            },
                            'au_bank_transfer': {
                                'type': ['object', 'null'],
                                'description': 'If this is a au_bank_transfer refund, this hash contains the transaction specific details',
                            },
                            'blik': {
                                'type': ['object', 'null'],
                                'description': 'If this is a blik refund, this hash contains the transaction specific details',
                                'properties': {
                                    'network_decline_code': {
                                        'type': ['string', 'null'],
                                        'description': 'For refunds declined by the network, a decline code provided by the network',
                                    },
                                    'reference': {
                                        'type': ['string', 'null'],
                                        'description': 'The reference assigned to the refund',
                                    },
                                    'reference_status': {
                                        'type': ['string', 'null'],
                                        'description': 'Status of the reference on the refund',
                                        'enum': ['pending', 'available', 'unavailable'],
                                    },
                                },
                            },
                            'br_bank_transfer': {
                                'type': ['object', 'null'],
                                'description': 'If this is a br_bank_transfer refund, this hash contains the transaction specific details',
                                'properties': {
                                    'reference': {
                                        'type': ['string', 'null'],
                                        'description': 'The reference assigned to the refund',
                                    },
                                    'reference_status': {
                                        'type': ['string', 'null'],
                                        'description': 'Status of the reference on the refund',
                                        'enum': ['pending', 'available', 'unavailable'],
                                    },
                                },
                            },
                            'card': {
                                'type': ['object', 'null'],
                                'description': 'If this is a card refund, this hash contains the transaction specific details',
                                'properties': {
                                    'reference': {
                                        'type': ['string', 'null'],
                                        'description': 'Value of the reference number assigned to the refund',
                                    },
                                    'reference_status': {
                                        'type': ['string', 'null'],
                                        'description': 'Status of the reference number on the refund',
                                        'enum': ['pending', 'available', 'unavailable'],
                                    },
                                    'reference_type': {
                                        'type': ['string', 'null'],
                                        'description': 'Type of the reference number assigned to the refund',
                                    },
                                    'type': {
                                        'type': 'string',
                                        'description': 'The type of refund',
                                        'enum': ['pending', 'refund', 'reversal'],
                                    },
                                },
                            },
                            'cashapp': {
                                'type': ['object', 'null'],
                                'description': 'If this is a cashapp refund, this hash contains the transaction specific details',
                            },
                            'crypto': {
                                'type': ['object', 'null'],
                                'description': 'If this is a crypto refund, this hash contains the transaction specific details',
                                'properties': {
                                    'reference': {
                                        'type': ['string', 'null'],
                                        'description': 'The transaction hash of the refund',
                                    },
                                },
                            },
                            'customer_cash_balance': {
                                'type': ['object', 'null'],
                                'description': 'If this is a customer_cash_balance refund, this hash contains the transaction specific details',
                            },
                            'eps': {
                                'type': ['object', 'null'],
                                'description': 'If this is a eps refund, this hash contains the transaction specific details',
                            },
                            'eu_bank_transfer': {
                                'type': ['object', 'null'],
                                'description': 'If this is a eu_bank_transfer refund, this hash contains the transaction specific details',
                                'properties': {
                                    'reference': {
                                        'type': ['string', 'null'],
                                        'description': 'The reference assigned to the refund',
                                    },
                                    'reference_status': {
                                        'type': ['string', 'null'],
                                        'description': 'Status of the reference on the refund',
                                        'enum': ['pending', 'available', 'unavailable'],
                                    },
                                },
                            },
                            'gb_bank_transfer': {
                                'type': ['object', 'null'],
                                'description': 'If this is a gb_bank_transfer refund, this hash contains the transaction specific details',
                                'properties': {
                                    'reference': {
                                        'type': ['string', 'null'],
                                        'description': 'The reference assigned to the refund',
                                    },
                                    'reference_status': {
                                        'type': ['string', 'null'],
                                        'description': 'Status of the reference on the refund',
                                        'enum': ['pending', 'available', 'unavailable'],
                                    },
                                },
                            },
                            'giropay': {
                                'type': ['object', 'null'],
                                'description': 'If this is a giropay refund, this hash contains the transaction specific details',
                            },
                            'grabpay': {
                                'type': ['object', 'null'],
                                'description': 'If this is a grabpay refund, this hash contains the transaction specific details',
                            },
                            'jp_bank_transfer': {
                                'type': ['object', 'null'],
                                'description': 'If this is a jp_bank_transfer refund, this hash contains the transaction specific details',
                                'properties': {
                                    'reference': {
                                        'type': ['string', 'null'],
                                        'description': 'The reference assigned to the refund',
                                    },
                                    'reference_status': {
                                        'type': ['string', 'null'],
                                        'description': 'Status of the reference on the refund',
                                        'enum': ['pending', 'available', 'unavailable'],
                                    },
                                },
                            },
                            'klarna': {
                                'type': ['object', 'null'],
                                'description': 'If this is a klarna refund, this hash contains the transaction specific details',
                            },
                            'mb_way': {
                                'type': ['object', 'null'],
                                'description': 'If this is a mb_way refund, this hash contains the transaction specific details',
                                'properties': {
                                    'reference': {
                                        'type': ['string', 'null'],
                                        'description': 'The reference assigned to the refund',
                                    },
                                    'reference_status': {
                                        'type': ['string', 'null'],
                                        'description': 'Status of the reference on the refund',
                                        'enum': ['pending', 'available', 'unavailable'],
                                    },
                                },
                            },
                            'multibanco': {
                                'type': ['object', 'null'],
                                'description': 'If this is a multibanco refund, this hash contains the transaction specific details',
                                'properties': {
                                    'reference': {
                                        'type': ['string', 'null'],
                                        'description': 'The reference assigned to the refund',
                                    },
                                    'reference_status': {
                                        'type': ['string', 'null'],
                                        'description': 'Status of the reference on the refund',
                                        'enum': ['pending', 'available', 'unavailable'],
                                    },
                                },
                            },
                            'mx_bank_transfer': {
                                'type': ['object', 'null'],
                                'description': 'If this is a mx_bank_transfer refund, this hash contains the transaction specific details',
                                'properties': {
                                    'reference': {
                                        'type': ['string', 'null'],
                                        'description': 'The reference assigned to the refund',
                                    },
                                    'reference_status': {
                                        'type': ['string', 'null'],
                                        'description': 'Status of the reference on the refund',
                                        'enum': ['pending', 'available', 'unavailable'],
                                    },
                                },
                            },
                            'nz_bank_transfer': {
                                'type': ['object', 'null'],
                                'description': 'If this is a nz_bank_transfer refund, this hash contains the transaction specific details',
                            },
                            'p24': {
                                'type': ['object', 'null'],
                                'description': 'If this is a p24 refund, this hash contains the transaction specific details',
                                'properties': {
                                    'reference': {
                                        'type': ['string', 'null'],
                                        'description': 'The reference assigned to the refund',
                                    },
                                    'reference_status': {
                                        'type': ['string', 'null'],
                                        'description': 'Status of the reference on the refund',
                                        'enum': ['pending', 'available', 'unavailable'],
                                    },
                                },
                            },
                            'paynow': {
                                'type': ['object', 'null'],
                                'description': 'If this is a paynow refund, this hash contains the transaction specific details',
                            },
                            'paypal': {
                                'type': ['object', 'null'],
                                'description': 'If this is a paypal refund, this hash contains the transaction specific details',
                                'properties': {
                                    'network_decline_code': {
                                        'type': ['string', 'null'],
                                        'description': 'For refunds declined by the network, a decline code provided by the network',
                                    },
                                },
                            },
                            'pix': {
                                'type': ['object', 'null'],
                                'description': 'If this is a pix refund, this hash contains the transaction specific details',
                            },
                            'revolut': {
                                'type': ['object', 'null'],
                                'description': 'If this is a revolut refund, this hash contains the transaction specific details',
                            },
                            'sofort': {
                                'type': ['object', 'null'],
                                'description': 'If this is a sofort refund, this hash contains the transaction specific details',
                            },
                            'swish': {
                                'type': ['object', 'null'],
                                'description': 'If this is a swish refund, this hash contains the transaction specific details',
                                'properties': {
                                    'network_decline_code': {
                                        'type': ['string', 'null'],
                                        'description': 'For refunds declined by the network, a decline code provided by the network',
                                    },
                                    'reference': {
                                        'type': ['string', 'null'],
                                        'description': 'The reference assigned to the refund',
                                    },
                                    'reference_status': {
                                        'type': ['string', 'null'],
                                        'description': 'Status of the reference on the refund',
                                        'enum': ['pending', 'available', 'unavailable'],
                                    },
                                },
                            },
                            'th_bank_transfer': {
                                'type': ['object', 'null'],
                                'description': 'If this is a th_bank_transfer refund, this hash contains the transaction specific details',
                                'properties': {
                                    'reference': {
                                        'type': ['string', 'null'],
                                        'description': 'The reference assigned to the refund',
                                    },
                                    'reference_status': {
                                        'type': ['string', 'null'],
                                        'description': 'Status of the reference on the refund',
                                        'enum': ['pending', 'available', 'unavailable'],
                                    },
                                },
                            },
                            'twint': {
                                'type': ['object', 'null'],
                                'description': 'If this is a twint refund, this hash contains the transaction specific details',
                            },
                            'type': {'type': 'string', 'description': 'The type of transaction-specific details of the payment method used in the refund'},
                            'us_bank_transfer': {
                                'type': ['object', 'null'],
                                'description': 'If this is a us_bank_transfer refund, this hash contains the transaction specific details',
                                'properties': {
                                    'reference': {
                                        'type': ['string', 'null'],
                                        'description': 'The reference assigned to the refund',
                                    },
                                    'reference_status': {
                                        'type': ['string', 'null'],
                                        'description': 'Status of the reference on the refund',
                                        'enum': ['pending', 'available', 'unavailable'],
                                    },
                                },
                            },
                            'wechat_pay': {
                                'type': ['object', 'null'],
                                'description': 'If this is a wechat_pay refund, this hash contains the transaction specific details',
                            },
                            'zip': {
                                'type': ['object', 'null'],
                                'description': 'If this is a zip refund, this hash contains the transaction specific details',
                            },
                        },
                    },
                    'failure_balance_transaction': {
                        'type': ['string', 'null'],
                        'description': 'After the refund fails, this balance transaction describes the adjustment made on your account balance',
                    },
                    'failure_reason': {
                        'type': ['string', 'null'],
                        'description': 'Reason for refund failure if status is failed',
                    },
                    'instructions_email': {
                        'type': ['string', 'null'],
                        'description': 'Email address to which instructions for refund were sent',
                    },
                    'metadata': {
                        'type': ['object', 'null'],
                        'additionalProperties': {'type': 'string'},
                        'description': 'Set of key-value pairs for storing additional information',
                    },
                    'next_action': {
                        'type': ['object', 'null'],
                        'description': 'If the refund has a status of requires_action, this property describes what the refund needs to continue processing',
                        'properties': {
                            'display_details': {
                                'type': ['object', 'null'],
                                'description': 'Contains the refund details',
                                'properties': {
                                    'email_sent': {
                                        'type': 'object',
                                        'description': 'Contains information about the email sent to the customer',
                                        'properties': {
                                            'email_sent_at': {
                                                'type': 'integer',
                                                'format': 'int64',
                                                'description': 'The timestamp when the email was sent',
                                            },
                                            'email_sent_to': {'type': 'string', 'description': "The recipient's email address"},
                                        },
                                    },
                                    'expires_at': {
                                        'type': 'integer',
                                        'format': 'int64',
                                        'description': 'The expiry timestamp',
                                    },
                                },
                            },
                            'type': {'type': 'string', 'description': 'Type of the next action to perform'},
                        },
                    },
                    'payment_intent': {
                        'type': ['string', 'null'],
                        'description': 'ID of the PaymentIntent that was refunded',
                    },
                    'pending_reason': {
                        'type': ['string', 'null'],
                        'description': 'Reason for why the refund is pending',
                        'enum': ['processing', 'insufficient_funds', 'charge_pending'],
                    },
                    'reason': {
                        'type': ['string', 'null'],
                        'description': 'Reason for the refund',
                    },
                    'receipt_number': {
                        'type': ['string', 'null'],
                        'description': 'Transaction number that appears on email receipts sent for this refund',
                    },
                    'source_transfer_reversal': {
                        'type': ['string', 'null'],
                        'description': 'The transfer reversal that is associated with the refund',
                    },
                    'status': {
                        'type': ['string', 'null'],
                        'description': 'Status of the refund',
                        'enum': [
                            'pending',
                            'requires_action',
                            'succeeded',
                            'failed',
                            'canceled',
                        ],
                    },
                    'transfer_reversal': {
                        'type': ['string', 'null'],
                        'description': 'If the refund is associated with a transfer, the ID of the transfer reversal',
                    },
                },
                'x-airbyte-entity-name': 'refunds',
            },
        ),
        EntityDefinition(
            name='products',
            actions=[
                Action.LIST,
                Action.CREATE,
                Action.GET,
                Action.UPDATE,
                Action.DELETE,
                Action.API_SEARCH,
            ],
            endpoints={
                Action.LIST: EndpointDefinition(
                    method='GET',
                    path='/v1/products',
                    action=Action.LIST,
                    description='Returns a list of your products. The products are returned sorted by creation date, with the most recent products appearing first.',
                    query_params=[
                        'active',
                        'created',
                        'ending_before',
                        'ids',
                        'limit',
                        'shippable',
                        'starting_after',
                        'url',
                    ],
                    query_params_schema={
                        'active': {'type': 'boolean', 'required': False},
                        'created': {'type': 'object', 'required': False},
                        'ending_before': {'type': 'string', 'required': False},
                        'ids': {'type': 'array', 'required': False},
                        'limit': {'type': 'integer', 'required': False},
                        'shippable': {'type': 'boolean', 'required': False},
                        'starting_after': {'type': 'string', 'required': False},
                        'url': {'type': 'string', 'required': False},
                    },
                    deep_object_params=['created'],
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['list'],
                            },
                            'data': {
                                'type': 'array',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the product'},
                                        'object': {
                                            'type': 'string',
                                            'description': "String representing the object's type",
                                            'enum': ['product'],
                                        },
                                        'active': {'type': 'boolean', 'description': 'Whether the product is currently available for purchase'},
                                        'attributes': {
                                            'type': 'array',
                                            'description': 'A list of up to 5 alphanumeric attributes that each SKU can have',
                                            'items': {'type': 'string'},
                                        },
                                        'created': {'type': 'integer', 'description': 'Time at which the product was created, measured in seconds since the Unix epoch'},
                                        'default_price': {
                                            'type': ['string', 'null'],
                                            'description': 'The ID of the Price object that is the default price for this product',
                                        },
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': "The product's description, meant to be displayable to the customer",
                                        },
                                        'features': {
                                            'type': 'array',
                                            'description': 'A list of up to 15 features for this product',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'name': {'type': 'string', 'description': 'The feature name'},
                                                },
                                            },
                                        },
                                        'images': {
                                            'type': 'array',
                                            'description': 'A list of up to 8 URLs of images for this product',
                                            'items': {'type': 'string'},
                                        },
                                        'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or the value false if the object exists in test mode'},
                                        'marketing_features': {
                                            'type': 'array',
                                            'description': 'A list of up to 15 marketing features for this product',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'name': {
                                                        'type': ['string', 'null'],
                                                        'description': 'The marketing feature name. Up to 80 characters long',
                                                    },
                                                },
                                            },
                                        },
                                        'metadata': {
                                            'type': 'object',
                                            'description': 'Set of key-value pairs that you can attach to an object',
                                            'additionalProperties': {'type': 'string'},
                                        },
                                        'name': {'type': 'string', 'description': "The product's name, meant to be displayable to the customer"},
                                        'package_dimensions': {
                                            'type': ['object', 'null'],
                                            'description': 'The dimensions of this product for shipping purposes',
                                            'properties': {
                                                'height': {'type': 'number', 'description': 'Height, in inches'},
                                                'length': {'type': 'number', 'description': 'Length, in inches'},
                                                'weight': {'type': 'number', 'description': 'Weight, in ounces'},
                                                'width': {'type': 'number', 'description': 'Width, in inches'},
                                            },
                                        },
                                        'shippable': {
                                            'type': ['boolean', 'null'],
                                            'description': 'Whether this product is shipped (i.e., physical goods)',
                                        },
                                        'statement_descriptor': {
                                            'type': ['string', 'null'],
                                            'description': "Extra information about a product which will appear on your customer's credit card statement",
                                        },
                                        'tax_code': {
                                            'type': ['string', 'null'],
                                            'description': 'A tax code ID',
                                        },
                                        'type': {
                                            'type': 'string',
                                            'description': "The type of the product. Either 'good' for physical goods or 'service' for digital services",
                                            'enum': ['good', 'service'],
                                        },
                                        'unit_label': {
                                            'type': ['string', 'null'],
                                            'description': 'A label that represents units of this product',
                                        },
                                        'updated': {'type': 'integer', 'description': 'Time at which the product was last updated, measured in seconds since the Unix epoch'},
                                        'url': {
                                            'type': ['string', 'null'],
                                            'description': 'A URL of a publicly-accessible webpage for this product',
                                        },
                                    },
                                    'x-airbyte-entity-name': 'products',
                                },
                            },
                            'has_more': {'type': 'boolean'},
                            'url': {'type': 'string'},
                        },
                    },
                    record_extractor='$.data',
                    meta_extractor={'has_more': '$.has_more'},
                ),
                Action.CREATE: EndpointDefinition(
                    method='POST',
                    path='/v1/products',
                    action=Action.CREATE,
                    description="Creates a new product object. Your product's name, description, and other information will be displayed in all product and invoice displays.",
                    body_fields=[
                        'name',
                        'active',
                        'description',
                        'id',
                        'images',
                        'marketing_features',
                        'metadata',
                        'package_dimensions',
                        'shippable',
                        'statement_descriptor',
                        'tax_code',
                        'unit_label',
                        'url',
                    ],
                    content_type=ContentType.FORM_URLENCODED,
                    request_schema={
                        'type': 'object',
                        'properties': {
                            'name': {'type': 'string', 'description': "The product's name, meant to be displayable to the customer"},
                            'active': {'type': 'boolean', 'description': 'Whether the product is available for purchase. Defaults to true'},
                            'description': {'type': 'string', 'description': "The product's description, meant to be displayable to the customer"},
                            'id': {'type': 'string', 'description': 'An identifier will be randomly generated by Stripe. You can optionally override this ID, but the ID must be unique across all products in your Stripe account'},
                            'images': {
                                'type': 'array',
                                'description': 'A list of up to 8 URLs of images for this product',
                                'items': {'type': 'string'},
                            },
                            'marketing_features': {
                                'type': 'array',
                                'description': 'A list of up to 15 marketing features for this product',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'name': {'type': 'string', 'description': 'The marketing feature name. Up to 80 characters long'},
                                    },
                                },
                            },
                            'metadata': {
                                'type': 'object',
                                'description': 'Set of key-value pairs that you can attach to an object',
                                'additionalProperties': {'type': 'string'},
                            },
                            'package_dimensions': {
                                'type': 'object',
                                'description': 'The dimensions of this product for shipping purposes',
                                'properties': {
                                    'height': {'type': 'number', 'description': 'Height, in inches'},
                                    'length': {'type': 'number', 'description': 'Length, in inches'},
                                    'weight': {'type': 'number', 'description': 'Weight, in ounces'},
                                    'width': {'type': 'number', 'description': 'Width, in inches'},
                                },
                            },
                            'shippable': {'type': 'boolean', 'description': 'Whether this product is shipped (i.e., physical goods)'},
                            'statement_descriptor': {'type': 'string', 'description': "Extra information about a product which will appear on your customer's credit card statement. At most 22 characters"},
                            'tax_code': {'type': 'string', 'description': 'A tax code ID'},
                            'unit_label': {'type': 'string', 'description': 'A label that represents units of this product. Max 12 characters'},
                            'url': {'type': 'string', 'description': 'A URL of a publicly-accessible webpage for this product'},
                        },
                        'required': ['name'],
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'id': {'type': 'string', 'description': 'Unique identifier for the product'},
                            'object': {
                                'type': 'string',
                                'description': "String representing the object's type",
                                'enum': ['product'],
                            },
                            'active': {'type': 'boolean', 'description': 'Whether the product is currently available for purchase'},
                            'attributes': {
                                'type': 'array',
                                'description': 'A list of up to 5 alphanumeric attributes that each SKU can have',
                                'items': {'type': 'string'},
                            },
                            'created': {'type': 'integer', 'description': 'Time at which the product was created, measured in seconds since the Unix epoch'},
                            'default_price': {
                                'type': ['string', 'null'],
                                'description': 'The ID of the Price object that is the default price for this product',
                            },
                            'description': {
                                'type': ['string', 'null'],
                                'description': "The product's description, meant to be displayable to the customer",
                            },
                            'features': {
                                'type': 'array',
                                'description': 'A list of up to 15 features for this product',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'name': {'type': 'string', 'description': 'The feature name'},
                                    },
                                },
                            },
                            'images': {
                                'type': 'array',
                                'description': 'A list of up to 8 URLs of images for this product',
                                'items': {'type': 'string'},
                            },
                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or the value false if the object exists in test mode'},
                            'marketing_features': {
                                'type': 'array',
                                'description': 'A list of up to 15 marketing features for this product',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'name': {
                                            'type': ['string', 'null'],
                                            'description': 'The marketing feature name. Up to 80 characters long',
                                        },
                                    },
                                },
                            },
                            'metadata': {
                                'type': 'object',
                                'description': 'Set of key-value pairs that you can attach to an object',
                                'additionalProperties': {'type': 'string'},
                            },
                            'name': {'type': 'string', 'description': "The product's name, meant to be displayable to the customer"},
                            'package_dimensions': {
                                'type': ['object', 'null'],
                                'description': 'The dimensions of this product for shipping purposes',
                                'properties': {
                                    'height': {'type': 'number', 'description': 'Height, in inches'},
                                    'length': {'type': 'number', 'description': 'Length, in inches'},
                                    'weight': {'type': 'number', 'description': 'Weight, in ounces'},
                                    'width': {'type': 'number', 'description': 'Width, in inches'},
                                },
                            },
                            'shippable': {
                                'type': ['boolean', 'null'],
                                'description': 'Whether this product is shipped (i.e., physical goods)',
                            },
                            'statement_descriptor': {
                                'type': ['string', 'null'],
                                'description': "Extra information about a product which will appear on your customer's credit card statement",
                            },
                            'tax_code': {
                                'type': ['string', 'null'],
                                'description': 'A tax code ID',
                            },
                            'type': {
                                'type': 'string',
                                'description': "The type of the product. Either 'good' for physical goods or 'service' for digital services",
                                'enum': ['good', 'service'],
                            },
                            'unit_label': {
                                'type': ['string', 'null'],
                                'description': 'A label that represents units of this product',
                            },
                            'updated': {'type': 'integer', 'description': 'Time at which the product was last updated, measured in seconds since the Unix epoch'},
                            'url': {
                                'type': ['string', 'null'],
                                'description': 'A URL of a publicly-accessible webpage for this product',
                            },
                        },
                        'x-airbyte-entity-name': 'products',
                    },
                ),
                Action.GET: EndpointDefinition(
                    method='GET',
                    path='/v1/products/{id}',
                    action=Action.GET,
                    description='Retrieves the details of an existing product. Supply the unique product ID and Stripe will return the corresponding product information.',
                    path_params=['id'],
                    path_params_schema={
                        'id': {'type': 'string', 'required': True},
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'id': {'type': 'string', 'description': 'Unique identifier for the product'},
                            'object': {
                                'type': 'string',
                                'description': "String representing the object's type",
                                'enum': ['product'],
                            },
                            'active': {'type': 'boolean', 'description': 'Whether the product is currently available for purchase'},
                            'attributes': {
                                'type': 'array',
                                'description': 'A list of up to 5 alphanumeric attributes that each SKU can have',
                                'items': {'type': 'string'},
                            },
                            'created': {'type': 'integer', 'description': 'Time at which the product was created, measured in seconds since the Unix epoch'},
                            'default_price': {
                                'type': ['string', 'null'],
                                'description': 'The ID of the Price object that is the default price for this product',
                            },
                            'description': {
                                'type': ['string', 'null'],
                                'description': "The product's description, meant to be displayable to the customer",
                            },
                            'features': {
                                'type': 'array',
                                'description': 'A list of up to 15 features for this product',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'name': {'type': 'string', 'description': 'The feature name'},
                                    },
                                },
                            },
                            'images': {
                                'type': 'array',
                                'description': 'A list of up to 8 URLs of images for this product',
                                'items': {'type': 'string'},
                            },
                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or the value false if the object exists in test mode'},
                            'marketing_features': {
                                'type': 'array',
                                'description': 'A list of up to 15 marketing features for this product',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'name': {
                                            'type': ['string', 'null'],
                                            'description': 'The marketing feature name. Up to 80 characters long',
                                        },
                                    },
                                },
                            },
                            'metadata': {
                                'type': 'object',
                                'description': 'Set of key-value pairs that you can attach to an object',
                                'additionalProperties': {'type': 'string'},
                            },
                            'name': {'type': 'string', 'description': "The product's name, meant to be displayable to the customer"},
                            'package_dimensions': {
                                'type': ['object', 'null'],
                                'description': 'The dimensions of this product for shipping purposes',
                                'properties': {
                                    'height': {'type': 'number', 'description': 'Height, in inches'},
                                    'length': {'type': 'number', 'description': 'Length, in inches'},
                                    'weight': {'type': 'number', 'description': 'Weight, in ounces'},
                                    'width': {'type': 'number', 'description': 'Width, in inches'},
                                },
                            },
                            'shippable': {
                                'type': ['boolean', 'null'],
                                'description': 'Whether this product is shipped (i.e., physical goods)',
                            },
                            'statement_descriptor': {
                                'type': ['string', 'null'],
                                'description': "Extra information about a product which will appear on your customer's credit card statement",
                            },
                            'tax_code': {
                                'type': ['string', 'null'],
                                'description': 'A tax code ID',
                            },
                            'type': {
                                'type': 'string',
                                'description': "The type of the product. Either 'good' for physical goods or 'service' for digital services",
                                'enum': ['good', 'service'],
                            },
                            'unit_label': {
                                'type': ['string', 'null'],
                                'description': 'A label that represents units of this product',
                            },
                            'updated': {'type': 'integer', 'description': 'Time at which the product was last updated, measured in seconds since the Unix epoch'},
                            'url': {
                                'type': ['string', 'null'],
                                'description': 'A URL of a publicly-accessible webpage for this product',
                            },
                        },
                        'x-airbyte-entity-name': 'products',
                    },
                ),
                Action.UPDATE: EndpointDefinition(
                    method='POST',
                    path='/v1/products/{id}',
                    action=Action.UPDATE,
                    description='Updates the specific product by setting the values of the parameters passed. Any parameters not provided will be left unchanged.',
                    body_fields=[
                        'active',
                        'name',
                        'description',
                        'default_price',
                        'images',
                        'marketing_features',
                        'metadata',
                        'package_dimensions',
                        'shippable',
                        'statement_descriptor',
                        'tax_code',
                        'unit_label',
                        'url',
                    ],
                    path_params=['id'],
                    path_params_schema={
                        'id': {'type': 'string', 'required': True},
                    },
                    content_type=ContentType.FORM_URLENCODED,
                    request_schema={
                        'type': 'object',
                        'properties': {
                            'active': {'type': 'boolean', 'description': 'Whether the product is available for purchase'},
                            'name': {'type': 'string', 'description': "The product's name, meant to be displayable to the customer"},
                            'description': {'type': 'string', 'description': "The product's description, meant to be displayable to the customer"},
                            'default_price': {'type': 'string', 'description': 'The ID of the Price object that is the default price for this product'},
                            'images': {
                                'type': 'array',
                                'description': 'A list of up to 8 URLs of images for this product',
                                'items': {'type': 'string'},
                            },
                            'marketing_features': {
                                'type': 'array',
                                'description': 'A list of up to 15 marketing features for this product',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'name': {'type': 'string', 'description': 'The marketing feature name. Up to 80 characters long'},
                                    },
                                },
                            },
                            'metadata': {
                                'type': 'object',
                                'description': 'Set of key-value pairs that you can attach to an object',
                                'additionalProperties': {'type': 'string'},
                            },
                            'package_dimensions': {
                                'type': 'object',
                                'description': 'The dimensions of this product for shipping purposes',
                                'properties': {
                                    'height': {'type': 'number', 'description': 'Height, in inches'},
                                    'length': {'type': 'number', 'description': 'Length, in inches'},
                                    'weight': {'type': 'number', 'description': 'Weight, in ounces'},
                                    'width': {'type': 'number', 'description': 'Width, in inches'},
                                },
                            },
                            'shippable': {'type': 'boolean', 'description': 'Whether this product is shipped (i.e., physical goods)'},
                            'statement_descriptor': {'type': 'string', 'description': "Extra information about a product which will appear on your customer's credit card statement. At most 22 characters"},
                            'tax_code': {'type': 'string', 'description': 'A tax code ID'},
                            'unit_label': {'type': 'string', 'description': 'A label that represents units of this product. Max 12 characters'},
                            'url': {'type': 'string', 'description': 'A URL of a publicly-accessible webpage for this product'},
                        },
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'id': {'type': 'string', 'description': 'Unique identifier for the product'},
                            'object': {
                                'type': 'string',
                                'description': "String representing the object's type",
                                'enum': ['product'],
                            },
                            'active': {'type': 'boolean', 'description': 'Whether the product is currently available for purchase'},
                            'attributes': {
                                'type': 'array',
                                'description': 'A list of up to 5 alphanumeric attributes that each SKU can have',
                                'items': {'type': 'string'},
                            },
                            'created': {'type': 'integer', 'description': 'Time at which the product was created, measured in seconds since the Unix epoch'},
                            'default_price': {
                                'type': ['string', 'null'],
                                'description': 'The ID of the Price object that is the default price for this product',
                            },
                            'description': {
                                'type': ['string', 'null'],
                                'description': "The product's description, meant to be displayable to the customer",
                            },
                            'features': {
                                'type': 'array',
                                'description': 'A list of up to 15 features for this product',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'name': {'type': 'string', 'description': 'The feature name'},
                                    },
                                },
                            },
                            'images': {
                                'type': 'array',
                                'description': 'A list of up to 8 URLs of images for this product',
                                'items': {'type': 'string'},
                            },
                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or the value false if the object exists in test mode'},
                            'marketing_features': {
                                'type': 'array',
                                'description': 'A list of up to 15 marketing features for this product',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'name': {
                                            'type': ['string', 'null'],
                                            'description': 'The marketing feature name. Up to 80 characters long',
                                        },
                                    },
                                },
                            },
                            'metadata': {
                                'type': 'object',
                                'description': 'Set of key-value pairs that you can attach to an object',
                                'additionalProperties': {'type': 'string'},
                            },
                            'name': {'type': 'string', 'description': "The product's name, meant to be displayable to the customer"},
                            'package_dimensions': {
                                'type': ['object', 'null'],
                                'description': 'The dimensions of this product for shipping purposes',
                                'properties': {
                                    'height': {'type': 'number', 'description': 'Height, in inches'},
                                    'length': {'type': 'number', 'description': 'Length, in inches'},
                                    'weight': {'type': 'number', 'description': 'Weight, in ounces'},
                                    'width': {'type': 'number', 'description': 'Width, in inches'},
                                },
                            },
                            'shippable': {
                                'type': ['boolean', 'null'],
                                'description': 'Whether this product is shipped (i.e., physical goods)',
                            },
                            'statement_descriptor': {
                                'type': ['string', 'null'],
                                'description': "Extra information about a product which will appear on your customer's credit card statement",
                            },
                            'tax_code': {
                                'type': ['string', 'null'],
                                'description': 'A tax code ID',
                            },
                            'type': {
                                'type': 'string',
                                'description': "The type of the product. Either 'good' for physical goods or 'service' for digital services",
                                'enum': ['good', 'service'],
                            },
                            'unit_label': {
                                'type': ['string', 'null'],
                                'description': 'A label that represents units of this product',
                            },
                            'updated': {'type': 'integer', 'description': 'Time at which the product was last updated, measured in seconds since the Unix epoch'},
                            'url': {
                                'type': ['string', 'null'],
                                'description': 'A URL of a publicly-accessible webpage for this product',
                            },
                        },
                        'x-airbyte-entity-name': 'products',
                    },
                ),
                Action.DELETE: EndpointDefinition(
                    method='DELETE',
                    path='/v1/products/{id}',
                    action=Action.DELETE,
                    description='Deletes a product. Deleting a product is only possible if it has no prices associated with it.',
                    path_params=['id'],
                    path_params_schema={
                        'id': {'type': 'string', 'required': True},
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'id': {'type': 'string', 'description': 'The ID of the deleted product'},
                            'object': {
                                'type': 'string',
                                'enum': ['product'],
                                'description': "String representing the object's type",
                            },
                            'deleted': {'type': 'boolean', 'description': 'Always true for a deleted object'},
                        },
                    },
                ),
                Action.API_SEARCH: EndpointDefinition(
                    method='GET',
                    path='/v1/products/search',
                    action=Action.API_SEARCH,
                    description="Search for products using Stripe's Search Query Language.",
                    query_params=['query', 'limit', 'page'],
                    query_params_schema={
                        'query': {'type': 'string', 'required': True},
                        'limit': {'type': 'integer', 'required': False},
                        'page': {'type': 'string', 'required': False},
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['search_result'],
                            },
                            'data': {
                                'type': 'array',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the product'},
                                        'object': {
                                            'type': 'string',
                                            'description': "String representing the object's type",
                                            'enum': ['product'],
                                        },
                                        'active': {'type': 'boolean', 'description': 'Whether the product is currently available for purchase'},
                                        'attributes': {
                                            'type': 'array',
                                            'description': 'A list of up to 5 alphanumeric attributes that each SKU can have',
                                            'items': {'type': 'string'},
                                        },
                                        'created': {'type': 'integer', 'description': 'Time at which the product was created, measured in seconds since the Unix epoch'},
                                        'default_price': {
                                            'type': ['string', 'null'],
                                            'description': 'The ID of the Price object that is the default price for this product',
                                        },
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': "The product's description, meant to be displayable to the customer",
                                        },
                                        'features': {
                                            'type': 'array',
                                            'description': 'A list of up to 15 features for this product',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'name': {'type': 'string', 'description': 'The feature name'},
                                                },
                                            },
                                        },
                                        'images': {
                                            'type': 'array',
                                            'description': 'A list of up to 8 URLs of images for this product',
                                            'items': {'type': 'string'},
                                        },
                                        'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or the value false if the object exists in test mode'},
                                        'marketing_features': {
                                            'type': 'array',
                                            'description': 'A list of up to 15 marketing features for this product',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'name': {
                                                        'type': ['string', 'null'],
                                                        'description': 'The marketing feature name. Up to 80 characters long',
                                                    },
                                                },
                                            },
                                        },
                                        'metadata': {
                                            'type': 'object',
                                            'description': 'Set of key-value pairs that you can attach to an object',
                                            'additionalProperties': {'type': 'string'},
                                        },
                                        'name': {'type': 'string', 'description': "The product's name, meant to be displayable to the customer"},
                                        'package_dimensions': {
                                            'type': ['object', 'null'],
                                            'description': 'The dimensions of this product for shipping purposes',
                                            'properties': {
                                                'height': {'type': 'number', 'description': 'Height, in inches'},
                                                'length': {'type': 'number', 'description': 'Length, in inches'},
                                                'weight': {'type': 'number', 'description': 'Weight, in ounces'},
                                                'width': {'type': 'number', 'description': 'Width, in inches'},
                                            },
                                        },
                                        'shippable': {
                                            'type': ['boolean', 'null'],
                                            'description': 'Whether this product is shipped (i.e., physical goods)',
                                        },
                                        'statement_descriptor': {
                                            'type': ['string', 'null'],
                                            'description': "Extra information about a product which will appear on your customer's credit card statement",
                                        },
                                        'tax_code': {
                                            'type': ['string', 'null'],
                                            'description': 'A tax code ID',
                                        },
                                        'type': {
                                            'type': 'string',
                                            'description': "The type of the product. Either 'good' for physical goods or 'service' for digital services",
                                            'enum': ['good', 'service'],
                                        },
                                        'unit_label': {
                                            'type': ['string', 'null'],
                                            'description': 'A label that represents units of this product',
                                        },
                                        'updated': {'type': 'integer', 'description': 'Time at which the product was last updated, measured in seconds since the Unix epoch'},
                                        'url': {
                                            'type': ['string', 'null'],
                                            'description': 'A URL of a publicly-accessible webpage for this product',
                                        },
                                    },
                                    'x-airbyte-entity-name': 'products',
                                },
                            },
                            'has_more': {'type': 'boolean'},
                            'next_page': {
                                'type': ['string', 'null'],
                                'description': 'A cursor for pagination across multiple pages of results',
                            },
                            'url': {'type': 'string'},
                        },
                    },
                    record_extractor='$.data',
                    meta_extractor={'has_more': '$.has_more'},
                ),
            },
            entity_schema={
                'type': 'object',
                'properties': {
                    'id': {'type': 'string', 'description': 'Unique identifier for the product'},
                    'object': {
                        'type': 'string',
                        'description': "String representing the object's type",
                        'enum': ['product'],
                    },
                    'active': {'type': 'boolean', 'description': 'Whether the product is currently available for purchase'},
                    'attributes': {
                        'type': 'array',
                        'description': 'A list of up to 5 alphanumeric attributes that each SKU can have',
                        'items': {'type': 'string'},
                    },
                    'created': {'type': 'integer', 'description': 'Time at which the product was created, measured in seconds since the Unix epoch'},
                    'default_price': {
                        'type': ['string', 'null'],
                        'description': 'The ID of the Price object that is the default price for this product',
                    },
                    'description': {
                        'type': ['string', 'null'],
                        'description': "The product's description, meant to be displayable to the customer",
                    },
                    'features': {
                        'type': 'array',
                        'description': 'A list of up to 15 features for this product',
                        'items': {
                            'type': 'object',
                            'properties': {
                                'name': {'type': 'string', 'description': 'The feature name'},
                            },
                        },
                    },
                    'images': {
                        'type': 'array',
                        'description': 'A list of up to 8 URLs of images for this product',
                        'items': {'type': 'string'},
                    },
                    'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or the value false if the object exists in test mode'},
                    'marketing_features': {
                        'type': 'array',
                        'description': 'A list of up to 15 marketing features for this product',
                        'items': {
                            'type': 'object',
                            'properties': {
                                'name': {
                                    'type': ['string', 'null'],
                                    'description': 'The marketing feature name. Up to 80 characters long',
                                },
                            },
                        },
                    },
                    'metadata': {
                        'type': 'object',
                        'description': 'Set of key-value pairs that you can attach to an object',
                        'additionalProperties': {'type': 'string'},
                    },
                    'name': {'type': 'string', 'description': "The product's name, meant to be displayable to the customer"},
                    'package_dimensions': {
                        'type': ['object', 'null'],
                        'description': 'The dimensions of this product for shipping purposes',
                        'properties': {
                            'height': {'type': 'number', 'description': 'Height, in inches'},
                            'length': {'type': 'number', 'description': 'Length, in inches'},
                            'weight': {'type': 'number', 'description': 'Weight, in ounces'},
                            'width': {'type': 'number', 'description': 'Width, in inches'},
                        },
                    },
                    'shippable': {
                        'type': ['boolean', 'null'],
                        'description': 'Whether this product is shipped (i.e., physical goods)',
                    },
                    'statement_descriptor': {
                        'type': ['string', 'null'],
                        'description': "Extra information about a product which will appear on your customer's credit card statement",
                    },
                    'tax_code': {
                        'type': ['string', 'null'],
                        'description': 'A tax code ID',
                    },
                    'type': {
                        'type': 'string',
                        'description': "The type of the product. Either 'good' for physical goods or 'service' for digital services",
                        'enum': ['good', 'service'],
                    },
                    'unit_label': {
                        'type': ['string', 'null'],
                        'description': 'A label that represents units of this product',
                    },
                    'updated': {'type': 'integer', 'description': 'Time at which the product was last updated, measured in seconds since the Unix epoch'},
                    'url': {
                        'type': ['string', 'null'],
                        'description': 'A URL of a publicly-accessible webpage for this product',
                    },
                },
                'x-airbyte-entity-name': 'products',
            },
        ),
        EntityDefinition(
            name='balance',
            actions=[Action.GET],
            endpoints={
                Action.GET: EndpointDefinition(
                    method='GET',
                    path='/v1/balance',
                    action=Action.GET,
                    description='Retrieves the current account balance, based on the authentication that was used to make the request.',
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'description': "String representing the object's type",
                                'enum': ['balance'],
                            },
                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or the value false if the object exists in test mode'},
                            'available': {
                                'type': 'array',
                                'description': 'Funds that are available to be transferred or paid out automatically by Stripe or explicitly via the Transfers API or Payouts API',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'amount': {'type': 'integer', 'description': 'Balance amount in the smallest currency unit (e.g., cents)'},
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                        'source_types': {
                                            'type': ['object', 'null'],
                                            'description': 'Breakdown of balance by source types',
                                            'properties': {
                                                'bank_account': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for bank_account',
                                                },
                                                'card': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for card',
                                                },
                                                'fpx': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for fpx',
                                                },
                                            },
                                        },
                                    },
                                },
                            },
                            'connect_reserved': {
                                'type': ['array', 'null'],
                                'description': 'Funds held due to negative balances on connected accounts',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'amount': {'type': 'integer', 'description': 'Balance amount in the smallest currency unit'},
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                        'source_types': {
                                            'type': ['object', 'null'],
                                            'description': 'Breakdown of balance by source types',
                                            'properties': {
                                                'bank_account': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for bank_account',
                                                },
                                                'card': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for card',
                                                },
                                                'fpx': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for fpx',
                                                },
                                            },
                                        },
                                    },
                                },
                            },
                            'instant_available': {
                                'type': ['array', 'null'],
                                'description': 'Funds that can be paid out using Instant Payouts',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'amount': {'type': 'integer', 'description': 'Balance amount in the smallest currency unit'},
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                        'source_types': {
                                            'type': ['object', 'null'],
                                            'description': 'Breakdown of balance by source types',
                                            'properties': {
                                                'bank_account': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for bank_account',
                                                },
                                                'card': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for card',
                                                },
                                                'fpx': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for fpx',
                                                },
                                            },
                                        },
                                        'net_available': {
                                            'type': ['array', 'null'],
                                            'description': 'Net balance amount available after deducting fees',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'amount': {'type': 'integer', 'description': 'Net balance amount'},
                                                    'destination': {'type': 'string', 'description': 'ID of the external account'},
                                                    'source_types': {
                                                        'type': ['object', 'null'],
                                                        'description': 'Breakdown of balance by source types',
                                                        'properties': {
                                                            'bank_account': {
                                                                'type': ['integer', 'null'],
                                                                'description': 'Amount for bank_account',
                                                            },
                                                            'card': {
                                                                'type': ['integer', 'null'],
                                                                'description': 'Amount for card',
                                                            },
                                                            'fpx': {
                                                                'type': ['integer', 'null'],
                                                                'description': 'Amount for fpx',
                                                            },
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                    },
                                },
                            },
                            'issuing': {
                                'type': ['object', 'null'],
                                'description': 'Funds that are available for use with Issuing cards',
                                'properties': {
                                    'available': {
                                        'type': 'array',
                                        'description': 'Funds available for issuing',
                                        'items': {
                                            'type': 'object',
                                            'properties': {
                                                'amount': {'type': 'integer', 'description': 'Balance amount'},
                                                'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                                'source_types': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Breakdown of balance by source types',
                                                    'properties': {
                                                        'bank_account': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'Amount for bank_account',
                                                        },
                                                        'card': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'Amount for card',
                                                        },
                                                        'fpx': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'Amount for fpx',
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                    },
                                },
                            },
                            'pending': {
                                'type': 'array',
                                'description': 'Funds that are not yet available in the balance due to the 7-day rolling pay cycle',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'amount': {'type': 'integer', 'description': 'Balance amount in the smallest currency unit'},
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                        'source_types': {
                                            'type': ['object', 'null'],
                                            'description': 'Breakdown of balance by source types',
                                            'properties': {
                                                'bank_account': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for bank_account',
                                                },
                                                'card': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for card',
                                                },
                                                'fpx': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for fpx',
                                                },
                                            },
                                        },
                                    },
                                },
                            },
                            'refund_and_dispute_prefunding': {
                                'type': ['object', 'null'],
                                'description': 'Funds reserved for covering future refunds or disputes',
                                'properties': {
                                    'available': {
                                        'type': 'array',
                                        'description': 'Available funds for refunds and disputes',
                                        'items': {
                                            'type': 'object',
                                            'properties': {
                                                'amount': {'type': 'integer', 'description': 'Balance amount'},
                                                'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                                'source_types': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Breakdown of balance by source types',
                                                    'properties': {
                                                        'bank_account': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'Amount for bank_account',
                                                        },
                                                        'card': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'Amount for card',
                                                        },
                                                        'fpx': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'Amount for fpx',
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                    },
                                    'pending': {
                                        'type': 'array',
                                        'description': 'Pending funds for refunds and disputes',
                                        'items': {
                                            'type': 'object',
                                            'properties': {
                                                'amount': {'type': 'integer', 'description': 'Balance amount'},
                                                'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                                'source_types': {
                                                    'type': ['object', 'null'],
                                                    'description': 'Breakdown of balance by source types',
                                                    'properties': {
                                                        'bank_account': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'Amount for bank_account',
                                                        },
                                                        'card': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'Amount for card',
                                                        },
                                                        'fpx': {
                                                            'type': ['integer', 'null'],
                                                            'description': 'Amount for fpx',
                                                        },
                                                    },
                                                },
                                            },
                                        },
                                    },
                                },
                            },
                        },
                        'x-airbyte-entity-name': 'balance',
                    },
                ),
            },
            entity_schema={
                'type': 'object',
                'properties': {
                    'object': {
                        'type': 'string',
                        'description': "String representing the object's type",
                        'enum': ['balance'],
                    },
                    'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or the value false if the object exists in test mode'},
                    'available': {
                        'type': 'array',
                        'description': 'Funds that are available to be transferred or paid out automatically by Stripe or explicitly via the Transfers API or Payouts API',
                        'items': {
                            'type': 'object',
                            'properties': {
                                'amount': {'type': 'integer', 'description': 'Balance amount in the smallest currency unit (e.g., cents)'},
                                'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                'source_types': {
                                    'type': ['object', 'null'],
                                    'description': 'Breakdown of balance by source types',
                                    'properties': {
                                        'bank_account': {
                                            'type': ['integer', 'null'],
                                            'description': 'Amount for bank_account',
                                        },
                                        'card': {
                                            'type': ['integer', 'null'],
                                            'description': 'Amount for card',
                                        },
                                        'fpx': {
                                            'type': ['integer', 'null'],
                                            'description': 'Amount for fpx',
                                        },
                                    },
                                },
                            },
                        },
                    },
                    'connect_reserved': {
                        'type': ['array', 'null'],
                        'description': 'Funds held due to negative balances on connected accounts',
                        'items': {
                            'type': 'object',
                            'properties': {
                                'amount': {'type': 'integer', 'description': 'Balance amount in the smallest currency unit'},
                                'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                'source_types': {
                                    'type': ['object', 'null'],
                                    'description': 'Breakdown of balance by source types',
                                    'properties': {
                                        'bank_account': {
                                            'type': ['integer', 'null'],
                                            'description': 'Amount for bank_account',
                                        },
                                        'card': {
                                            'type': ['integer', 'null'],
                                            'description': 'Amount for card',
                                        },
                                        'fpx': {
                                            'type': ['integer', 'null'],
                                            'description': 'Amount for fpx',
                                        },
                                    },
                                },
                            },
                        },
                    },
                    'instant_available': {
                        'type': ['array', 'null'],
                        'description': 'Funds that can be paid out using Instant Payouts',
                        'items': {
                            'type': 'object',
                            'properties': {
                                'amount': {'type': 'integer', 'description': 'Balance amount in the smallest currency unit'},
                                'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                'source_types': {
                                    'type': ['object', 'null'],
                                    'description': 'Breakdown of balance by source types',
                                    'properties': {
                                        'bank_account': {
                                            'type': ['integer', 'null'],
                                            'description': 'Amount for bank_account',
                                        },
                                        'card': {
                                            'type': ['integer', 'null'],
                                            'description': 'Amount for card',
                                        },
                                        'fpx': {
                                            'type': ['integer', 'null'],
                                            'description': 'Amount for fpx',
                                        },
                                    },
                                },
                                'net_available': {
                                    'type': ['array', 'null'],
                                    'description': 'Net balance amount available after deducting fees',
                                    'items': {
                                        'type': 'object',
                                        'properties': {
                                            'amount': {'type': 'integer', 'description': 'Net balance amount'},
                                            'destination': {'type': 'string', 'description': 'ID of the external account'},
                                            'source_types': {
                                                'type': ['object', 'null'],
                                                'description': 'Breakdown of balance by source types',
                                                'properties': {
                                                    'bank_account': {
                                                        'type': ['integer', 'null'],
                                                        'description': 'Amount for bank_account',
                                                    },
                                                    'card': {
                                                        'type': ['integer', 'null'],
                                                        'description': 'Amount for card',
                                                    },
                                                    'fpx': {
                                                        'type': ['integer', 'null'],
                                                        'description': 'Amount for fpx',
                                                    },
                                                },
                                            },
                                        },
                                    },
                                },
                            },
                        },
                    },
                    'issuing': {
                        'type': ['object', 'null'],
                        'description': 'Funds that are available for use with Issuing cards',
                        'properties': {
                            'available': {
                                'type': 'array',
                                'description': 'Funds available for issuing',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'amount': {'type': 'integer', 'description': 'Balance amount'},
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                        'source_types': {
                                            'type': ['object', 'null'],
                                            'description': 'Breakdown of balance by source types',
                                            'properties': {
                                                'bank_account': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for bank_account',
                                                },
                                                'card': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for card',
                                                },
                                                'fpx': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for fpx',
                                                },
                                            },
                                        },
                                    },
                                },
                            },
                        },
                    },
                    'pending': {
                        'type': 'array',
                        'description': 'Funds that are not yet available in the balance due to the 7-day rolling pay cycle',
                        'items': {
                            'type': 'object',
                            'properties': {
                                'amount': {'type': 'integer', 'description': 'Balance amount in the smallest currency unit'},
                                'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                'source_types': {
                                    'type': ['object', 'null'],
                                    'description': 'Breakdown of balance by source types',
                                    'properties': {
                                        'bank_account': {
                                            'type': ['integer', 'null'],
                                            'description': 'Amount for bank_account',
                                        },
                                        'card': {
                                            'type': ['integer', 'null'],
                                            'description': 'Amount for card',
                                        },
                                        'fpx': {
                                            'type': ['integer', 'null'],
                                            'description': 'Amount for fpx',
                                        },
                                    },
                                },
                            },
                        },
                    },
                    'refund_and_dispute_prefunding': {
                        'type': ['object', 'null'],
                        'description': 'Funds reserved for covering future refunds or disputes',
                        'properties': {
                            'available': {
                                'type': 'array',
                                'description': 'Available funds for refunds and disputes',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'amount': {'type': 'integer', 'description': 'Balance amount'},
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                        'source_types': {
                                            'type': ['object', 'null'],
                                            'description': 'Breakdown of balance by source types',
                                            'properties': {
                                                'bank_account': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for bank_account',
                                                },
                                                'card': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for card',
                                                },
                                                'fpx': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for fpx',
                                                },
                                            },
                                        },
                                    },
                                },
                            },
                            'pending': {
                                'type': 'array',
                                'description': 'Pending funds for refunds and disputes',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'amount': {'type': 'integer', 'description': 'Balance amount'},
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code'},
                                        'source_types': {
                                            'type': ['object', 'null'],
                                            'description': 'Breakdown of balance by source types',
                                            'properties': {
                                                'bank_account': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for bank_account',
                                                },
                                                'card': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for card',
                                                },
                                                'fpx': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Amount for fpx',
                                                },
                                            },
                                        },
                                    },
                                },
                            },
                        },
                    },
                },
                'x-airbyte-entity-name': 'balance',
            },
        ),
        EntityDefinition(
            name='balance_transactions',
            actions=[Action.LIST, Action.GET],
            endpoints={
                Action.LIST: EndpointDefinition(
                    method='GET',
                    path='/v1/balance_transactions',
                    action=Action.LIST,
                    description='Returns a list of transactions that have contributed to the Stripe account balance (e.g., charges, transfers, and so forth). The transactions are returned in sorted order, with the most recent transactions appearing first.',
                    query_params=[
                        'created',
                        'currency',
                        'ending_before',
                        'limit',
                        'payout',
                        'source',
                        'starting_after',
                        'type',
                    ],
                    query_params_schema={
                        'created': {'type': 'object', 'required': False},
                        'currency': {'type': 'string', 'required': False},
                        'ending_before': {'type': 'string', 'required': False},
                        'limit': {'type': 'integer', 'required': False},
                        'payout': {'type': 'string', 'required': False},
                        'source': {'type': 'string', 'required': False},
                        'starting_after': {'type': 'string', 'required': False},
                        'type': {'type': 'string', 'required': False},
                    },
                    deep_object_params=['created'],
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['list'],
                            },
                            'data': {
                                'type': 'array',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the balance transaction'},
                                        'object': {
                                            'type': 'string',
                                            'description': "String representing the object's type",
                                            'enum': ['balance_transaction'],
                                        },
                                        'amount': {'type': 'integer', 'description': 'Gross amount of the transaction in cents. A positive value represents funds charged to the customer, and a negative value represents funds sent to the customer.'},
                                        'available_on': {'type': 'integer', 'description': "The date the transaction's net funds will become available in the Stripe balance, measured in seconds since the Unix epoch"},
                                        'balance_type': {
                                            'type': 'string',
                                            'description': 'The balance this transaction impacted',
                                            'enum': ['issuing', 'payments', 'refund_and_dispute_prefunding'],
                                        },
                                        'created': {'type': 'integer', 'description': 'Time at which the object was created, measured in seconds since the Unix epoch'},
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': 'An arbitrary string attached to the object. Often useful for displaying to users.',
                                        },
                                        'exchange_rate': {
                                            'type': ['number', 'null'],
                                            'description': 'The exchange rate used, if applicable, for this transaction. Specifically, if money was converted from currency A to currency B, then the amount in currency A, multipled by the exchange_rate, would be the amount in currency B.',
                                        },
                                        'fee': {'type': 'integer', 'description': 'Fees (in cents) paid for this transaction'},
                                        'fee_details': {
                                            'type': 'array',
                                            'description': 'Detailed breakdown of fees (in cents) paid for this transaction',
                                            'items': {
                                                'type': 'object',
                                                'properties': {
                                                    'amount': {'type': 'integer', 'description': 'Amount of the fee, in cents'},
                                                    'application': {
                                                        'type': ['string', 'null'],
                                                        'description': 'ID of the Connect application that earned the fee',
                                                    },
                                                    'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                                    'description': {
                                                        'type': ['string', 'null'],
                                                        'description': 'An arbitrary string attached to the object',
                                                    },
                                                    'type': {'type': 'string', 'description': 'Type of the fee'},
                                                },
                                            },
                                        },
                                        'net': {'type': 'integer', 'description': 'Net amount of the transaction, in cents'},
                                        'reporting_category': {'type': 'string', 'description': 'Learn more about how reporting categories can help you understand balance transactions from an accounting perspective'},
                                        'source': {
                                            'type': ['string', 'null'],
                                            'description': 'The Stripe object to which this transaction is related',
                                        },
                                        'status': {
                                            'type': 'string',
                                            'description': 'The transaction status',
                                            'enum': ['available', 'pending'],
                                        },
                                        'type': {'type': 'string', 'description': 'Transaction type'},
                                    },
                                    'x-airbyte-entity-name': 'balance_transactions',
                                },
                            },
                            'has_more': {'type': 'boolean'},
                            'url': {'type': 'string'},
                        },
                    },
                    record_extractor='$.data',
                    meta_extractor={'has_more': '$.has_more'},
                ),
                Action.GET: EndpointDefinition(
                    method='GET',
                    path='/v1/balance_transactions/{id}',
                    action=Action.GET,
                    description='Retrieves the balance transaction with the given ID.',
                    path_params=['id'],
                    path_params_schema={
                        'id': {'type': 'string', 'required': True},
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'id': {'type': 'string', 'description': 'Unique identifier for the balance transaction'},
                            'object': {
                                'type': 'string',
                                'description': "String representing the object's type",
                                'enum': ['balance_transaction'],
                            },
                            'amount': {'type': 'integer', 'description': 'Gross amount of the transaction in cents. A positive value represents funds charged to the customer, and a negative value represents funds sent to the customer.'},
                            'available_on': {'type': 'integer', 'description': "The date the transaction's net funds will become available in the Stripe balance, measured in seconds since the Unix epoch"},
                            'balance_type': {
                                'type': 'string',
                                'description': 'The balance this transaction impacted',
                                'enum': ['issuing', 'payments', 'refund_and_dispute_prefunding'],
                            },
                            'created': {'type': 'integer', 'description': 'Time at which the object was created, measured in seconds since the Unix epoch'},
                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                            'description': {
                                'type': ['string', 'null'],
                                'description': 'An arbitrary string attached to the object. Often useful for displaying to users.',
                            },
                            'exchange_rate': {
                                'type': ['number', 'null'],
                                'description': 'The exchange rate used, if applicable, for this transaction. Specifically, if money was converted from currency A to currency B, then the amount in currency A, multipled by the exchange_rate, would be the amount in currency B.',
                            },
                            'fee': {'type': 'integer', 'description': 'Fees (in cents) paid for this transaction'},
                            'fee_details': {
                                'type': 'array',
                                'description': 'Detailed breakdown of fees (in cents) paid for this transaction',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'amount': {'type': 'integer', 'description': 'Amount of the fee, in cents'},
                                        'application': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the Connect application that earned the fee',
                                        },
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': 'An arbitrary string attached to the object',
                                        },
                                        'type': {'type': 'string', 'description': 'Type of the fee'},
                                    },
                                },
                            },
                            'net': {'type': 'integer', 'description': 'Net amount of the transaction, in cents'},
                            'reporting_category': {'type': 'string', 'description': 'Learn more about how reporting categories can help you understand balance transactions from an accounting perspective'},
                            'source': {
                                'type': ['string', 'null'],
                                'description': 'The Stripe object to which this transaction is related',
                            },
                            'status': {
                                'type': 'string',
                                'description': 'The transaction status',
                                'enum': ['available', 'pending'],
                            },
                            'type': {'type': 'string', 'description': 'Transaction type'},
                        },
                        'x-airbyte-entity-name': 'balance_transactions',
                    },
                ),
            },
            entity_schema={
                'type': 'object',
                'properties': {
                    'id': {'type': 'string', 'description': 'Unique identifier for the balance transaction'},
                    'object': {
                        'type': 'string',
                        'description': "String representing the object's type",
                        'enum': ['balance_transaction'],
                    },
                    'amount': {'type': 'integer', 'description': 'Gross amount of the transaction in cents. A positive value represents funds charged to the customer, and a negative value represents funds sent to the customer.'},
                    'available_on': {'type': 'integer', 'description': "The date the transaction's net funds will become available in the Stripe balance, measured in seconds since the Unix epoch"},
                    'balance_type': {
                        'type': 'string',
                        'description': 'The balance this transaction impacted',
                        'enum': ['issuing', 'payments', 'refund_and_dispute_prefunding'],
                    },
                    'created': {'type': 'integer', 'description': 'Time at which the object was created, measured in seconds since the Unix epoch'},
                    'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                    'description': {
                        'type': ['string', 'null'],
                        'description': 'An arbitrary string attached to the object. Often useful for displaying to users.',
                    },
                    'exchange_rate': {
                        'type': ['number', 'null'],
                        'description': 'The exchange rate used, if applicable, for this transaction. Specifically, if money was converted from currency A to currency B, then the amount in currency A, multipled by the exchange_rate, would be the amount in currency B.',
                    },
                    'fee': {'type': 'integer', 'description': 'Fees (in cents) paid for this transaction'},
                    'fee_details': {
                        'type': 'array',
                        'description': 'Detailed breakdown of fees (in cents) paid for this transaction',
                        'items': {
                            'type': 'object',
                            'properties': {
                                'amount': {'type': 'integer', 'description': 'Amount of the fee, in cents'},
                                'application': {
                                    'type': ['string', 'null'],
                                    'description': 'ID of the Connect application that earned the fee',
                                },
                                'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                'description': {
                                    'type': ['string', 'null'],
                                    'description': 'An arbitrary string attached to the object',
                                },
                                'type': {'type': 'string', 'description': 'Type of the fee'},
                            },
                        },
                    },
                    'net': {'type': 'integer', 'description': 'Net amount of the transaction, in cents'},
                    'reporting_category': {'type': 'string', 'description': 'Learn more about how reporting categories can help you understand balance transactions from an accounting perspective'},
                    'source': {
                        'type': ['string', 'null'],
                        'description': 'The Stripe object to which this transaction is related',
                    },
                    'status': {
                        'type': 'string',
                        'description': 'The transaction status',
                        'enum': ['available', 'pending'],
                    },
                    'type': {'type': 'string', 'description': 'Transaction type'},
                },
                'x-airbyte-entity-name': 'balance_transactions',
            },
        ),
        EntityDefinition(
            name='payment_intents',
            actions=[Action.LIST, Action.GET, Action.API_SEARCH],
            endpoints={
                Action.LIST: EndpointDefinition(
                    method='GET',
                    path='/v1/payment_intents',
                    action=Action.LIST,
                    description='Returns a list of PaymentIntents. The payment intents are returned sorted by creation date, with the most recent payment intents appearing first.',
                    query_params=[
                        'created',
                        'customer',
                        'customer_account',
                        'ending_before',
                        'limit',
                        'starting_after',
                    ],
                    query_params_schema={
                        'created': {'type': 'object', 'required': False},
                        'customer': {'type': 'string', 'required': False},
                        'customer_account': {'type': 'string', 'required': False},
                        'ending_before': {'type': 'string', 'required': False},
                        'limit': {'type': 'integer', 'required': False},
                        'starting_after': {'type': 'string', 'required': False},
                    },
                    deep_object_params=['created'],
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['list'],
                            },
                            'data': {
                                'type': 'array',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the payment intent'},
                                        'object': {
                                            'type': 'string',
                                            'description': "String representing the object's type",
                                            'enum': ['payment_intent'],
                                        },
                                        'amount': {'type': 'integer', 'description': 'Amount intended to be collected by this PaymentIntent, in the smallest currency unit (e.g., cents)'},
                                        'amount_capturable': {'type': 'integer', 'description': 'Amount that can be captured with this PaymentIntent'},
                                        'amount_received': {'type': 'integer', 'description': 'Amount that was collected by this PaymentIntent'},
                                        'application': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the Connect application that created the PaymentIntent',
                                        },
                                        'application_fee_amount': {
                                            'type': ['integer', 'null'],
                                            'description': 'The amount of the application fee (if any) that will be requested to be applied to the payment',
                                        },
                                        'capture_method': {
                                            'type': 'string',
                                            'description': "Controls when the funds will be captured from the customer's account",
                                            'enum': ['automatic', 'automatic_async', 'manual'],
                                        },
                                        'client_secret': {
                                            'type': ['string', 'null'],
                                            'description': 'The client secret of this PaymentIntent',
                                        },
                                        'confirmation_method': {
                                            'type': 'string',
                                            'description': 'How the PaymentIntent should be confirmed',
                                            'enum': ['automatic', 'manual'],
                                        },
                                        'created': {'type': 'integer', 'description': 'Time at which the object was created, measured in seconds since the Unix epoch'},
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                        'customer': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the Customer this PaymentIntent belongs to, if one exists',
                                        },
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': 'An arbitrary string attached to the object',
                                        },
                                        'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or the value false if the object exists in test mode'},
                                        'metadata': {
                                            'type': 'object',
                                            'description': 'Set of key-value pairs that you can attach to an object',
                                            'additionalProperties': {'type': 'string'},
                                        },
                                        'payment_method': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the payment method used in this PaymentIntent',
                                        },
                                        'payment_method_types': {
                                            'type': 'array',
                                            'description': 'The list of payment method types that this PaymentIntent is allowed to use',
                                            'items': {'type': 'string'},
                                        },
                                        'status': {'type': 'string', 'description': 'Status of this PaymentIntent'},
                                    },
                                    'x-airbyte-entity-name': 'payment_intents',
                                },
                            },
                            'has_more': {'type': 'boolean'},
                            'url': {'type': 'string'},
                        },
                    },
                    record_extractor='$.data',
                    meta_extractor={'has_more': '$.has_more'},
                ),
                Action.GET: EndpointDefinition(
                    method='GET',
                    path='/v1/payment_intents/{id}',
                    action=Action.GET,
                    description='Retrieves the details of a PaymentIntent that has previously been created.',
                    path_params=['id'],
                    path_params_schema={
                        'id': {'type': 'string', 'required': True},
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'id': {'type': 'string', 'description': 'Unique identifier for the payment intent'},
                            'object': {
                                'type': 'string',
                                'description': "String representing the object's type",
                                'enum': ['payment_intent'],
                            },
                            'amount': {'type': 'integer', 'description': 'Amount intended to be collected by this PaymentIntent, in the smallest currency unit (e.g., cents)'},
                            'amount_capturable': {'type': 'integer', 'description': 'Amount that can be captured with this PaymentIntent'},
                            'amount_received': {'type': 'integer', 'description': 'Amount that was collected by this PaymentIntent'},
                            'application': {
                                'type': ['string', 'null'],
                                'description': 'ID of the Connect application that created the PaymentIntent',
                            },
                            'application_fee_amount': {
                                'type': ['integer', 'null'],
                                'description': 'The amount of the application fee (if any) that will be requested to be applied to the payment',
                            },
                            'capture_method': {
                                'type': 'string',
                                'description': "Controls when the funds will be captured from the customer's account",
                                'enum': ['automatic', 'automatic_async', 'manual'],
                            },
                            'client_secret': {
                                'type': ['string', 'null'],
                                'description': 'The client secret of this PaymentIntent',
                            },
                            'confirmation_method': {
                                'type': 'string',
                                'description': 'How the PaymentIntent should be confirmed',
                                'enum': ['automatic', 'manual'],
                            },
                            'created': {'type': 'integer', 'description': 'Time at which the object was created, measured in seconds since the Unix epoch'},
                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                            'customer': {
                                'type': ['string', 'null'],
                                'description': 'ID of the Customer this PaymentIntent belongs to, if one exists',
                            },
                            'description': {
                                'type': ['string', 'null'],
                                'description': 'An arbitrary string attached to the object',
                            },
                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or the value false if the object exists in test mode'},
                            'metadata': {
                                'type': 'object',
                                'description': 'Set of key-value pairs that you can attach to an object',
                                'additionalProperties': {'type': 'string'},
                            },
                            'payment_method': {
                                'type': ['string', 'null'],
                                'description': 'ID of the payment method used in this PaymentIntent',
                            },
                            'payment_method_types': {
                                'type': 'array',
                                'description': 'The list of payment method types that this PaymentIntent is allowed to use',
                                'items': {'type': 'string'},
                            },
                            'status': {'type': 'string', 'description': 'Status of this PaymentIntent'},
                        },
                        'x-airbyte-entity-name': 'payment_intents',
                    },
                ),
                Action.API_SEARCH: EndpointDefinition(
                    method='GET',
                    path='/v1/payment_intents/search',
                    action=Action.API_SEARCH,
                    description="Search for payment intents using Stripe's Search Query Language.",
                    query_params=['query', 'limit', 'page'],
                    query_params_schema={
                        'query': {'type': 'string', 'required': True},
                        'limit': {'type': 'integer', 'required': False},
                        'page': {'type': 'string', 'required': False},
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['search_result'],
                            },
                            'data': {
                                'type': 'array',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the payment intent'},
                                        'object': {
                                            'type': 'string',
                                            'description': "String representing the object's type",
                                            'enum': ['payment_intent'],
                                        },
                                        'amount': {'type': 'integer', 'description': 'Amount intended to be collected by this PaymentIntent, in the smallest currency unit (e.g., cents)'},
                                        'amount_capturable': {'type': 'integer', 'description': 'Amount that can be captured with this PaymentIntent'},
                                        'amount_received': {'type': 'integer', 'description': 'Amount that was collected by this PaymentIntent'},
                                        'application': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the Connect application that created the PaymentIntent',
                                        },
                                        'application_fee_amount': {
                                            'type': ['integer', 'null'],
                                            'description': 'The amount of the application fee (if any) that will be requested to be applied to the payment',
                                        },
                                        'capture_method': {
                                            'type': 'string',
                                            'description': "Controls when the funds will be captured from the customer's account",
                                            'enum': ['automatic', 'automatic_async', 'manual'],
                                        },
                                        'client_secret': {
                                            'type': ['string', 'null'],
                                            'description': 'The client secret of this PaymentIntent',
                                        },
                                        'confirmation_method': {
                                            'type': 'string',
                                            'description': 'How the PaymentIntent should be confirmed',
                                            'enum': ['automatic', 'manual'],
                                        },
                                        'created': {'type': 'integer', 'description': 'Time at which the object was created, measured in seconds since the Unix epoch'},
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                        'customer': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the Customer this PaymentIntent belongs to, if one exists',
                                        },
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': 'An arbitrary string attached to the object',
                                        },
                                        'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or the value false if the object exists in test mode'},
                                        'metadata': {
                                            'type': 'object',
                                            'description': 'Set of key-value pairs that you can attach to an object',
                                            'additionalProperties': {'type': 'string'},
                                        },
                                        'payment_method': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the payment method used in this PaymentIntent',
                                        },
                                        'payment_method_types': {
                                            'type': 'array',
                                            'description': 'The list of payment method types that this PaymentIntent is allowed to use',
                                            'items': {'type': 'string'},
                                        },
                                        'status': {'type': 'string', 'description': 'Status of this PaymentIntent'},
                                    },
                                    'x-airbyte-entity-name': 'payment_intents',
                                },
                            },
                            'has_more': {'type': 'boolean'},
                            'next_page': {
                                'type': ['string', 'null'],
                                'description': 'A cursor for pagination across multiple pages of results',
                            },
                            'url': {'type': 'string'},
                        },
                    },
                    record_extractor='$.data',
                    meta_extractor={'has_more': '$.has_more'},
                ),
            },
            entity_schema={
                'type': 'object',
                'properties': {
                    'id': {'type': 'string', 'description': 'Unique identifier for the payment intent'},
                    'object': {
                        'type': 'string',
                        'description': "String representing the object's type",
                        'enum': ['payment_intent'],
                    },
                    'amount': {'type': 'integer', 'description': 'Amount intended to be collected by this PaymentIntent, in the smallest currency unit (e.g., cents)'},
                    'amount_capturable': {'type': 'integer', 'description': 'Amount that can be captured with this PaymentIntent'},
                    'amount_received': {'type': 'integer', 'description': 'Amount that was collected by this PaymentIntent'},
                    'application': {
                        'type': ['string', 'null'],
                        'description': 'ID of the Connect application that created the PaymentIntent',
                    },
                    'application_fee_amount': {
                        'type': ['integer', 'null'],
                        'description': 'The amount of the application fee (if any) that will be requested to be applied to the payment',
                    },
                    'capture_method': {
                        'type': 'string',
                        'description': "Controls when the funds will be captured from the customer's account",
                        'enum': ['automatic', 'automatic_async', 'manual'],
                    },
                    'client_secret': {
                        'type': ['string', 'null'],
                        'description': 'The client secret of this PaymentIntent',
                    },
                    'confirmation_method': {
                        'type': 'string',
                        'description': 'How the PaymentIntent should be confirmed',
                        'enum': ['automatic', 'manual'],
                    },
                    'created': {'type': 'integer', 'description': 'Time at which the object was created, measured in seconds since the Unix epoch'},
                    'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                    'customer': {
                        'type': ['string', 'null'],
                        'description': 'ID of the Customer this PaymentIntent belongs to, if one exists',
                    },
                    'description': {
                        'type': ['string', 'null'],
                        'description': 'An arbitrary string attached to the object',
                    },
                    'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or the value false if the object exists in test mode'},
                    'metadata': {
                        'type': 'object',
                        'description': 'Set of key-value pairs that you can attach to an object',
                        'additionalProperties': {'type': 'string'},
                    },
                    'payment_method': {
                        'type': ['string', 'null'],
                        'description': 'ID of the payment method used in this PaymentIntent',
                    },
                    'payment_method_types': {
                        'type': 'array',
                        'description': 'The list of payment method types that this PaymentIntent is allowed to use',
                        'items': {'type': 'string'},
                    },
                    'status': {'type': 'string', 'description': 'Status of this PaymentIntent'},
                },
                'x-airbyte-entity-name': 'payment_intents',
            },
        ),
        EntityDefinition(
            name='disputes',
            actions=[Action.LIST, Action.GET],
            endpoints={
                Action.LIST: EndpointDefinition(
                    method='GET',
                    path='/v1/disputes',
                    action=Action.LIST,
                    description='Returns a list of your disputes. The disputes are returned sorted by creation date, with the most recent disputes appearing first.',
                    query_params=[
                        'charge',
                        'created',
                        'ending_before',
                        'limit',
                        'payment_intent',
                        'starting_after',
                    ],
                    query_params_schema={
                        'charge': {'type': 'string', 'required': False},
                        'created': {'type': 'object', 'required': False},
                        'ending_before': {'type': 'string', 'required': False},
                        'limit': {'type': 'integer', 'required': False},
                        'payment_intent': {'type': 'string', 'required': False},
                        'starting_after': {'type': 'string', 'required': False},
                    },
                    deep_object_params=['created'],
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['list'],
                            },
                            'data': {
                                'type': 'array',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the dispute'},
                                        'object': {
                                            'type': 'string',
                                            'description': "String representing the object's type",
                                            'enum': ['dispute'],
                                        },
                                        'amount': {'type': 'integer', 'description': 'Disputed amount in the smallest currency unit'},
                                        'balance_transactions': {
                                            'type': 'array',
                                            'description': 'List of zero, one, or two balance transactions that show funds withdrawn and reinstated to your Stripe account as a result of this dispute',
                                            'items': {'type': 'object'},
                                        },
                                        'charge': {'type': 'string', 'description': 'ID of the charge that was disputed'},
                                        'created': {'type': 'integer', 'description': 'Time at which the object was created, measured in seconds since the Unix epoch'},
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                        'enhanced_eligibility_types': {
                                            'type': 'array',
                                            'description': 'Qualifying evidence programs for this dispute',
                                            'items': {'type': 'string'},
                                        },
                                        'evidence': {
                                            'type': 'object',
                                            'description': 'Evidence provided to respond to a dispute',
                                            'additionalProperties': True,
                                        },
                                        'evidence_details': {
                                            'type': 'object',
                                            'description': 'Information about the evidence submission',
                                            'properties': {
                                                'due_by': {
                                                    'type': ['integer', 'null'],
                                                    'description': 'Date by which evidence must be submitted, measured in seconds since the Unix epoch',
                                                },
                                                'has_evidence': {'type': 'boolean', 'description': 'Whether evidence has been staged for this dispute'},
                                                'past_due': {'type': 'boolean', 'description': 'Whether the last evidence submission was submitted past the due date'},
                                                'submission_count': {'type': 'integer', 'description': 'The number of times evidence has been submitted'},
                                            },
                                        },
                                        'is_charge_refundable': {'type': 'boolean', 'description': 'If true, it is still possible to refund the disputed charge'},
                                        'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or the value false if the object exists in test mode'},
                                        'metadata': {
                                            'type': 'object',
                                            'description': 'Set of key-value pairs that you can attach to an object',
                                            'additionalProperties': {'type': 'string'},
                                        },
                                        'payment_intent': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the PaymentIntent that was disputed',
                                        },
                                        'payment_method_details': {
                                            'type': ['object', 'null'],
                                            'description': 'Payment-specific details about the dispute',
                                            'additionalProperties': True,
                                        },
                                        'reason': {'type': 'string', 'description': 'Reason given by cardholder for dispute'},
                                        'status': {'type': 'string', 'description': 'Current status of dispute'},
                                    },
                                    'x-airbyte-entity-name': 'disputes',
                                },
                            },
                            'has_more': {'type': 'boolean'},
                            'url': {'type': 'string'},
                        },
                    },
                    record_extractor='$.data',
                    meta_extractor={'has_more': '$.has_more'},
                ),
                Action.GET: EndpointDefinition(
                    method='GET',
                    path='/v1/disputes/{id}',
                    action=Action.GET,
                    description='Retrieves the dispute with the given ID.',
                    path_params=['id'],
                    path_params_schema={
                        'id': {'type': 'string', 'required': True},
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'id': {'type': 'string', 'description': 'Unique identifier for the dispute'},
                            'object': {
                                'type': 'string',
                                'description': "String representing the object's type",
                                'enum': ['dispute'],
                            },
                            'amount': {'type': 'integer', 'description': 'Disputed amount in the smallest currency unit'},
                            'balance_transactions': {
                                'type': 'array',
                                'description': 'List of zero, one, or two balance transactions that show funds withdrawn and reinstated to your Stripe account as a result of this dispute',
                                'items': {'type': 'object'},
                            },
                            'charge': {'type': 'string', 'description': 'ID of the charge that was disputed'},
                            'created': {'type': 'integer', 'description': 'Time at which the object was created, measured in seconds since the Unix epoch'},
                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                            'enhanced_eligibility_types': {
                                'type': 'array',
                                'description': 'Qualifying evidence programs for this dispute',
                                'items': {'type': 'string'},
                            },
                            'evidence': {
                                'type': 'object',
                                'description': 'Evidence provided to respond to a dispute',
                                'additionalProperties': True,
                            },
                            'evidence_details': {
                                'type': 'object',
                                'description': 'Information about the evidence submission',
                                'properties': {
                                    'due_by': {
                                        'type': ['integer', 'null'],
                                        'description': 'Date by which evidence must be submitted, measured in seconds since the Unix epoch',
                                    },
                                    'has_evidence': {'type': 'boolean', 'description': 'Whether evidence has been staged for this dispute'},
                                    'past_due': {'type': 'boolean', 'description': 'Whether the last evidence submission was submitted past the due date'},
                                    'submission_count': {'type': 'integer', 'description': 'The number of times evidence has been submitted'},
                                },
                            },
                            'is_charge_refundable': {'type': 'boolean', 'description': 'If true, it is still possible to refund the disputed charge'},
                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or the value false if the object exists in test mode'},
                            'metadata': {
                                'type': 'object',
                                'description': 'Set of key-value pairs that you can attach to an object',
                                'additionalProperties': {'type': 'string'},
                            },
                            'payment_intent': {
                                'type': ['string', 'null'],
                                'description': 'ID of the PaymentIntent that was disputed',
                            },
                            'payment_method_details': {
                                'type': ['object', 'null'],
                                'description': 'Payment-specific details about the dispute',
                                'additionalProperties': True,
                            },
                            'reason': {'type': 'string', 'description': 'Reason given by cardholder for dispute'},
                            'status': {'type': 'string', 'description': 'Current status of dispute'},
                        },
                        'x-airbyte-entity-name': 'disputes',
                    },
                ),
            },
            entity_schema={
                'type': 'object',
                'properties': {
                    'id': {'type': 'string', 'description': 'Unique identifier for the dispute'},
                    'object': {
                        'type': 'string',
                        'description': "String representing the object's type",
                        'enum': ['dispute'],
                    },
                    'amount': {'type': 'integer', 'description': 'Disputed amount in the smallest currency unit'},
                    'balance_transactions': {
                        'type': 'array',
                        'description': 'List of zero, one, or two balance transactions that show funds withdrawn and reinstated to your Stripe account as a result of this dispute',
                        'items': {'type': 'object'},
                    },
                    'charge': {'type': 'string', 'description': 'ID of the charge that was disputed'},
                    'created': {'type': 'integer', 'description': 'Time at which the object was created, measured in seconds since the Unix epoch'},
                    'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                    'enhanced_eligibility_types': {
                        'type': 'array',
                        'description': 'Qualifying evidence programs for this dispute',
                        'items': {'type': 'string'},
                    },
                    'evidence': {
                        'type': 'object',
                        'description': 'Evidence provided to respond to a dispute',
                        'additionalProperties': True,
                    },
                    'evidence_details': {
                        'type': 'object',
                        'description': 'Information about the evidence submission',
                        'properties': {
                            'due_by': {
                                'type': ['integer', 'null'],
                                'description': 'Date by which evidence must be submitted, measured in seconds since the Unix epoch',
                            },
                            'has_evidence': {'type': 'boolean', 'description': 'Whether evidence has been staged for this dispute'},
                            'past_due': {'type': 'boolean', 'description': 'Whether the last evidence submission was submitted past the due date'},
                            'submission_count': {'type': 'integer', 'description': 'The number of times evidence has been submitted'},
                        },
                    },
                    'is_charge_refundable': {'type': 'boolean', 'description': 'If true, it is still possible to refund the disputed charge'},
                    'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or the value false if the object exists in test mode'},
                    'metadata': {
                        'type': 'object',
                        'description': 'Set of key-value pairs that you can attach to an object',
                        'additionalProperties': {'type': 'string'},
                    },
                    'payment_intent': {
                        'type': ['string', 'null'],
                        'description': 'ID of the PaymentIntent that was disputed',
                    },
                    'payment_method_details': {
                        'type': ['object', 'null'],
                        'description': 'Payment-specific details about the dispute',
                        'additionalProperties': True,
                    },
                    'reason': {'type': 'string', 'description': 'Reason given by cardholder for dispute'},
                    'status': {'type': 'string', 'description': 'Current status of dispute'},
                },
                'x-airbyte-entity-name': 'disputes',
            },
        ),
        EntityDefinition(
            name='payouts',
            actions=[Action.LIST, Action.GET],
            endpoints={
                Action.LIST: EndpointDefinition(
                    method='GET',
                    path='/v1/payouts',
                    action=Action.LIST,
                    description='Returns a list of existing payouts sent to third-party bank accounts or payouts that Stripe sent to you. The payouts return in sorted order, with the most recently created payouts appearing first.',
                    query_params=[
                        'arrival_date',
                        'created',
                        'destination',
                        'ending_before',
                        'limit',
                        'starting_after',
                        'status',
                    ],
                    query_params_schema={
                        'arrival_date': {'type': 'object', 'required': False},
                        'created': {'type': 'object', 'required': False},
                        'destination': {'type': 'string', 'required': False},
                        'ending_before': {'type': 'string', 'required': False},
                        'limit': {'type': 'integer', 'required': False},
                        'starting_after': {'type': 'string', 'required': False},
                        'status': {'type': 'string', 'required': False},
                    },
                    deep_object_params=['arrival_date', 'created'],
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'object': {
                                'type': 'string',
                                'enum': ['list'],
                            },
                            'data': {
                                'type': 'array',
                                'items': {
                                    'type': 'object',
                                    'properties': {
                                        'id': {'type': 'string', 'description': 'Unique identifier for the payout'},
                                        'object': {
                                            'type': 'string',
                                            'description': "String representing the object's type",
                                            'enum': ['payout'],
                                        },
                                        'amount': {'type': 'integer', 'description': 'Amount (in cents) transferred to your bank account or debit card'},
                                        'application_fee': {
                                            'type': ['string', 'null'],
                                            'description': 'The application fee (if any) for the payout',
                                        },
                                        'application_fee_amount': {
                                            'type': ['integer', 'null'],
                                            'description': 'The amount of the application fee (if any) for the payout',
                                        },
                                        'arrival_date': {'type': 'integer', 'description': 'Date the payout is expected to arrive in the bank, measured in seconds since the Unix epoch'},
                                        'automatic': {'type': 'boolean', 'description': 'True if the payout was created by an automated payout schedule, and false if it was requested manually'},
                                        'balance_transaction': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the balance transaction that describes the impact of this payout on your account balance',
                                        },
                                        'created': {'type': 'integer', 'description': 'Time at which the object was created, measured in seconds since the Unix epoch'},
                                        'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                                        'description': {
                                            'type': ['string', 'null'],
                                            'description': 'An arbitrary string attached to the object',
                                        },
                                        'destination': {
                                            'type': ['string', 'null'],
                                            'description': 'ID of the bank account or card the payout was sent to',
                                        },
                                        'failure_balance_transaction': {
                                            'type': ['string', 'null'],
                                            'description': 'If the payout failed or was canceled, this will be the ID of the balance transaction that reverses the initial balance transaction',
                                        },
                                        'failure_code': {
                                            'type': ['string', 'null'],
                                            'description': 'Error code explaining reason for payout failure if available',
                                        },
                                        'failure_message': {
                                            'type': ['string', 'null'],
                                            'description': 'Message to user further explaining reason for payout failure if available',
                                        },
                                        'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or the value false if the object exists in test mode'},
                                        'metadata': {
                                            'type': 'object',
                                            'description': 'Set of key-value pairs that you can attach to an object',
                                            'additionalProperties': {'type': 'string'},
                                        },
                                        'method': {
                                            'type': 'string',
                                            'description': 'The method used to send this payout',
                                            'enum': ['standard', 'instant'],
                                        },
                                        'original_payout': {
                                            'type': ['string', 'null'],
                                            'description': 'If the payout reverses another, this is the ID of the original payout',
                                        },
                                        'payout_method': {
                                            'type': ['string', 'null'],
                                            'description': 'The method used for the payout',
                                        },
                                        'reconciliation_status': {'type': 'string', 'description': 'The current reconciliation status of the payout'},
                                        'reversed_by': {
                                            'type': ['string', 'null'],
                                            'description': 'If the payout was reversed, this is the ID of the payout that reverses this payout',
                                        },
                                        'source_balance': {
                                            'type': ['string', 'null'],
                                            'description': 'The source balance this payout came from',
                                        },
                                        'source_type': {'type': 'string', 'description': 'The source balance type this payout came from'},
                                        'statement_descriptor': {
                                            'type': ['string', 'null'],
                                            'description': "Extra information about a payout to be displayed on the user's bank statement",
                                        },
                                        'status': {'type': 'string', 'description': 'Current status of the payout'},
                                        'trace_id': {
                                            'type': ['object', 'null'],
                                            'description': 'A string that identifies this payout as part of a group',
                                            'properties': {
                                                'status': {'type': 'string', 'description': 'The status of the trace ID'},
                                                'value': {
                                                    'type': ['string', 'null'],
                                                    'description': 'The trace ID value',
                                                },
                                            },
                                        },
                                        'type': {'type': 'string', 'description': 'The type of the payout'},
                                    },
                                    'x-airbyte-entity-name': 'payouts',
                                },
                            },
                            'has_more': {'type': 'boolean'},
                            'url': {'type': 'string'},
                        },
                    },
                    record_extractor='$.data',
                    meta_extractor={'has_more': '$.has_more'},
                ),
                Action.GET: EndpointDefinition(
                    method='GET',
                    path='/v1/payouts/{id}',
                    action=Action.GET,
                    description='Retrieves the details of an existing payout. Supply the unique payout ID from either a payout creation request or the payout list, and Stripe will return the corresponding payout information.',
                    path_params=['id'],
                    path_params_schema={
                        'id': {'type': 'string', 'required': True},
                    },
                    response_schema={
                        'type': 'object',
                        'properties': {
                            'id': {'type': 'string', 'description': 'Unique identifier for the payout'},
                            'object': {
                                'type': 'string',
                                'description': "String representing the object's type",
                                'enum': ['payout'],
                            },
                            'amount': {'type': 'integer', 'description': 'Amount (in cents) transferred to your bank account or debit card'},
                            'application_fee': {
                                'type': ['string', 'null'],
                                'description': 'The application fee (if any) for the payout',
                            },
                            'application_fee_amount': {
                                'type': ['integer', 'null'],
                                'description': 'The amount of the application fee (if any) for the payout',
                            },
                            'arrival_date': {'type': 'integer', 'description': 'Date the payout is expected to arrive in the bank, measured in seconds since the Unix epoch'},
                            'automatic': {'type': 'boolean', 'description': 'True if the payout was created by an automated payout schedule, and false if it was requested manually'},
                            'balance_transaction': {
                                'type': ['string', 'null'],
                                'description': 'ID of the balance transaction that describes the impact of this payout on your account balance',
                            },
                            'created': {'type': 'integer', 'description': 'Time at which the object was created, measured in seconds since the Unix epoch'},
                            'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                            'description': {
                                'type': ['string', 'null'],
                                'description': 'An arbitrary string attached to the object',
                            },
                            'destination': {
                                'type': ['string', 'null'],
                                'description': 'ID of the bank account or card the payout was sent to',
                            },
                            'failure_balance_transaction': {
                                'type': ['string', 'null'],
                                'description': 'If the payout failed or was canceled, this will be the ID of the balance transaction that reverses the initial balance transaction',
                            },
                            'failure_code': {
                                'type': ['string', 'null'],
                                'description': 'Error code explaining reason for payout failure if available',
                            },
                            'failure_message': {
                                'type': ['string', 'null'],
                                'description': 'Message to user further explaining reason for payout failure if available',
                            },
                            'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or the value false if the object exists in test mode'},
                            'metadata': {
                                'type': 'object',
                                'description': 'Set of key-value pairs that you can attach to an object',
                                'additionalProperties': {'type': 'string'},
                            },
                            'method': {
                                'type': 'string',
                                'description': 'The method used to send this payout',
                                'enum': ['standard', 'instant'],
                            },
                            'original_payout': {
                                'type': ['string', 'null'],
                                'description': 'If the payout reverses another, this is the ID of the original payout',
                            },
                            'payout_method': {
                                'type': ['string', 'null'],
                                'description': 'The method used for the payout',
                            },
                            'reconciliation_status': {'type': 'string', 'description': 'The current reconciliation status of the payout'},
                            'reversed_by': {
                                'type': ['string', 'null'],
                                'description': 'If the payout was reversed, this is the ID of the payout that reverses this payout',
                            },
                            'source_balance': {
                                'type': ['string', 'null'],
                                'description': 'The source balance this payout came from',
                            },
                            'source_type': {'type': 'string', 'description': 'The source balance type this payout came from'},
                            'statement_descriptor': {
                                'type': ['string', 'null'],
                                'description': "Extra information about a payout to be displayed on the user's bank statement",
                            },
                            'status': {'type': 'string', 'description': 'Current status of the payout'},
                            'trace_id': {
                                'type': ['object', 'null'],
                                'description': 'A string that identifies this payout as part of a group',
                                'properties': {
                                    'status': {'type': 'string', 'description': 'The status of the trace ID'},
                                    'value': {
                                        'type': ['string', 'null'],
                                        'description': 'The trace ID value',
                                    },
                                },
                            },
                            'type': {'type': 'string', 'description': 'The type of the payout'},
                        },
                        'x-airbyte-entity-name': 'payouts',
                    },
                ),
            },
            entity_schema={
                'type': 'object',
                'properties': {
                    'id': {'type': 'string', 'description': 'Unique identifier for the payout'},
                    'object': {
                        'type': 'string',
                        'description': "String representing the object's type",
                        'enum': ['payout'],
                    },
                    'amount': {'type': 'integer', 'description': 'Amount (in cents) transferred to your bank account or debit card'},
                    'application_fee': {
                        'type': ['string', 'null'],
                        'description': 'The application fee (if any) for the payout',
                    },
                    'application_fee_amount': {
                        'type': ['integer', 'null'],
                        'description': 'The amount of the application fee (if any) for the payout',
                    },
                    'arrival_date': {'type': 'integer', 'description': 'Date the payout is expected to arrive in the bank, measured in seconds since the Unix epoch'},
                    'automatic': {'type': 'boolean', 'description': 'True if the payout was created by an automated payout schedule, and false if it was requested manually'},
                    'balance_transaction': {
                        'type': ['string', 'null'],
                        'description': 'ID of the balance transaction that describes the impact of this payout on your account balance',
                    },
                    'created': {'type': 'integer', 'description': 'Time at which the object was created, measured in seconds since the Unix epoch'},
                    'currency': {'type': 'string', 'description': 'Three-letter ISO currency code, in lowercase'},
                    'description': {
                        'type': ['string', 'null'],
                        'description': 'An arbitrary string attached to the object',
                    },
                    'destination': {
                        'type': ['string', 'null'],
                        'description': 'ID of the bank account or card the payout was sent to',
                    },
                    'failure_balance_transaction': {
                        'type': ['string', 'null'],
                        'description': 'If the payout failed or was canceled, this will be the ID of the balance transaction that reverses the initial balance transaction',
                    },
                    'failure_code': {
                        'type': ['string', 'null'],
                        'description': 'Error code explaining reason for payout failure if available',
                    },
                    'failure_message': {
                        'type': ['string', 'null'],
                        'description': 'Message to user further explaining reason for payout failure if available',
                    },
                    'livemode': {'type': 'boolean', 'description': 'Has the value true if the object exists in live mode or the value false if the object exists in test mode'},
                    'metadata': {
                        'type': 'object',
                        'description': 'Set of key-value pairs that you can attach to an object',
                        'additionalProperties': {'type': 'string'},
                    },
                    'method': {
                        'type': 'string',
                        'description': 'The method used to send this payout',
                        'enum': ['standard', 'instant'],
                    },
                    'original_payout': {
                        'type': ['string', 'null'],
                        'description': 'If the payout reverses another, this is the ID of the original payout',
                    },
                    'payout_method': {
                        'type': ['string', 'null'],
                        'description': 'The method used for the payout',
                    },
                    'reconciliation_status': {'type': 'string', 'description': 'The current reconciliation status of the payout'},
                    'reversed_by': {
                        'type': ['string', 'null'],
                        'description': 'If the payout was reversed, this is the ID of the payout that reverses this payout',
                    },
                    'source_balance': {
                        'type': ['string', 'null'],
                        'description': 'The source balance this payout came from',
                    },
                    'source_type': {'type': 'string', 'description': 'The source balance type this payout came from'},
                    'statement_descriptor': {
                        'type': ['string', 'null'],
                        'description': "Extra information about a payout to be displayed on the user's bank statement",
                    },
                    'status': {'type': 'string', 'description': 'Current status of the payout'},
                    'trace_id': {
                        'type': ['object', 'null'],
                        'description': 'A string that identifies this payout as part of a group',
                        'properties': {
                            'status': {'type': 'string', 'description': 'The status of the trace ID'},
                            'value': {
                                'type': ['string', 'null'],
                                'description': 'The trace ID value',
                            },
                        },
                    },
                    'type': {'type': 'string', 'description': 'The type of the payout'},
                },
                'x-airbyte-entity-name': 'payouts',
            },
        ),
    ],
)