{
 "components": {
  "parameters": {
   "FluveoVersion": {
    "description": "Optional. The only version Fluveo serves is 2026-05-27.dahlia; any other value is refused with a 400. Every answer names that version in its own Fluveo-Version header, except the refusals Fluveo gives before it reads the request (no key, an unknown key, an unknown URL, a body that is not a form) and a file's bytes, which name no version and no Request-Id.",
    "in": "header",
    "name": "Fluveo-Version",
    "required": false,
    "schema": {
     "enum": [
      "2026-05-27.dahlia"
     ],
     "type": "string"
    }
   },
   "IdempotencyKey": {
    "description": "Send a unique key, 1 to 255 characters, on every POST. A retry with the same key and the same body returns the first answer instead of acting twice (with Idempotent-Replayed: true); the same key with another body is refused. Keys are kept 7 days, except on POST /v1/checkout/sessions, POST /v1/checkout/sessions/{session} and POST /v1/webhook_endpoints, where a key holds 24 hours; webhook endpoint keys are also capped at the newest 32 per store and mode. Do not rely on a replay after that window. GET and DELETE ignore it.",
    "in": "header",
    "name": "Idempotency-Key",
    "required": false,
    "schema": {
     "maxLength": 255,
     "minLength": 1,
     "type": "string"
    }
   }
  },
  "responses": {
   "error": {
    "content": {
     "application/json": {
      "schema": {
       "properties": {
        "error": {
         "$ref": "#/components/schemas/error"
        }
       },
       "required": [
        "error"
       ],
       "type": "object"
      }
     }
    },
    "description": "A refusal; see /errors"
   }
  },
  "schemas": {
   "account": {
    "properties": {
     "business_profile": {
      "nullable": true,
      "type": "object"
     },
     "business_type": {
      "enum": [
       "company",
       "government_entity",
       "individual",
       "non_profit"
      ],
      "nullable": true,
      "type": "string"
     },
     "capabilities": {
      "type": "object"
     },
     "charges_enabled": {
      "type": "boolean"
     },
     "controller": {
      "type": "object"
     },
     "country": {
      "type": "string"
     },
     "created": {
      "type": "integer"
     },
     "default_currency": {
      "type": "string"
     },
     "details_submitted": {
      "type": "boolean"
     },
     "email": {
      "nullable": true,
      "type": "string"
     },
     "groups": {
      "enum": [
       null
      ],
      "nullable": true
     },
     "id": {
      "type": "string"
     },
     "object": {
      "enum": [
       "account"
      ],
      "type": "string"
     },
     "payouts_enabled": {
      "type": "boolean"
     },
     "settings": {
      "nullable": true,
      "type": "object"
     },
     "type": {
      "enum": [
       "custom",
       "express",
       "none",
       "standard"
      ],
      "type": "string"
     }
    },
    "required": [
     "id",
     "object"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "mch_"
   },
   "balance": {
    "properties": {
     "available": {
      "items": {},
      "type": "array"
     },
     "connect_reserved": {
      "items": {},
      "type": "array"
     },
     "instant_available": {
      "items": {},
      "type": "array"
     },
     "issuing": {
      "type": "object"
     },
     "livemode": {
      "type": "boolean"
     },
     "object": {
      "enum": [
       "balance"
      ],
      "type": "string"
     },
     "pending": {
      "items": {},
      "type": "array"
     },
     "refund_and_dispute_prefunding": {
      "type": "object"
     }
    },
    "required": [
     "available",
     "livemode",
     "object",
     "pending"
    ],
    "type": "object"
   },
   "balance_settings": {
    "properties": {
     "object": {
      "enum": [
       "balance_settings"
      ],
      "type": "string"
     },
     "payments": {
      "type": "object"
     }
    },
    "required": [
     "object",
     "payments"
    ],
    "type": "object"
   },
   "balance_transaction": {
    "properties": {
     "amount": {
      "type": "integer"
     },
     "available_on": {
      "type": "integer"
     },
     "balance_type": {
      "enum": [
       "issuing",
       "payments",
       "refund_and_dispute_prefunding",
       "risk_reserved"
      ],
      "type": "string"
     },
     "created": {
      "type": "integer"
     },
     "currency": {
      "type": "string"
     },
     "description": {
      "nullable": true,
      "type": "string"
     },
     "exchange_rate": {
      "nullable": true,
      "type": "number"
     },
     "fee": {
      "type": "integer"
     },
     "fee_details": {
      "items": {},
      "type": "array"
     },
     "id": {
      "type": "string"
     },
     "net": {
      "type": "integer"
     },
     "object": {
      "enum": [
       "balance_transaction"
      ],
      "type": "string"
     },
     "reporting_category": {
      "type": "string"
     },
     "source": {
      "anyOf": [
       {
        "type": "string"
       }
      ],
      "nullable": true
     },
     "status": {
      "type": "string"
     },
     "type": {
      "enum": [
       "adjustment",
       "charge",
       "connect_collection_transfer",
       "payout",
       "payout_cancel",
       "payout_failure",
       "refund",
       "refund_failure",
       "reserve_hold",
       "reserve_release",
       "reserved_funds"
      ],
      "type": "string"
     }
    },
    "required": [
     "amount",
     "available_on",
     "balance_type",
     "created",
     "currency",
     "description",
     "exchange_rate",
     "fee",
     "fee_details",
     "id",
     "net",
     "object",
     "reporting_category",
     "source",
     "status",
     "type"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "txn_"
   },
   "bank_account": {
    "properties": {
     "account": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/account"
       }
      ],
      "nullable": true
     },
     "account_holder_name": {
      "nullable": true,
      "type": "string"
     },
     "account_holder_type": {
      "nullable": true,
      "type": "string"
     },
     "account_type": {
      "nullable": true,
      "type": "string"
     },
     "available_payout_methods": {
      "items": {},
      "nullable": true,
      "type": "array"
     },
     "bank_name": {
      "nullable": true,
      "type": "string"
     },
     "country": {
      "type": "string"
     },
     "currency": {
      "type": "string"
     },
     "default_for_currency": {
      "nullable": true,
      "type": "boolean"
     },
     "fingerprint": {
      "nullable": true,
      "type": "string"
     },
     "future_requirements": {
      "nullable": true,
      "type": "object"
     },
     "id": {
      "type": "string"
     },
     "last4": {
      "type": "string"
     },
     "metadata": {
      "nullable": true,
      "type": "object"
     },
     "object": {
      "enum": [
       "bank_account"
      ],
      "type": "string"
     },
     "requirements": {
      "nullable": true,
      "type": "object"
     },
     "routing_number": {
      "nullable": true,
      "type": "string"
     },
     "status": {
      "type": "string"
     }
    },
    "required": [
     "account_holder_name",
     "account_holder_type",
     "account_type",
     "bank_name",
     "country",
     "currency",
     "fingerprint",
     "id",
     "last4",
     "object",
     "routing_number",
     "status"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "ba_"
   },
   "charge": {
    "properties": {
     "amount": {
      "type": "integer"
     },
     "amount_captured": {
      "type": "integer"
     },
     "amount_refunded": {
      "type": "integer"
     },
     "application": {
      "anyOf": [
       {
        "type": "string"
       }
      ],
      "nullable": true
     },
     "application_fee": {
      "anyOf": [
       {
        "type": "string"
       }
      ],
      "nullable": true
     },
     "application_fee_amount": {
      "nullable": true,
      "type": "integer"
     },
     "authorization_code": {
      "type": "string"
     },
     "balance_transaction": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/balance_transaction"
       }
      ],
      "nullable": true
     },
     "billing_details": {
      "type": "object"
     },
     "calculated_statement_descriptor": {
      "nullable": true,
      "type": "string"
     },
     "captured": {
      "type": "boolean"
     },
     "created": {
      "type": "integer"
     },
     "currency": {
      "type": "string"
     },
     "customer": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/customer"
       },
       {
        "$ref": "#/components/schemas/deleted_customer"
       }
      ],
      "nullable": true
     },
     "description": {
      "nullable": true,
      "type": "string"
     },
     "disputed": {
      "type": "boolean"
     },
     "failure_balance_transaction": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/balance_transaction"
       }
      ],
      "nullable": true
     },
     "failure_code": {
      "nullable": true,
      "type": "string"
     },
     "failure_message": {
      "nullable": true,
      "type": "string"
     },
     "fraud_details": {
      "nullable": true,
      "type": "object"
     },
     "id": {
      "type": "string"
     },
     "level3": {
      "type": "object"
     },
     "livemode": {
      "type": "boolean"
     },
     "metadata": {
      "type": "object"
     },
     "object": {
      "enum": [
       "charge"
      ],
      "type": "string"
     },
     "on_behalf_of": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/account"
       }
      ],
      "nullable": true
     },
     "outcome": {
      "nullable": true,
      "type": "object"
     },
     "paid": {
      "type": "boolean"
     },
     "payment_intent": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/payment_intent"
       }
      ],
      "nullable": true
     },
     "payment_method": {
      "nullable": true,
      "type": "string"
     },
     "payment_method_details": {
      "nullable": true,
      "type": "object"
     },
     "presentment_details": {
      "type": "object"
     },
     "radar_options": {
      "type": "object"
     },
     "receipt_email": {
      "nullable": true,
      "type": "string"
     },
     "receipt_number": {
      "nullable": true,
      "type": "string"
     },
     "receipt_url": {
      "nullable": true,
      "type": "string"
     },
     "refunded": {
      "type": "boolean"
     },
     "refunds": {
      "nullable": true,
      "type": "object"
     },
     "review": {
      "anyOf": [
       {
        "type": "string"
       }
      ],
      "nullable": true
     },
     "shipping": {
      "nullable": true,
      "type": "object"
     },
     "source": {
      "nullable": true,
      "type": "object"
     },
     "source_transfer": {
      "anyOf": [
       {
        "type": "string"
       }
      ],
      "nullable": true
     },
     "statement_descriptor": {
      "nullable": true,
      "type": "string"
     },
     "statement_descriptor_suffix": {
      "nullable": true,
      "type": "string"
     },
     "status": {
      "enum": [
       "failed",
       "pending",
       "succeeded"
      ],
      "type": "string"
     },
     "transfer": {
      "anyOf": [
       {
        "type": "string"
       }
      ]
     },
     "transfer_data": {
      "nullable": true,
      "type": "object"
     },
     "transfer_group": {
      "nullable": true,
      "type": "string"
     }
    },
    "required": [
     "amount",
     "amount_captured",
     "amount_refunded",
     "application",
     "application_fee",
     "application_fee_amount",
     "balance_transaction",
     "billing_details",
     "calculated_statement_descriptor",
     "captured",
     "created",
     "currency",
     "customer",
     "description",
     "disputed",
     "failure_balance_transaction",
     "failure_code",
     "failure_message",
     "fraud_details",
     "id",
     "livemode",
     "metadata",
     "object",
     "on_behalf_of",
     "outcome",
     "paid",
     "payment_intent",
     "payment_method",
     "payment_method_details",
     "receipt_email",
     "receipt_number",
     "receipt_url",
     "refunded",
     "review",
     "shipping",
     "source",
     "source_transfer",
     "statement_descriptor",
     "statement_descriptor_suffix",
     "status",
     "transfer_data",
     "transfer_group"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "ch_"
   },
   "checkout.session": {
    "properties": {
     "adaptive_pricing": {
      "nullable": true,
      "type": "object"
     },
     "after_expiration": {
      "nullable": true,
      "type": "object"
     },
     "allowed_payment_method_types": {
      "items": {},
      "nullable": true,
      "type": "array"
     },
     "amount_subtotal": {
      "nullable": true,
      "type": "integer"
     },
     "amount_total": {
      "nullable": true,
      "type": "integer"
     },
     "automatic_tax": {
      "type": "object"
     },
     "billing_address_collection": {
      "enum": [
       "auto",
       "required"
      ],
      "nullable": true,
      "type": "string"
     },
     "branding_settings": {
      "type": "object"
     },
     "cancel_url": {
      "nullable": true,
      "type": "string"
     },
     "client_reference_id": {
      "nullable": true,
      "type": "string"
     },
     "client_secret": {
      "nullable": true,
      "type": "string"
     },
     "collected_information": {
      "nullable": true,
      "type": "object"
     },
     "consent": {
      "nullable": true,
      "type": "object"
     },
     "consent_collection": {
      "nullable": true,
      "type": "object"
     },
     "created": {
      "type": "integer"
     },
     "currency": {
      "nullable": true,
      "type": "string"
     },
     "currency_conversion": {
      "nullable": true,
      "type": "object"
     },
     "custom_fields": {
      "items": {},
      "type": "array"
     },
     "custom_text": {
      "type": "object"
     },
     "customer": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/customer"
       },
       {
        "$ref": "#/components/schemas/deleted_customer"
       }
      ],
      "nullable": true
     },
     "customer_account": {
      "nullable": true,
      "type": "string"
     },
     "customer_creation": {
      "enum": [
       "always",
       "if_required"
      ],
      "nullable": true,
      "type": "string"
     },
     "customer_details": {
      "nullable": true,
      "type": "object"
     },
     "customer_email": {
      "nullable": true,
      "type": "string"
     },
     "excluded_payment_method_types": {
      "items": {},
      "type": "array"
     },
     "expires_at": {
      "type": "integer"
     },
     "id": {
      "type": "string"
     },
     "integration_identifier": {
      "nullable": true,
      "type": "string"
     },
     "line_items": {
      "type": "object"
     },
     "livemode": {
      "type": "boolean"
     },
     "locale": {
      "enum": [
       "auto",
       "bg",
       "cs",
       "da",
       "de",
       "el",
       "en",
       "en-GB",
       "es",
       "es-419",
       "et",
       "fi",
       "fil",
       "fr",
       "fr-CA",
       "hr",
       "hu",
       "id",
       "it",
       "ja",
       "ko",
       "lt",
       "lv",
       "ms",
       "mt",
       "nb",
       "nl",
       "pl",
       "pt",
       "pt-BR",
       "ro",
       "ru",
       "sk",
       "sl",
       "sv",
       "th",
       "tr",
       "vi",
       "zh",
       "zh-HK",
       "zh-TW"
      ],
      "nullable": true,
      "type": "string"
     },
     "managed_payments": {
      "nullable": true,
      "type": "object"
     },
     "marketing_attributions": {
      "enum": [
       null
      ],
      "nullable": true
     },
     "metadata": {
      "nullable": true,
      "type": "object"
     },
     "mode": {
      "enum": [
       "payment",
       "setup"
      ],
      "type": "string"
     },
     "name_collection": {
      "type": "object"
     },
     "object": {
      "enum": [
       "checkout.session"
      ],
      "type": "string"
     },
     "origin_context": {
      "enum": [
       "mobile_app",
       "web"
      ],
      "nullable": true,
      "type": "string"
     },
     "payment_intent": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/payment_intent"
       }
      ],
      "nullable": true
     },
     "payment_link": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/payment_link"
       }
      ],
      "nullable": true
     },
     "payment_method_collection": {
      "enum": [
       "always",
       "if_required"
      ],
      "nullable": true,
      "type": "string"
     },
     "payment_method_configuration_details": {
      "nullable": true,
      "type": "object"
     },
     "payment_method_options": {
      "nullable": true,
      "type": "object"
     },
     "payment_method_types": {
      "items": {},
      "type": "array"
     },
     "payment_status": {
      "enum": [
       "no_payment_required",
       "paid",
       "unpaid"
      ],
      "type": "string"
     },
     "permissions": {
      "nullable": true,
      "type": "object"
     },
     "phone_number_collection": {
      "type": "object"
     },
     "recovered_from": {
      "nullable": true,
      "type": "string"
     },
     "redirect_on_completion": {
      "enum": [
       "always",
       "if_required",
       "never"
      ],
      "type": "string"
     },
     "return_url": {
      "type": "string"
     },
     "saved_payment_method_options": {
      "nullable": true,
      "type": "object"
     },
     "setup_intent": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/setup_intent"
       }
      ],
      "nullable": true
     },
     "shipping_address_collection": {
      "nullable": true,
      "type": "object"
     },
     "shipping_cost": {
      "nullable": true,
      "type": "object"
     },
     "shipping_options": {
      "items": {},
      "type": "array"
     },
     "status": {
      "enum": [
       "complete",
       "expired",
       "open"
      ],
      "nullable": true,
      "type": "string"
     },
     "submit_type": {
      "enum": [
       "auto",
       "book",
       "donate",
       "pay",
       "subscribe"
      ],
      "nullable": true,
      "type": "string"
     },
     "success_url": {
      "nullable": true,
      "type": "string"
     },
     "tax_id_collection": {
      "type": "object"
     },
     "total_details": {
      "nullable": true,
      "type": "object"
     },
     "ui_mode": {
      "enum": [
       "elements",
       "embedded_page",
       "form",
       "hosted_page"
      ],
      "nullable": true,
      "type": "string"
     },
     "url": {
      "nullable": true,
      "type": "string"
     },
     "wallet_options": {
      "nullable": true,
      "type": "object"
     }
    },
    "required": [
     "adaptive_pricing",
     "after_expiration",
     "allowed_payment_method_types",
     "amount_subtotal",
     "amount_total",
     "automatic_tax",
     "billing_address_collection",
     "cancel_url",
     "client_reference_id",
     "client_secret",
     "collected_information",
     "consent",
     "consent_collection",
     "created",
     "currency",
     "currency_conversion",
     "custom_fields",
     "custom_text",
     "customer",
     "customer_account",
     "customer_creation",
     "customer_details",
     "customer_email",
     "expires_at",
     "id",
     "integration_identifier",
     "livemode",
     "locale",
     "managed_payments",
     "marketing_attributions",
     "metadata",
     "mode",
     "object",
     "origin_context",
     "payment_intent",
     "payment_link",
     "payment_method_collection",
     "payment_method_configuration_details",
     "payment_method_options",
     "payment_method_types",
     "payment_status",
     "permissions",
     "recovered_from",
     "saved_payment_method_options",
     "setup_intent",
     "shipping_address_collection",
     "shipping_cost",
     "shipping_options",
     "status",
     "submit_type",
     "success_url",
     "total_details",
     "ui_mode",
     "url",
     "wallet_options"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "cs_"
   },
   "customer": {
    "properties": {
     "address": {
      "nullable": true,
      "type": "object"
     },
     "balance": {
      "type": "integer"
     },
     "business_name": {
      "type": "string"
     },
     "cash_balance": {
      "nullable": true,
      "type": "object"
     },
     "created": {
      "type": "integer"
     },
     "currency": {
      "nullable": true,
      "type": "string"
     },
     "customer_account": {
      "nullable": true,
      "type": "string"
     },
     "default_source": {
      "anyOf": [
       {
        "type": "string"
       }
      ],
      "nullable": true
     },
     "delinquent": {
      "nullable": true,
      "type": "boolean"
     },
     "description": {
      "nullable": true,
      "type": "string"
     },
     "email": {
      "nullable": true,
      "type": "string"
     },
     "id": {
      "type": "string"
     },
     "individual_name": {
      "type": "string"
     },
     "livemode": {
      "type": "boolean"
     },
     "metadata": {
      "type": "object"
     },
     "name": {
      "nullable": true,
      "type": "string"
     },
     "object": {
      "enum": [
       "customer"
      ],
      "type": "string"
     },
     "phone": {
      "nullable": true,
      "type": "string"
     },
     "preferred_locales": {
      "items": {},
      "nullable": true,
      "type": "array"
     },
     "shipping": {
      "nullable": true,
      "type": "object"
     },
     "sources": {
      "type": "object"
     },
     "tax": {
      "type": "object"
     },
     "tax_exempt": {
      "enum": [
       "exempt",
       "none",
       "reverse"
      ],
      "nullable": true,
      "type": "string"
     },
     "tax_ids": {
      "type": "object"
     },
     "test_clock": {
      "anyOf": [
       {
        "type": "string"
       }
      ],
      "nullable": true
     }
    },
    "required": [
     "created",
     "default_source",
     "description",
     "email",
     "id",
     "livemode",
     "object",
     "shipping"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "cus_"
   },
   "deleted_customer": {
    "properties": {
     "deleted": {
      "type": "boolean"
     },
     "id": {
      "type": "string"
     },
     "object": {
      "enum": [
       "customer"
      ],
      "type": "string"
     }
    },
    "required": [
     "deleted",
     "id",
     "object"
    ],
    "type": "object"
   },
   "deleted_product": {
    "properties": {
     "deleted": {
      "type": "boolean"
     },
     "id": {
      "type": "string"
     },
     "object": {
      "enum": [
       "product"
      ],
      "type": "string"
     }
    },
    "required": [
     "deleted",
     "id",
     "object"
    ],
    "type": "object"
   },
   "deleted_tax_id": {
    "properties": {
     "deleted": {
      "type": "boolean"
     },
     "id": {
      "type": "string"
     },
     "object": {
      "enum": [
       "tax_id"
      ],
      "type": "string"
     }
    },
    "required": [
     "deleted",
     "id",
     "object"
    ],
    "type": "object"
   },
   "deleted_webhook_endpoint": {
    "properties": {
     "deleted": {
      "type": "boolean"
     },
     "id": {
      "type": "string"
     },
     "object": {
      "enum": [
       "webhook_endpoint"
      ],
      "type": "string"
     }
    },
    "required": [
     "deleted",
     "id",
     "object"
    ],
    "type": "object"
   },
   "dispute": {
    "properties": {
     "amount": {
      "type": "integer"
     },
     "balance_transactions": {
      "items": {},
      "type": "array"
     },
     "charge": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/charge"
       }
      ]
     },
     "created": {
      "type": "integer"
     },
     "currency": {
      "type": "string"
     },
     "enhanced_eligibility_types": {
      "items": {},
      "type": "array"
     },
     "evidence": {
      "type": "object"
     },
     "evidence_details": {
      "type": "object"
     },
     "id": {
      "type": "string"
     },
     "is_charge_refundable": {
      "type": "boolean"
     },
     "livemode": {
      "type": "boolean"
     },
     "metadata": {
      "type": "object"
     },
     "network_reason_code": {
      "nullable": true,
      "type": "string"
     },
     "object": {
      "enum": [
       "dispute"
      ],
      "type": "string"
     },
     "payment_intent": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/payment_intent"
       }
      ],
      "nullable": true
     },
     "payment_method_details": {
      "type": "object"
     },
     "reason": {
      "type": "string"
     },
     "status": {
      "enum": [
       "lost",
       "needs_response",
       "prevented",
       "under_review",
       "warning_closed",
       "warning_needs_response",
       "warning_under_review",
       "won"
      ],
      "type": "string"
     }
    },
    "required": [
     "amount",
     "balance_transactions",
     "charge",
     "created",
     "currency",
     "enhanced_eligibility_types",
     "evidence",
     "evidence_details",
     "id",
     "is_charge_refundable",
     "livemode",
     "metadata",
     "object",
     "payment_intent",
     "reason",
     "status"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "du_"
   },
   "error": {
    "properties": {
     "code": {
      "description": "The precise reason, when there is one; see the errors page.",
      "type": "string"
     },
     "decline_code": {
      "description": "On a card_declined error, the bank's reason.",
      "type": "string"
     },
     "doc_url": {
      "description": "A link to this code on the errors page.",
      "type": "string"
     },
     "message": {
      "description": "A sentence for people. It may change; never parse it.",
      "type": "string"
     },
     "param": {
      "description": "The request parameter at fault, when there is one.",
      "type": "string"
     },
     "request_log_url": {
      "description": "A link to this request's log in the Dashboard, when the request was logged.",
      "type": "string"
     },
     "type": {
      "description": "The broad kind of error.",
      "enum": [
       "api_error",
       "authentication_error",
       "card_error",
       "idempotency_error",
       "invalid_request_error",
       "rate_limit_error"
      ],
      "type": "string"
     }
    },
    "required": [
     "type",
     "message"
    ],
    "type": "object"
   },
   "event": {
    "properties": {
     "account": {
      "type": "string"
     },
     "api_version": {
      "nullable": true,
      "type": "string"
     },
     "context": {
      "type": "string"
     },
     "created": {
      "type": "integer"
     },
     "data": {
      "description": "data.object is the object as GET /v1/<object> shows it at the time of the event, with the buyer's data in it: a Customer's name, email, phone, address and shipping, a tax id's value, a PaymentMethod's and a Charge's billing_details, a PaymentIntent's and a Charge's receipt_email and shipping, a Checkout Session's customer_details and collected_information. No object holds a card's number or CVC or an API key, so no event does. data.previous_attributes holds the old value of each field the update changed, buyer fields too. Webhook deliveries, their retries and GET /v1/events serve the same body.",
      "type": "object"
     },
     "id": {
      "type": "string"
     },
     "livemode": {
      "type": "boolean"
     },
     "object": {
      "enum": [
       "event"
      ],
      "type": "string"
     },
     "pending_webhooks": {
      "type": "integer"
     },
     "request": {
      "nullable": true,
      "type": "object"
     },
     "type": {
      "enum": [
       "account.application.authorized",
       "account.application.deauthorized",
       "account.external_account.created",
       "account.external_account.deleted",
       "account.external_account.updated",
       "account.updated",
       "application_fee.created",
       "application_fee.refund.updated",
       "application_fee.refunded",
       "balance.available",
       "balance_settings.updated",
       "capability.updated",
       "cash_balance.funds_available",
       "charge.captured",
       "charge.dispute.closed",
       "charge.dispute.created",
       "charge.dispute.funds_reinstated",
       "charge.dispute.funds_withdrawn",
       "charge.dispute.updated",
       "charge.expired",
       "charge.failed",
       "charge.pending",
       "charge.refund.updated",
       "charge.refunded",
       "charge.succeeded",
       "charge.updated",
       "checkout.session.async_payment_failed",
       "checkout.session.async_payment_succeeded",
       "checkout.session.completed",
       "checkout.session.expired",
       "climate.order.canceled",
       "climate.order.created",
       "climate.order.delayed",
       "climate.order.delivered",
       "climate.order.product_substituted",
       "climate.product.created",
       "climate.product.pricing_updated",
       "customer.created",
       "customer.deleted",
       "customer.source.created",
       "customer.source.deleted",
       "customer.source.expiring",
       "customer.source.updated",
       "customer.tax_id.created",
       "customer.tax_id.deleted",
       "customer.tax_id.updated",
       "customer.updated",
       "customer_cash_balance_transaction.created",
       "entitlements.active_entitlement_summary.updated",
       "file.created",
       "financial_connections.account.account_numbers_updated",
       "financial_connections.account.created",
       "financial_connections.account.deactivated",
       "financial_connections.account.disconnected",
       "financial_connections.account.reactivated",
       "financial_connections.account.refreshed_balance",
       "financial_connections.account.refreshed_ownership",
       "financial_connections.account.refreshed_transactions",
       "financial_connections.account.upcoming_account_number_expiry",
       "identity.verification_session.canceled",
       "identity.verification_session.created",
       "identity.verification_session.processing",
       "identity.verification_session.redacted",
       "identity.verification_session.requires_input",
       "identity.verification_session.verified",
       "issuing_authorization.created",
       "issuing_authorization.request",
       "issuing_authorization.updated",
       "issuing_card.created",
       "issuing_card.updated",
       "issuing_cardholder.created",
       "issuing_cardholder.updated",
       "issuing_dispute.closed",
       "issuing_dispute.created",
       "issuing_dispute.funds_reinstated",
       "issuing_dispute.funds_rescinded",
       "issuing_dispute.submitted",
       "issuing_dispute.updated",
       "issuing_personalization_design.activated",
       "issuing_personalization_design.deactivated",
       "issuing_personalization_design.rejected",
       "issuing_personalization_design.updated",
       "issuing_token.created",
       "issuing_token.updated",
       "issuing_transaction.created",
       "issuing_transaction.purchase_details_receipt_updated",
       "issuing_transaction.updated",
       "mandate.updated",
       "payment_intent.amount_capturable_updated",
       "payment_intent.canceled",
       "payment_intent.created",
       "payment_intent.partially_funded",
       "payment_intent.payment_failed",
       "payment_intent.processing",
       "payment_intent.requires_action",
       "payment_intent.succeeded",
       "payment_link.created",
       "payment_link.updated",
       "payment_method.attached",
       "payment_method.automatically_updated",
       "payment_method.detached",
       "payment_method.updated",
       "payout.canceled",
       "payout.created",
       "payout.failed",
       "payout.paid",
       "payout.reconciliation_completed",
       "payout.updated",
       "person.created",
       "person.deleted",
       "person.updated",
       "price.created",
       "price.deleted",
       "price.updated",
       "product.created",
       "product.deleted",
       "product.updated",
       "quote.accepted",
       "quote.canceled",
       "quote.created",
       "quote.finalized",
       "radar.early_fraud_warning.created",
       "radar.early_fraud_warning.updated",
       "refund.created",
       "refund.failed",
       "refund.updated",
       "reporting.report_run.failed",
       "reporting.report_run.succeeded",
       "reporting.report_type.updated",
       "reserve.hold.created",
       "reserve.hold.updated",
       "reserve.plan.created",
       "reserve.plan.disabled",
       "reserve.plan.expired",
       "reserve.plan.updated",
       "reserve.release.created",
       "review.closed",
       "review.opened",
       "setup_intent.canceled",
       "setup_intent.created",
       "setup_intent.requires_action",
       "setup_intent.setup_failed",
       "setup_intent.succeeded",
       "sigma.scheduled_query_run.created",
       "source.canceled",
       "source.chargeable",
       "source.failed",
       "source.mandate_notification",
       "source.refund_attributes_required",
       "source.transaction.created",
       "source.transaction.updated",
       "tax.settings.updated",
       "tax_rate.created",
       "tax_rate.updated",
       "terminal.reader.action_failed",
       "terminal.reader.action_succeeded",
       "terminal.reader.action_updated",
       "test_helpers.test_clock.advancing",
       "test_helpers.test_clock.created",
       "test_helpers.test_clock.deleted",
       "test_helpers.test_clock.internal_failure",
       "test_helpers.test_clock.ready",
       "topup.canceled",
       "topup.created",
       "topup.failed",
       "topup.reversed",
       "topup.succeeded",
       "transfer.created",
       "transfer.reversed",
       "transfer.updated",
       "treasury.credit_reversal.created",
       "treasury.credit_reversal.posted",
       "treasury.debit_reversal.completed",
       "treasury.debit_reversal.created",
       "treasury.financial_account.closed",
       "treasury.financial_account.created",
       "treasury.financial_account.features_status_updated",
       "treasury.inbound_transfer.canceled",
       "treasury.inbound_transfer.created",
       "treasury.inbound_transfer.failed",
       "treasury.inbound_transfer.succeeded",
       "treasury.outbound_payment.canceled",
       "treasury.outbound_payment.created",
       "treasury.outbound_payment.expected_arrival_date_updated",
       "treasury.outbound_payment.failed",
       "treasury.outbound_payment.posted",
       "treasury.outbound_payment.returned",
       "treasury.outbound_payment.tracking_details_updated",
       "treasury.outbound_transfer.canceled",
       "treasury.outbound_transfer.created",
       "treasury.outbound_transfer.expected_arrival_date_updated",
       "treasury.outbound_transfer.failed",
       "treasury.outbound_transfer.posted",
       "treasury.outbound_transfer.returned",
       "treasury.outbound_transfer.tracking_details_updated",
       "treasury.received_credit.created",
       "treasury.received_credit.failed",
       "treasury.received_credit.succeeded",
       "treasury.received_debit.created"
      ],
      "type": "string"
     }
    },
    "required": [
     "api_version",
     "created",
     "data",
     "id",
     "livemode",
     "object",
     "pending_webhooks",
     "request",
     "type"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "evt_"
   },
   "file": {
    "properties": {
     "created": {
      "type": "integer"
     },
     "expires_at": {
      "nullable": true,
      "type": "integer"
     },
     "filename": {
      "nullable": true,
      "type": "string"
     },
     "id": {
      "type": "string"
     },
     "links": {
      "nullable": true,
      "type": "object"
     },
     "object": {
      "enum": [
       "file"
      ],
      "type": "string"
     },
     "purpose": {
      "enum": [
       "account_requirement",
       "additional_verification",
       "business_icon",
       "business_logo",
       "customer_signature",
       "dispute_evidence",
       "document_provider_identity_document",
       "finance_report_run",
       "financial_account_statement",
       "identity_document",
       "identity_document_downloadable",
       "issuing_regulatory_reporting",
       "pci_document",
       "platform_terms_of_service",
       "selfie",
       "sigma_scheduled_query",
       "tax_document_user_upload",
       "terminal_android_apk",
       "terminal_reader_splashscreen",
       "terminal_wifi_certificate",
       "terminal_wifi_private_key"
      ],
      "type": "string"
     },
     "size": {
      "type": "integer"
     },
     "title": {
      "nullable": true,
      "type": "string"
     },
     "type": {
      "nullable": true,
      "type": "string"
     },
     "url": {
      "nullable": true,
      "type": "string"
     }
    },
    "required": [
     "created",
     "expires_at",
     "filename",
     "id",
     "object",
     "purpose",
     "size",
     "title",
     "type",
     "url"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "file_"
   },
   "file_link": {
    "properties": {
     "created": {
      "type": "integer"
     },
     "expired": {
      "type": "boolean"
     },
     "expires_at": {
      "nullable": true,
      "type": "integer"
     },
     "file": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/file"
       }
      ]
     },
     "id": {
      "type": "string"
     },
     "livemode": {
      "type": "boolean"
     },
     "metadata": {
      "type": "object"
     },
     "object": {
      "enum": [
       "file_link"
      ],
      "type": "string"
     },
     "url": {
      "nullable": true,
      "type": "string"
     }
    },
    "required": [
     "created",
     "expired",
     "expires_at",
     "file",
     "id",
     "livemode",
     "metadata",
     "object",
     "url"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "link_"
   },
   "item": {
    "properties": {
     "adjustable_quantity": {
      "nullable": true,
      "type": "object"
     },
     "amount_subtotal": {
      "type": "integer"
     },
     "amount_tax": {
      "type": "integer"
     },
     "amount_total": {
      "type": "integer"
     },
     "currency": {
      "type": "string"
     },
     "description": {
      "nullable": true,
      "type": "string"
     },
     "id": {
      "type": "string"
     },
     "metadata": {
      "nullable": true,
      "type": "object"
     },
     "object": {
      "enum": [
       "item"
      ],
      "type": "string"
     },
     "price": {
      "nullable": true,
      "type": "object"
     },
     "quantity": {
      "nullable": true,
      "type": "integer"
     },
     "taxes": {
      "items": {},
      "type": "array"
     }
    },
    "required": [
     "adjustable_quantity",
     "amount_subtotal",
     "amount_tax",
     "amount_total",
     "currency",
     "description",
     "id",
     "metadata",
     "object",
     "price",
     "quantity"
    ],
    "type": "object"
   },
   "payment_intent": {
    "properties": {
     "allowed_payment_method_types": {
      "items": {},
      "nullable": true,
      "type": "array"
     },
     "amount": {
      "type": "integer"
     },
     "amount_capturable": {
      "type": "integer"
     },
     "amount_details": {
      "type": "object"
     },
     "amount_received": {
      "type": "integer"
     },
     "application": {
      "anyOf": [
       {
        "type": "string"
       }
      ],
      "nullable": true
     },
     "application_fee_amount": {
      "nullable": true,
      "type": "integer"
     },
     "automatic_payment_methods": {
      "nullable": true,
      "type": "object"
     },
     "canceled_at": {
      "nullable": true,
      "type": "integer"
     },
     "cancellation_reason": {
      "enum": [
       "abandoned",
       "automatic",
       "duplicate",
       "expired",
       "fraudulent",
       "requested_by_customer"
      ],
      "nullable": true,
      "type": "string"
     },
     "capture_method": {
      "enum": [
       "automatic",
       "automatic_async",
       "manual"
      ],
      "type": "string"
     },
     "client_secret": {
      "nullable": true,
      "type": "string"
     },
     "confirmation_method": {
      "enum": [
       "automatic",
       "manual"
      ],
      "type": "string"
     },
     "created": {
      "type": "integer"
     },
     "currency": {
      "type": "string"
     },
     "customer": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/customer"
       },
       {
        "$ref": "#/components/schemas/deleted_customer"
       }
      ],
      "nullable": true
     },
     "customer_account": {
      "nullable": true,
      "type": "string"
     },
     "description": {
      "nullable": true,
      "type": "string"
     },
     "excluded_payment_method_types": {
      "items": {},
      "nullable": true,
      "type": "array"
     },
     "hooks": {
      "type": "object"
     },
     "id": {
      "type": "string"
     },
     "last_payment_error": {
      "nullable": true,
      "type": "object"
     },
     "latest_charge": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/charge"
       }
      ],
      "nullable": true
     },
     "livemode": {
      "type": "boolean"
     },
     "managed_payments": {
      "nullable": true,
      "type": "object"
     },
     "metadata": {
      "type": "object"
     },
     "next_action": {
      "nullable": true,
      "type": "object"
     },
     "object": {
      "enum": [
       "payment_intent"
      ],
      "type": "string"
     },
     "on_behalf_of": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/account"
       }
      ],
      "nullable": true
     },
     "payment_details": {
      "type": "object"
     },
     "payment_method": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/payment_method"
       }
      ],
      "nullable": true
     },
     "payment_method_configuration_details": {
      "nullable": true,
      "type": "object"
     },
     "payment_method_options": {
      "nullable": true,
      "type": "object"
     },
     "payment_method_types": {
      "items": {},
      "type": "array"
     },
     "payment_record": {
      "enum": [
       null
      ],
      "nullable": true
     },
     "presentment_details": {
      "type": "object"
     },
     "processing": {
      "nullable": true,
      "type": "object"
     },
     "receipt_email": {
      "nullable": true,
      "type": "string"
     },
     "review": {
      "anyOf": [
       {
        "type": "string"
       }
      ],
      "nullable": true
     },
     "setup_future_usage": {
      "enum": [
       "off_session",
       "on_session"
      ],
      "nullable": true,
      "type": "string"
     },
     "shared_payment_granted_token": {
      "enum": [
       null
      ],
      "nullable": true
     },
     "shipping": {
      "nullable": true,
      "type": "object"
     },
     "source": {
      "anyOf": [
       {
        "type": "string"
       }
      ],
      "nullable": true
     },
     "statement_descriptor": {
      "nullable": true,
      "type": "string"
     },
     "statement_descriptor_suffix": {
      "nullable": true,
      "type": "string"
     },
     "status": {
      "enum": [
       "canceled",
       "processing",
       "requires_action",
       "requires_capture",
       "requires_confirmation",
       "requires_payment_method",
       "succeeded"
      ],
      "type": "string"
     },
     "transfer_data": {
      "nullable": true,
      "type": "object"
     },
     "transfer_group": {
      "nullable": true,
      "type": "string"
     }
    },
    "required": [
     "allowed_payment_method_types",
     "amount",
     "amount_capturable",
     "amount_received",
     "application",
     "application_fee_amount",
     "automatic_payment_methods",
     "canceled_at",
     "cancellation_reason",
     "capture_method",
     "client_secret",
     "confirmation_method",
     "created",
     "currency",
     "customer",
     "customer_account",
     "description",
     "excluded_payment_method_types",
     "id",
     "last_payment_error",
     "latest_charge",
     "livemode",
     "managed_payments",
     "metadata",
     "next_action",
     "object",
     "on_behalf_of",
     "payment_method",
     "payment_method_configuration_details",
     "payment_method_options",
     "payment_method_types",
     "payment_record",
     "processing",
     "receipt_email",
     "review",
     "setup_future_usage",
     "shared_payment_granted_token",
     "shipping",
     "source",
     "statement_descriptor",
     "statement_descriptor_suffix",
     "status",
     "transfer_group"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "pi_"
   },
   "payment_link": {
    "properties": {
     "active": {
      "type": "boolean"
     },
     "after_completion": {
      "type": "object"
     },
     "application": {
      "anyOf": [
       {
        "type": "string"
       }
      ],
      "nullable": true
     },
     "application_fee_amount": {
      "nullable": true,
      "type": "integer"
     },
     "application_fee_percent": {
      "nullable": true,
      "type": "number"
     },
     "automatic_tax": {
      "type": "object"
     },
     "billing_address_collection": {
      "enum": [
       "auto",
       "required"
      ],
      "type": "string"
     },
     "consent_collection": {
      "nullable": true,
      "type": "object"
     },
     "currency": {
      "type": "string"
     },
     "custom_fields": {
      "items": {},
      "type": "array"
     },
     "custom_text": {
      "type": "object"
     },
     "customer_creation": {
      "enum": [
       "always",
       "if_required"
      ],
      "type": "string"
     },
     "id": {
      "type": "string"
     },
     "inactive_message": {
      "nullable": true,
      "type": "string"
     },
     "line_items": {
      "type": "object"
     },
     "livemode": {
      "type": "boolean"
     },
     "managed_payments": {
      "nullable": true,
      "type": "object"
     },
     "metadata": {
      "type": "object"
     },
     "name_collection": {
      "type": "object"
     },
     "object": {
      "enum": [
       "payment_link"
      ],
      "type": "string"
     },
     "on_behalf_of": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/account"
       }
      ],
      "nullable": true
     },
     "optional_items": {
      "items": {},
      "nullable": true,
      "type": "array"
     },
     "payment_intent_data": {
      "nullable": true,
      "type": "object"
     },
     "payment_method_collection": {
      "enum": [
       "always",
       "if_required"
      ],
      "type": "string"
     },
     "payment_method_options": {
      "nullable": true,
      "type": "object"
     },
     "payment_method_types": {
      "items": {},
      "nullable": true,
      "type": "array"
     },
     "phone_number_collection": {
      "type": "object"
     },
     "restrictions": {
      "nullable": true,
      "type": "object"
     },
     "shipping_address_collection": {
      "nullable": true,
      "type": "object"
     },
     "shipping_options": {
      "items": {},
      "type": "array"
     },
     "submit_type": {
      "enum": [
       "auto",
       "book",
       "donate",
       "pay",
       "subscribe"
      ],
      "type": "string"
     },
     "tax_id_collection": {
      "type": "object"
     },
     "transfer_data": {
      "nullable": true,
      "type": "object"
     },
     "url": {
      "type": "string"
     }
    },
    "required": [
     "active",
     "after_completion",
     "application",
     "application_fee_amount",
     "application_fee_percent",
     "automatic_tax",
     "billing_address_collection",
     "consent_collection",
     "currency",
     "custom_fields",
     "custom_text",
     "customer_creation",
     "id",
     "inactive_message",
     "livemode",
     "managed_payments",
     "metadata",
     "object",
     "on_behalf_of",
     "payment_intent_data",
     "payment_method_collection",
     "payment_method_options",
     "payment_method_types",
     "phone_number_collection",
     "restrictions",
     "shipping_address_collection",
     "shipping_options",
     "submit_type",
     "tax_id_collection",
     "transfer_data",
     "url"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "plink_"
   },
   "payment_method": {
    "properties": {
     "acss_debit": {
      "type": "object"
     },
     "affirm": {
      "type": "object"
     },
     "afterpay_clearpay": {
      "type": "object"
     },
     "alipay": {
      "type": "object"
     },
     "allow_redisplay": {
      "enum": [
       "always",
       "limited",
       "unspecified"
      ],
      "type": "string"
     },
     "alma": {
      "type": "object"
     },
     "amazon_pay": {
      "type": "object"
     },
     "au_becs_debit": {
      "type": "object"
     },
     "bacs_debit": {
      "type": "object"
     },
     "bancontact": {
      "type": "object"
     },
     "billie": {
      "type": "object"
     },
     "billing_details": {
      "type": "object"
     },
     "bizum": {
      "type": "object"
     },
     "blik": {
      "type": "object"
     },
     "boleto": {
      "type": "object"
     },
     "card": {
      "type": "object"
     },
     "card_present": {
      "type": "object"
     },
     "cashapp": {
      "type": "object"
     },
     "created": {
      "type": "integer"
     },
     "crypto": {
      "type": "object"
     },
     "custom": {
      "type": "object"
     },
     "customer": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/customer"
       }
      ],
      "nullable": true
     },
     "customer_account": {
      "nullable": true,
      "type": "string"
     },
     "customer_balance": {
      "type": "object"
     },
     "eps": {
      "type": "object"
     },
     "fpx": {
      "type": "object"
     },
     "giropay": {
      "type": "object"
     },
     "grabpay": {
      "type": "object"
     },
     "id": {
      "type": "string"
     },
     "ideal": {
      "type": "object"
     },
     "interac_present": {
      "type": "object"
     },
     "kakao_pay": {
      "type": "object"
     },
     "klarna": {
      "type": "object"
     },
     "konbini": {
      "type": "object"
     },
     "kr_card": {
      "type": "object"
     },
     "link": {
      "type": "object"
     },
     "livemode": {
      "type": "boolean"
     },
     "mb_way": {
      "type": "object"
     },
     "metadata": {
      "nullable": true,
      "type": "object"
     },
     "mobilepay": {
      "type": "object"
     },
     "multibanco": {
      "type": "object"
     },
     "naver_pay": {
      "type": "object"
     },
     "nz_bank_account": {
      "type": "object"
     },
     "object": {
      "enum": [
       "payment_method"
      ],
      "type": "string"
     },
     "oxxo": {
      "type": "object"
     },
     "p24": {
      "type": "object"
     },
     "pay_by_bank": {
      "type": "object"
     },
     "payco": {
      "type": "object"
     },
     "paynow": {
      "type": "object"
     },
     "paypal": {
      "type": "object"
     },
     "payto": {
      "type": "object"
     },
     "pix": {
      "type": "object"
     },
     "promptpay": {
      "type": "object"
     },
     "radar_options": {
      "type": "object"
     },
     "revolut_pay": {
      "type": "object"
     },
     "samsung_pay": {
      "type": "object"
     },
     "satispay": {
      "type": "object"
     },
     "scalapay": {
      "type": "object"
     },
     "sepa_debit": {
      "type": "object"
     },
     "shared_payment_granted_token": {
      "enum": [
       null
      ],
      "nullable": true
     },
     "sofort": {
      "type": "object"
     },
     "sunbit": {
      "type": "object"
     },
     "swish": {
      "type": "object"
     },
     "twint": {
      "type": "object"
     },
     "type": {
      "enum": [
       "acss_debit",
       "affirm",
       "afterpay_clearpay",
       "alipay",
       "alma",
       "amazon_pay",
       "au_becs_debit",
       "bacs_debit",
       "bancontact",
       "billie",
       "bizum",
       "blik",
       "boleto",
       "card",
       "card_present",
       "cashapp",
       "crypto",
       "custom",
       "customer_balance",
       "eps",
       "fpx",
       "giropay",
       "grabpay",
       "ideal",
       "interac_present",
       "kakao_pay",
       "klarna",
       "konbini",
       "kr_card",
       "link",
       "mb_way",
       "mobilepay",
       "multibanco",
       "naver_pay",
       "nz_bank_account",
       "oxxo",
       "p24",
       "pay_by_bank",
       "payco",
       "paynow",
       "paypal",
       "payto",
       "pix",
       "promptpay",
       "revolut_pay",
       "samsung_pay",
       "satispay",
       "scalapay",
       "sepa_debit",
       "sofort",
       "sunbit",
       "swish",
       "twint",
       "upi",
       "us_bank_account",
       "wechat_pay",
       "zip"
      ],
      "type": "string"
     },
     "upi": {
      "type": "object"
     },
     "us_bank_account": {
      "type": "object"
     },
     "wechat_pay": {
      "type": "object"
     },
     "zip": {
      "type": "object"
     }
    },
    "required": [
     "billing_details",
     "created",
     "customer",
     "customer_account",
     "id",
     "livemode",
     "metadata",
     "object",
     "shared_payment_granted_token",
     "type"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "pm_"
   },
   "payment_method_configuration": {
    "properties": {
     "acss_debit": {
      "type": "object"
     },
     "active": {
      "type": "boolean"
     },
     "affirm": {
      "type": "object"
     },
     "afterpay_clearpay": {
      "type": "object"
     },
     "alipay": {
      "type": "object"
     },
     "alma": {
      "type": "object"
     },
     "amazon_pay": {
      "type": "object"
     },
     "apple_pay": {
      "type": "object"
     },
     "application": {
      "nullable": true,
      "type": "string"
     },
     "au_becs_debit": {
      "type": "object"
     },
     "bacs_debit": {
      "type": "object"
     },
     "bancontact": {
      "type": "object"
     },
     "billie": {
      "type": "object"
     },
     "bizum": {
      "type": "object"
     },
     "blik": {
      "type": "object"
     },
     "boleto": {
      "type": "object"
     },
     "card": {
      "type": "object"
     },
     "cartes_bancaires": {
      "type": "object"
     },
     "cashapp": {
      "type": "object"
     },
     "crypto": {
      "type": "object"
     },
     "customer_balance": {
      "type": "object"
     },
     "eps": {
      "type": "object"
     },
     "fpx": {
      "type": "object"
     },
     "giropay": {
      "type": "object"
     },
     "google_pay": {
      "type": "object"
     },
     "grabpay": {
      "type": "object"
     },
     "id": {
      "type": "string"
     },
     "ideal": {
      "type": "object"
     },
     "is_default": {
      "type": "boolean"
     },
     "jcb": {
      "type": "object"
     },
     "kakao_pay": {
      "type": "object"
     },
     "klarna": {
      "type": "object"
     },
     "konbini": {
      "type": "object"
     },
     "kr_card": {
      "type": "object"
     },
     "link": {
      "type": "object"
     },
     "livemode": {
      "type": "boolean"
     },
     "mb_way": {
      "type": "object"
     },
     "mobilepay": {
      "type": "object"
     },
     "multibanco": {
      "type": "object"
     },
     "name": {
      "type": "string"
     },
     "naver_pay": {
      "type": "object"
     },
     "nz_bank_account": {
      "type": "object"
     },
     "object": {
      "enum": [
       "payment_method_configuration"
      ],
      "type": "string"
     },
     "oxxo": {
      "type": "object"
     },
     "p24": {
      "type": "object"
     },
     "parent": {
      "nullable": true,
      "type": "string"
     },
     "pay_by_bank": {
      "type": "object"
     },
     "payco": {
      "type": "object"
     },
     "paynow": {
      "type": "object"
     },
     "paypal": {
      "type": "object"
     },
     "payto": {
      "type": "object"
     },
     "pix": {
      "type": "object"
     },
     "promptpay": {
      "type": "object"
     },
     "revolut_pay": {
      "type": "object"
     },
     "samsung_pay": {
      "type": "object"
     },
     "satispay": {
      "type": "object"
     },
     "scalapay": {
      "type": "object"
     },
     "sepa_debit": {
      "type": "object"
     },
     "sofort": {
      "type": "object"
     },
     "sunbit": {
      "type": "object"
     },
     "swish": {
      "type": "object"
     },
     "twint": {
      "type": "object"
     },
     "upi": {
      "type": "object"
     },
     "us_bank_account": {
      "type": "object"
     },
     "wechat_pay": {
      "type": "object"
     },
     "zip": {
      "type": "object"
     }
    },
    "required": [
     "active",
     "application",
     "id",
     "is_default",
     "livemode",
     "name",
     "object",
     "parent"
    ],
    "type": "object"
   },
   "payment_method_domain": {
    "properties": {
     "amazon_pay": {
      "type": "object"
     },
     "apple_pay": {
      "type": "object"
     },
     "created": {
      "type": "integer"
     },
     "domain_name": {
      "type": "string"
     },
     "enabled": {
      "type": "boolean"
     },
     "google_pay": {
      "type": "object"
     },
     "id": {
      "type": "string"
     },
     "klarna": {
      "type": "object"
     },
     "link": {
      "type": "object"
     },
     "livemode": {
      "type": "boolean"
     },
     "object": {
      "enum": [
       "payment_method_domain"
      ],
      "type": "string"
     },
     "paypal": {
      "type": "object"
     }
    },
    "required": [
     "amazon_pay",
     "apple_pay",
     "created",
     "domain_name",
     "enabled",
     "google_pay",
     "id",
     "klarna",
     "link",
     "livemode",
     "object",
     "paypal"
    ],
    "type": "object"
   },
   "payout": {
    "properties": {
     "amount": {
      "type": "integer"
     },
     "application_fee": {
      "anyOf": [
       {
        "type": "string"
       }
      ],
      "nullable": true
     },
     "application_fee_amount": {
      "nullable": true,
      "type": "integer"
     },
     "arrival_date": {
      "type": "integer"
     },
     "automatic": {
      "type": "boolean"
     },
     "balance_transaction": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/balance_transaction"
       }
      ],
      "nullable": true
     },
     "created": {
      "type": "integer"
     },
     "currency": {
      "type": "string"
     },
     "description": {
      "nullable": true,
      "type": "string"
     },
     "destination": {
      "anyOf": [
       {
        "type": "string"
       }
      ],
      "nullable": true
     },
     "failure_balance_transaction": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/balance_transaction"
       }
      ],
      "nullable": true
     },
     "failure_code": {
      "nullable": true,
      "type": "string"
     },
     "failure_message": {
      "nullable": true,
      "type": "string"
     },
     "id": {
      "type": "string"
     },
     "livemode": {
      "type": "boolean"
     },
     "metadata": {
      "nullable": true,
      "type": "object"
     },
     "method": {
      "type": "string"
     },
     "object": {
      "enum": [
       "payout"
      ],
      "type": "string"
     },
     "original_payout": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/payout"
       }
      ],
      "nullable": true
     },
     "payout_method": {
      "nullable": true,
      "type": "string"
     },
     "reconciliation_status": {
      "enum": [
       "completed",
       "in_progress",
       "not_applicable"
      ],
      "type": "string"
     },
     "reversed_by": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/payout"
       }
      ],
      "nullable": true
     },
     "source_type": {
      "type": "string"
     },
     "statement_descriptor": {
      "nullable": true,
      "type": "string"
     },
     "status": {
      "type": "string"
     },
     "trace_id": {
      "nullable": true,
      "type": "object"
     },
     "type": {
      "enum": [
       "bank_account",
       "card"
      ],
      "type": "string"
     }
    },
    "required": [
     "amount",
     "application_fee",
     "application_fee_amount",
     "arrival_date",
     "automatic",
     "balance_transaction",
     "created",
     "currency",
     "description",
     "destination",
     "failure_balance_transaction",
     "failure_code",
     "failure_message",
     "id",
     "livemode",
     "metadata",
     "method",
     "object",
     "original_payout",
     "payout_method",
     "reconciliation_status",
     "reversed_by",
     "source_type",
     "statement_descriptor",
     "status",
     "trace_id",
     "type"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "po_"
   },
   "price": {
    "properties": {
     "active": {
      "type": "boolean"
     },
     "created": {
      "type": "integer"
     },
     "currency": {
      "type": "string"
     },
     "custom_unit_amount": {
      "nullable": true,
      "type": "object"
     },
     "id": {
      "type": "string"
     },
     "livemode": {
      "type": "boolean"
     },
     "lookup_key": {
      "nullable": true,
      "type": "string"
     },
     "metadata": {
      "type": "object"
     },
     "nickname": {
      "nullable": true,
      "type": "string"
     },
     "object": {
      "enum": [
       "price"
      ],
      "type": "string"
     },
     "product": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/product"
       }
      ]
     },
     "tax_behavior": {
      "enum": [
       "exclusive",
       "inclusive",
       "unspecified"
      ],
      "type": "string"
     },
     "tiers_mode": {
      "enum": [
       null
      ],
      "nullable": true
     },
     "transform_quantity": {
      "nullable": true,
      "type": "object"
     },
     "type": {
      "enum": [
       "one_time"
      ],
      "type": "string"
     },
     "unit_amount": {
      "nullable": true,
      "type": "integer"
     },
     "unit_amount_decimal": {
      "nullable": true,
      "type": "string"
     }
    },
    "required": [
     "active",
     "created",
     "currency",
     "custom_unit_amount",
     "id",
     "livemode",
     "lookup_key",
     "metadata",
     "nickname",
     "object",
     "product",
     "tax_behavior",
     "tiers_mode",
     "transform_quantity",
     "type",
     "unit_amount",
     "unit_amount_decimal"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "price_"
   },
   "product": {
    "properties": {
     "active": {
      "type": "boolean"
     },
     "created": {
      "type": "integer"
     },
     "default_price": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/price"
       }
      ],
      "nullable": true
     },
     "description": {
      "nullable": true,
      "type": "string"
     },
     "id": {
      "type": "string"
     },
     "images": {
      "items": {},
      "type": "array"
     },
     "livemode": {
      "type": "boolean"
     },
     "marketing_features": {
      "items": {},
      "type": "array"
     },
     "metadata": {
      "type": "object"
     },
     "name": {
      "type": "string"
     },
     "object": {
      "enum": [
       "product"
      ],
      "type": "string"
     },
     "package_dimensions": {
      "nullable": true,
      "type": "object"
     },
     "shippable": {
      "nullable": true,
      "type": "boolean"
     },
     "statement_descriptor": {
      "nullable": true,
      "type": "string"
     },
     "tax_code": {
      "anyOf": [
       {
        "type": "string"
       }
      ],
      "nullable": true
     },
     "type": {
      "enum": [
       "good",
       "service"
      ],
      "type": "string"
     },
     "unit_label": {
      "nullable": true,
      "type": "string"
     },
     "updated": {
      "type": "integer"
     },
     "url": {
      "nullable": true,
      "type": "string"
     }
    },
    "required": [
     "active",
     "created",
     "description",
     "id",
     "images",
     "livemode",
     "marketing_features",
     "metadata",
     "name",
     "object",
     "package_dimensions",
     "shippable",
     "type",
     "updated",
     "url"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "prod_"
   },
   "radar.early_fraud_warning": {
    "properties": {
     "actionable": {
      "type": "boolean"
     },
     "charge": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/charge"
       }
      ]
     },
     "created": {
      "type": "integer"
     },
     "fraud_type": {
      "type": "string"
     },
     "id": {
      "type": "string"
     },
     "livemode": {
      "type": "boolean"
     },
     "object": {
      "enum": [
       "radar.early_fraud_warning"
      ],
      "type": "string"
     },
     "payment_intent": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/payment_intent"
       }
      ]
     }
    },
    "required": [
     "actionable",
     "charge",
     "created",
     "fraud_type",
     "id",
     "livemode",
     "object"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "issfr_"
   },
   "refund": {
    "properties": {
     "amount": {
      "type": "integer"
     },
     "application": {
      "enum": [
       null
      ],
      "nullable": true
     },
     "balance_transaction": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/balance_transaction"
       }
      ],
      "nullable": true
     },
     "charge": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/charge"
       }
      ],
      "nullable": true
     },
     "created": {
      "type": "integer"
     },
     "currency": {
      "type": "string"
     },
     "customer": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/customer"
       },
       {
        "$ref": "#/components/schemas/deleted_customer"
       }
      ],
      "nullable": true
     },
     "customer_account": {
      "enum": [
       null
      ],
      "nullable": true
     },
     "description": {
      "type": "string"
     },
     "destination_details": {
      "type": "object"
     },
     "failure_balance_transaction": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/balance_transaction"
       }
      ]
     },
     "failure_reason": {
      "type": "string"
     },
     "id": {
      "type": "string"
     },
     "instructions_email": {
      "type": "string"
     },
     "metadata": {
      "nullable": true,
      "type": "object"
     },
     "next_action": {
      "type": "object"
     },
     "object": {
      "enum": [
       "refund"
      ],
      "type": "string"
     },
     "payment_intent": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/payment_intent"
       }
      ],
      "nullable": true
     },
     "payment_method": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/payment_method"
       }
      ],
      "nullable": true
     },
     "pending_reason": {
      "enum": [
       "charge_pending",
       "insufficient_funds",
       "processing"
      ],
      "type": "string"
     },
     "presentment_details": {
      "type": "object"
     },
     "reason": {
      "enum": [
       "duplicate",
       "expired_uncaptured_charge",
       "fraudulent",
       "requested_by_customer"
      ],
      "nullable": true,
      "type": "string"
     },
     "receipt_number": {
      "nullable": true,
      "type": "string"
     },
     "source_transfer_reversal": {
      "anyOf": [
       {
        "type": "string"
       }
      ],
      "nullable": true
     },
     "status": {
      "nullable": true,
      "type": "string"
     },
     "transfer_reversal": {
      "anyOf": [
       {
        "type": "string"
       }
      ],
      "nullable": true
     }
    },
    "required": [
     "amount",
     "application",
     "balance_transaction",
     "charge",
     "created",
     "currency",
     "customer",
     "customer_account",
     "id",
     "metadata",
     "object",
     "payment_intent",
     "payment_method",
     "reason",
     "receipt_number",
     "source_transfer_reversal",
     "status",
     "transfer_reversal"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "re_"
   },
   "setup_attempt": {
    "properties": {
     "application": {
      "enum": [
       null
      ],
      "nullable": true
     },
     "attach_to_self": {
      "type": "boolean"
     },
     "created": {
      "type": "integer"
     },
     "customer": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/customer"
       },
       {
        "$ref": "#/components/schemas/deleted_customer"
       }
      ],
      "nullable": true
     },
     "customer_account": {
      "enum": [
       null
      ],
      "nullable": true
     },
     "flow_directions": {
      "items": {},
      "nullable": true,
      "type": "array"
     },
     "id": {
      "type": "string"
     },
     "livemode": {
      "type": "boolean"
     },
     "object": {
      "enum": [
       "setup_attempt"
      ],
      "type": "string"
     },
     "on_behalf_of": {
      "enum": [
       null
      ],
      "nullable": true
     },
     "payment_method": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/payment_method"
       }
      ]
     },
     "payment_method_details": {
      "type": "object"
     },
     "setup_error": {
      "nullable": true,
      "type": "object"
     },
     "setup_intent": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/setup_intent"
       }
      ]
     },
     "status": {
      "type": "string"
     },
     "usage": {
      "type": "string"
     }
    },
    "required": [
     "application",
     "created",
     "customer",
     "customer_account",
     "flow_directions",
     "id",
     "livemode",
     "object",
     "on_behalf_of",
     "payment_method",
     "payment_method_details",
     "setup_error",
     "setup_intent",
     "status",
     "usage"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "setatt_"
   },
   "setup_intent": {
    "properties": {
     "allowed_payment_method_types": {
      "enum": [
       null
      ],
      "nullable": true
     },
     "application": {
      "enum": [
       null
      ],
      "nullable": true
     },
     "attach_to_self": {
      "type": "boolean"
     },
     "automatic_payment_methods": {
      "nullable": true,
      "type": "object"
     },
     "cancellation_reason": {
      "enum": [
       "abandoned",
       "duplicate",
       "requested_by_customer"
      ],
      "nullable": true,
      "type": "string"
     },
     "client_secret": {
      "nullable": true,
      "type": "string"
     },
     "created": {
      "type": "integer"
     },
     "customer": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/customer"
       },
       {
        "$ref": "#/components/schemas/deleted_customer"
       }
      ],
      "nullable": true
     },
     "customer_account": {
      "nullable": true,
      "type": "string"
     },
     "description": {
      "nullable": true,
      "type": "string"
     },
     "excluded_payment_method_types": {
      "items": {},
      "nullable": true,
      "type": "array"
     },
     "flow_directions": {
      "items": {},
      "nullable": true,
      "type": "array"
     },
     "id": {
      "type": "string"
     },
     "last_setup_error": {
      "nullable": true,
      "type": "object"
     },
     "latest_attempt": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/setup_attempt"
       }
      ],
      "nullable": true
     },
     "livemode": {
      "type": "boolean"
     },
     "managed_payments": {
      "nullable": true,
      "type": "object"
     },
     "mandate": {
      "enum": [
       null
      ],
      "nullable": true
     },
     "metadata": {
      "nullable": true,
      "type": "object"
     },
     "next_action": {
      "nullable": true,
      "type": "object"
     },
     "object": {
      "enum": [
       "setup_intent"
      ],
      "type": "string"
     },
     "on_behalf_of": {
      "enum": [
       null
      ],
      "nullable": true
     },
     "payment_method": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/payment_method"
       }
      ],
      "nullable": true
     },
     "payment_method_configuration_details": {
      "nullable": true,
      "type": "object"
     },
     "payment_method_options": {
      "nullable": true,
      "type": "object"
     },
     "payment_method_types": {
      "items": {},
      "type": "array"
     },
     "single_use_mandate": {
      "enum": [
       null
      ],
      "nullable": true
     },
     "status": {
      "enum": [
       "canceled",
       "processing",
       "requires_action",
       "requires_confirmation",
       "requires_payment_method",
       "succeeded"
      ],
      "type": "string"
     },
     "usage": {
      "type": "string"
     }
    },
    "required": [
     "allowed_payment_method_types",
     "application",
     "automatic_payment_methods",
     "cancellation_reason",
     "client_secret",
     "created",
     "customer",
     "description",
     "excluded_payment_method_types",
     "id",
     "last_setup_error",
     "latest_attempt",
     "livemode",
     "mandate",
     "metadata",
     "next_action",
     "object",
     "on_behalf_of",
     "payment_method",
     "payment_method_configuration_details",
     "payment_method_options",
     "payment_method_types",
     "single_use_mandate",
     "status",
     "usage"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "seti_"
   },
   "tax_id": {
    "properties": {
     "country": {
      "nullable": true,
      "type": "string"
     },
     "created": {
      "type": "integer"
     },
     "customer": {
      "anyOf": [
       {
        "type": "string"
       },
       {
        "$ref": "#/components/schemas/customer"
       }
      ],
      "nullable": true
     },
     "customer_account": {
      "nullable": true,
      "type": "string"
     },
     "id": {
      "type": "string"
     },
     "livemode": {
      "type": "boolean"
     },
     "object": {
      "enum": [
       "tax_id"
      ],
      "type": "string"
     },
     "owner": {
      "nullable": true,
      "type": "object"
     },
     "type": {
      "enum": [
       "ad_nrt",
       "ae_trn",
       "al_tin",
       "am_tin",
       "ao_tin",
       "ar_cuit",
       "au_abn",
       "au_arn",
       "aw_tin",
       "az_tin",
       "ba_tin",
       "bb_tin",
       "bd_bin",
       "bf_ifu",
       "bg_uic",
       "bh_vat",
       "bj_ifu",
       "bo_tin",
       "br_cnpj",
       "br_cpf",
       "bs_tin",
       "by_tin",
       "ca_bn",
       "ca_gst_hst",
       "ca_pst_bc",
       "ca_pst_mb",
       "ca_pst_sk",
       "ca_qst",
       "cd_nif",
       "ch_uid",
       "ch_vat",
       "cl_tin",
       "cm_niu",
       "cn_tin",
       "co_nit",
       "cr_tin",
       "cv_nif",
       "de_stn",
       "do_rcn",
       "ec_ruc",
       "eg_tin",
       "es_cif",
       "et_tin",
       "eu_oss_vat",
       "eu_vat",
       "fo_vat",
       "gb_vat",
       "ge_vat",
       "gi_tin",
       "gn_nif",
       "hk_br",
       "hr_oib",
       "hu_tin",
       "id_npwp",
       "il_vat",
       "in_gst",
       "is_vat",
       "it_cf",
       "jp_cn",
       "jp_rn",
       "jp_trn",
       "ke_pin",
       "kg_tin",
       "kh_tin",
       "kr_brn",
       "kz_bin",
       "la_tin",
       "li_uid",
       "li_vat",
       "lk_vat",
       "ma_vat",
       "md_vat",
       "me_pib",
       "mk_vat",
       "mr_nif",
       "mx_rfc",
       "my_frp",
       "my_itn",
       "my_sst",
       "ng_tin",
       "no_vat",
       "no_voec",
       "np_pan",
       "nz_gst",
       "om_vat",
       "pe_ruc",
       "ph_tin",
       "pl_nip",
       "py_ruc",
       "ro_tin",
       "rs_pib",
       "ru_inn",
       "ru_kpp",
       "sa_vat",
       "sg_gst",
       "sg_uen",
       "si_tin",
       "sn_ninea",
       "sr_fin",
       "sv_nit",
       "th_vat",
       "tj_tin",
       "tr_tin",
       "tw_vat",
       "tz_vat",
       "ua_vat",
       "ug_tin",
       "unknown",
       "us_ein",
       "uy_ruc",
       "uz_tin",
       "uz_vat",
       "ve_rif",
       "vn_tin",
       "za_vat",
       "zm_tin",
       "zw_tin"
      ],
      "type": "string"
     },
     "value": {
      "type": "string"
     },
     "verification": {
      "nullable": true,
      "type": "object"
     }
    },
    "required": [
     "country",
     "created",
     "customer",
     "customer_account",
     "id",
     "livemode",
     "object",
     "owner",
     "type",
     "value",
     "verification"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "txi_"
   },
   "token": {
    "properties": {
     "bank_account": {
      "type": "object"
     },
     "card": {
      "type": "object"
     },
     "client_ip": {
      "nullable": true,
      "type": "string"
     },
     "created": {
      "type": "integer"
     },
     "id": {
      "type": "string"
     },
     "livemode": {
      "type": "boolean"
     },
     "object": {
      "enum": [
       "token"
      ],
      "type": "string"
     },
     "type": {
      "type": "string"
     },
     "used": {
      "type": "boolean"
     }
    },
    "required": [
     "client_ip",
     "created",
     "id",
     "livemode",
     "object",
     "type",
     "used"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "tok_"
   },
   "webhook_endpoint": {
    "properties": {
     "api_version": {
      "nullable": true,
      "type": "string"
     },
     "application": {
      "nullable": true,
      "type": "string"
     },
     "created": {
      "type": "integer"
     },
     "description": {
      "nullable": true,
      "type": "string"
     },
     "enabled_events": {
      "items": {},
      "type": "array"
     },
     "id": {
      "type": "string"
     },
     "livemode": {
      "type": "boolean"
     },
     "metadata": {
      "type": "object"
     },
     "object": {
      "enum": [
       "webhook_endpoint"
      ],
      "type": "string"
     },
     "secret": {
      "type": "string"
     },
     "status": {
      "type": "string"
     },
     "url": {
      "type": "string"
     }
    },
    "required": [
     "api_version",
     "application",
     "created",
     "description",
     "enabled_events",
     "id",
     "livemode",
     "metadata",
     "object",
     "status",
     "url"
    ],
    "type": "object",
    "x-fluveo-id-prefix": "we_"
   }
  },
  "securitySchemes": {
   "basicAuth": {
    "description": "The secret key as the user name and an empty password.",
    "scheme": "basic",
    "type": "http"
   },
   "bearerAuth": {
    "description": "Authorization: Bearer sk_test_..., the store's secret key.",
    "scheme": "bearer",
    "type": "http"
   }
  }
 },
 "info": {
  "description": "The /v1 operations Fluveo serves today, generated from the core's code: every parameter listed here is one the handler accepts. Undocumented parameters are outside this reference. Call it over plain HTTP with the store's secret key; no SDK is supported. Amounts are in the currency's smallest unit.",
  "title": "Fluveo API reference",
  "version": "2026-05-27.dahlia"
 },
 "openapi": "3.0.3",
 "paths": {
  "/v1/account": {
   "get": {
    "operationId": "get-v1-account",
    "parameters": [
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/account"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves the calling store's own Account.",
    "tags": [
     "account"
    ]
   }
  },
  "/v1/accounts/{account}": {
   "get": {
    "operationId": "get-v1-accounts-account",
    "parameters": [
     {
      "description": "The calling store's own Account id (the id GET /v1/account returns).",
      "example": "mch_123",
      "in": "path",
      "name": "account",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/account"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves the calling store's own Account by its own id. Any other id is refused with 403 account_invalid: an api_error for an id shaped as an account id (acct_ or mch_), else an invalid_request_error.",
    "tags": [
     "account"
    ]
   }
  },
  "/v1/accounts/{account}/external_accounts": {
   "get": {
    "operationId": "get-v1-accounts-account-external-accounts",
    "parameters": [
     {
      "description": "The calling store's own Account id (the id GET /v1/account returns).",
      "example": "mch_123",
      "in": "path",
      "name": "account",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "bank_account or card. A store's external accounts are bank accounts, so card lists none.",
      "in": "query",
      "name": "object",
      "required": false,
      "schema": {
       "enum": [
        "bank_account",
        "card"
       ],
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/bank_account"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists the calling store's own bank accounts by its own id. Numbers are masked to the last four digits; the id is the destination POST /v1/payouts takes. Any other id is refused as on GET /v1/accounts/{account}.",
    "tags": [
     "account"
    ]
   }
  },
  "/v1/balance": {
   "get": {
    "operationId": "get-v1-balance",
    "parameters": [
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/balance"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a balance.",
    "tags": [
     "balance"
    ]
   }
  },
  "/v1/balance/fluveo_payable_now": {
   "get": {
    "operationId": "get-v1-balance-fluveo-payable-now",
    "parameters": [
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Reads how much the store may pay out right now, or zero with the reason.",
    "tags": [
     "balance"
    ]
   }
  },
  "/v1/balance/fluveo_payout_hold": {
   "get": {
    "operationId": "get-v1-balance-fluveo-payout-hold",
    "parameters": [
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Reads the hold that stops a payout now, or null when nothing holds it.",
    "tags": [
     "balance"
    ]
   }
  },
  "/v1/balance_settings": {
   "get": {
    "operationId": "get-v1-balance-settings",
    "parameters": [
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/balance_settings"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves the store's balance settings: its payout schedule and the settlement delay.",
    "tags": [
     "balance"
    ]
   },
   "post": {
    "operationId": "post-v1-balance-settings",
    "parameters": [
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "payments": {
         "payouts": {
          "schedule": {
           "interval": "weekly",
           "weekly_payout_days": [
            "friday"
           ]
          }
         }
        }
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "payments": {
          "description": "The payout schedule: payouts[schedule][interval] (manual, daily, weekly or monthly), with weekly_payout_days for weekly or monthly_payout_days for monthly. settlement_timing[delay_days_override] may only be sent empty; every other setting of the object is kept and refused.",
          "properties": {
           "payouts": {
            "properties": {
             "schedule": {
              "properties": {
               "interval": {
                "enum": [
                 "daily",
                 "manual",
                 "monthly",
                 "weekly"
                ],
                "type": "string"
               },
               "monthly_payout_days": {
                "description": "The days of the month a monthly schedule pays out, each an integer from 1 to 31.",
                "items": {
                 "type": "integer"
                },
                "type": "array"
               },
               "weekly_payout_days": {
                "items": {
                 "type": "string"
                },
                "type": "array"
               }
              },
              "type": "object"
             }
            },
            "type": "object"
           },
           "settlement_timing": {
            "properties": {
             "delay_days_override": {
              "type": "integer"
             }
            },
            "type": "object"
           }
          },
          "type": "object"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/balance_settings"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Updates the store's payout schedule: manual (a payout on request), or daily, weekly or monthly automatic payouts.",
    "tags": [
     "balance"
    ]
   }
  },
  "/v1/balance_transactions": {
   "get": {
    "operationId": "get-v1-balance-transactions",
    "parameters": [
     {
      "description": "Filter on the creation time, a Unix timestamp: created=<t> for an exact match, or created[gt], created[gte], created[lt], created[lte].",
      "in": "query",
      "name": "created",
      "required": false,
      "schema": {
       "type": "object"
      }
     },
     {
      "description": "Only balance transactions in this currency.",
      "in": "query",
      "name": "currency",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "example": 5,
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Only the balance transactions paid out in this payout (po_...).",
      "in": "query",
      "name": "payout",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Only the balance transactions of this object (ch_, re_, po_, ...). An id no line has gives an empty list.",
      "in": "query",
      "name": "source",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Only this kind of balance transaction, such as charge, refund or payout. A type no line has gives an empty list.",
      "example": "charge",
      "in": "query",
      "name": "type",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Filter on the time the funds become available, a Unix timestamp: available_on=<t> for an exact match, or available_on[gt], available_on[gte], available_on[lt], available_on[lte].",
      "in": "query",
      "name": "available_on",
      "required": false,
      "schema": {
       "type": "object"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/balance_transaction"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists balance transaction objects, newest first.",
    "tags": [
     "balance_transactions"
    ]
   }
  },
  "/v1/balance_transactions/{id}": {
   "get": {
    "operationId": "get-v1-balance-transactions-id",
    "parameters": [
     {
      "description": "The object's id.",
      "example": "txn_123",
      "in": "path",
      "name": "id",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/balance_transaction"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a balance transaction.",
    "tags": [
     "balance_transactions"
    ]
   }
  },
  "/v1/charges": {
   "get": {
    "operationId": "get-v1-charges",
    "parameters": [
     {
      "description": "Filter on the creation time, a Unix timestamp: created=<t> for an exact match, or created[gt], created[gte], created[lt], created[lte].",
      "in": "query",
      "name": "created",
      "required": false,
      "schema": {
       "type": "object"
      }
     },
     {
      "description": "Only the charges of this customer.",
      "in": "query",
      "name": "customer",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Only the charges of this PaymentIntent.",
      "example": "pi_123",
      "in": "query",
      "name": "payment_intent",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "data": [
          {
           "amount": 2000,
           "amount_captured": 2000,
           "captured": true,
           "created": 1767225600,
           "currency": "usd",
           "id": "ch_123",
           "livemode": false,
           "metadata": {},
           "object": "charge",
           "paid": true,
           "payment_intent": "pi_123",
           "payment_method": "pm_123",
           "status": "succeeded"
          }
         ],
         "has_more": false,
         "object": "list",
         "url": "/v1/charges"
        },
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/charge"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists charge objects, newest first.",
    "tags": [
     "charges"
    ]
   }
  },
  "/v1/charges/search": {
   "get": {
    "description": "A query is one or more clauses, each a field, an operator and a value, such as status:\"succeeded\" or amount>1000. The charge fields are amount, created, currency, customer, disputed, refunded, status, billing_details.address.postal_code, payment_method_details.card.brand, exp_month, exp_year, fingerprint and last4 (and the same under card_present and interac_present), and metadata[\"key\"]. amount and created take :, =, <, <=, > and >= with a whole number, quoted or not. Every other field takes only :, which matches the whole value in any case; disputed and refunded take true or false, status takes failed, pending or succeeded, and refunded:null finds the charges not fully refunded. A - before a clause negates it. field:null matches a field that is absent or empty, and -field:null one that is set. Join clauses with AND or OR (a space means AND), never both in one query and never with parentheses, up to 10 clauses. Quote text values with single or double quotes. A query Fluveo cannot read answers invalid_request_error with the reason. When has_more is true, send next_page as page with the same query for the next page. Add expand[]=total_count to get total_count, the number of matches. A charge is found as soon as its PaymentIntent's answer returns.",
    "operationId": "get-v1-charges-search",
    "parameters": [
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "The next_page of the previous answer, to get the page after it. Send the same query with it.",
      "in": "query",
      "name": "page",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "The search query, in the language the description above gives.",
      "example": "status:\"succeeded\" AND metadata[\"order_id\"]:\"1042\"",
      "in": "query",
      "name": "query",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "data": [
          {
           "amount": 2000,
           "amount_captured": 2000,
           "captured": true,
           "created": 1767225600,
           "currency": "usd",
           "id": "ch_123",
           "livemode": false,
           "metadata": {},
           "object": "charge",
           "paid": true,
           "payment_intent": "pi_123",
           "payment_method": "pm_123",
           "status": "succeeded"
          }
         ],
         "has_more": false,
         "next_page": null,
         "object": "search_result",
         "url": "/v1/charges/search"
        },
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/charge"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "next_page": {
           "nullable": true,
           "type": "string"
          },
          "object": {
           "enum": [
            "search_result"
           ],
           "type": "string"
          },
          "total_count": {
           "type": "integer"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Searches charge objects with a query, newest first.",
    "tags": [
     "charges"
    ]
   }
  },
  "/v1/charges/{charge}": {
   "get": {
    "operationId": "get-v1-charges-charge",
    "parameters": [
     {
      "description": "The Charge's id.",
      "example": "ch_123",
      "in": "path",
      "name": "charge",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 2000,
         "amount_captured": 2000,
         "captured": true,
         "created": 1767225600,
         "currency": "usd",
         "id": "ch_123",
         "livemode": false,
         "metadata": {},
         "object": "charge",
         "paid": true,
         "payment_intent": "pi_123",
         "payment_method": "pm_123",
         "status": "succeeded"
        },
        "schema": {
         "$ref": "#/components/schemas/charge"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a charge.",
    "tags": [
     "charges"
    ]
   },
   "post": {
    "operationId": "post-v1-charges-charge",
    "parameters": [
     {
      "description": "The Charge's id.",
      "example": "ch_123",
      "in": "path",
      "name": "charge",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "description": "Order 1042",
        "metadata": {
         "order_id": "1042"
        }
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "description": {
          "description": "Free text for your own records.",
          "type": "string"
         },
         "fraud_details": {
          "description": "Your fraud report on the charge: fraud_details[user_report] is fraudulent or safe, and an empty value clears it. Fluveo passes the report on before the charge keeps it.",
          "properties": {
           "user_report": {
            "enum": [
             "",
             "fraudulent",
             "safe"
            ],
            "type": "string"
           }
          },
          "type": "object"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         },
         "receipt_email": {
          "description": "Email address that receives the payment receipt.",
          "type": "string"
         },
         "shipping": {
          "description": "Shipping name, address and phone for the order.",
          "properties": {
           "address": {
            "properties": {
             "city": {
              "type": "string"
             },
             "country": {
              "type": "string"
             },
             "line1": {
              "type": "string"
             },
             "line2": {
              "type": "string"
             },
             "postal_code": {
              "type": "string"
             },
             "state": {
              "type": "string"
             }
            },
            "type": "object"
           },
           "carrier": {
            "type": "string"
           },
           "name": {
            "type": "string"
           },
           "phone": {
            "type": "string"
           },
           "tracking_number": {
            "type": "string"
           }
          },
          "type": "object"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 2000,
         "amount_captured": 2000,
         "captured": true,
         "created": 1767225600,
         "currency": "usd",
         "id": "ch_123",
         "livemode": false,
         "metadata": {},
         "object": "charge",
         "paid": true,
         "payment_intent": "pi_123",
         "payment_method": "pm_123",
         "status": "succeeded"
        },
        "schema": {
         "$ref": "#/components/schemas/charge"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Updates a charge.",
    "tags": [
     "charges"
    ]
   }
  },
  "/v1/charges/{charge}/refunds": {
   "get": {
    "operationId": "get-v1-charges-charge-refunds",
    "parameters": [
     {
      "description": "The Charge's id.",
      "example": "ch_123",
      "in": "path",
      "name": "charge",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "data": [
          {
           "amount": 500,
           "charge": "ch_123",
           "created": 1767225600,
           "currency": "usd",
           "id": "re_123",
           "metadata": {},
           "object": "refund",
           "payment_intent": "pi_123",
           "reason": "requested_by_customer",
           "status": "succeeded"
          }
         ],
         "has_more": false,
         "object": "list",
         "url": "/v1/charges/{charge}/refunds"
        },
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/refund"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists refund objects of the parent object.",
    "tags": [
     "refunds"
    ]
   }
  },
  "/v1/charges/{charge}/refunds/{refund}": {
   "get": {
    "operationId": "get-v1-charges-charge-refunds-refund",
    "parameters": [
     {
      "description": "The Charge's id.",
      "example": "ch_123",
      "in": "path",
      "name": "charge",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "The Refund's id.",
      "example": "re_123",
      "in": "path",
      "name": "refund",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 500,
         "charge": "ch_123",
         "created": 1767225600,
         "currency": "usd",
         "id": "re_123",
         "metadata": {},
         "object": "refund",
         "payment_intent": "pi_123",
         "reason": "requested_by_customer",
         "status": "succeeded"
        },
        "schema": {
         "$ref": "#/components/schemas/refund"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a refund.",
    "tags": [
     "refunds"
    ]
   }
  },
  "/v1/checkout/sessions": {
   "get": {
    "operationId": "get-v1-checkout-sessions",
    "parameters": [
     {
      "description": "Filter on the creation time, a Unix timestamp: created=<t> for an exact match, or created[gt], created[gte], created[lt], created[lte].",
      "in": "query",
      "name": "created",
      "required": false,
      "schema": {
       "type": "object"
      }
     },
     {
      "description": "Only the sessions of this customer.",
      "in": "query",
      "name": "customer",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "customer_details[email]: only the sessions whose buyer gave this email. An address that is not a valid email is refused with email_invalid.",
      "in": "query",
      "name": "customer_details",
      "required": false,
      "schema": {
       "properties": {
        "email": {
         "type": "string"
        }
       },
       "type": "object"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Only the session that created this PaymentIntent.",
      "in": "query",
      "name": "payment_intent",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Only the sessions opened from this payment link's page. A link that is not the store's is refused with resource_missing.",
      "in": "query",
      "name": "payment_link",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Only sessions in this status.",
      "example": "complete",
      "in": "query",
      "name": "status",
      "required": false,
      "schema": {
       "enum": [
        "open",
        "complete",
        "expired"
       ],
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "data": [
          {
           "amount_subtotal": 2000,
           "amount_total": 2000,
           "created": 1767225600,
           "currency": "usd",
           "expires_at": 1767312000,
           "id": "cs_test_123",
           "livemode": false,
           "metadata": {},
           "mode": "payment",
           "object": "checkout.session",
           "payment_intent": "pi_123",
           "payment_method_types": [
            "card"
           ],
           "payment_status": "unpaid",
           "status": "open",
           "success_url": "https://example.com/thanks",
           "ui_mode": "hosted_page",
           "url": "https://checkout.example.com/c/cs_test_123"
          }
         ],
         "has_more": false,
         "object": "list",
         "url": "/v1/checkout/sessions"
        },
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/checkout.session"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists the store's Checkout Sessions.",
    "tags": [
     "checkout_sessions"
    ]
   },
   "post": {
    "operationId": "post-v1-checkout-sessions",
    "parameters": [
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "line_items": [
         {
          "price_data": {
           "currency": "usd",
           "product_data": {
            "name": "T-shirt"
           },
           "unit_amount": 2000
          },
          "quantity": 1
         }
        ],
        "mode": "payment",
        "success_url": "https://example.com/thanks"
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "billing_address_collection": {
          "description": "auto (the country and, where it applies, the postal code) or required (the whole address). The paid session shows it in customer_details.address. On a Pix or Boleto session the payer form asks the whole address when required.",
          "enum": [
           "auto",
           "required"
          ],
          "type": "string"
         },
         "cancel_url": {
          "description": "Where the buyer goes if they leave the payment page. A card number in it is stored with each digit written X.",
          "type": "string"
         },
         "client_reference_id": {
          "description": "Your own reference for this session, such as an order id, up to 200 characters.",
          "type": "string"
         },
         "currency": {
          "description": "Three-letter ISO code. In setup mode it is required unless payment_method_types is sent; in payment mode it must be the line items' currency.",
          "type": "string"
         },
         "custom_fields": {
          "description": "Up to three fields the page asks the buyer to fill before paying: key, label[type]=custom with label[custom], type text, numeric or dropdown (dropdown[options][] with label and value), and optional. A text or numeric field takes minimum_length, maximum_length and default_value. The paid session shows each answer as its value; the page refuses an answer that reads as a card number. A card number in a key, label, option, default_value or custom_text is stored with each digit written X.",
          "items": {
           "properties": {
            "dropdown": {
             "properties": {
              "default_value": {
               "type": "string"
              },
              "options": {
               "items": {
                "properties": {
                 "label": {
                  "type": "string"
                 },
                 "value": {
                  "type": "string"
                 }
                },
                "type": "object"
               },
               "type": "array"
              }
             },
             "type": "object"
            },
            "key": {
             "type": "string"
            },
            "label": {
             "properties": {
              "custom": {
               "type": "string"
              },
              "type": {
               "enum": [
                "custom"
               ],
               "type": "string"
              }
             },
             "type": "object"
            },
            "numeric": {
             "properties": {
              "default_value": {
               "type": "string"
              },
              "maximum_length": {
               "type": "integer"
              },
              "minimum_length": {
               "type": "integer"
              }
             },
             "type": "object"
            },
            "optional": {
             "type": "boolean"
            },
            "text": {
             "properties": {
              "default_value": {
               "type": "string"
              },
              "maximum_length": {
               "type": "integer"
              },
              "minimum_length": {
               "type": "integer"
              }
             },
             "type": "object"
            },
            "type": {
             "enum": [
              "dropdown",
              "numeric",
              "text"
             ],
             "type": "string"
            }
           },
           "type": "object"
          },
          "type": "array"
         },
         "customer": {
          "description": "An existing customer id to attach to the session. In setup mode the card is saved to this customer.",
          "type": "string"
         },
         "customer_creation": {
          "description": "if_required (the default) or always. With always, paying the session makes a Customer from its email and the cardholder name, and the session, its PaymentIntent and its charge name it. Not with customer.",
          "enum": [
           "always",
           "if_required"
          ],
          "type": "string"
         },
         "customer_email": {
          "description": "The buyer's email, filled in on the payment page.",
          "type": "string"
         },
         "expires_at": {
          "description": "When the session stops taking payment, a Unix timestamp. Default 24 hours after creation.",
          "type": "integer"
         },
         "line_items": {
          "description": "What the buyer pays for, at most 100 lines. Each line takes quantity and either price, the id of one of the store's active one-time Prices, or price_data: currency, unit_amount or unit_amount_decimal, an optional tax_behavior, and product, the id of one of the store's Products, or product_data (name, with optional description, images, metadata, tax_code and unit_label). Fluveo makes an inactive Price and Product of a price_data line, read as POST /v1/prices reads them, so a refusal names the field under line_items[n][price_data]; a product_data that says the same as the first Product of its name takes that Product again. Required in payment mode; refused in setup mode.",
          "items": {
           "properties": {
            "adjustable_quantity": {
             "description": "Lets the buyer change this line's quantity on the payment page until they pay: enabled (required; false keeps the quantity fixed and takes no bound), an optional minimum from 0 (default 0) and maximum from 1 to 999999 (default 99), the minimum below the maximum and the line's quantity within them. The line item shows the bounds the session keeps. Fluveo computes the amount on the server, the unit amount times the quantity the buyer picked, and refuses a quantity outside the bounds; the session's amount_total, its line items, its PaymentIntent and its events show the quantity and amount chosen. A minimum of 0 lets the buyer go down to 1, not remove the line.",
             "properties": {
              "enabled": {
               "type": "boolean"
              },
              "maximum": {
               "type": "integer"
              },
              "minimum": {
               "type": "integer"
              }
             },
             "type": "object"
            },
            "price": {
             "description": "The id of one of the store's active one-time Prices (price_...), in the store's currency. Send it or price_data, never both.",
             "type": "string"
            },
            "price_data": {
             "description": "The price of one unit.",
             "properties": {
              "currency": {
               "description": "The currency, the store's own (usd or brl).",
               "type": "string"
              },
              "product": {
               "type": "string"
              },
              "product_data": {
               "description": "The product.",
               "properties": {
                "description": {
                 "description": "The product's description, kept on the line's Product.",
                 "type": "string"
                },
                "images": {
                 "description": "Up to 8 image URLs, kept on the line's Product.",
                 "items": {
                  "type": "string"
                 },
                 "type": "array"
                },
                "metadata": {
                 "description": "Key-value pairs kept on the line's Product.",
                 "type": "object"
                },
                "name": {
                 "description": "The product name shown to the buyer.",
                 "type": "string"
                },
                "tax_code": {
                 "description": "A tax code (txcd_...), kept on the line's Product.",
                 "type": "string"
                },
                "unit_label": {
                 "description": "A label for one unit, at most 12 characters, kept on the line's Product.",
                 "type": "string"
                }
               },
               "required": [
                "name"
               ],
               "type": "object"
              },
              "tax_behavior": {
               "description": "inclusive, exclusive or unspecified, kept on the line's Price. Fluveo computes no tax, so the amount is the same.",
               "enum": [
                "exclusive",
                "inclusive",
                "unspecified"
               ],
               "type": "string"
              },
              "unit_amount": {
               "description": "The price of one unit in the smallest unit of the currency.",
               "type": "integer"
              },
              "unit_amount_decimal": {
               "description": "The price of one unit in the smallest unit of the currency, as a decimal string, instead of unit_amount. It must be a whole number of minor units (2000 or 2000.00); a fraction of one, such as 2000.5, is refused on line_items[n], never rounded.",
               "type": "string"
              }
             },
             "required": [
              "currency",
              "unit_amount",
              "product_data"
             ],
             "type": "object"
            },
            "quantity": {
             "description": "How many units.",
             "type": "integer"
            }
           },
           "required": [
            "price_data"
           ],
           "type": "object"
          },
          "type": "array"
         },
         "locale": {
          "description": "The language of the hosted page: one of the Checkout locales listed here, written as listed (pt-BR, en-GB, zh-TW), or auto for the buyer's browser language. The session shows it as locale. A language the page has no text for shows English.",
          "enum": [
           "auto",
           "bg",
           "cs",
           "da",
           "de",
           "el",
           "en",
           "en-GB",
           "es",
           "es-419",
           "et",
           "fi",
           "fil",
           "fr",
           "fr-CA",
           "hr",
           "hu",
           "id",
           "it",
           "ja",
           "ko",
           "lt",
           "lv",
           "ms",
           "mt",
           "nb",
           "nl",
           "pl",
           "pt",
           "pt-BR",
           "ro",
           "ru",
           "sk",
           "sl",
           "sv",
           "th",
           "tr",
           "vi",
           "zh",
           "zh-HK",
           "zh-TW"
          ],
          "type": "string"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         },
         "mode": {
          "description": "payment, or setup: a setup session saves the buyer's card with a SetupIntent and charges nothing (no line_items, amount_total null, payment_status no_payment_required).",
          "enum": [
           "payment",
           "setup"
          ],
          "type": "string"
         },
         "payment_intent_data": {
          "description": "Settings for the PaymentIntent the session makes when the buyer pays: description, metadata, capture_method, setup_future_usage, receipt_email, shipping, statement_descriptor and statement_descriptor_suffix, each as POST /v1/payment_intents takes it.",
          "properties": {
           "capture_method": {
            "description": "automatic or manual capture for the payment. manual holds a card payment only: beside pix or boleto it is refused, and payment_method_options[card][capture_method]=manual holds only the card payment there.",
            "enum": [
             "automatic",
             "automatic_async",
             "manual"
            ],
            "type": "string"
           },
           "description": {
            "description": "Description of the PaymentIntent, up to 1000 characters.",
            "type": "string"
           },
           "metadata": {
            "description": "Key-value pairs copied to the PaymentIntent.",
            "type": "object"
           },
           "receipt_email": {
            "description": "The email the payment's receipt goes to.",
            "type": "string"
           },
           "setup_future_usage": {
            "description": "on_session or off_session: the payment saves the buyer's card to the session's Customer (customer, or the one customer_creation=always makes), for later payments; off_session for charges without the buyer. Card only.",
            "enum": [
             "on_session",
             "off_session"
            ],
            "type": "string"
           },
           "shipping": {
            "description": "Where the order ships: name and address (line1 required), with phone, carrier and tracking_number.",
            "properties": {
             "address": {
              "properties": {
               "city": {
                "type": "string"
               },
               "country": {
                "type": "string"
               },
               "line1": {
                "type": "string"
               },
               "line2": {
                "type": "string"
               },
               "postal_code": {
                "type": "string"
               },
               "state": {
                "type": "string"
               }
              },
              "type": "object"
             },
             "carrier": {
              "type": "string"
             },
             "name": {
              "type": "string"
             },
             "phone": {
              "type": "string"
             },
             "tracking_number": {
              "type": "string"
             }
            },
            "type": "object"
           },
           "statement_descriptor": {
            "description": "The statement descriptor of a Pix or Boleto payment, up to 22 characters. A card payment refuses it: send statement_descriptor_suffix.",
            "type": "string"
           },
           "statement_descriptor_suffix": {
            "description": "Text Fluveo adds after the store's statement descriptor on a card payment, up to 22 characters.",
            "type": "string"
           }
          },
          "type": "object"
         },
         "payment_method_configuration": {
          "description": "The id of the store's payment method configuration (the one GET /v1/payment_method_configurations lists); not together with payment_method_types.",
          "type": "string"
         },
         "payment_method_data": {
          "description": "allow_redisplay: always, limited or unspecified, set on the card the session saves to the Customer (a setup session, or a payment session with payment_intent_data[setup_future_usage] or payment_method_options[card][setup_future_usage]) as that PaymentMethod's allow_redisplay. Without it, a setup session's card gets always. always is refused on a payment session without payment_intent_data[setup_future_usage], even when the card option saves the card. The session object does not show it.",
          "properties": {
           "allow_redisplay": {
            "enum": [
             "always",
             "limited",
             "unspecified"
            ],
            "type": "string"
           }
          },
          "type": "object"
         },
         "payment_method_options": {
          "description": "Options for one payment method type of the page, keyed by the type: card, pix or boleto. Any other option answers parameter_unknown with the option as param.",
          "properties": {
           "boleto": {
            "description": "Boleto options.",
            "properties": {
             "expires_after_days": {
              "description": "How many days the Boleto stays payable, 0 to 60. Without it, 3.",
              "type": "integer"
             }
            },
            "type": "object"
           },
           "card": {
            "description": "Card options.",
            "properties": {
             "capture_method": {
              "description": "manual: the card payment is only authorized, and you capture it later. Beside pix or boleto only a card payment waits for the capture; a Pix or a Boleto is captured when it is paid.",
              "enum": [
               "manual"
              ],
              "type": "string"
             },
             "request_three_d_secure": {
              "description": "Ask for 3D Secure: automatic (when the bank asks), any (whenever possible) or challenge.",
              "enum": [
               "any",
               "automatic",
               "challenge"
              ],
              "type": "string"
             },
             "setup_future_usage": {
              "description": "on_session or off_session: the card the buyer pays with is saved for later payments. The session's PaymentIntent gets it as its card option, which wins over payment_intent_data[setup_future_usage] for card. A setup session refuses it.",
              "enum": [
               "off_session",
               "on_session"
              ],
              "type": "string"
             }
            },
            "type": "object"
           },
           "pix": {
            "description": "Pix options.",
            "properties": {
             "expires_after_seconds": {
              "description": "How long the Pix code stays payable, 60 to 86400 seconds.",
              "type": "integer"
             }
            },
            "type": "object"
           }
          },
          "type": "object"
         },
         "payment_method_types": {
          "description": "Payment method types the page offers: card, and pix or boleto on a store that takes them. Without it, a payment session offers every method the store takes that its payment method configuration has on (pix and boleto only when the PaymentIntent is not captured by hand as a whole and does not set setup_future_usage), less any excluded_payment_method_types; a setup session offers card.",
          "items": {
           "enum": [
            "card",
            "pix",
            "boleto"
           ],
           "type": "string"
          },
          "type": "array"
         },
         "phone_number_collection": {
          "description": "enabled=true makes the page ask a phone number, shown in E.164 as the paid session's customer_details.phone, on card and on Pix and Boleto sessions alike.",
          "properties": {
           "enabled": {
            "type": "boolean"
           }
          },
          "type": "object"
         },
         "redirect_on_completion": {
          "description": "Only with ui_mode=embedded_page. always (the default): the paid page sends the buyer to return_url. if_required and never: the buyer stays on the embedded page, since no payment method here needs a redirect to finish.",
          "enum": [
           "always",
           "if_required",
           "never"
          ],
          "type": "string"
         },
         "return_url": {
          "description": "Only with ui_mode=embedded_page: where the buyer's browser goes once the session is paid, with {CHECKOUT_SESSION_ID} replaced by the session id. Required unless redirect_on_completion=never. A URL with no host is refused. A card number in it is stored with each digit written X.",
          "type": "string"
         },
         "setup_intent_data": {
          "description": "Setup mode only: the SetupIntent the session makes takes this description and metadata.",
          "properties": {
           "description": {
            "description": "Description of the SetupIntent, up to 1000 characters.",
            "type": "string"
           },
           "metadata": {
            "description": "Key-value pairs copied to the SetupIntent.",
            "type": "object"
           }
          },
          "type": "object"
         },
         "shipping_address_collection": {
          "description": "allowed_countries[]: the two-letter countries the page takes a shipping address in. The page asks a name and address; the PaymentIntent, its charge and the paid session's collected_information.shipping_details carry them, on card and on Pix and Boleto sessions alike.",
          "properties": {
           "allowed_countries": {
            "items": {
             "type": "string"
            },
            "type": "array"
           }
          },
          "type": "object"
         },
         "success_url": {
          "description": "Where the buyer goes after paying. An http or https URL. A card number in it is stored with each digit written X.",
          "type": "string"
         },
         "ui_mode": {
          "description": "hosted_page (or hosted, the default): the payment page at the session's url. embedded_page: the same page shown inside your own page; the session has no url, and its client_secret starts with the session id, so you mount the page at <checkout base>/c/<session id> in an iframe. Its client_secret is null once the session is no longer open.",
          "enum": [
           "hosted",
           "hosted_page",
           "embedded_page"
          ],
          "type": "string"
         }
        },
        "required": [
         "mode"
        ],
        "type": "object"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount_subtotal": 2000,
         "amount_total": 2000,
         "created": 1767225600,
         "currency": "usd",
         "expires_at": 1767312000,
         "id": "cs_test_123",
         "livemode": false,
         "metadata": {},
         "mode": "payment",
         "object": "checkout.session",
         "payment_intent": "pi_123",
         "payment_method_types": [
          "card"
         ],
         "payment_status": "unpaid",
         "status": "open",
         "success_url": "https://example.com/thanks",
         "ui_mode": "hosted_page",
         "url": "https://checkout.example.com/c/cs_test_123"
        },
        "schema": {
         "$ref": "#/components/schemas/checkout.session"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Creates a Checkout Session. Its PaymentIntent is made when the buyer pays; a setup session makes its SetupIntent at once.",
    "tags": [
     "checkout_sessions"
    ]
   }
  },
  "/v1/checkout/sessions/{session}": {
   "get": {
    "operationId": "get-v1-checkout-sessions-session",
    "parameters": [
     {
      "description": "The Checkout Session's id (cs_test_... in test mode).",
      "example": "cs_123",
      "in": "path",
      "name": "session",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount_subtotal": 2000,
         "amount_total": 2000,
         "created": 1767225600,
         "currency": "usd",
         "expires_at": 1767312000,
         "id": "cs_test_123",
         "livemode": false,
         "metadata": {},
         "mode": "payment",
         "object": "checkout.session",
         "payment_intent": "pi_123",
         "payment_method_types": [
          "card"
         ],
         "payment_status": "unpaid",
         "status": "open",
         "success_url": "https://example.com/thanks",
         "ui_mode": "hosted_page",
         "url": "https://checkout.example.com/c/cs_test_123"
        },
        "schema": {
         "$ref": "#/components/schemas/checkout.session"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a Checkout Session.",
    "tags": [
     "checkout_sessions"
    ]
   },
   "post": {
    "operationId": "post-v1-checkout-sessions-session",
    "parameters": [
     {
      "description": "The Checkout Session's id (cs_test_... in test mode).",
      "example": "cs_123",
      "in": "path",
      "name": "session",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "metadata": {
         "order_id": "1042"
        }
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount_subtotal": 2000,
         "amount_total": 2000,
         "created": 1767225600,
         "currency": "usd",
         "expires_at": 1767312000,
         "id": "cs_test_123",
         "livemode": false,
         "metadata": {},
         "mode": "payment",
         "object": "checkout.session",
         "payment_intent": "pi_123",
         "payment_method_types": [
          "card"
         ],
         "payment_status": "unpaid",
         "status": "open",
         "success_url": "https://example.com/thanks",
         "ui_mode": "hosted_page",
         "url": "https://checkout.example.com/c/cs_test_123"
        },
        "schema": {
         "$ref": "#/components/schemas/checkout.session"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Updates a Checkout Session's metadata, in any state; no other field can change.",
    "tags": [
     "checkout_sessions"
    ]
   }
  },
  "/v1/checkout/sessions/{session}/expire": {
   "post": {
    "operationId": "post-v1-checkout-sessions-session-expire",
    "parameters": [
     {
      "description": "The Checkout Session's id (cs_test_... in test mode).",
      "example": "cs_123",
      "in": "path",
      "name": "session",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "schema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount_subtotal": 2000,
         "amount_total": 2000,
         "created": 1767225600,
         "currency": "usd",
         "expires_at": 1767312000,
         "id": "cs_test_123",
         "livemode": false,
         "metadata": {},
         "mode": "payment",
         "object": "checkout.session",
         "payment_intent": "pi_123",
         "payment_method_types": [
          "card"
         ],
         "payment_status": "unpaid",
         "status": "open",
         "success_url": "https://example.com/thanks",
         "ui_mode": "hosted_page",
         "url": "https://checkout.example.com/c/cs_test_123"
        },
        "schema": {
         "$ref": "#/components/schemas/checkout.session"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Expires an open Checkout Session, so the buyer can no longer pay through it.",
    "tags": [
     "checkout_sessions"
    ]
   }
  },
  "/v1/checkout/sessions/{session}/line_items": {
   "get": {
    "operationId": "get-v1-checkout-sessions-session-line-items",
    "parameters": [
     {
      "description": "The Checkout Session's id (cs_test_... in test mode).",
      "example": "cs_123",
      "in": "path",
      "name": "session",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/item"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists a Checkout Session's line items.",
    "tags": [
     "checkout_sessions"
    ]
   }
  },
  "/v1/customers": {
   "get": {
    "operationId": "get-v1-customers",
    "parameters": [
     {
      "description": "Filter on the creation time, a Unix timestamp: created=<t> for an exact match, or created[gt], created[gte], created[lt], created[lte].",
      "in": "query",
      "name": "created",
      "required": false,
      "schema": {
       "type": "object"
      }
     },
     {
      "description": "Only the customers with exactly this email, up to 512 characters.",
      "example": "ada@example.com",
      "in": "query",
      "name": "email",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "data": [
          {
           "created": 1767225600,
           "email": "ada@example.com",
           "id": "cus_123",
           "livemode": false,
           "metadata": {},
           "name": "Ada Lovelace",
           "object": "customer"
          }
         ],
         "has_more": false,
         "object": "list",
         "url": "/v1/customers"
        },
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/customer"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists customer objects, newest first.",
    "tags": [
     "customers"
    ]
   },
   "post": {
    "operationId": "post-v1-customers",
    "parameters": [
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "email": "ada@example.com",
        "name": "Ada Lovelace"
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "address": {
          "description": "The customer's address: line1, line2, city, state, postal_code, country.",
          "properties": {
           "city": {
            "type": "string"
           },
           "country": {
            "type": "string"
           },
           "line1": {
            "type": "string"
           },
           "line2": {
            "type": "string"
           },
           "postal_code": {
            "type": "string"
           },
           "state": {
            "type": "string"
           }
          },
          "type": "object"
         },
         "description": {
          "description": "Free text for your own records.",
          "type": "string"
         },
         "email": {
          "description": "The customer's email address.",
          "type": "string"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         },
         "name": {
          "description": "The name of the person or the company you bill.",
          "type": "string"
         },
         "phone": {
          "description": "The customer's phone number.",
          "type": "string"
         },
         "preferred_locales": {
          "description": "The customer's languages, most preferred first, as IETF language tags such as en-US or pt-BR, sent as preferred_locales[]=en-US. Each tag is stored in its usual letter case (en-us becomes en-US); a tag that is not one is refused. Send preferred_locales= to empty the list.",
          "items": {
           "type": "string"
          },
          "type": "array"
         },
         "shipping": {
          "description": "Shipping name, address and phone for the order.",
          "properties": {
           "address": {
            "properties": {
             "city": {
              "type": "string"
             },
             "country": {
              "type": "string"
             },
             "line1": {
              "type": "string"
             },
             "line2": {
              "type": "string"
             },
             "postal_code": {
              "type": "string"
             },
             "state": {
              "type": "string"
             }
            },
            "type": "object"
           },
           "name": {
            "type": "string"
           },
           "phone": {
            "type": "string"
           }
          },
          "type": "object"
         },
         "tax_exempt": {
          "description": "The customer's tax status: none, exempt or reverse. An empty value is ignored, so a new customer is none and an update keeps the status it had. It is kept and shown only.",
          "enum": [
           "none",
           "exempt",
           "reverse"
          ],
          "type": "string"
         },
         "tax_id_data": {
          "description": "The Customer's tax ids, created with it as its tax_ids list: tax_id_data[0][type] and tax_id_data[0][value], then [1] and so on. Pix and Boleto read the payer's CPF or CNPJ from here.",
          "items": {
           "properties": {
            "type": {
             "description": "The kind of tax id: br_cpf for a CPF, br_cnpj for a CNPJ.",
             "enum": [
              "br_cpf",
              "br_cnpj"
             ],
             "type": "string"
            },
            "value": {
             "description": "The CPF (11 digits) or CNPJ (14 digits); dots, dashes and slashes are ignored, and a number with wrong check digits is refused.",
             "type": "string"
            }
           },
           "required": [
            "type",
            "value"
           ],
           "type": "object"
          },
          "type": "array"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "created": 1767225600,
         "email": "ada@example.com",
         "id": "cus_123",
         "livemode": false,
         "metadata": {},
         "name": "Ada Lovelace",
         "object": "customer"
        },
        "schema": {
         "$ref": "#/components/schemas/customer"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Creates a customer.",
    "tags": [
     "customers"
    ]
   }
  },
  "/v1/customers/search": {
   "get": {
    "description": "A query is one or more clauses, each a field, an operator and a quoted value, such as email:\"ada@example.com\" or name~\"ada\". The customer fields are email, name, phone, created and metadata[\"key\"]. The operator : matches a run of whole words of email, name or phone, in order and in any case, so email:\"ada@example.com\" finds that address only. The operator ~ finds a part of email, name or phone of at least three characters; a shorter part matches nothing. created takes a whole number of seconds with =, :, >, >=, < or <=, such as created>1700000000. A - before a clause negates it. field:null matches a field that is absent or empty. Join clauses with AND or OR (a space means AND), never both in one query and never with parentheses, up to 10 clauses. When has_more is true, send next_page as page with the same query for the next page. Add expand[]=total_count to get total_count, the number of matches. A customer is found as soon as its write returns, and a deleted one never.",
    "operationId": "get-v1-customers-search",
    "parameters": [
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "The next_page of the previous answer, to get the page after it. Send the same query with it.",
      "in": "query",
      "name": "page",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "The search query, in the language the description above gives.",
      "example": "email:\"ada@example.com\"",
      "in": "query",
      "name": "query",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "data": [
          {
           "created": 1767225600,
           "email": "ada@example.com",
           "id": "cus_123",
           "livemode": false,
           "metadata": {},
           "name": "Ada Lovelace",
           "object": "customer"
          }
         ],
         "has_more": false,
         "next_page": null,
         "object": "search_result",
         "url": "/v1/customers/search"
        },
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/customer"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "next_page": {
           "nullable": true,
           "type": "string"
          },
          "object": {
           "enum": [
            "search_result"
           ],
           "type": "string"
          },
          "total_count": {
           "type": "integer"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Searches customer objects with a query, newest first.",
    "tags": [
     "customers"
    ]
   }
  },
  "/v1/customers/{customer}": {
   "delete": {
    "operationId": "delete-v1-customers-customer",
    "parameters": [
     {
      "description": "The Customer's id.",
      "example": "cus_123",
      "in": "path",
      "name": "customer",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "deleted": true,
         "id": "cus_123",
         "object": "customer"
        },
        "schema": {
         "properties": {
          "deleted": {
           "type": "boolean"
          },
          "id": {
           "type": "string"
          },
          "object": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Deletes a deleted customer.",
    "tags": [
     "customers"
    ]
   },
   "get": {
    "operationId": "get-v1-customers-customer",
    "parameters": [
     {
      "description": "The Customer's id.",
      "example": "cus_123",
      "in": "path",
      "name": "customer",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "created": 1767225600,
         "email": "ada@example.com",
         "id": "cus_123",
         "livemode": false,
         "metadata": {},
         "name": "Ada Lovelace",
         "object": "customer"
        },
        "schema": {
         "$ref": "#/components/schemas/customer"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a customer.",
    "tags": [
     "customers"
    ]
   },
   "post": {
    "operationId": "post-v1-customers-customer",
    "parameters": [
     {
      "description": "The Customer's id.",
      "example": "cus_123",
      "in": "path",
      "name": "customer",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "phone": "+15555550123"
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "address": {
          "description": "The customer's address: line1, line2, city, state, postal_code, country.",
          "properties": {
           "city": {
            "type": "string"
           },
           "country": {
            "type": "string"
           },
           "line1": {
            "type": "string"
           },
           "line2": {
            "type": "string"
           },
           "postal_code": {
            "type": "string"
           },
           "state": {
            "type": "string"
           }
          },
          "type": "object"
         },
         "description": {
          "description": "Free text for your own records.",
          "type": "string"
         },
         "email": {
          "description": "The customer's email address.",
          "type": "string"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         },
         "name": {
          "description": "The name of the person or the company you bill.",
          "type": "string"
         },
         "phone": {
          "description": "The customer's phone number.",
          "type": "string"
         },
         "preferred_locales": {
          "description": "The customer's languages, most preferred first, as IETF language tags such as en-US or pt-BR, sent as preferred_locales[]=en-US. Each tag is stored in its usual letter case (en-us becomes en-US); a tag that is not one is refused. Send preferred_locales= to empty the list.",
          "items": {
           "type": "string"
          },
          "type": "array"
         },
         "shipping": {
          "description": "Shipping name, address and phone for the order.",
          "properties": {
           "address": {
            "properties": {
             "city": {
              "type": "string"
             },
             "country": {
              "type": "string"
             },
             "line1": {
              "type": "string"
             },
             "line2": {
              "type": "string"
             },
             "postal_code": {
              "type": "string"
             },
             "state": {
              "type": "string"
             }
            },
            "type": "object"
           },
           "name": {
            "type": "string"
           },
           "phone": {
            "type": "string"
           }
          },
          "type": "object"
         },
         "tax_exempt": {
          "description": "The customer's tax status: none, exempt or reverse. An empty value is ignored, so a new customer is none and an update keeps the status it had. It is kept and shown only.",
          "enum": [
           "none",
           "exempt",
           "reverse"
          ],
          "type": "string"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "created": 1767225600,
         "email": "ada@example.com",
         "id": "cus_123",
         "livemode": false,
         "metadata": {},
         "name": "Ada Lovelace",
         "object": "customer"
        },
        "schema": {
         "$ref": "#/components/schemas/customer"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Updates a customer.",
    "tags": [
     "customers"
    ]
   }
  },
  "/v1/customers/{customer}/payment_methods": {
   "get": {
    "operationId": "get-v1-customers-customer-payment-methods",
    "parameters": [
     {
      "description": "The Customer's id.",
      "example": "cus_123",
      "in": "path",
      "name": "customer",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Whether the PaymentMethod may be shown to the buyer again in a later checkout.",
      "in": "query",
      "name": "allow_redisplay",
      "required": false,
      "schema": {
       "enum": [
        "always",
        "limited",
        "unspecified"
       ],
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Only PaymentMethods of this type.",
      "in": "query",
      "name": "type",
      "required": false,
      "schema": {
       "enum": [
        "acss_debit",
        "affirm",
        "afterpay_clearpay",
        "alipay",
        "alma",
        "amazon_pay",
        "au_becs_debit",
        "bacs_debit",
        "bancontact",
        "billie",
        "bizum",
        "blik",
        "boleto",
        "card",
        "cashapp",
        "crypto",
        "custom",
        "customer_balance",
        "eps",
        "fpx",
        "giropay",
        "grabpay",
        "ideal",
        "kakao_pay",
        "klarna",
        "konbini",
        "kr_card",
        "link",
        "mb_way",
        "mobilepay",
        "multibanco",
        "naver_pay",
        "nz_bank_account",
        "oxxo",
        "p24",
        "pay_by_bank",
        "payco",
        "paynow",
        "paypal",
        "payto",
        "pix",
        "promptpay",
        "revolut_pay",
        "samsung_pay",
        "satispay",
        "scalapay",
        "sepa_debit",
        "sofort",
        "sunbit",
        "swish",
        "twint",
        "upi",
        "us_bank_account",
        "wechat_pay",
        "zip"
       ],
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/payment_method"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists PaymentMethod objects of the parent object.",
    "tags": [
     "payment_methods"
    ]
   }
  },
  "/v1/customers/{customer}/payment_methods/{payment_method}": {
   "get": {
    "operationId": "get-v1-customers-customer-payment-methods-payment-method",
    "parameters": [
     {
      "description": "The Customer's id.",
      "example": "cus_123",
      "in": "path",
      "name": "customer",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "The PaymentMethod's id.",
      "example": "pm_123",
      "in": "path",
      "name": "payment_method",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/payment_method"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a PaymentMethod.",
    "tags": [
     "payment_methods"
    ]
   }
  },
  "/v1/customers/{customer}/tax_ids": {
   "get": {
    "operationId": "get-v1-customers-customer-tax-ids",
    "parameters": [
     {
      "description": "The Customer's id.",
      "example": "cus_123",
      "in": "path",
      "name": "customer",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/tax_id"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists tax ID objects of the parent object.",
    "tags": [
     "customers"
    ]
   },
   "post": {
    "operationId": "post-v1-customers-customer-tax-ids",
    "parameters": [
     {
      "description": "The Customer's id.",
      "example": "cus_123",
      "in": "path",
      "name": "customer",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "type": "br_cpf",
        "value": "123.456.789-09"
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "type": {
          "description": "The kind of tax id: br_cpf for a CPF, br_cnpj for a CNPJ.",
          "enum": [
           "br_cpf",
           "br_cnpj"
          ],
          "type": "string"
         },
         "value": {
          "description": "The tax id itself, for example a CPF or CNPJ.",
          "type": "string"
         }
        },
        "required": [
         "type",
         "value"
        ],
        "type": "object"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/tax_id"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Creates a tax ID.",
    "tags": [
     "customers"
    ]
   }
  },
  "/v1/customers/{customer}/tax_ids/{id}": {
   "delete": {
    "operationId": "delete-v1-customers-customer-tax-ids-id",
    "parameters": [
     {
      "description": "The Customer's id.",
      "example": "cus_123",
      "in": "path",
      "name": "customer",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "The object's id.",
      "example": "txi_123",
      "in": "path",
      "name": "id",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "deleted": true,
         "id": "txi_123",
         "object": "tax_id"
        },
        "schema": {
         "properties": {
          "deleted": {
           "type": "boolean"
          },
          "id": {
           "type": "string"
          },
          "object": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Deletes a deleted tax id.",
    "tags": [
     "customers"
    ]
   },
   "get": {
    "operationId": "get-v1-customers-customer-tax-ids-id",
    "parameters": [
     {
      "description": "The Customer's id.",
      "example": "cus_123",
      "in": "path",
      "name": "customer",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "The object's id.",
      "example": "txi_123",
      "in": "path",
      "name": "id",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/tax_id"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a tax ID.",
    "tags": [
     "customers"
    ]
   }
  },
  "/v1/disputes": {
   "get": {
    "operationId": "get-v1-disputes",
    "parameters": [
     {
      "description": "Only the disputes of this charge. Do not send it with payment_intent.",
      "in": "query",
      "name": "charge",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Filter on the creation time, a Unix timestamp: created=<t> for an exact match, or created[gt], created[gte], created[lt], created[lte].",
      "in": "query",
      "name": "created",
      "required": false,
      "schema": {
       "type": "object"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Only the disputes of this PaymentIntent. Do not send it with charge.",
      "in": "query",
      "name": "payment_intent",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "count": 1,
         "data": [
          {
           "amount": 2000,
           "charge": "ch_123",
           "created": 1767225600,
           "currency": "usd",
           "id": "du_123",
           "livemode": false,
           "metadata": {},
           "object": "dispute",
           "payment_intent": "pi_123",
           "reason": "fraudulent",
           "status": "needs_response"
          }
         ],
         "has_more": false,
         "object": "list",
         "url": "/v1/disputes"
        },
        "schema": {
         "properties": {
          "count": {
           "type": "integer"
          },
          "data": {
           "items": {
            "$ref": "#/components/schemas/dispute"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists dispute objects, newest first.",
    "tags": [
     "disputes"
    ]
   }
  },
  "/v1/disputes/{dispute}": {
   "get": {
    "operationId": "get-v1-disputes-dispute",
    "parameters": [
     {
      "description": "The dispute's id. Treat it as opaque: it starts du_.",
      "example": "du_123",
      "in": "path",
      "name": "dispute",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 2000,
         "charge": "ch_123",
         "created": 1767225600,
         "currency": "usd",
         "id": "du_123",
         "livemode": false,
         "metadata": {},
         "object": "dispute",
         "payment_intent": "pi_123",
         "reason": "fraudulent",
         "status": "needs_response"
        },
        "schema": {
         "$ref": "#/components/schemas/dispute"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a dispute.",
    "tags": [
     "disputes"
    ]
   },
   "post": {
    "description": "Evidence text and file ids are saved as you send them; submit=true sends the evidence to the bank, after which it can no longer change.",
    "operationId": "post-v1-disputes-dispute",
    "parameters": [
     {
      "description": "The dispute's id. Treat it as opaque: it starts du_.",
      "example": "du_123",
      "in": "path",
      "name": "dispute",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "evidence": {
         "uncategorized_text": "The buyer received the order on 2026-11-02."
        },
        "submit": false
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "evidence": {
          "description": "Evidence for the bank, one key per field (evidence[uncategorized_text]=...). Text fields take plain text; the file fields take a file id (file_...).",
          "properties": {
           "access_activity_log": {
            "type": "string"
           },
           "billing_address": {
            "type": "string"
           },
           "cancellation_policy": {
            "type": "string"
           },
           "cancellation_policy_disclosure": {
            "type": "string"
           },
           "cancellation_rebuttal": {
            "type": "string"
           },
           "customer_communication": {
            "type": "string"
           },
           "customer_email_address": {
            "type": "string"
           },
           "customer_name": {
            "type": "string"
           },
           "customer_purchase_ip": {
            "type": "string"
           },
           "customer_signature": {
            "type": "string"
           },
           "duplicate_charge_documentation": {
            "type": "string"
           },
           "duplicate_charge_explanation": {
            "type": "string"
           },
           "product_description": {
            "type": "string"
           },
           "receipt": {
            "type": "string"
           },
           "refund_policy": {
            "type": "string"
           },
           "refund_policy_disclosure": {
            "type": "string"
           },
           "refund_refusal_explanation": {
            "type": "string"
           },
           "service_date": {
            "type": "string"
           },
           "service_documentation": {
            "type": "string"
           },
           "shipping_address": {
            "type": "string"
           },
           "shipping_carrier": {
            "type": "string"
           },
           "shipping_date": {
            "type": "string"
           },
           "shipping_documentation": {
            "type": "string"
           },
           "shipping_tracking_number": {
            "type": "string"
           },
           "uncategorized_file": {
            "type": "string"
           },
           "uncategorized_text": {
            "type": "string"
           }
          },
          "type": "object"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         },
         "submit": {
          "description": "submit defaults to true and sends the evidence to the bank. Send submit=false explicitly to save a draft without submitting.",
          "type": "boolean"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 2000,
         "charge": "ch_123",
         "created": 1767225600,
         "currency": "usd",
         "id": "du_123",
         "livemode": false,
         "metadata": {},
         "object": "dispute",
         "payment_intent": "pi_123",
         "reason": "fraudulent",
         "status": "needs_response"
        },
        "schema": {
         "$ref": "#/components/schemas/dispute"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Updates a dispute.",
    "tags": [
     "disputes"
    ]
   }
  },
  "/v1/disputes/{dispute}/close": {
   "post": {
    "description": "Accepts the dispute: you give up the disputed amount. It takes no parameters.",
    "operationId": "post-v1-disputes-dispute-close",
    "parameters": [
     {
      "description": "The dispute's id. Treat it as opaque: it starts du_.",
      "example": "du_123",
      "in": "path",
      "name": "dispute",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "schema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 2000,
         "charge": "ch_123",
         "created": 1767225600,
         "currency": "usd",
         "id": "du_123",
         "livemode": false,
         "metadata": {},
         "object": "dispute",
         "payment_intent": "pi_123",
         "reason": "fraudulent",
         "status": "needs_response"
        },
        "schema": {
         "$ref": "#/components/schemas/dispute"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Closes a dispute.",
    "tags": [
     "disputes"
    ]
   }
  },
  "/v1/events": {
   "get": {
    "operationId": "get-v1-events",
    "parameters": [
     {
      "description": "Filter on the creation time, a Unix timestamp: created=<t> for an exact match, or created[gt], created[gte], created[lt], created[lte].",
      "in": "query",
      "name": "created",
      "required": false,
      "schema": {
       "type": "object"
      }
     },
     {
      "description": "true for events whose webhook deliveries all succeeded, false for events that still have a delivery not received (pending or failed).",
      "in": "query",
      "name": "delivery_success",
      "required": false,
      "schema": {
       "type": "boolean"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "example": 3,
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Only events of this type. A * matches any run of characters anywhere in the type, as payment_intent.* or *.succeeded; * alone matches all. Do not send it with types.",
      "example": "payment_intent.succeeded",
      "in": "query",
      "name": "type",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Several event types at once, as types[]=a&types[]=b; at most 20. Do not send it with type.",
      "in": "query",
      "name": "types",
      "required": false,
      "schema": {
       "items": {
        "type": "string"
       },
       "type": "array"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "data": [
          {
           "api_version": "2026-05-27.dahlia",
           "created": 1767225600,
           "data": {
            "object": {
             "amount": 2000,
             "currency": "usd",
             "id": "pi_123",
             "object": "payment_intent",
             "status": "succeeded"
            }
           },
           "id": "evt_123",
           "livemode": false,
           "object": "event",
           "pending_webhooks": 0,
           "type": "payment_intent.succeeded"
          }
         ],
         "has_more": false,
         "object": "list",
         "url": "/v1/events"
        },
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/event"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists event objects, newest first.",
    "tags": [
     "events"
    ]
   }
  },
  "/v1/events/{id}": {
   "get": {
    "operationId": "get-v1-events-id",
    "parameters": [
     {
      "description": "The object's id.",
      "example": "evt_123",
      "in": "path",
      "name": "id",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "api_version": "2026-05-27.dahlia",
         "created": 1767225600,
         "data": {
          "object": {
           "amount": 2000,
           "currency": "usd",
           "id": "pi_123",
           "object": "payment_intent",
           "status": "succeeded"
          }
         },
         "id": "evt_123",
         "livemode": false,
         "object": "event",
         "pending_webhooks": 0,
         "type": "payment_intent.succeeded"
        },
        "schema": {
         "$ref": "#/components/schemas/event"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a event.",
    "tags": [
     "events"
    ]
   }
  },
  "/v1/file_links": {
   "get": {
    "operationId": "get-v1-file-links",
    "parameters": [
     {
      "description": "Filter on the creation time, a Unix timestamp: created=<t> for an exact match, or created[gt], created[gte], created[lt], created[lte].",
      "in": "query",
      "name": "created",
      "required": false,
      "schema": {
       "type": "object"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "true for links that already expired, false for live ones.",
      "in": "query",
      "name": "expired",
      "required": false,
      "schema": {
       "type": "boolean"
      }
     },
     {
      "description": "Only the links of this file.",
      "in": "query",
      "name": "file",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/file_link"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists the store's file links.",
    "tags": [
     "files"
    ]
   },
   "post": {
    "operationId": "post-v1-file-links",
    "parameters": [
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "file": "file_123"
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "expires_at": {
          "description": "When the link stops working, a Unix timestamp. Leave it out for a link that does not expire.",
          "type": "integer"
         },
         "file": {
          "description": "The file to share (file_...).",
          "type": "string"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         }
        },
        "required": [
         "file"
        ],
        "type": "object"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/file_link"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Creates a link to a file's contents.",
    "tags": [
     "files"
    ]
   }
  },
  "/v1/file_links/{link}": {
   "get": {
    "operationId": "get-v1-file-links-link",
    "parameters": [
     {
      "description": "The file link's id.",
      "example": "link_123",
      "in": "path",
      "name": "link",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/file_link"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a file link.",
    "tags": [
     "files"
    ]
   },
   "post": {
    "operationId": "post-v1-file-links-link",
    "parameters": [
     {
      "description": "The file link's id.",
      "example": "link_123",
      "in": "path",
      "name": "link",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "metadata": {
         "case": "du_123"
        }
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "expires_at": {
          "description": "A new expiry time, a Unix timestamp.",
          "type": "integer"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/file_link"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Updates a file link's expiry or metadata.",
    "tags": [
     "files"
    ]
   }
  },
  "/v1/files": {
   "get": {
    "operationId": "get-v1-files",
    "parameters": [
     {
      "description": "Filter on the creation time, a Unix timestamp: created=<t> for an exact match, or created[gt], created[gte], created[lt], created[lte].",
      "in": "query",
      "name": "created",
      "required": false,
      "schema": {
       "type": "object"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Only the files uploaded for this purpose, such as dispute_evidence.",
      "in": "query",
      "name": "purpose",
      "required": false,
      "schema": {
       "enum": [
        "account_requirement",
        "additional_verification",
        "business_icon",
        "business_logo",
        "customer_signature",
        "dispute_evidence",
        "document_provider_identity_document",
        "finance_report_run",
        "financial_account_statement",
        "identity_document",
        "identity_document_downloadable",
        "issuing_regulatory_reporting",
        "pci_document",
        "platform_terms_of_service",
        "selfie",
        "sigma_scheduled_query",
        "tax_document_user_upload",
        "terminal_android_apk",
        "terminal_reader_splashscreen",
        "terminal_wifi_certificate",
        "terminal_wifi_private_key"
       ],
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/file"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists the store's files.",
    "tags": [
     "files"
    ]
   }
  },
  "/v1/files/{file}": {
   "get": {
    "operationId": "get-v1-files-file",
    "parameters": [
     {
      "description": "The file's id.",
      "example": "file_123",
      "in": "path",
      "name": "file",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/file"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a file's details.",
    "tags": [
     "files"
    ]
   }
  },
  "/v1/files/{file}/contents": {
   "get": {
    "operationId": "get-v1-files-file-contents",
    "parameters": [
     {
      "description": "The file's id.",
      "example": "file_123",
      "in": "path",
      "name": "file",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/octet-stream": {
        "schema": {
         "format": "binary",
         "type": "string"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Downloads a file's contents with the API key: the file's url, for a purpose that allows downloading. It is served on the host the url names; when the url names a files host, the API host answers 404 not_found.",
    "tags": [
     "files"
    ]
   }
  },
  "/v1/payment_intents": {
   "get": {
    "operationId": "get-v1-payment-intents",
    "parameters": [
     {
      "description": "Filter on the creation time, a Unix timestamp: created=<t> for an exact match, or created[gt], created[gte], created[lt], created[lte].",
      "in": "query",
      "name": "created",
      "required": false,
      "schema": {
       "type": "object"
      }
     },
     {
      "description": "Only the PaymentIntents of this customer.",
      "in": "query",
      "name": "customer",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "example": 3,
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "data": [
          {
           "amount": 2000,
           "amount_received": 2000,
           "capture_method": "automatic",
           "confirmation_method": "automatic",
           "created": 1767225600,
           "currency": "usd",
           "id": "pi_123",
           "latest_charge": "ch_123",
           "livemode": false,
           "metadata": {},
           "object": "payment_intent",
           "payment_method": "pm_123",
           "payment_method_types": [
            "card"
           ],
           "status": "succeeded"
          }
         ],
         "has_more": false,
         "object": "list",
         "url": "/v1/payment_intents"
        },
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/payment_intent"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists PaymentIntent objects, newest first.",
    "tags": [
     "payment_intents"
    ]
   },
   "post": {
    "operationId": "post-v1-payment-intents",
    "parameters": [
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "amount": 2000,
        "confirm": true,
        "currency": "usd",
        "payment_method": "pm_card_visa",
        "return_url": "https://example.com/return"
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "amount": {
          "description": "Amount in the currency's smallest unit (cents for USD, centavos for BRL): 2000 is 20.00. A positive integer.",
          "type": "integer"
         },
         "capture_method": {
          "description": "automatic captures as soon as the payment is authorized; manual holds the authorization until you capture or cancel it. Card only.",
          "enum": [
           "automatic",
           "automatic_async",
           "manual"
          ],
          "type": "string"
         },
         "confirm": {
          "description": "true creates and confirms in one call: send payment_method (or payment_method_data) with it.",
          "type": "boolean"
         },
         "confirmation_method": {
          "description": "automatic (the default) charges as soon as the confirm and any 3D Secure succeed. manual makes your server confirm again after 3D Secure: the PaymentIntent waits in requires_confirmation and nothing is charged until that confirm, sent with your secret key.",
          "enum": [
           "automatic",
           "manual"
          ],
          "type": "string"
         },
         "currency": {
          "description": "Three-letter ISO code in lowercase, such as usd: the currency the store accepts. Any other currency is refused.",
          "type": "string"
         },
         "customer": {
          "description": "The id of a Customer (cus_...) this object belongs to.",
          "type": "string"
         },
         "description": {
          "description": "Free text for your own records.",
          "type": "string"
         },
         "error_on_requires_action": {
          "description": "true fails the payment instead of asking the buyer for 3D Secure.",
          "type": "boolean"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         },
         "off_session": {
          "description": "true when the buyer is not there, such as a later charge of a card saved to the customer; one_off means the same as true, and false is the default. Only with confirm=true on create. No 3D Secure step is offered: a card that needs authentication fails with a 402 card_error, code authentication_required, makes no Charge, and the PaymentIntent goes back to requires_payment_method. Card only.",
          "type": "string"
         },
         "payment_method": {
          "description": "The id of a PaymentMethod to charge (pm_...). In test mode, test shortcuts such as pm_card_visa work. Do not send it together with payment_method_data.",
          "type": "string"
         },
         "payment_method_data": {
          "description": "Details of a new payment method, used once for this payment. This is how you start a Pix or a Boleto. A wallet card enters as card[token], a token from POST /v1/tokens, used once. A card takes no billing_details[tax_id]: it is refused with tax_id_prohibited. Do not send it together with payment_method.",
          "properties": {
           "allow_redisplay": {
            "description": "Whether the new PaymentMethod may be shown to the customer again: always, limited or unspecified (the default).",
            "enum": [
             "always",
             "limited",
             "unspecified"
            ],
            "type": "string"
           },
           "billing_details": {
            "description": "The payer's name, email, phone, address and, for Pix and Boleto, tax_id (CPF or CNPJ).",
            "properties": {
             "address": {
              "properties": {
               "city": {
                "type": "string"
               },
               "country": {
                "type": "string"
               },
               "line1": {
                "type": "string"
               },
               "line2": {
                "type": "string"
               },
               "postal_code": {
                "type": "string"
               },
               "state": {
                "type": "string"
               }
              },
              "type": "object"
             },
             "email": {
              "type": "string"
             },
             "name": {
              "type": "string"
             },
             "phone": {
              "type": "string"
             },
             "tax_id": {
              "type": "string"
             }
            },
            "type": "object"
           },
           "boleto": {
            "description": "Boleto details.",
            "properties": {
             "tax_id": {
              "description": "The payer's CPF or CNPJ for the Boleto.",
              "type": "string"
             }
            },
            "type": "object"
           },
           "card": {
            "properties": {
             "token": {
              "type": "string"
             }
            },
            "type": "object"
           },
           "metadata": {
            "description": "Your own key-value pairs for the new PaymentMethod.",
            "type": "object"
           },
           "type": {
            "description": "The kind of payment method: card, pix or boleto; pix and boleto only on a store that takes them.",
            "enum": [
             "card",
             "pix",
             "boleto"
            ],
            "type": "string"
           }
          },
          "type": "object"
         },
         "payment_method_options": {
          "description": "Options for one payment method type, keyed by the type.",
          "properties": {
           "boleto": {
            "description": "Boleto options.",
            "properties": {
             "expires_after_days": {
              "description": "How many days after today, in São Paulo time, the Boleto can still be paid, 0 to 60. Without it, 3.",
              "type": "integer"
             },
             "setup_future_usage": {
              "description": "For the Boleto payment, replaces the top-level setup_future_usage: on_session or off_session saves the Boleto to the PaymentIntent's Customer at the confirm that issues it, and none saves nothing even when the top level asks to. An empty value removes it.",
              "enum": [
               "none",
               "off_session",
               "on_session"
              ],
              "type": "string"
             }
            },
            "type": "object"
           },
           "card": {
            "description": "Card options.",
            "properties": {
             "capture_method": {
              "description": "manual holds the card payment for a later capture, while a Pix or Boleto payment of the same PaymentIntent captures as the top-level capture_method says. An empty value removes it. Kept only while payment_method_types lists card.",
              "enum": [
               "manual"
              ],
              "type": "string"
             },
             "request_three_d_secure": {
              "description": "Ask for 3D Secure: automatic (when the bank asks), any (whenever possible) or challenge.",
              "enum": [
               "any",
               "automatic",
               "challenge"
              ],
              "type": "string"
             },
             "setup_future_usage": {
              "description": "For the card payment, replaces the top-level setup_future_usage: on_session or off_session saves the card to the PaymentIntent's Customer once the payment is authorized or paid, and none saves nothing even when the top level asks to. An empty value removes it. Kept only while payment_method_types lists card.",
              "enum": [
               "none",
               "off_session",
               "on_session"
              ],
              "type": "string"
             }
            },
            "type": "object"
           },
           "pix": {
            "description": "Pix options. Sent empty (payment_method_options[pix]=), it removes both expiry options.",
            "properties": {
             "additional_information": {
              "description": "Lines shown to the payer in their bank app, 1 to 50, sent as additional_information[0][name] and additional_information[0][value]; only with confirm=true.",
              "items": {
               "properties": {
                "name": {
                 "description": "The line's label, up to 50 characters.",
                 "type": "string"
                },
                "value": {
                 "description": "The line's text, up to 200 characters.",
                 "type": "string"
                }
               },
               "required": [
                "name",
                "value"
               ],
               "type": "object"
              },
              "type": "array"
             },
             "expires_after_seconds": {
              "description": "How long the Pix code stays payable, 60 to 86400 seconds, counted from the confirm that issues it.",
              "type": "integer"
             },
             "expires_at": {
              "description": "When the Pix code stops being payable, as a Unix timestamp in the future and no more than five years ahead. The confirm that issues the Pix needs it 60 seconds to 24 hours ahead. The PaymentIntent keeps it beside expires_after_seconds, but a Pix is issued by only one: a Pix confirm with both set is refused.",
              "type": "integer"
             },
             "setup_future_usage": {
              "description": "none only: a Pix pays once and is never saved, and with none a top-level setup_future_usage applies to the PaymentIntent's other methods. off_session gets the refusal a top-level setup_future_usage beside pix gets; any other value is refused.",
              "enum": [
               "none"
              ],
              "type": "string"
             }
            },
            "type": "object"
           }
          },
          "type": "object"
         },
         "payment_method_types": {
          "description": "Payment method types this PaymentIntent may use: card, and pix or boleto on a store that takes them. Without it, the PaymentIntent has automatic_payment_methods and lists every method the store takes that its payment method configuration has on, card first and then in the order its Checkout Session shows them, less the ones this payment cannot use: pix and boleto leave the list with capture_method=manual, under their least amount, with excluded_payment_method_types naming them, and pix also with either setup_future_usage (boleto stays with either value; a PaymentIntent that lists pix is refused either value). An update of amount, currency, capture_method, setup_future_usage or excluded_payment_method_types judges the list again. A confirm takes any method of the list.",
          "items": {
           "enum": [
            "card",
            "pix",
            "boleto"
           ],
           "type": "string"
          },
          "type": "array"
         },
         "receipt_email": {
          "description": "Email address that receives the payment receipt.",
          "type": "string"
         },
         "return_url": {
          "description": "Where the buyer returns after a 3D Secure step; without it the 3D Secure page ends on a page that tells the buyer to close it. Only with confirm=true on create.",
          "type": "string"
         },
         "setup_future_usage": {
          "description": "on_session or off_session: the payment method is saved to the PaymentIntent's Customer for later payments, and the PaymentIntent shows the value. A card is saved once its payment is authorized or paid and a Boleto at the confirm that issues it. A PaymentIntent that lists pix refuses it, unless payment_method_options[pix][setup_future_usage] is none: a Pix pays once and is never saved. off_session when you will charge it later without the buyer, with off_session=true. payment_method_options[<type>][setup_future_usage] replaces it for that type.",
          "enum": [
           "on_session",
           "off_session"
          ],
          "type": "string"
         },
         "shipping": {
          "description": "Shipping name, address and phone for the order.",
          "properties": {
           "address": {
            "properties": {
             "city": {
              "type": "string"
             },
             "country": {
              "type": "string"
             },
             "line1": {
              "type": "string"
             },
             "line2": {
              "type": "string"
             },
             "postal_code": {
              "type": "string"
             },
             "state": {
              "type": "string"
             }
            },
            "type": "object"
           },
           "carrier": {
            "type": "string"
           },
           "name": {
            "type": "string"
           },
           "phone": {
            "type": "string"
           },
           "tracking_number": {
            "type": "string"
           }
          },
          "type": "object"
         },
         "statement_descriptor": {
          "description": "Text on the payer's statement, up to 22 characters, without < > \\ ' \" *. For a card payment use statement_descriptor_suffix: an update of a card PaymentIntent refuses statement_descriptor.",
          "type": "string"
         },
         "statement_descriptor_suffix": {
          "description": "Text added after the store's own descriptor on a card statement.",
          "type": "string"
         }
        },
        "required": [
         "amount",
         "currency"
        ],
        "type": "object"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 2000,
         "amount_received": 2000,
         "capture_method": "automatic",
         "confirmation_method": "automatic",
         "created": 1767225600,
         "currency": "usd",
         "id": "pi_123",
         "latest_charge": "ch_123",
         "livemode": false,
         "metadata": {},
         "object": "payment_intent",
         "payment_method": "pm_123",
         "payment_method_types": [
          "card"
         ],
         "status": "succeeded"
        },
        "schema": {
         "$ref": "#/components/schemas/payment_intent"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Creates a PaymentIntent.",
    "tags": [
     "payment_intents"
    ]
   }
  },
  "/v1/payment_intents/search": {
   "get": {
    "description": "A query is one or more clauses, each a field, an operator and a value, such as status:\"succeeded\" or amount>1000. The PaymentIntent fields are amount, created, currency, customer, status and metadata[\"key\"]. amount and created take :, =, <, <=, > and >= with a whole number, quoted or not. Every other field takes only :, which matches the whole value in any case; status takes canceled, expired, processing, requires_action, requires_capture, requires_confirmation, requires_payment_method, requires_reauthorization or succeeded (no Fluveo PaymentIntent is ever expired or requires_reauthorization). A - before a clause negates it. field:null matches a field that is absent or empty, such as customer:null for the PaymentIntents with no customer. Join clauses with AND or OR (a space means AND), never both in one query and never with parentheses, up to 10 clauses. Quote text values with single or double quotes. A query Fluveo cannot read answers invalid_request_error with the reason. When has_more is true, send next_page as page with the same query for the next page. Add expand[]=total_count to get total_count, the number of matches. A PaymentIntent is found as soon as its write returns.",
    "operationId": "get-v1-payment-intents-search",
    "parameters": [
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "The next_page of the previous answer, to get the page after it. Send the same query with it.",
      "in": "query",
      "name": "page",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "The search query, in the language the description above gives.",
      "example": "status:\"succeeded\" AND metadata[\"order_id\"]:\"1042\"",
      "in": "query",
      "name": "query",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "data": [
          {
           "amount": 2000,
           "amount_received": 2000,
           "capture_method": "automatic",
           "confirmation_method": "automatic",
           "created": 1767225600,
           "currency": "usd",
           "id": "pi_123",
           "latest_charge": "ch_123",
           "livemode": false,
           "metadata": {},
           "object": "payment_intent",
           "payment_method": "pm_123",
           "payment_method_types": [
            "card"
           ],
           "status": "succeeded"
          }
         ],
         "has_more": false,
         "next_page": null,
         "object": "search_result",
         "url": "/v1/payment_intents/search"
        },
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/payment_intent"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "next_page": {
           "nullable": true,
           "type": "string"
          },
          "object": {
           "enum": [
            "search_result"
           ],
           "type": "string"
          },
          "total_count": {
           "type": "integer"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Searches PaymentIntent objects with a query, newest first.",
    "tags": [
     "payment_intents"
    ]
   }
  },
  "/v1/payment_intents/{intent}": {
   "get": {
    "operationId": "get-v1-payment-intents-intent",
    "parameters": [
     {
      "description": "The PaymentIntent's id.",
      "example": "pi_123",
      "in": "path",
      "name": "intent",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 2000,
         "amount_received": 2000,
         "capture_method": "automatic",
         "confirmation_method": "automatic",
         "created": 1767225600,
         "currency": "usd",
         "id": "pi_123",
         "latest_charge": "ch_123",
         "livemode": false,
         "metadata": {},
         "object": "payment_intent",
         "payment_method": "pm_123",
         "payment_method_types": [
          "card"
         ],
         "status": "succeeded"
        },
        "schema": {
         "$ref": "#/components/schemas/payment_intent"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a PaymentIntent.",
    "tags": [
     "payment_intents"
    ]
   },
   "post": {
    "description": "Amount, currency, payment method and capture method change only while the PaymentIntent waits for a payment method or a confirmation. While its Pix QR or a card's 3D Secure step waits on the buyer, another payment method drops that wait and leaves the PaymentIntent in requires_confirmation, to confirm with the new method (a confirm with no parameters is enough); the same payment method or a customer leave it waiting. A waiting Boleto takes neither. receipt_email, description and metadata change later too.",
    "operationId": "post-v1-payment-intents-intent",
    "parameters": [
     {
      "description": "The PaymentIntent's id.",
      "example": "pi_123",
      "in": "path",
      "name": "intent",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "description": "Order 1042",
        "metadata": {
         "order_id": "1042"
        }
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "amount": {
          "description": "Amount in the currency's smallest unit (cents for USD, centavos for BRL): 2000 is 20.00. A positive integer.",
          "type": "integer"
         },
         "capture_method": {
          "description": "automatic captures as soon as the payment is authorized; manual holds the authorization until you capture or cancel it. Card only.",
          "enum": [
           "automatic",
           "automatic_async",
           "manual"
          ],
          "type": "string"
         },
         "currency": {
          "description": "Three-letter ISO code in lowercase, such as usd: the currency the store accepts. Any other currency is refused.",
          "type": "string"
         },
         "customer": {
          "description": "The id of a Customer (cus_...) this object belongs to.",
          "type": "string"
         },
         "description": {
          "description": "Free text for your own records.",
          "type": "string"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         },
         "payment_method": {
          "description": "The id of a PaymentMethod to charge (pm_...). In test mode, test shortcuts such as pm_card_visa work. Do not send it together with payment_method_data.",
          "type": "string"
         },
         "payment_method_data": {
          "description": "On an update, only payment_method_data[type]=pix or boleto is accepted. Do not send it together with payment_method.",
          "properties": {
           "type": {
            "description": "On an update, only pix or boleto: switches the PaymentIntent to that method.",
            "enum": [
             "pix",
             "boleto"
            ],
            "type": "string"
           }
          },
          "type": "object"
         },
         "payment_method_options": {
          "description": "Options for one payment method type, keyed by the type.",
          "properties": {
           "boleto": {
            "description": "Boleto options.",
            "properties": {
             "setup_future_usage": {
              "description": "For the Boleto payment, replaces the top-level setup_future_usage: on_session or off_session saves the Boleto to the PaymentIntent's Customer at the confirm that issues it, and none saves nothing even when the top level asks to. An empty value removes it.",
              "enum": [
               "none",
               "off_session",
               "on_session"
              ],
              "type": "string"
             }
            },
            "type": "object"
           },
           "card": {
            "description": "Card options.",
            "properties": {
             "capture_method": {
              "description": "manual holds the card payment for a later capture, while a Pix or Boleto payment of the same PaymentIntent captures as the top-level capture_method says. An empty value removes it. Kept only while payment_method_types lists card.",
              "enum": [
               "manual"
              ],
              "type": "string"
             },
             "request_three_d_secure": {
              "description": "Ask for 3D Secure: automatic (when the bank asks), any (whenever possible) or challenge.",
              "enum": [
               "any",
               "automatic",
               "challenge"
              ],
              "type": "string"
             },
             "setup_future_usage": {
              "description": "For the card payment, replaces the top-level setup_future_usage: on_session or off_session saves the card to the PaymentIntent's Customer once the payment is authorized or paid, and none saves nothing even when the top level asks to. An empty value removes it. Kept only while payment_method_types lists card.",
              "enum": [
               "none",
               "off_session",
               "on_session"
              ],
              "type": "string"
             }
            },
            "type": "object"
           },
           "pix": {
            "description": "Pix options. Sent empty (payment_method_options[pix]=), it removes both expiry options.",
            "properties": {
             "expires_after_seconds": {
              "description": "How long the Pix code stays payable, 60 to 86400 seconds, counted from the confirm that issues it.",
              "type": "integer"
             },
             "expires_at": {
              "description": "When the Pix code stops being payable, as a Unix timestamp in the future and no more than five years ahead. The confirm that issues the Pix needs it 60 seconds to 24 hours ahead. The PaymentIntent keeps it beside expires_after_seconds, but a Pix is issued by only one: a Pix confirm with both set is refused.",
              "type": "integer"
             },
             "setup_future_usage": {
              "description": "none only: a Pix pays once and is never saved, and with none a top-level setup_future_usage applies to the PaymentIntent's other methods. off_session gets the refusal a top-level setup_future_usage beside pix gets; any other value is refused.",
              "enum": [
               "none"
              ],
              "type": "string"
             }
            },
            "type": "object"
           }
          },
          "type": "object"
         },
         "payment_method_types": {
          "description": "Payment method types this PaymentIntent may use: card, and pix or boleto on a store that takes them.",
          "items": {
           "enum": [
            "card",
            "pix",
            "boleto"
           ],
           "type": "string"
          },
          "type": "array"
         },
         "receipt_email": {
          "description": "Email address that receives the payment receipt.",
          "type": "string"
         },
         "setup_future_usage": {
          "description": "on_session or off_session: the payment method is saved to the PaymentIntent's Customer for later payments, and the PaymentIntent shows the value. A card is saved once its payment is authorized or paid and a Boleto at the confirm that issues it. A PaymentIntent that lists pix refuses it, unless payment_method_options[pix][setup_future_usage] is none: a Pix pays once and is never saved. off_session when you will charge it later without the buyer, with off_session=true. payment_method_options[<type>][setup_future_usage] replaces it for that type.",
          "enum": [
           "on_session",
           "off_session"
          ],
          "type": "string"
         },
         "shipping": {
          "description": "Shipping name, address and phone for the order.",
          "properties": {
           "address": {
            "properties": {
             "city": {
              "type": "string"
             },
             "country": {
              "type": "string"
             },
             "line1": {
              "type": "string"
             },
             "line2": {
              "type": "string"
             },
             "postal_code": {
              "type": "string"
             },
             "state": {
              "type": "string"
             }
            },
            "type": "object"
           },
           "carrier": {
            "type": "string"
           },
           "name": {
            "type": "string"
           },
           "phone": {
            "type": "string"
           },
           "tracking_number": {
            "type": "string"
           }
          },
          "type": "object"
         },
         "statement_descriptor": {
          "description": "Text on the payer's statement, up to 22 characters, without < > \\ ' \" *. For a card payment use statement_descriptor_suffix: an update of a card PaymentIntent refuses statement_descriptor.",
          "type": "string"
         },
         "statement_descriptor_suffix": {
          "description": "Text added after the store's own descriptor on a card statement.",
          "type": "string"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 2000,
         "amount_received": 2000,
         "capture_method": "automatic",
         "confirmation_method": "automatic",
         "created": 1767225600,
         "currency": "usd",
         "id": "pi_123",
         "latest_charge": "ch_123",
         "livemode": false,
         "metadata": {},
         "object": "payment_intent",
         "payment_method": "pm_123",
         "payment_method_types": [
          "card"
         ],
         "status": "succeeded"
        },
        "schema": {
         "$ref": "#/components/schemas/payment_intent"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Updates a PaymentIntent.",
    "tags": [
     "payment_intents"
    ]
   }
  },
  "/v1/payment_intents/{intent}/cancel": {
   "post": {
    "operationId": "post-v1-payment-intents-intent-cancel",
    "parameters": [
     {
      "description": "The PaymentIntent's id.",
      "example": "pi_123",
      "in": "path",
      "name": "intent",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "cancellation_reason": "requested_by_customer"
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "cancellation_reason": {
          "description": "Why you cancel.",
          "enum": [
           "duplicate",
           "fraudulent",
           "requested_by_customer",
           "abandoned"
          ],
          "type": "string"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 2000,
         "amount_received": 2000,
         "capture_method": "automatic",
         "confirmation_method": "automatic",
         "created": 1767225600,
         "currency": "usd",
         "id": "pi_123",
         "latest_charge": "ch_123",
         "livemode": false,
         "metadata": {},
         "object": "payment_intent",
         "payment_method": "pm_123",
         "payment_method_types": [
          "card"
         ],
         "status": "succeeded"
        },
        "schema": {
         "$ref": "#/components/schemas/payment_intent"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Cancels a PaymentIntent.",
    "tags": [
     "payment_intents"
    ]
   }
  },
  "/v1/payment_intents/{intent}/capture": {
   "post": {
    "operationId": "post-v1-payment-intents-intent-capture",
    "parameters": [
     {
      "description": "The PaymentIntent's id.",
      "example": "pi_123",
      "in": "path",
      "name": "intent",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "amount_to_capture": 1500
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "amount_to_capture": {
          "description": "How much of the authorized amount to capture, in the smallest unit. Leave it out to capture everything; the rest is released.",
          "type": "integer"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         },
         "statement_descriptor": {
          "description": "Text on the payer's statement, up to 22 characters, without < > \\ ' \" *. For a card payment use statement_descriptor_suffix: an update of a card PaymentIntent refuses statement_descriptor.",
          "type": "string"
         },
         "statement_descriptor_suffix": {
          "description": "Text added after the store's own descriptor on a card statement.",
          "type": "string"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 2000,
         "amount_received": 2000,
         "capture_method": "automatic",
         "confirmation_method": "automatic",
         "created": 1767225600,
         "currency": "usd",
         "id": "pi_123",
         "latest_charge": "ch_123",
         "livemode": false,
         "metadata": {},
         "object": "payment_intent",
         "payment_method": "pm_123",
         "payment_method_types": [
          "card"
         ],
         "status": "succeeded"
        },
        "schema": {
         "$ref": "#/components/schemas/payment_intent"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Captures a PaymentIntent.",
    "tags": [
     "payment_intents"
    ]
   }
  },
  "/v1/payment_intents/{intent}/confirm": {
   "post": {
    "operationId": "post-v1-payment-intents-intent-confirm",
    "parameters": [
     {
      "description": "The PaymentIntent's id.",
      "example": "pi_123",
      "in": "path",
      "name": "intent",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "payment_method": "pm_card_visa",
        "return_url": "https://example.com/return"
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "capture_method": {
          "description": "automatic captures as soon as the payment is authorized; manual holds the authorization until you capture or cancel it. Card only.",
          "enum": [
           "automatic",
           "automatic_async",
           "manual"
          ],
          "type": "string"
         },
         "error_on_requires_action": {
          "description": "true fails the payment instead of asking the buyer for 3D Secure.",
          "type": "boolean"
         },
         "off_session": {
          "description": "true when the buyer is not there, such as a later charge of a card saved to the customer; one_off means the same as true, and false is the default. Only with confirm=true on create. No 3D Secure step is offered: a card that needs authentication fails with a 402 card_error, code authentication_required, makes no Charge, and the PaymentIntent goes back to requires_payment_method. Card only.",
          "type": "string"
         },
         "payment_method": {
          "description": "The id of a PaymentMethod to charge (pm_...). In test mode, test shortcuts such as pm_card_visa work. Do not send it together with payment_method_data.",
          "type": "string"
         },
         "payment_method_data": {
          "description": "Details of a new payment method, used once for this payment. This is how you start a Pix or a Boleto. A wallet card enters as card[token], a token from POST /v1/tokens, used once. A card takes no billing_details[tax_id]: it is refused with tax_id_prohibited. Do not send it together with payment_method.",
          "properties": {
           "allow_redisplay": {
            "description": "Whether the new PaymentMethod may be shown to the customer again: always, limited or unspecified (the default).",
            "enum": [
             "always",
             "limited",
             "unspecified"
            ],
            "type": "string"
           },
           "billing_details": {
            "description": "The payer's name, email, phone, address and, for Pix and Boleto, tax_id (CPF or CNPJ).",
            "properties": {
             "address": {
              "properties": {
               "city": {
                "type": "string"
               },
               "country": {
                "type": "string"
               },
               "line1": {
                "type": "string"
               },
               "line2": {
                "type": "string"
               },
               "postal_code": {
                "type": "string"
               },
               "state": {
                "type": "string"
               }
              },
              "type": "object"
             },
             "email": {
              "type": "string"
             },
             "name": {
              "type": "string"
             },
             "phone": {
              "type": "string"
             },
             "tax_id": {
              "type": "string"
             }
            },
            "type": "object"
           },
           "boleto": {
            "description": "Boleto details.",
            "properties": {
             "tax_id": {
              "description": "The payer's CPF or CNPJ for the Boleto.",
              "type": "string"
             }
            },
            "type": "object"
           },
           "card": {
            "properties": {
             "token": {
              "type": "string"
             }
            },
            "type": "object"
           },
           "metadata": {
            "description": "Your own key-value pairs for the new PaymentMethod.",
            "type": "object"
           },
           "type": {
            "description": "The kind of payment method: card, pix or boleto; pix and boleto only on a store that takes them.",
            "enum": [
             "card",
             "pix",
             "boleto"
            ],
            "type": "string"
           }
          },
          "type": "object"
         },
         "payment_method_options": {
          "description": "Options for one payment method type, keyed by the type.",
          "properties": {
           "boleto": {
            "description": "Boleto options.",
            "properties": {
             "expires_after_days": {
              "description": "How many days after today, in São Paulo time, the Boleto can still be paid, 0 to 60. Without it, 3.",
              "type": "integer"
             },
             "setup_future_usage": {
              "description": "For the Boleto payment, replaces the top-level setup_future_usage: on_session or off_session saves the Boleto to the PaymentIntent's Customer at the confirm that issues it, and none saves nothing even when the top level asks to. An empty value removes it.",
              "enum": [
               "none",
               "off_session",
               "on_session"
              ],
              "type": "string"
             }
            },
            "type": "object"
           },
           "card": {
            "description": "Card options.",
            "properties": {
             "capture_method": {
              "description": "manual holds the card payment for a later capture, while a Pix or Boleto payment of the same PaymentIntent captures as the top-level capture_method says. An empty value removes it. Kept only while payment_method_types lists card.",
              "enum": [
               "manual"
              ],
              "type": "string"
             },
             "request_three_d_secure": {
              "description": "Ask for 3D Secure: automatic (when the bank asks), any (whenever possible) or challenge.",
              "enum": [
               "any",
               "automatic",
               "challenge"
              ],
              "type": "string"
             },
             "setup_future_usage": {
              "description": "For the card payment, replaces the top-level setup_future_usage: on_session or off_session saves the card to the PaymentIntent's Customer once the payment is authorized or paid, and none saves nothing even when the top level asks to. An empty value removes it. Kept only while payment_method_types lists card.",
              "enum": [
               "none",
               "off_session",
               "on_session"
              ],
              "type": "string"
             }
            },
            "type": "object"
           },
           "pix": {
            "description": "Pix options. Sent empty (payment_method_options[pix]=), it removes both expiry options.",
            "properties": {
             "additional_information": {
              "description": "Lines shown to the payer in their bank app, 1 to 50, sent as additional_information[0][name] and additional_information[0][value]; only with confirm=true.",
              "items": {
               "properties": {
                "name": {
                 "description": "The line's label, up to 50 characters.",
                 "type": "string"
                },
                "value": {
                 "description": "The line's text, up to 200 characters.",
                 "type": "string"
                }
               },
               "required": [
                "name",
                "value"
               ],
               "type": "object"
              },
              "type": "array"
             },
             "expires_after_seconds": {
              "description": "How long the Pix code stays payable, 60 to 86400 seconds, counted from the confirm that issues it.",
              "type": "integer"
             },
             "expires_at": {
              "description": "When the Pix code stops being payable, as a Unix timestamp in the future and no more than five years ahead. The confirm that issues the Pix needs it 60 seconds to 24 hours ahead. The PaymentIntent keeps it beside expires_after_seconds, but a Pix is issued by only one: a Pix confirm with both set is refused.",
              "type": "integer"
             },
             "setup_future_usage": {
              "description": "none only: a Pix pays once and is never saved, and with none a top-level setup_future_usage applies to the PaymentIntent's other methods. off_session gets the refusal a top-level setup_future_usage beside pix gets; any other value is refused.",
              "enum": [
               "none"
              ],
              "type": "string"
             }
            },
            "type": "object"
           }
          },
          "type": "object"
         },
         "payment_method_types": {
          "description": "Payment method types this PaymentIntent may use: card, and pix or boleto on a store that takes them.",
          "items": {
           "enum": [
            "card",
            "pix",
            "boleto"
           ],
           "type": "string"
          },
          "type": "array"
         },
         "receipt_email": {
          "description": "Email address that receives the payment receipt.",
          "type": "string"
         },
         "return_url": {
          "description": "Where the buyer returns after a 3D Secure step; without it the 3D Secure page ends on a page that tells the buyer to close it. Only with confirm=true on create.",
          "type": "string"
         },
         "setup_future_usage": {
          "description": "on_session or off_session: the payment method is saved to the PaymentIntent's Customer for later payments, and the PaymentIntent shows the value. A card is saved once its payment is authorized or paid and a Boleto at the confirm that issues it. A PaymentIntent that lists pix refuses it, unless payment_method_options[pix][setup_future_usage] is none: a Pix pays once and is never saved. off_session when you will charge it later without the buyer, with off_session=true. payment_method_options[<type>][setup_future_usage] replaces it for that type.",
          "enum": [
           "on_session",
           "off_session"
          ],
          "type": "string"
         },
         "shipping": {
          "description": "Shipping name, address and phone for the order.",
          "properties": {
           "address": {
            "properties": {
             "city": {
              "type": "string"
             },
             "country": {
              "type": "string"
             },
             "line1": {
              "type": "string"
             },
             "line2": {
              "type": "string"
             },
             "postal_code": {
              "type": "string"
             },
             "state": {
              "type": "string"
             }
            },
            "type": "object"
           },
           "carrier": {
            "type": "string"
           },
           "name": {
            "type": "string"
           },
           "phone": {
            "type": "string"
           },
           "tracking_number": {
            "type": "string"
           }
          },
          "type": "object"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 2000,
         "amount_received": 2000,
         "capture_method": "automatic",
         "confirmation_method": "automatic",
         "created": 1767225600,
         "currency": "usd",
         "id": "pi_123",
         "latest_charge": "ch_123",
         "livemode": false,
         "metadata": {},
         "object": "payment_intent",
         "payment_method": "pm_123",
         "payment_method_types": [
          "card"
         ],
         "status": "succeeded"
        },
        "schema": {
         "$ref": "#/components/schemas/payment_intent"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Confirms a PaymentIntent.",
    "tags": [
     "payment_intents"
    ]
   }
  },
  "/v1/payment_links": {
   "get": {
    "operationId": "get-v1-payment-links",
    "parameters": [
     {
      "description": "true lists only the links buyers can pay through now, false only the inactive ones.",
      "example": true,
      "in": "query",
      "name": "active",
      "required": false,
      "schema": {
       "type": "boolean"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/payment_link"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists payment link objects, newest first.",
    "tags": [
     "payment_links"
    ]
   },
   "post": {
    "operationId": "post-v1-payment-links",
    "parameters": [
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "line_items": [
         {
          "price": "price_1QxExample000000000000",
          "quantity": 1
         }
        ]
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "after_completion": {
          "description": "What the buyer sees after paying: type=hosted_confirmation with an optional hosted_confirmation[custom_message], or type=redirect with redirect[url].",
          "type": "object"
         },
         "automatic_tax": {
          "description": "automatic_tax[enabled]: only false is taken; Fluveo has no tax engine, so true answers automatic_tax_unavailable.",
          "type": "object"
         },
         "billing_address_collection": {
          "description": "auto (the default) or required: whether the page always asks the buyer for the whole address.",
          "enum": [
           "auto",
           "required"
          ],
          "type": "string"
         },
         "inactive_message": {
          "description": "The message the link's page shows once the link is inactive, up to 500 characters.",
          "type": "string"
         },
         "line_items": {
          "description": "What the link sells, at most 20 lines, all in the store's currency. Each line takes quantity and either price, the id of one of the store's active one-time Prices, or price_data (currency, unit_amount, product_data[name]), from which Fluveo first creates the Price. A line may also take adjustable_quantity (enabled, and an optional minimum from 0 and maximum from 1 to 999999, 99 when unset; the minimum below the maximum and the line's quantity within them): the link's page then lets the buyer pick that line's quantity within them, and the session charges the unit amount times the chosen quantity. A Price whose amount the customer chooses (custom_unit_amount) must be the only line, with quantity 1 and no adjustable quantity.",
          "items": {
           "type": "string"
          },
          "type": "array"
         },
         "managed_payments": {
          "description": "managed_payments[enabled]: only false is taken; true answers managed_payments_unavailable. Set on create only.",
          "type": "object"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         },
         "name_collection": {
          "description": "name_collection[individual] and name_collection[business], each with enabled and optional: whether the page asks for the buyer's or the business's name.",
          "type": "object"
         },
         "payment_method_types": {
          "description": "The methods the link's page offers: any of card, pix and boleto the store takes. Without it the link offers the default methods of a Checkout Session created without payment_method_types.",
          "items": {
           "enum": [
            "card",
            "pix",
            "boleto"
           ],
           "type": "string"
          },
          "type": "array"
         },
         "phone_number_collection": {
          "description": "phone_number_collection[enabled]: whether the page asks for the buyer's phone number.",
          "type": "object"
         },
         "restrictions": {
          "description": "restrictions[completed_sessions][limit]: how many payments the link takes before it turns inactive on its own.",
          "type": "object"
         },
         "shipping_address_collection": {
          "description": "shipping_address_collection[allowed_countries][]: the two-letter countries the page takes a shipping address in. The link's sessions ask a name and address, on card and on Pix and Boleto alike.",
          "type": "object"
         },
         "submit_type": {
          "description": "The word on the page's pay button: auto, book, donate or pay.",
          "enum": [
           "auto",
           "book",
           "donate",
           "pay",
           "subscribe"
          ],
          "type": "string"
         }
        },
        "required": [
         "line_items"
        ],
        "type": "object"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/payment_link"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Creates a payment link.",
    "tags": [
     "payment_links"
    ]
   }
  },
  "/v1/payment_links/{payment_link}": {
   "get": {
    "operationId": "get-v1-payment-links-payment-link",
    "parameters": [
     {
      "description": "The id of the payment link.",
      "example": "plink_123",
      "in": "path",
      "name": "payment_link",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/payment_link"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a payment link.",
    "tags": [
     "payment_links"
    ]
   },
   "post": {
    "description": "active=false switches the link off and active=true on again. A link switched off, or at its payment limit, takes any change, line item quantities by their id included, and stays off until active=true; a link at its limit switches on only with a limit above its count. An expired link takes no change but active.",
    "operationId": "post-v1-payment-links-payment-link",
    "parameters": [
     {
      "description": "The id of the payment link.",
      "example": "plink_123",
      "in": "path",
      "name": "payment_link",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "active": false
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "active": {
          "description": "true or false: whether buyers can still pay through the link.",
          "type": "boolean"
         },
         "after_completion": {
          "description": "What the buyer sees after paying, as on create.",
          "type": "object"
         },
         "automatic_tax": {
          "description": "automatic_tax[enabled]: only false is taken.",
          "type": "object"
         },
         "billing_address_collection": {
          "description": "auto or required.",
          "enum": [
           "auto",
           "required"
          ],
          "type": "string"
         },
         "inactive_message": {
          "description": "The message the page shows while the link is inactive; an empty value removes it.",
          "type": "string"
         },
         "line_items": {
          "description": "Changes to the link's lines, each by its id (li_...) with a new quantity or adjustable_quantity (as on create); lines are not added or removed here.",
          "items": {
           "type": "string"
          },
          "type": "array"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         },
         "name_collection": {
          "description": "name_collection[individual] and name_collection[business], each with enabled and optional; an empty name_collection removes both.",
          "type": "object"
         },
         "payment_method_types": {
          "description": "The methods the link's page offers, by the same rule as on create; an empty payment_method_types removes them, so the link offers the default methods.",
          "items": {
           "enum": [
            "card",
            "pix",
            "boleto"
           ],
           "type": "string"
          },
          "type": "array"
         },
         "phone_number_collection": {
          "description": "phone_number_collection[enabled]: whether the page asks for the buyer's phone number.",
          "type": "object"
         },
         "restrictions": {
          "description": "restrictions[completed_sessions][limit]: a new limit of payments. A raised limit keeps counting every payment so far; a limit set where there was none, or lowered, counts payments from this update. A link at its limit stays inactive until active=true is sent with a limit above its count.",
          "type": "object"
         },
         "shipping_address_collection": {
          "description": "shipping_address_collection[allowed_countries][]: the countries the page takes a shipping address in; an empty shipping_address_collection stops asking it.",
          "type": "object"
         },
         "submit_type": {
          "description": "The word on the page's pay button: auto, book, donate or pay.",
          "enum": [
           "auto",
           "book",
           "donate",
           "pay",
           "subscribe"
          ],
          "type": "string"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/payment_link"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Updates a payment link.",
    "tags": [
     "payment_links"
    ]
   }
  },
  "/v1/payment_links/{payment_link}/line_items": {
   "get": {
    "operationId": "get-v1-payment-links-payment-link-line-items",
    "parameters": [
     {
      "description": "The id of the line item.",
      "example": "plink_123",
      "in": "path",
      "name": "payment_link",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/item"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists line item objects of the parent object.",
    "tags": [
     "payment_links"
    ]
   }
  },
  "/v1/payment_method_configurations": {
   "get": {
    "operationId": "get-v1-payment-method-configurations",
    "parameters": [
     {
      "description": "Only configurations that are active (true) or not (false).",
      "in": "query",
      "name": "active",
      "required": false,
      "schema": {
       "type": "boolean"
      }
     },
     {
      "description": "Only configurations made by this application. The store's own configuration names none, so any value lists nothing.",
      "in": "query",
      "name": "application",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/payment_method_configuration"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists the store's payment method configuration: the one its checkout uses.",
    "tags": [
     "wallets"
    ]
   }
  },
  "/v1/payment_method_configurations/{configuration}": {
   "get": {
    "operationId": "get-v1-payment-method-configurations-configuration",
    "parameters": [
     {
      "description": "The payment method configuration's id.",
      "example": "pmc_123",
      "in": "path",
      "name": "configuration",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/payment_method_configuration"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a payment method configuration.",
    "tags": [
     "wallets"
    ]
   },
   "post": {
    "operationId": "post-v1-payment-method-configurations-configuration",
    "parameters": [
     {
      "description": "The payment method configuration's id.",
      "example": "pmc_123",
      "in": "path",
      "name": "configuration",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "apple_pay": {
         "display_preference": {
          "preference": "on"
         }
        }
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "apple_pay": {
          "description": "Apple Pay for this store: display_preference[preference] on or off. Card stays on while either wallet is on.",
          "properties": {
           "display_preference": {
            "properties": {
             "preference": {
              "enum": [
               "none",
               "off",
               "on"
              ],
              "type": "string"
             }
            },
            "type": "object"
           }
          },
          "type": "object"
         },
         "boleto": {
          "description": "Boleto: display_preference[preference] on. Boleto stays on, and a store that does not take Boleto cannot turn it on.",
          "properties": {
           "display_preference": {
            "properties": {
             "preference": {
              "enum": [
               "none",
               "off",
               "on"
              ],
              "type": "string"
             }
            },
            "type": "object"
           }
          },
          "type": "object"
         },
         "card": {
          "description": "Cards for this store: display_preference[preference] on, off or none. Card stays on while either wallet is on, and on a store that offers no wallet.",
          "properties": {
           "display_preference": {
            "properties": {
             "preference": {
              "enum": [
               "none",
               "off",
               "on"
              ],
              "type": "string"
             }
            },
            "type": "object"
           }
          },
          "type": "object"
         },
         "google_pay": {
          "description": "Google Pay for this store: display_preference[preference] on or off. Card stays on while either wallet is on.",
          "properties": {
           "display_preference": {
            "properties": {
             "preference": {
              "enum": [
               "none",
               "off",
               "on"
              ],
              "type": "string"
             }
            },
            "type": "object"
           }
          },
          "type": "object"
         },
         "pix": {
          "description": "Pix: display_preference[preference] on. Pix stays on, and a store that does not take Pix cannot turn it on.",
          "properties": {
           "display_preference": {
            "properties": {
             "preference": {
              "enum": [
               "none",
               "off",
               "on"
              ],
              "type": "string"
             }
            },
            "type": "object"
           }
          },
          "type": "object"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/payment_method_configuration"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Updates a payment method configuration.",
    "tags": [
     "wallets"
    ]
   }
  },
  "/v1/payment_method_domains": {
   "get": {
    "operationId": "get-v1-payment-method-domains",
    "parameters": [
     {
      "description": "Only the domain with this name.",
      "in": "query",
      "name": "domain_name",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Only domains that are on (true) or off (false).",
      "in": "query",
      "name": "enabled",
      "required": false,
      "schema": {
       "type": "boolean"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/payment_method_domain"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists payment method domain objects, newest first.",
    "tags": [
     "wallets"
    ]
   },
   "post": {
    "operationId": "post-v1-payment-method-domains",
    "parameters": [
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "domain_name": "shop.example.com"
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "domain_name": {
          "description": "The website where the store's checkout runs, as a bare host name such as shop.example.com: no scheme, port or path.",
          "type": "string"
         },
         "enabled": {
          "description": "Whether wallets may show on this domain. Default true.",
          "type": "boolean"
         }
        },
        "required": [
         "domain_name"
        ],
        "type": "object"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/payment_method_domain"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Creates a payment method domain.",
    "tags": [
     "wallets"
    ]
   }
  },
  "/v1/payment_method_domains/{payment_method_domain}": {
   "get": {
    "operationId": "get-v1-payment-method-domains-payment-method-domain",
    "parameters": [
     {
      "description": "The payment method domain's id.",
      "example": "pmd_123",
      "in": "path",
      "name": "payment_method_domain",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/payment_method_domain"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a payment method domain.",
    "tags": [
     "wallets"
    ]
   },
   "post": {
    "operationId": "post-v1-payment-method-domains-payment-method-domain",
    "parameters": [
     {
      "description": "The payment method domain's id.",
      "example": "pmd_123",
      "in": "path",
      "name": "payment_method_domain",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "enabled": false
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "enabled": {
          "description": "Whether wallets may show on this domain: false turns the domain off, true turns it on again.",
          "type": "boolean"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/payment_method_domain"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Turns a domain on or off for Apple Pay and Google Pay, and returns the domain.",
    "tags": [
     "wallets"
    ]
   }
  },
  "/v1/payment_method_domains/{payment_method_domain}/validate": {
   "post": {
    "operationId": "post-v1-payment-method-domains-payment-method-domain-validate",
    "parameters": [
     {
      "description": "The payment method domain's id.",
      "example": "pmd_123",
      "in": "path",
      "name": "payment_method_domain",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "schema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/payment_method_domain"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Asks again whether Apple Pay and Google Pay may show on this domain, and returns the domain with each wallet's status.",
    "tags": [
     "wallets"
    ]
   }
  },
  "/v1/payment_methods": {
   "get": {
    "operationId": "get-v1-payment-methods",
    "parameters": [
     {
      "description": "Whether the PaymentMethod may be shown to the buyer again in a later checkout.",
      "in": "query",
      "name": "allow_redisplay",
      "required": false,
      "schema": {
       "enum": [
        "always",
        "limited",
        "unspecified"
       ],
       "type": "string"
      }
     },
     {
      "description": "Only the PaymentMethods attached to this customer.",
      "example": "cus_123",
      "in": "query",
      "name": "customer",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Only PaymentMethods of this type.",
      "example": "card",
      "in": "query",
      "name": "type",
      "required": false,
      "schema": {
       "enum": [
        "acss_debit",
        "affirm",
        "afterpay_clearpay",
        "alipay",
        "alma",
        "amazon_pay",
        "au_becs_debit",
        "bacs_debit",
        "bancontact",
        "billie",
        "bizum",
        "blik",
        "boleto",
        "card",
        "cashapp",
        "crypto",
        "custom",
        "customer_balance",
        "eps",
        "fpx",
        "giropay",
        "grabpay",
        "ideal",
        "kakao_pay",
        "klarna",
        "konbini",
        "kr_card",
        "link",
        "mb_way",
        "mobilepay",
        "multibanco",
        "naver_pay",
        "nz_bank_account",
        "oxxo",
        "p24",
        "pay_by_bank",
        "payco",
        "paynow",
        "paypal",
        "payto",
        "pix",
        "promptpay",
        "revolut_pay",
        "samsung_pay",
        "satispay",
        "scalapay",
        "sepa_debit",
        "sofort",
        "sunbit",
        "swish",
        "twint",
        "upi",
        "us_bank_account",
        "wechat_pay",
        "zip"
       ],
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/payment_method"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists PaymentMethod objects, newest first.",
    "tags": [
     "payment_methods"
    ]
   }
  },
  "/v1/payment_methods/{payment_method}": {
   "get": {
    "operationId": "get-v1-payment-methods-payment-method",
    "parameters": [
     {
      "description": "The PaymentMethod's id.",
      "example": "pm_123",
      "in": "path",
      "name": "payment_method",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/payment_method"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a PaymentMethod.",
    "tags": [
     "payment_methods"
    ]
   },
   "post": {
    "operationId": "post-v1-payment-methods-payment-method",
    "parameters": [
     {
      "description": "The PaymentMethod's id.",
      "example": "pm_123",
      "in": "path",
      "name": "payment_method",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "metadata": {
         "label": "work card"
        }
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "allow_redisplay": {
          "description": "Whether the PaymentMethod may be shown to the buyer again in a later checkout.",
          "enum": [
           "always",
           "limited",
           "unspecified"
          ],
          "type": "string"
         },
         "billing_details": {
          "description": "The payer's name, email, phone and address, as stored on the PaymentMethod.",
          "properties": {
           "address": {
            "properties": {
             "city": {
              "type": "string"
             },
             "country": {
              "type": "string"
             },
             "line1": {
              "type": "string"
             },
             "line2": {
              "type": "string"
             },
             "postal_code": {
              "type": "string"
             },
             "state": {
              "type": "string"
             }
            },
            "type": "object"
           },
           "email": {
            "type": "string"
           },
           "name": {
            "type": "string"
           },
           "phone": {
            "type": "string"
           },
           "tax_id": {
            "type": "string"
           }
          },
          "type": "object"
         },
         "card": {
          "description": "Card fields you may change.",
          "properties": {
           "exp_month": {
            "description": "New expiry month, 1 to 12.",
            "type": "integer"
           },
           "exp_year": {
            "description": "New expiry year, four digits.",
            "type": "integer"
           }
          },
          "type": "object"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/payment_method"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Updates a PaymentMethod.",
    "tags": [
     "payment_methods"
    ]
   }
  },
  "/v1/payment_methods/{payment_method}/attach": {
   "post": {
    "operationId": "post-v1-payment-methods-payment-method-attach",
    "parameters": [
     {
      "description": "The PaymentMethod's id.",
      "example": "pm_123",
      "in": "path",
      "name": "payment_method",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "customer": "cus_123"
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "customer": {
          "description": "The customer to attach the PaymentMethod to (cus_...).",
          "type": "string"
         }
        },
        "required": [
         "customer"
        ],
        "type": "object"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/payment_method"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Attaches a PaymentMethod.",
    "tags": [
     "payment_methods"
    ]
   }
  },
  "/v1/payment_methods/{payment_method}/detach": {
   "post": {
    "operationId": "post-v1-payment-methods-payment-method-detach",
    "parameters": [
     {
      "description": "The PaymentMethod's id.",
      "example": "pm_123",
      "in": "path",
      "name": "payment_method",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "schema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/payment_method"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Detaches a PaymentMethod.",
    "tags": [
     "payment_methods"
    ]
   }
  },
  "/v1/payouts": {
   "get": {
    "operationId": "get-v1-payouts",
    "parameters": [
     {
      "description": "Filter on the expected arrival date, a Unix timestamp: arrival_date=<t> or arrival_date[gt], [gte], [lt], [lte].",
      "in": "query",
      "name": "arrival_date",
      "required": false,
      "schema": {
       "type": "object"
      }
     },
     {
      "description": "Filter on the creation time, a Unix timestamp: created=<t> for an exact match, or created[gt], created[gte], created[lt], created[lte].",
      "in": "query",
      "name": "created",
      "required": false,
      "schema": {
       "type": "object"
      }
     },
     {
      "description": "Only payouts to this bank account.",
      "in": "query",
      "name": "destination",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Only payouts in this status.",
      "example": "paid",
      "in": "query",
      "name": "status",
      "required": false,
      "schema": {
       "enum": [
        "pending",
        "in_transit",
        "paid",
        "failed",
        "canceled"
       ],
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "data": [
          {
           "amount": 5000,
           "created": 1767225600,
           "currency": "usd",
           "id": "po_123",
           "livemode": false,
           "metadata": {},
           "method": "standard",
           "object": "payout",
           "status": "pending"
          }
         ],
         "has_more": false,
         "object": "list",
         "url": "/v1/payouts"
        },
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/payout"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists payout objects, newest first.",
    "tags": [
     "payouts"
    ]
   },
   "post": {
    "operationId": "post-v1-payouts",
    "parameters": [
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "amount": 5000,
        "currency": "usd"
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "amount": {
          "description": "Amount in the currency's smallest unit (cents for USD, centavos for BRL): 2000 is 20.00. A positive integer.",
          "type": "integer"
         },
         "currency": {
          "description": "Three-letter ISO code in lowercase, such as usd: the currency the store accepts. Any other currency is refused.",
          "type": "string"
         },
         "description": {
          "description": "Free text for your own records.",
          "type": "string"
         },
         "destination": {
          "description": "The bank account to pay into, by its id (ba_...): any of the store's own external accounts. Leave it out to pay the store's default bank account. The payout only ever goes to the account it names: if that account is no longer on file before the money leaves, the payout fails with failure_code account_closed (no_account when no account is on file) and the amount goes back to the balance.",
          "type": "string"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         },
         "method": {
          "description": "Only standard. Instant payouts are refused.",
          "enum": [
           "standard"
          ],
          "type": "string"
         },
         "statement_descriptor": {
          "description": "Text on the store's bank statement for this payout, with none of < > ' \".",
          "type": "string"
         }
        },
        "required": [
         "amount",
         "currency"
        ],
        "type": "object"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 5000,
         "created": 1767225600,
         "currency": "usd",
         "id": "po_123",
         "livemode": false,
         "metadata": {},
         "method": "standard",
         "object": "payout",
         "status": "pending"
        },
        "schema": {
         "$ref": "#/components/schemas/payout"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Creates a payout.",
    "tags": [
     "payouts"
    ]
   }
  },
  "/v1/payouts/{payout}": {
   "get": {
    "operationId": "get-v1-payouts-payout",
    "parameters": [
     {
      "description": "The payout's id.",
      "example": "po_123",
      "in": "path",
      "name": "payout",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 5000,
         "created": 1767225600,
         "currency": "usd",
         "id": "po_123",
         "livemode": false,
         "metadata": {},
         "method": "standard",
         "object": "payout",
         "status": "pending"
        },
        "schema": {
         "$ref": "#/components/schemas/payout"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a payout.",
    "tags": [
     "payouts"
    ]
   },
   "post": {
    "operationId": "post-v1-payouts-payout",
    "parameters": [
     {
      "description": "The payout's id.",
      "example": "po_123",
      "in": "path",
      "name": "payout",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "metadata": {
         "batch": "2026-11"
        }
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 5000,
         "created": 1767225600,
         "currency": "usd",
         "id": "po_123",
         "livemode": false,
         "metadata": {},
         "method": "standard",
         "object": "payout",
         "status": "pending"
        },
        "schema": {
         "$ref": "#/components/schemas/payout"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Updates a payout.",
    "tags": [
     "payouts"
    ]
   }
  },
  "/v1/payouts/{payout}/cancel": {
   "post": {
    "operationId": "post-v1-payouts-payout-cancel",
    "parameters": [
     {
      "description": "The payout's id.",
      "example": "po_123",
      "in": "path",
      "name": "payout",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "schema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 5000,
         "created": 1767225600,
         "currency": "usd",
         "id": "po_123",
         "livemode": false,
         "metadata": {},
         "method": "standard",
         "object": "payout",
         "status": "pending"
        },
        "schema": {
         "$ref": "#/components/schemas/payout"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Cancels a payout.",
    "tags": [
     "payouts"
    ]
   }
  },
  "/v1/prices": {
   "get": {
    "operationId": "get-v1-prices",
    "parameters": [
     {
      "description": "Only active prices (true) or only archived ones (false).",
      "example": true,
      "in": "query",
      "name": "active",
      "required": false,
      "schema": {
       "type": "boolean"
      }
     },
     {
      "description": "Filter on the creation time, a Unix timestamp: created=<t> for an exact match, or created[gt], created[gte], created[lt], created[lte].",
      "in": "query",
      "name": "created",
      "required": false,
      "schema": {
       "type": "object"
      }
     },
     {
      "description": "Only prices in this currency.",
      "in": "query",
      "name": "currency",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Only the prices with these lookup keys, sent as lookup_keys[]=..., at most 10.",
      "in": "query",
      "name": "lookup_keys",
      "required": false,
      "schema": {
       "items": {
        "type": "string"
       },
       "type": "array"
      }
     },
     {
      "description": "Only the prices of this Product. An unknown product answers resource_missing.",
      "example": "prod_123",
      "in": "query",
      "name": "product",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Only prices of this type.",
      "in": "query",
      "name": "type",
      "required": false,
      "schema": {
       "enum": [
        "one_time"
       ],
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "data": [
          {
           "active": true,
           "created": 1767225600,
           "currency": "usd",
           "id": "price_123",
           "livemode": false,
           "metadata": {},
           "object": "price",
           "product": "prod_123",
           "tax_behavior": "unspecified",
           "type": "one_time",
           "unit_amount": 2000,
           "unit_amount_decimal": "2000"
          }
         ],
         "has_more": false,
         "object": "list",
         "url": "/v1/prices"
        },
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/price"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists price objects, newest first.",
    "tags": [
     "prices"
    ]
   },
   "post": {
    "description": "Send product or product_data, not both, and one of unit_amount, unit_amount_decimal or custom_unit_amount. product may name an archived product, never a deleted one or another store's.",
    "operationId": "post-v1-prices",
    "parameters": [
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "currency": "usd",
        "product": "prod_123",
        "unit_amount": 2000
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "active": {
          "description": "false creates the price archived. Default true.",
          "type": "boolean"
         },
         "currency": {
          "description": "Three-letter ISO code, such as usd or brl. Fluveo normalizes uppercase input.",
          "type": "string"
         },
         "custom_unit_amount": {
          "description": "Lets the buyer choose the amount: enabled=true (required), with optional minimum, maximum and preset in the smallest currency unit. minimum is at least 50 and below maximum, maximum at most 1,000,000 (4,000,000 for brl), and preset between minimum and maximum. Not with unit_amount or unit_amount_decimal.",
          "properties": {
           "enabled": {
            "type": "boolean"
           },
           "maximum": {
            "type": "integer"
           },
           "minimum": {
            "type": "integer"
           },
           "preset": {
            "type": "integer"
           }
          },
          "type": "object"
         },
         "lookup_key": {
          "description": "Your own key for the price, up to 200 characters, unique among the store's prices in this mode. A key another price holds is refused unless transfer_lookup_key=true.",
          "type": "string"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         },
         "nickname": {
          "description": "A name for the price that buyers do not see, up to 5,000 characters.",
          "type": "string"
         },
         "product": {
          "description": "The id of the Product this price is for.",
          "type": "string"
         },
         "product_data": {
          "description": "A new Product to create with this price, in the same write: name (required), with optional id, active, metadata, statement_descriptor, tax_code and unit_label, under the rules of POST /v1/products.",
          "properties": {
           "active": {
            "type": "boolean"
           },
           "id": {
            "type": "string"
           },
           "metadata": {
            "type": "object"
           },
           "name": {
            "type": "string"
           },
           "statement_descriptor": {
            "type": "string"
           },
           "tax_code": {
            "type": "string"
           },
           "unit_label": {
            "type": "string"
           }
          },
          "type": "object"
         },
         "tax_behavior": {
          "description": "Whether the amount includes tax: inclusive, exclusive or unspecified. Once inclusive or exclusive, it cannot change.",
          "enum": [
           "exclusive",
           "inclusive",
           "unspecified"
          ],
          "type": "string"
         },
         "transfer_lookup_key": {
          "description": "true takes lookup_key from the price that holds it, in the same write; that price's lookup_key becomes null and it gets a price.updated event.",
          "type": "boolean"
         },
         "transform_quantity": {
          "description": "Divides the quantity before the amount is applied: divide_by (at least 2) and round (up or down), both required.",
          "properties": {
           "divide_by": {
            "type": "integer"
           },
           "round": {
            "enum": [
             "down",
             "up"
            ],
            "type": "string"
           }
          },
          "type": "object"
         },
         "unit_amount": {
          "description": "The price in the currency's smallest unit (cents for USD, centavos for BRL), 0 or more.",
          "type": "integer"
         },
         "unit_amount_decimal": {
          "description": "The price in the smallest unit as a decimal string, up to 12 decimal places, such as 15.5. Send it or unit_amount, not both.",
          "type": "string"
         }
        },
        "required": [
         "currency"
        ],
        "type": "object"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "active": true,
         "created": 1767225600,
         "currency": "usd",
         "id": "price_123",
         "livemode": false,
         "metadata": {},
         "object": "price",
         "product": "prod_123",
         "tax_behavior": "unspecified",
         "type": "one_time",
         "unit_amount": 2000,
         "unit_amount_decimal": "2000"
        },
        "schema": {
         "$ref": "#/components/schemas/price"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Creates a price.",
    "tags": [
     "prices"
    ]
   }
  },
  "/v1/prices/search": {
   "get": {
    "description": "A query is one or more clauses, each a field, an operator and a quoted value, such as product:\"prod_123\" or active:\"true\". The price fields are active, currency, lookup_key, product, type and metadata[\"key\"]; created is not one. Every price field takes only the operator :. On lookup_key and product it matches a run of whole words in any case; on active (true or false), currency and type it matches the whole value. A - before a clause negates it. field:null matches a field that is absent or empty, and -field:null one that is set. Join clauses with AND or OR (a space means AND), never both in one query and never with parentheses, up to 10 clauses. Quote values with single or double quotes; a backslash keeps the next character as it is. A query Fluveo cannot read answers invalid_request_error with the reason and its column. When has_more is true, send next_page as page with the same query for the next page. Add expand[]=total_count to get total_count, the number of matches. A price is found as soon as its write returns.",
    "operationId": "get-v1-prices-search",
    "parameters": [
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "The next_page of the previous answer, to get the page after it. Send the same query with it.",
      "in": "query",
      "name": "page",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "The search query, in the language the description above gives.",
      "example": "product:\"prod_123\" AND active:\"true\"",
      "in": "query",
      "name": "query",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "data": [
          {
           "active": true,
           "created": 1767225600,
           "currency": "usd",
           "id": "price_123",
           "livemode": false,
           "metadata": {},
           "object": "price",
           "product": "prod_123",
           "tax_behavior": "unspecified",
           "type": "one_time",
           "unit_amount": 2000,
           "unit_amount_decimal": "2000"
          }
         ],
         "has_more": false,
         "next_page": null,
         "object": "search_result",
         "url": "/v1/prices/search"
        },
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/price"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "next_page": {
           "nullable": true,
           "type": "string"
          },
          "object": {
           "enum": [
            "search_result"
           ],
           "type": "string"
          },
          "total_count": {
           "type": "integer"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Searches price objects with a query, newest first.",
    "tags": [
     "prices"
    ]
   }
  },
  "/v1/prices/{price}": {
   "get": {
    "operationId": "get-v1-prices-price",
    "parameters": [
     {
      "description": "The Price's id.",
      "example": "price_123",
      "in": "path",
      "name": "price",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "active": true,
         "created": 1767225600,
         "currency": "usd",
         "id": "price_123",
         "livemode": false,
         "metadata": {},
         "object": "price",
         "product": "prod_123",
         "tax_behavior": "unspecified",
         "type": "one_time",
         "unit_amount": 2000,
         "unit_amount_decimal": "2000"
        },
        "schema": {
         "$ref": "#/components/schemas/price"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a price.",
    "tags": [
     "prices"
    ]
   },
   "post": {
    "description": "Only active, nickname, lookup_key, transfer_lookup_key, tax_behavior and metadata change; unit_amount, currency and product answer parameter_unknown. The price a product names as its default_price cannot be archived.",
    "operationId": "post-v1-prices-price",
    "parameters": [
     {
      "description": "The Price's id.",
      "example": "price_123",
      "in": "path",
      "name": "price",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "nickname": "Launch price"
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "active": {
          "description": "false archives the price; true makes it active again. The price a product names as its default_price cannot be archived.",
          "type": "boolean"
         },
         "lookup_key": {
          "description": "Your own key for the price, up to 200 characters, unique among the store's prices in this mode. A key another price holds is refused unless transfer_lookup_key=true.",
          "type": "string"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         },
         "nickname": {
          "description": "A name for the price that buyers do not see, up to 5,000 characters.",
          "type": "string"
         },
         "tax_behavior": {
          "description": "Whether the amount includes tax: inclusive, exclusive or unspecified. Once inclusive or exclusive, it cannot change.",
          "enum": [
           "exclusive",
           "inclusive",
           "unspecified"
          ],
          "type": "string"
         },
         "transfer_lookup_key": {
          "description": "true takes lookup_key from the price that holds it, in the same write; that price's lookup_key becomes null and it gets a price.updated event.",
          "type": "boolean"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "active": true,
         "created": 1767225600,
         "currency": "usd",
         "id": "price_123",
         "livemode": false,
         "metadata": {},
         "object": "price",
         "product": "prod_123",
         "tax_behavior": "unspecified",
         "type": "one_time",
         "unit_amount": 2000,
         "unit_amount_decimal": "2000"
        },
        "schema": {
         "$ref": "#/components/schemas/price"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Updates a price.",
    "tags": [
     "prices"
    ]
   }
  },
  "/v1/products": {
   "get": {
    "operationId": "get-v1-products",
    "parameters": [
     {
      "description": "Only active products (true) or only archived ones (false).",
      "example": true,
      "in": "query",
      "name": "active",
      "required": false,
      "schema": {
       "type": "boolean"
      }
     },
     {
      "description": "Filter on the creation time, a Unix timestamp: created=<t> for an exact match, or created[gt], created[gte], created[lt], created[lte].",
      "in": "query",
      "name": "created",
      "required": false,
      "schema": {
       "type": "object"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Only the products with these ids, sent as ids[]=prod_...",
      "in": "query",
      "name": "ids",
      "required": false,
      "schema": {
       "items": {
        "type": "string"
       },
       "type": "array"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "example": 3,
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Only shippable products (true) or only the others (false).",
      "in": "query",
      "name": "shippable",
      "required": false,
      "schema": {
       "type": "boolean"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Only products of this type: good or service.",
      "in": "query",
      "name": "type",
      "required": false,
      "schema": {
       "enum": [
        "good",
        "service"
       ],
       "type": "string"
      }
     },
     {
      "description": "Only the products with this url.",
      "in": "query",
      "name": "url",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "data": [
          {
           "active": true,
           "created": 1767225600,
           "default_price": "price_123",
           "id": "prod_123",
           "livemode": false,
           "metadata": {},
           "name": "T-shirt",
           "object": "product",
           "type": "service",
           "updated": 1767225600
          }
         ],
         "has_more": false,
         "object": "list",
         "url": "/v1/products"
        },
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/product"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists product objects, newest first.",
    "tags": [
     "products"
    ]
   },
   "post": {
    "operationId": "post-v1-products",
    "parameters": [
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "default_price_data": {
         "currency": "usd",
         "unit_amount": 2000
        },
        "description": "Cotton, size M",
        "name": "T-shirt"
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "active": {
          "description": "false creates the product archived. Default true.",
          "type": "boolean"
         },
         "default_price_data": {
          "description": "A Price to create with the product, in the same write, which becomes its default_price: currency, and unit_amount, unit_amount_decimal or custom_unit_amount, with optional tax_behavior and metadata. currency_options is refused. A refusal names the field as default_price_data[...].",
          "properties": {
           "currency": {
            "type": "string"
           },
           "custom_unit_amount": {
            "properties": {
             "enabled": {
              "type": "boolean"
             },
             "maximum": {
              "type": "integer"
             },
             "minimum": {
              "type": "integer"
             },
             "preset": {
              "type": "integer"
             }
            },
            "type": "object"
           },
           "metadata": {
            "type": "object"
           },
           "tax_behavior": {
            "enum": [
             "exclusive",
             "inclusive",
             "unspecified"
            ],
            "type": "string"
           },
           "unit_amount": {
            "type": "integer"
           },
           "unit_amount_decimal": {
            "type": "string"
           }
          },
          "type": "object"
         },
         "description": {
          "description": "A longer text about the product, up to 40,000 characters. An empty value is refused with parameter_invalid_empty, and nothing is created. The same Idempotency-Key then works again with a text.",
          "type": "string"
         },
         "id": {
          "description": "Your own id for the product, 1 to 200 letters, digits, _ or -. It is unique within your store and mode only, so another store may use the same one. Leave it out and Fluveo draws prod_ and 24 characters. An id in use answers resource_already_exists; a deleted product's id may be used again.",
          "type": "string"
         },
         "images": {
          "description": "Up to 8 image URLs. An image uploaded in the dashboard is kept as a Fluveo file and listed here as a public file link URL (.../links/link_...), which loads without a key.",
          "items": {
           "type": "string"
          },
          "type": "array"
         },
         "marketing_features": {
          "description": "Up to 15 selling points, each sent as marketing_features[0][name], up to 80 characters.",
          "items": {
           "properties": {
            "name": {
             "type": "string"
            }
           },
           "type": "object"
          },
          "type": "array"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         },
         "name": {
          "description": "The product's name, as buyers see it.",
          "type": "string"
         },
         "package_dimensions": {
          "description": "The packed product's height, length, weight and width, as numbers; all four are required.",
          "properties": {
           "height": {
            "type": "number"
           },
           "length": {
            "type": "number"
           },
           "weight": {
            "type": "number"
           },
           "width": {
            "type": "number"
           }
          },
          "type": "object"
         },
         "shippable": {
          "description": "true when the product is shipped to the buyer.",
          "type": "boolean"
         },
         "statement_descriptor": {
          "description": "Text on the buyer's card statement for this product, up to 22 characters, with at least one Latin letter and none of < > ' \". Only on a product of type service.",
          "type": "string"
         },
         "tax_code": {
          "description": "A tax code id, txcd_ and 8 digits. Fluveo checks only its form, not that the code exists, and never expands it.",
          "type": "string"
         },
         "type": {
          "description": "service (the default) or good. statement_descriptor and unit_label are taken only on a service.",
          "enum": [
           "good",
           "service"
          ],
          "type": "string"
         },
         "unit_label": {
          "description": "The name of one unit of the product, such as seat, up to 12 characters. Only on a product of type service.",
          "type": "string"
         },
         "url": {
          "description": "A public web page about the product.",
          "type": "string"
         }
        },
        "required": [
         "name"
        ],
        "type": "object"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "active": true,
         "created": 1767225600,
         "default_price": "price_123",
         "id": "prod_123",
         "livemode": false,
         "metadata": {},
         "name": "T-shirt",
         "object": "product",
         "type": "service",
         "updated": 1767225600
        },
        "schema": {
         "$ref": "#/components/schemas/product"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Creates a product.",
    "tags": [
     "products"
    ]
   }
  },
  "/v1/products/search": {
   "get": {
    "description": "A query is one or more clauses, each a field, an operator and a quoted value, such as name~\"shirt\" or active:\"true\". The product fields are active, description, name, shippable, url and metadata[\"key\"]; created is not one. The operator : matches a run of whole words of name, description or url, in order and in any case, and the whole value of active or shippable (true or false). The operator ~ finds a part of name, description or url of at least three characters; a shorter part matches nothing. A - before a clause negates it. field:null matches a field that is absent or empty, and -field:null one that is set. Join clauses with AND or OR (a space means AND), never both in one query and never with parentheses, up to 10 clauses. Quote values with single or double quotes; a backslash keeps the next character as it is. A query Fluveo cannot read answers invalid_request_error with the reason and its column. When has_more is true, send next_page as page with the same query for the next page. Add expand[]=total_count to get total_count, the number of matches. A product is found as soon as its write returns.",
    "operationId": "get-v1-products-search",
    "parameters": [
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "The next_page of the previous answer, to get the page after it. Send the same query with it.",
      "in": "query",
      "name": "page",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "The search query, in the language the description above gives.",
      "example": "active:\"true\" AND name~\"shirt\"",
      "in": "query",
      "name": "query",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "data": [
          {
           "active": true,
           "created": 1767225600,
           "default_price": "price_123",
           "id": "prod_123",
           "livemode": false,
           "metadata": {},
           "name": "T-shirt",
           "object": "product",
           "type": "service",
           "updated": 1767225600
          }
         ],
         "has_more": false,
         "next_page": null,
         "object": "search_result",
         "url": "/v1/products/search"
        },
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/product"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "next_page": {
           "nullable": true,
           "type": "string"
          },
          "object": {
           "enum": [
            "search_result"
           ],
           "type": "string"
          },
          "total_count": {
           "type": "integer"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Searches product objects with a query, newest first.",
    "tags": [
     "products"
    ]
   }
  },
  "/v1/products/{id}": {
   "delete": {
    "description": "A product that has a price, archived or not, cannot be deleted: archive it with active=false instead. After the delete its id answers resource_missing, and you may choose it again for a new product. An Idempotency-Key is ignored here.",
    "operationId": "delete-v1-products-id",
    "parameters": [
     {
      "description": "The object's id.",
      "example": "prod_123",
      "in": "path",
      "name": "id",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "deleted": true,
         "id": "prod_123",
         "object": "product"
        },
        "schema": {
         "properties": {
          "deleted": {
           "type": "boolean"
          },
          "id": {
           "type": "string"
          },
          "object": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Deletes a product that has no prices.",
    "tags": [
     "products"
    ]
   },
   "get": {
    "operationId": "get-v1-products-id",
    "parameters": [
     {
      "description": "The object's id.",
      "example": "prod_123",
      "in": "path",
      "name": "id",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "active": true,
         "created": 1767225600,
         "default_price": "price_123",
         "id": "prod_123",
         "livemode": false,
         "metadata": {},
         "name": "T-shirt",
         "object": "product",
         "type": "service",
         "updated": 1767225600
        },
        "schema": {
         "$ref": "#/components/schemas/product"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a product.",
    "tags": [
     "products"
    ]
   },
   "post": {
    "description": "Send a field empty to clear it: description, url, images, marketing_features, package_dimensions, statement_descriptor, unit_label, tax_code or shippable. metadata merges key by key: an empty value removes that key, and metadata= with no key empties it.",
    "operationId": "post-v1-products-id",
    "parameters": [
     {
      "description": "The object's id.",
      "example": "prod_123",
      "in": "path",
      "name": "id",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "default_price": "price_123",
        "metadata": {
         "sku": "TS-M"
        }
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "active": {
          "description": "false archives the product; true makes it active again.",
          "type": "boolean"
         },
         "default_price": {
          "description": "The id of an active Price of this product, to make it the product's default price.",
          "type": "string"
         },
         "description": {
          "description": "A longer text about the product, up to 40,000 characters. Empty clears it.",
          "type": "string"
         },
         "images": {
          "description": "Up to 8 image URLs. An image uploaded in the dashboard is kept as a Fluveo file and listed here as a public file link URL (.../links/link_...), which loads without a key.",
          "items": {
           "type": "string"
          },
          "type": "array"
         },
         "marketing_features": {
          "description": "Up to 15 selling points, each sent as marketing_features[0][name], up to 80 characters.",
          "items": {
           "properties": {
            "name": {
             "type": "string"
            }
           },
           "type": "object"
          },
          "type": "array"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         },
         "name": {
          "description": "The product's name, as buyers see it. It cannot be emptied.",
          "type": "string"
         },
         "package_dimensions": {
          "description": "The packed product's height, length, weight and width, as numbers; all four are required.",
          "properties": {
           "height": {
            "type": "number"
           },
           "length": {
            "type": "number"
           },
           "weight": {
            "type": "number"
           },
           "width": {
            "type": "number"
           }
          },
          "type": "object"
         },
         "shippable": {
          "description": "true when the product is shipped to the buyer.",
          "type": "boolean"
         },
         "statement_descriptor": {
          "description": "Text on the buyer's card statement for this product, up to 22 characters, with at least one Latin letter and none of < > ' \". Only on a product of type service.",
          "type": "string"
         },
         "tax_code": {
          "description": "A tax code id, txcd_ and 8 digits. Fluveo checks only its form, not that the code exists, and never expands it.",
          "type": "string"
         },
         "unit_label": {
          "description": "The name of one unit of the product, such as seat, up to 12 characters. Only on a product of type service.",
          "type": "string"
         },
         "url": {
          "description": "A public web page about the product. Empty clears it.",
          "type": "string"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "active": true,
         "created": 1767225600,
         "default_price": "price_123",
         "id": "prod_123",
         "livemode": false,
         "metadata": {},
         "name": "T-shirt",
         "object": "product",
         "type": "service",
         "updated": 1767225600
        },
        "schema": {
         "$ref": "#/components/schemas/product"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Updates a product.",
    "tags": [
     "products"
    ]
   }
  },
  "/v1/radar/early_fraud_warnings": {
   "get": {
    "operationId": "get-v1-radar-early-fraud-warnings",
    "parameters": [
     {
      "description": "Only the warnings of this charge. A charge id that is not the store's is refused with 404 resource_missing.",
      "in": "query",
      "name": "charge",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Filter on the creation time, a Unix timestamp: created=<t> for an exact match, or created[gt], created[gte], created[lt], created[lte].",
      "in": "query",
      "name": "created",
      "required": false,
      "schema": {
       "type": "object"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Only the warnings of this PaymentIntent's charges. A PaymentIntent id that is not the store's is refused with 404 resource_missing.",
      "in": "query",
      "name": "payment_intent",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/radar.early_fraud_warning"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists the store's early fraud warnings, newest first.",
    "tags": [
     "early_fraud_warnings"
    ]
   }
  },
  "/v1/radar/early_fraud_warnings/{early_fraud_warning}": {
   "get": {
    "operationId": "get-v1-radar-early-fraud-warnings-early-fraud-warning",
    "parameters": [
     {
      "description": "The id of the radar.early fraud warning.",
      "example": "issfr_123",
      "in": "path",
      "name": "early_fraud_warning",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/radar.early_fraud_warning"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves one early fraud warning.",
    "tags": [
     "early_fraud_warnings"
    ]
   }
  },
  "/v1/refunds": {
   "get": {
    "operationId": "get-v1-refunds",
    "parameters": [
     {
      "description": "Only the refunds of this charge.",
      "in": "query",
      "name": "charge",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Filter on the creation time, a Unix timestamp: created=<t> for an exact match, or created[gt], created[gte], created[lt], created[lte].",
      "in": "query",
      "name": "created",
      "required": false,
      "schema": {
       "type": "object"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Only the refunds of this PaymentIntent.",
      "example": "pi_123",
      "in": "query",
      "name": "payment_intent",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "count": 1,
         "data": [
          {
           "amount": 500,
           "charge": "ch_123",
           "created": 1767225600,
           "currency": "usd",
           "id": "re_123",
           "metadata": {},
           "object": "refund",
           "payment_intent": "pi_123",
           "reason": "requested_by_customer",
           "status": "succeeded"
          }
         ],
         "has_more": false,
         "object": "list",
         "url": "/v1/refunds"
        },
        "schema": {
         "properties": {
          "count": {
           "type": "integer"
          },
          "data": {
           "items": {
            "$ref": "#/components/schemas/refund"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists refund objects, newest first.",
    "tags": [
     "refunds"
    ]
   },
   "post": {
    "operationId": "post-v1-refunds",
    "parameters": [
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "amount": 500,
        "payment_intent": "pi_123",
        "reason": "requested_by_customer"
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "amount": {
          "description": "How much to refund, in the smallest unit. Leave it out to refund what is left.",
          "type": "integer"
         },
         "charge": {
          "description": "The charge to refund (ch_...). Send charge or payment_intent.",
          "type": "string"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         },
         "payment_intent": {
          "description": "The PaymentIntent to refund (pi_...). Send payment_intent or charge.",
          "type": "string"
         },
         "reason": {
          "description": "Why you refund.",
          "enum": [
           "duplicate",
           "fraudulent",
           "requested_by_customer"
          ],
          "type": "string"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 500,
         "charge": "ch_123",
         "created": 1767225600,
         "currency": "usd",
         "id": "re_123",
         "metadata": {},
         "object": "refund",
         "payment_intent": "pi_123",
         "reason": "requested_by_customer",
         "status": "succeeded"
        },
        "schema": {
         "$ref": "#/components/schemas/refund"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Creates a refund.",
    "tags": [
     "refunds"
    ]
   }
  },
  "/v1/refunds/{refund}": {
   "get": {
    "operationId": "get-v1-refunds-refund",
    "parameters": [
     {
      "description": "The Refund's id.",
      "example": "re_123",
      "in": "path",
      "name": "refund",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 500,
         "charge": "ch_123",
         "created": 1767225600,
         "currency": "usd",
         "id": "re_123",
         "metadata": {},
         "object": "refund",
         "payment_intent": "pi_123",
         "reason": "requested_by_customer",
         "status": "succeeded"
        },
        "schema": {
         "$ref": "#/components/schemas/refund"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a refund.",
    "tags": [
     "refunds"
    ]
   },
   "post": {
    "operationId": "post-v1-refunds-refund",
    "parameters": [
     {
      "description": "The Refund's id.",
      "example": "re_123",
      "in": "path",
      "name": "refund",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "metadata": {
         "ticket": "4411"
        }
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "amount": 500,
         "charge": "ch_123",
         "created": 1767225600,
         "currency": "usd",
         "id": "re_123",
         "metadata": {},
         "object": "refund",
         "payment_intent": "pi_123",
         "reason": "requested_by_customer",
         "status": "succeeded"
        },
        "schema": {
         "$ref": "#/components/schemas/refund"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Updates a refund.",
    "tags": [
     "refunds"
    ]
   }
  },
  "/v1/reserve/holds": {
   "get": {
    "description": "A Fluveo extension, listed under Fluveo extensions: not part of API version 2026-05-27.dahlia. Its objects are the reserve objects of the store's account.",
    "operationId": "get-v1-reserve-holds",
    "parameters": [
     {
      "description": "Only holds in this currency.",
      "in": "query",
      "name": "currency",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "true for holds that may be released now, false for the others.",
      "in": "query",
      "name": "is_releasable",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Only the holds of this reserve plan.",
      "in": "query",
      "name": "reserve_plan",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Only the holds this reserve release released money from.",
      "in": "query",
      "name": "reserve_release",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Only the holds taken from this charge (ch_...).",
      "in": "query",
      "name": "source_charge",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "data": {
           "items": {
            "type": "object"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists the amounts held back under the store's reserve plans, newest first. Filters: reserve_plan, is_releasable, currency, source_charge, reserve_release.",
    "tags": [
     "reserves"
    ]
   }
  },
  "/v1/reserve/holds/{id}": {
   "get": {
    "description": "A Fluveo extension, listed under Fluveo extensions: not part of API version 2026-05-27.dahlia. It is the retrieve half of the list and shows the object exactly as its list row.",
    "operationId": "get-v1-reserve-holds-id",
    "parameters": [
     {
      "description": "The reserve hold's id.",
      "example": "reshold_123",
      "in": "path",
      "name": "id",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves one reserve hold. Expand: reserve_plan, source_charge.",
    "tags": [
     "reserves"
    ]
   }
  },
  "/v1/reserve/plans": {
   "get": {
    "description": "A Fluveo extension, listed under Fluveo extensions: not part of API version 2026-05-27.dahlia. Its objects are the reserve objects of the store's account.",
    "operationId": "get-v1-reserve-plans",
    "parameters": [
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Filter by status.",
      "in": "query",
      "name": "status",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "data": {
           "items": {
            "type": "object"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists the reserve plans on the store's account. Filter: status.",
    "tags": [
     "reserves"
    ]
   }
  },
  "/v1/reserve/plans/{id}": {
   "get": {
    "description": "A Fluveo extension, listed under Fluveo extensions: not part of API version 2026-05-27.dahlia. It is the retrieve half of the list and shows the object exactly as its list row.",
    "operationId": "get-v1-reserve-plans-id",
    "parameters": [
     {
      "description": "The reserve plan's id.",
      "example": "resplan_123",
      "in": "path",
      "name": "id",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves one reserve plan of the store's account.",
    "tags": [
     "reserves"
    ]
   }
  },
  "/v1/reserve/releases": {
   "get": {
    "description": "A Fluveo extension, listed under Fluveo extensions: not part of API version 2026-05-27.dahlia. Its objects are the reserve objects of the store's account.",
    "operationId": "get-v1-reserve-releases",
    "parameters": [
     {
      "description": "Only releases in this currency.",
      "in": "query",
      "name": "currency",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Only the releases of this reserve hold.",
      "in": "query",
      "name": "reserve_hold",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Only the releases of this reserve plan's holds.",
      "in": "query",
      "name": "reserve_plan",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "data": {
           "items": {
            "type": "object"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists the releases of the store's reserve holds, newest first. Filters: reserve_hold, reserve_plan, currency.",
    "tags": [
     "reserves"
    ]
   }
  },
  "/v1/reserve/releases/{id}": {
   "get": {
    "description": "A Fluveo extension, listed under Fluveo extensions: not part of API version 2026-05-27.dahlia. It is the retrieve half of the list and shows the object exactly as its list row.",
    "operationId": "get-v1-reserve-releases-id",
    "parameters": [
     {
      "description": "The reserve release's id.",
      "example": "resrel_123",
      "in": "path",
      "name": "id",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves one reserve release. Expand: reserve_plan, reserve_hold.",
    "tags": [
     "reserves"
    ]
   }
  },
  "/v1/setup_attempts": {
   "get": {
    "operationId": "get-v1-setup-attempts",
    "parameters": [
     {
      "description": "Filter on the creation time, a Unix timestamp: created=<t> for an exact match, or created[gt], created[gte], created[lt], created[lte].",
      "in": "query",
      "name": "created",
      "required": false,
      "schema": {
       "type": "object"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "The SetupIntent whose attempts are listed.",
      "example": "seti_123",
      "in": "query",
      "name": "setup_intent",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/setup_attempt"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists a SetupIntent's confirm attempts, newest first.",
    "tags": [
     "setup_intents"
    ]
   }
  },
  "/v1/setup_intents": {
   "get": {
    "operationId": "get-v1-setup-intents",
    "parameters": [
     {
      "description": "true lists only the SetupIntents created or updated with attach_to_self=true; false lists only the others.",
      "in": "query",
      "name": "attach_to_self",
      "required": false,
      "schema": {
       "type": "boolean"
      }
     },
     {
      "description": "Filter on the creation time, a Unix timestamp: created=<t> for an exact match, or created[gt], created[gte], created[lt], created[lte].",
      "in": "query",
      "name": "created",
      "required": false,
      "schema": {
       "type": "object"
      }
     },
     {
      "description": "Only the SetupIntents of this customer.",
      "example": "cus_123",
      "in": "query",
      "name": "customer",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Only the SetupIntents that use this payment method.",
      "in": "query",
      "name": "payment_method",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/setup_intent"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists the store's SetupIntents, newest first.",
    "tags": [
     "setup_intents"
    ]
   },
   "post": {
    "operationId": "post-v1-setup-intents",
    "parameters": [
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "confirm": true,
        "customer": "cus_123",
        "payment_method": "pm_123",
        "return_url": "https://example.com/saved",
        "usage": "off_session"
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "attach_to_self": {
          "description": "A flag for a payment method attached to the account itself. A card cannot be: the SetupIntent keeps the value, and its confirm is refused with payment_method_unsupported_type. Not with customer.",
          "type": "boolean"
         },
         "automatic_payment_methods": {
          "description": "enabled=true (the default when payment_method_types is not sent) with allow_redirects always (the default) or never; enabled=false only together with payment_method_types. Judged as on a PaymentIntent, and served back on the object. Not taken by update or confirm.",
          "properties": {
           "allow_redirects": {
            "enum": [
             "always",
             "never"
            ],
            "type": "string"
           },
           "enabled": {
            "type": "boolean"
           }
          },
          "type": "object"
         },
         "confirm": {
          "description": "true confirms the SetupIntent in the same call.",
          "type": "boolean"
         },
         "confirmation_token": {
          "description": "A ConfirmationToken to confirm with. Fluveo makes none, so any value answers resource_missing.",
          "type": "string"
         },
         "customer": {
          "description": "The customer the card is saved for. Once the SetupIntent succeeds, the payment method is attached to this customer.",
          "type": "string"
         },
         "description": {
          "description": "A note for your own records.",
          "type": "string"
         },
         "excluded_payment_method_types": {
          "description": "Payment method types to leave out; not with payment_method_types. Excluding card leaves no type and is refused.",
          "items": {
           "type": "string"
          },
          "type": "array"
         },
         "flow_directions": {
          "description": "The directions the card is set up for: inbound only, since a card cannot be paid out to (outbound is refused).",
          "items": {
           "enum": [
            "inbound",
            "outbound"
           ],
           "type": "string"
          },
          "type": "array"
         },
         "mandate_data": {
          "description": "The customer's acceptance of a mandate, checked field by field. Only with confirm=true. A card makes no mandate, so mandate stays null.",
          "properties": {
           "customer_acceptance": {
            "properties": {
             "accepted_at": {
              "type": "integer"
             },
             "offline": {
              "type": "object"
             },
             "online": {
              "properties": {
               "ip_address": {
                "type": "string"
               },
               "user_agent": {
                "type": "string"
               }
              },
              "type": "object"
             },
             "type": {
              "enum": [
               "offline",
               "online"
              ],
              "type": "string"
             }
            },
            "type": "object"
           }
          },
          "type": "object"
         },
         "metadata": {
          "description": "Your own keys and values.",
          "type": "object"
         },
         "on_behalf_of": {
          "description": "Another account to set the card up for. A Fluveo store has none, so any value answers resource_missing.",
          "type": "string"
         },
         "payment_method": {
          "description": "The card to set up: a PaymentMethod of the store, or a test PaymentMethod name such as pm_card_visa in test mode.",
          "type": "string"
         },
         "payment_method_data": {
          "description": "A new card to set up, instead of payment_method: payment_method_data[type]=card with the card in payment_method_data[card] (number, exp_month, exp_year, cvc), for a store with raw card data access. The card becomes a new PaymentMethod, which the SetupIntent names. Do not send it together with payment_method.",
          "properties": {
           "allow_redisplay": {
            "description": "Whether the new PaymentMethod may be shown to the customer again: always, limited or unspecified (the default).",
            "enum": [
             "always",
             "limited",
             "unspecified"
            ],
            "type": "string"
           },
           "billing_details": {
            "description": "The card holder's name, email, phone and address, kept on the new PaymentMethod.",
            "properties": {
             "address": {
              "properties": {
               "city": {
                "type": "string"
               },
               "country": {
                "type": "string"
               },
               "line1": {
                "type": "string"
               },
               "line2": {
                "type": "string"
               },
               "postal_code": {
                "type": "string"
               },
               "state": {
                "type": "string"
               }
              },
              "type": "object"
             },
             "email": {
              "type": "string"
             },
             "name": {
              "type": "string"
             },
             "phone": {
              "type": "string"
             },
             "tax_id": {
              "type": "string"
             }
            },
            "type": "object"
           },
           "metadata": {
            "description": "Your own key-value pairs for the new PaymentMethod.",
            "type": "object"
           },
           "type": {
            "description": "card, the only type a SetupIntent sets up.",
            "enum": [
             "card"
            ],
            "type": "string"
           }
          },
          "type": "object"
         },
         "payment_method_options": {
          "description": "Card options: request_three_d_secure, mandate_options, and with confirm=true network and three_d_secure. An option of another type answers unsupported.",
          "properties": {
           "card": {
            "description": "Card options.",
            "properties": {
             "mandate_options": {
              "description": "The mandate an Indian card needs for later charges: amount, amount_type (fixed or maximum), currency, interval (day, week, month, year or sporadic), reference, start_date and supported_types[] (india) are required, description, end_date and interval_count optional. Sent whole each time and kept on the SetupIntent; a card that is not Indian makes no mandate.",
              "properties": {
               "amount": {
                "type": "integer"
               },
               "amount_type": {
                "enum": [
                 "fixed",
                 "maximum"
                ],
                "type": "string"
               },
               "currency": {
                "type": "string"
               },
               "description": {
                "type": "string"
               },
               "end_date": {
                "type": "integer"
               },
               "interval": {
                "enum": [
                 "day",
                 "month",
                 "sporadic",
                 "week",
                 "year"
                ],
                "type": "string"
               },
               "interval_count": {
                "type": "integer"
               },
               "reference": {
                "type": "string"
               },
               "start_date": {
                "type": "integer"
               },
               "supported_types": {
                "items": {
                 "type": "string"
                },
                "type": "array"
               }
              },
              "type": "object"
             },
             "network": {
              "description": "The card network to use for this card. On a create it needs confirm=true and must be a network the card carries; a confirm keeps it on the SetupIntent and uses it when the card carries it, and a confirm without it clears it.",
              "enum": [
               "amex",
               "cartes_bancaires",
               "diners",
               "discover",
               "eftpos_au",
               "girocard",
               "interac",
               "jcb",
               "link",
               "mastercard",
               "unionpay",
               "visa",
               "unknown"
              ],
              "type": "string"
             },
             "request_three_d_secure": {
              "description": "automatic (the default) asks for 3D Secure when the bank or the card network requires it; any and challenge ask for it whenever the card supports it.",
              "enum": [
               "automatic",
               "any",
               "challenge"
              ],
              "type": "string"
             },
             "three_d_secure": {
              "description": "3D Secure results your own authentication already got (version, cryptogram, transaction_id, electronic_commerce_indicator, ares_trans_status, requestor_challenge_indicator, network_options[cartes_bancaires]), used by this confirm instead of a new challenge. Only with a confirm, never with request_three_d_secure in the same request, and never shown or kept on the SetupIntent.",
              "properties": {
               "ares_trans_status": {
                "enum": [
                 "A",
                 "C",
                 "I",
                 "N",
                 "R",
                 "U",
                 "Y"
                ],
                "type": "string"
               },
               "cryptogram": {
                "type": "string"
               },
               "electronic_commerce_indicator": {
                "enum": [
                 "01",
                 "02",
                 "05",
                 "06",
                 "07"
                ],
                "type": "string"
               },
               "network_options": {
                "type": "object"
               },
               "requestor_challenge_indicator": {
                "type": "string"
               },
               "transaction_id": {
                "type": "string"
               },
               "version": {
                "enum": [
                 "1.0.2",
                 "2.1.0",
                 "2.2.0",
                 "2.3.0",
                 "2.3.1"
                ],
                "type": "string"
               }
              },
              "type": "object"
             }
            },
            "type": "object"
           }
          },
          "type": "object"
         },
         "payment_method_types": {
          "description": "card, or boleto on a store that takes Boleto. Without it, the SetupIntent has automatic_payment_methods and lists every method the store takes that its payment method configuration has on and that a SetupIntent saves (card, and boleto in Brazil; pix is never saved), less any excluded_payment_method_types. A confirm takes any method of the list.",
          "items": {
           "enum": [
            "card",
            "boleto"
           ],
           "type": "string"
          },
          "type": "array"
         },
         "return_url": {
          "description": "Where the buyer comes back after 3D Secure. Only with confirm=true.",
          "type": "string"
         },
         "single_use": {
          "description": "amount and currency of a single-use mandate. Kept, but a card SetupIntent with it cannot be confirmed, since single_use is refused for a card.",
          "properties": {
           "amount": {
            "type": "integer"
           },
           "currency": {
            "type": "string"
           }
          },
          "type": "object"
         },
         "usage": {
          "description": "off_session (the default) to charge the card later without the buyer, or on_session.",
          "enum": [
           "off_session",
           "on_session"
          ],
          "type": "string"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/setup_intent"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Creates a SetupIntent, and confirms it at once with confirm=true.",
    "tags": [
     "setup_intents"
    ]
   }
  },
  "/v1/setup_intents/{intent}": {
   "get": {
    "operationId": "get-v1-setup-intents-intent",
    "parameters": [
     {
      "description": "The PaymentIntent's id.",
      "example": "seti_123",
      "in": "path",
      "name": "intent",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/setup_intent"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a SetupIntent. One that waits on the buyer's 3D Secure is read again from the card network first.",
    "tags": [
     "setup_intents"
    ]
   },
   "post": {
    "operationId": "post-v1-setup-intents-intent",
    "parameters": [
     {
      "description": "The PaymentIntent's id.",
      "example": "seti_123",
      "in": "path",
      "name": "intent",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "metadata": {
         "order_id": "1042"
        }
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "attach_to_self": {
          "description": "A flag for a payment method attached to the account itself; true only together with payment_method. A card cannot be: its confirm is refused with payment_method_unsupported_type.",
          "type": "boolean"
         },
         "customer": {
          "description": "The customer the card is saved for; it can be set once, and the same customer again changes nothing. Another customer, or an empty value, is refused.",
          "type": "string"
         },
         "description": {
          "description": "A note for your own records; an empty value clears it.",
          "type": "string"
         },
         "flow_directions": {
          "description": "The directions the card is set up for: inbound only, since a card cannot be paid out to (outbound is refused).",
          "items": {
           "enum": [
            "inbound",
            "outbound"
           ],
           "type": "string"
          },
          "type": "array"
         },
         "metadata": {
          "description": "Your own keys and values; an empty value removes a key.",
          "type": "object"
         },
         "payment_method": {
          "description": "The card to set up. The SetupIntent goes back to requires_confirmation.",
          "type": "string"
         },
         "payment_method_data": {
          "description": "A new card to set up, instead of payment_method, as on create. The SetupIntent names the new PaymentMethod and goes back to requires_confirmation. Do not send it together with payment_method.",
          "properties": {
           "allow_redisplay": {
            "description": "Whether the new PaymentMethod may be shown to the customer again: always, limited or unspecified (the default).",
            "enum": [
             "always",
             "limited",
             "unspecified"
            ],
            "type": "string"
           },
           "billing_details": {
            "description": "The card holder's name, email, phone and address, kept on the new PaymentMethod.",
            "properties": {
             "address": {
              "properties": {
               "city": {
                "type": "string"
               },
               "country": {
                "type": "string"
               },
               "line1": {
                "type": "string"
               },
               "line2": {
                "type": "string"
               },
               "postal_code": {
                "type": "string"
               },
               "state": {
                "type": "string"
               }
              },
              "type": "object"
             },
             "email": {
              "type": "string"
             },
             "name": {
              "type": "string"
             },
             "phone": {
              "type": "string"
             },
             "tax_id": {
              "type": "string"
             }
            },
            "type": "object"
           },
           "metadata": {
            "description": "Your own key-value pairs for the new PaymentMethod.",
            "type": "object"
           },
           "type": {
            "description": "card, the only type a SetupIntent sets up.",
            "enum": [
             "card"
            ],
            "type": "string"
           }
          },
          "type": "object"
         },
         "payment_method_options": {
          "description": "Card options: request_three_d_secure, network and mandate_options. three_d_secure is taken only by a confirm, and an option of another type answers unsupported.",
          "properties": {
           "card": {
            "description": "Card options.",
            "properties": {
             "mandate_options": {
              "description": "The mandate an Indian card needs for later charges: amount, amount_type (fixed or maximum), currency, interval (day, week, month, year or sporadic), reference, start_date and supported_types[] (india) are required, description, end_date and interval_count optional. Sent whole each time and kept on the SetupIntent; a card that is not Indian makes no mandate.",
              "properties": {
               "amount": {
                "type": "integer"
               },
               "amount_type": {
                "enum": [
                 "fixed",
                 "maximum"
                ],
                "type": "string"
               },
               "currency": {
                "type": "string"
               },
               "description": {
                "type": "string"
               },
               "end_date": {
                "type": "integer"
               },
               "interval": {
                "enum": [
                 "day",
                 "month",
                 "sporadic",
                 "week",
                 "year"
                ],
                "type": "string"
               },
               "interval_count": {
                "type": "integer"
               },
               "reference": {
                "type": "string"
               },
               "start_date": {
                "type": "integer"
               },
               "supported_types": {
                "items": {
                 "type": "string"
                },
                "type": "array"
               }
              },
              "type": "object"
             },
             "network": {
              "description": "A card network, checked and shown in this answer only: an update does not keep it, so the next read and the confirm do not have it.",
              "enum": [
               "amex",
               "cartes_bancaires",
               "diners",
               "discover",
               "eftpos_au",
               "girocard",
               "interac",
               "jcb",
               "link",
               "mastercard",
               "unionpay",
               "visa",
               "unknown"
              ],
              "type": "string"
             },
             "request_three_d_secure": {
              "description": "automatic (the default) asks for 3D Secure when the bank or the card network requires it; any and challenge ask for it whenever the card supports it.",
              "enum": [
               "automatic",
               "any",
               "challenge"
              ],
              "type": "string"
             }
            },
            "type": "object"
           }
          },
          "type": "object"
         },
         "payment_method_types": {
          "description": "card, or boleto on a store that takes Boleto.",
          "items": {
           "enum": [
            "card",
            "boleto"
           ],
           "type": "string"
          },
          "type": "array"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/setup_intent"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Updates a SetupIntent's customer, payment method, description, metadata or 3D Secure request.",
    "tags": [
     "setup_intents"
    ]
   }
  },
  "/v1/setup_intents/{intent}/cancel": {
   "post": {
    "operationId": "post-v1-setup-intents-intent-cancel",
    "parameters": [
     {
      "description": "The PaymentIntent's id.",
      "example": "seti_123",
      "in": "path",
      "name": "intent",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "cancellation_reason": "requested_by_customer"
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "cancellation_reason": {
          "description": "Why the SetupIntent was canceled.",
          "enum": [
           "abandoned",
           "duplicate",
           "requested_by_customer"
          ],
          "type": "string"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/setup_intent"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Cancels a SetupIntent that has not succeeded.",
    "tags": [
     "setup_intents"
    ]
   }
  },
  "/v1/setup_intents/{intent}/confirm": {
   "post": {
    "operationId": "post-v1-setup-intents-intent-confirm",
    "parameters": [
     {
      "description": "The PaymentIntent's id.",
      "example": "seti_123",
      "in": "path",
      "name": "intent",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "payment_method": "pm_123",
        "return_url": "https://example.com/saved"
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "confirmation_token": {
          "description": "A ConfirmationToken to confirm with. Fluveo makes none, so any value answers resource_missing.",
          "type": "string"
         },
         "mandate_data": {
          "description": "The customer's acceptance of a mandate, checked field by field. A card makes no mandate, so mandate stays null.",
          "properties": {
           "customer_acceptance": {
            "properties": {
             "accepted_at": {
              "type": "integer"
             },
             "offline": {
              "type": "object"
             },
             "online": {
              "properties": {
               "ip_address": {
                "type": "string"
               },
               "user_agent": {
                "type": "string"
               }
              },
              "type": "object"
             },
             "type": {
              "enum": [
               "offline",
               "online"
              ],
              "type": "string"
             }
            },
            "type": "object"
           }
          },
          "type": "object"
         },
         "payment_method": {
          "description": "The card to set up, when the SetupIntent has none yet or should use another.",
          "type": "string"
         },
         "payment_method_data": {
          "description": "A new card to set up in this confirm, instead of payment_method, as on create. Do not send it together with payment_method.",
          "properties": {
           "allow_redisplay": {
            "description": "Whether the new PaymentMethod may be shown to the customer again: always, limited or unspecified (the default).",
            "enum": [
             "always",
             "limited",
             "unspecified"
            ],
            "type": "string"
           },
           "billing_details": {
            "description": "The card holder's name, email, phone and address, kept on the new PaymentMethod.",
            "properties": {
             "address": {
              "properties": {
               "city": {
                "type": "string"
               },
               "country": {
                "type": "string"
               },
               "line1": {
                "type": "string"
               },
               "line2": {
                "type": "string"
               },
               "postal_code": {
                "type": "string"
               },
               "state": {
                "type": "string"
               }
              },
              "type": "object"
             },
             "email": {
              "type": "string"
             },
             "name": {
              "type": "string"
             },
             "phone": {
              "type": "string"
             },
             "tax_id": {
              "type": "string"
             }
            },
            "type": "object"
           },
           "metadata": {
            "description": "Your own key-value pairs for the new PaymentMethod.",
            "type": "object"
           },
           "type": {
            "description": "card, the only type a SetupIntent sets up.",
            "enum": [
             "card"
            ],
            "type": "string"
           }
          },
          "type": "object"
         },
         "payment_method_options": {
          "description": "Card options: request_three_d_secure, network, mandate_options and three_d_secure. An option of another type answers unsupported.",
          "properties": {
           "card": {
            "description": "Card options.",
            "properties": {
             "mandate_options": {
              "description": "The mandate an Indian card needs for later charges: amount, amount_type (fixed or maximum), currency, interval (day, week, month, year or sporadic), reference, start_date and supported_types[] (india) are required, description, end_date and interval_count optional. Sent whole each time and kept on the SetupIntent; a card that is not Indian makes no mandate.",
              "properties": {
               "amount": {
                "type": "integer"
               },
               "amount_type": {
                "enum": [
                 "fixed",
                 "maximum"
                ],
                "type": "string"
               },
               "currency": {
                "type": "string"
               },
               "description": {
                "type": "string"
               },
               "end_date": {
                "type": "integer"
               },
               "interval": {
                "enum": [
                 "day",
                 "month",
                 "sporadic",
                 "week",
                 "year"
                ],
                "type": "string"
               },
               "interval_count": {
                "type": "integer"
               },
               "reference": {
                "type": "string"
               },
               "start_date": {
                "type": "integer"
               },
               "supported_types": {
                "items": {
                 "type": "string"
                },
                "type": "array"
               }
              },
              "type": "object"
             },
             "network": {
              "description": "The card network to use for this card. On a create it needs confirm=true and must be a network the card carries; a confirm keeps it on the SetupIntent and uses it when the card carries it, and a confirm without it clears it.",
              "enum": [
               "amex",
               "cartes_bancaires",
               "diners",
               "discover",
               "eftpos_au",
               "girocard",
               "interac",
               "jcb",
               "link",
               "mastercard",
               "unionpay",
               "visa",
               "unknown"
              ],
              "type": "string"
             },
             "request_three_d_secure": {
              "description": "automatic (the default) asks for 3D Secure when the bank or the card network requires it; any and challenge ask for it whenever the card supports it.",
              "enum": [
               "automatic",
               "any",
               "challenge"
              ],
              "type": "string"
             },
             "three_d_secure": {
              "description": "3D Secure results your own authentication already got (version, cryptogram, transaction_id, electronic_commerce_indicator, ares_trans_status, requestor_challenge_indicator, network_options[cartes_bancaires]), used by this confirm instead of a new challenge. Only with a confirm, never with request_three_d_secure in the same request, and never shown or kept on the SetupIntent.",
              "properties": {
               "ares_trans_status": {
                "enum": [
                 "A",
                 "C",
                 "I",
                 "N",
                 "R",
                 "U",
                 "Y"
                ],
                "type": "string"
               },
               "cryptogram": {
                "type": "string"
               },
               "electronic_commerce_indicator": {
                "enum": [
                 "01",
                 "02",
                 "05",
                 "06",
                 "07"
                ],
                "type": "string"
               },
               "network_options": {
                "type": "object"
               },
               "requestor_challenge_indicator": {
                "type": "string"
               },
               "transaction_id": {
                "type": "string"
               },
               "version": {
                "enum": [
                 "1.0.2",
                 "2.1.0",
                 "2.2.0",
                 "2.3.0",
                 "2.3.1"
                ],
                "type": "string"
               }
              },
              "type": "object"
             }
            },
            "type": "object"
           }
          },
          "type": "object"
         },
         "return_url": {
          "description": "Where the buyer comes back after 3D Secure.",
          "type": "string"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/setup_intent"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Confirms a SetupIntent: the card is set up, or the buyer is sent to 3D Secure through next_action.",
    "tags": [
     "setup_intents"
    ]
   }
  },
  "/v1/tokens": {
   "post": {
    "operationId": "post-v1-tokens",
    "parameters": [
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "pk_token": "{\"version\":\"EC_v1\",\"data\":\"...\",\"signature\":\"...\",\"header\":{}}",
        "pk_token_instrument_name": "Visa 4242",
        "pk_token_payment_network": "Visa",
        "pk_token_transaction_id": "..."
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "pk_token": {
          "description": "The Apple Pay payment data the device returned (PKPayment's token.paymentData), as JSON. It makes a single-use card token and is never stored. In test mode, a pk_token_transaction_id of ApplePayStubs~<test card number>~<amount>~<currency>~<anything> makes a token of that test card whatever pk_token holds; live mode refuses it.",
          "type": "string"
         },
         "pk_token_instrument_name": {
          "description": "The card's name as Apple Pay shows it (PKPaymentMethod displayName). Optional.",
          "type": "string"
         },
         "pk_token_payment_network": {
          "description": "The card network as Apple Pay names it (PKPaymentMethod network), such as Visa or MasterCard. Optional.",
          "type": "string"
         },
         "pk_token_transaction_id": {
          "description": "Apple Pay's transaction identifier (PKPaymentToken transactionIdentifier). Optional; see pk_token for its test mode use.",
          "type": "string"
         }
        },
        "required": [
         "pk_token"
        ],
        "type": "object"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/token"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Creates a token.",
    "tags": [
     "wallets"
    ]
   }
  },
  "/v1/tokens/{token}": {
   "get": {
    "operationId": "get-v1-tokens-token",
    "parameters": [
     {
      "description": "The id of the token.",
      "example": "tok_123",
      "in": "path",
      "name": "token",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/token"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a token.",
    "tags": [
     "wallets"
    ]
   }
  },
  "/v1/webhook_endpoints": {
   "get": {
    "operationId": "get-v1-webhook-endpoints",
    "parameters": [
     {
      "description": "Cursor: the id of the first object of the current page, to get the previous page. Do not send it with starting_after.",
      "in": "query",
      "name": "ending_before",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "description": "How many objects to return, from 1 to 100. Default 10.",
      "in": "query",
      "name": "limit",
      "required": false,
      "schema": {
       "type": "integer"
      }
     },
     {
      "description": "Cursor: the id of the last object of the previous page, to get the next page. Do not send it with ending_before.",
      "in": "query",
      "name": "starting_after",
      "required": false,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "data": [
          {
           "api_version": "2026-05-27.dahlia",
           "created": 1767225600,
           "enabled_events": [
            "payment_intent.succeeded",
            "charge.refunded"
           ],
           "id": "we_123",
           "livemode": false,
           "metadata": {},
           "object": "webhook_endpoint",
           "status": "enabled",
           "url": "https://example.com/fluveo/webhooks"
          }
         ],
         "has_more": false,
         "object": "list",
         "url": "/v1/webhook_endpoints"
        },
        "schema": {
         "properties": {
          "data": {
           "items": {
            "$ref": "#/components/schemas/webhook_endpoint"
           },
           "type": "array"
          },
          "has_more": {
           "type": "boolean"
          },
          "object": {
           "enum": [
            "list"
           ],
           "type": "string"
          },
          "url": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Lists the store's webhook endpoints.",
    "tags": [
     "webhook_endpoints"
    ]
   },
   "post": {
    "operationId": "post-v1-webhook-endpoints",
    "parameters": [
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "enabled_events": [
         "payment_intent.succeeded",
         "charge.refunded"
        ],
        "url": "https://example.com/fluveo/webhooks"
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "api_version": {
          "description": "Only 2026-05-27.dahlia, the one API version Fluveo serves. Leave it out to get that version.",
          "enum": [
           "2011-01-01",
           "2011-06-21",
           "2011-06-28",
           "2011-08-01",
           "2011-09-15",
           "2011-11-17",
           "2012-02-23",
           "2012-03-25",
           "2012-06-18",
           "2012-06-28",
           "2012-07-09",
           "2012-09-24",
           "2012-10-26",
           "2012-11-07",
           "2013-02-11",
           "2013-02-13",
           "2013-07-05",
           "2013-08-12",
           "2013-08-13",
           "2013-10-29",
           "2013-12-03",
           "2014-01-31",
           "2014-03-13",
           "2014-03-28",
           "2014-05-19",
           "2014-06-13",
           "2014-06-17",
           "2014-07-22",
           "2014-07-26",
           "2014-08-04",
           "2014-08-20",
           "2014-09-08",
           "2014-10-07",
           "2014-11-05",
           "2014-11-20",
           "2014-12-08",
           "2014-12-17",
           "2014-12-22",
           "2015-01-11",
           "2015-01-26",
           "2015-02-10",
           "2015-02-16",
           "2015-02-18",
           "2015-03-24",
           "2015-04-07",
           "2015-06-15",
           "2015-07-07",
           "2015-07-13",
           "2015-07-28",
           "2015-08-07",
           "2015-08-19",
           "2015-09-03",
           "2015-09-08",
           "2015-09-23",
           "2015-10-01",
           "2015-10-12",
           "2015-10-16",
           "2016-02-03",
           "2016-02-19",
           "2016-02-22",
           "2016-02-23",
           "2016-02-29",
           "2016-03-07",
           "2016-06-15",
           "2016-07-06",
           "2016-10-19",
           "2017-01-27",
           "2017-02-14",
           "2017-04-06",
           "2017-05-25",
           "2017-06-05",
           "2017-08-15",
           "2017-12-14",
           "2018-01-23",
           "2018-02-05",
           "2018-02-06",
           "2018-02-28",
           "2018-05-21",
           "2018-07-27",
           "2018-08-23",
           "2018-09-06",
           "2018-09-24",
           "2018-10-31",
           "2018-11-08",
           "2019-02-11",
           "2019-02-19",
           "2019-03-14",
           "2019-05-16",
           "2019-08-14",
           "2019-09-09",
           "2019-10-08",
           "2019-10-17",
           "2019-11-05",
           "2019-12-03",
           "2020-03-02",
           "2020-08-27",
           "2022-08-01",
           "2022-11-15",
           "2023-08-16",
           "2023-10-16",
           "2024-04-10",
           "2024-06-20",
           "2024-09-30.acacia",
           "2024-10-28.acacia",
           "2024-11-20.acacia",
           "2024-12-18.acacia",
           "2025-01-27.acacia",
           "2025-02-24.acacia",
           "2025-03-01.dashboard",
           "2025-03-31.basil",
           "2025-04-30.basil",
           "2025-05-28.basil",
           "2025-06-30.basil",
           "2025-07-30.basil",
           "2025-08-27.basil",
           "2025-09-30.clover",
           "2025-10-29.clover",
           "2025-11-17.clover",
           "2025-12-15.clover",
           "2026-01-28.clover",
           "2026-02-25.clover",
           "2026-03-25.dahlia",
           "2026-04-22.dahlia",
           "2026-05-27.dahlia"
          ],
          "type": "string"
         },
         "description": {
          "description": "A note for your own records.",
          "type": "string"
         },
         "enabled_events": {
          "description": "The event types this endpoint receives, as enabled_events[]=..., or [\"*\"] for all. Any event type of API version 2026-05-27.dahlia: a type not on the event types page is taken and never sent; any other type is refused with 400 on enabled_events[i].",
          "items": {
           "type": "string"
          },
          "type": "array"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         },
         "url": {
          "description": "The address that receives the events. It must use https in live mode; a test-mode endpoint may also use plain http.",
          "type": "string"
         }
        },
        "required": [
         "enabled_events",
         "url"
        ],
        "type": "object"
       }
      }
     },
     "required": true
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "api_version": "2026-05-27.dahlia",
         "created": 1767225600,
         "enabled_events": [
          "payment_intent.succeeded",
          "charge.refunded"
         ],
         "id": "we_123",
         "livemode": false,
         "metadata": {},
         "object": "webhook_endpoint",
         "status": "enabled",
         "url": "https://example.com/fluveo/webhooks"
        },
        "schema": {
         "$ref": "#/components/schemas/webhook_endpoint"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Creates a webhook endpoint. The answer is the only one that carries the full signing secret.",
    "tags": [
     "webhook_endpoints"
    ]
   }
  },
  "/v1/webhook_endpoints/{webhook_endpoint}": {
   "delete": {
    "operationId": "delete-v1-webhook-endpoints-webhook-endpoint",
    "parameters": [
     {
      "description": "The webhook endpoint's id.",
      "example": "we_123",
      "in": "path",
      "name": "webhook_endpoint",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "deleted": true,
         "id": "we_123",
         "object": "webhook_endpoint"
        },
        "schema": {
         "properties": {
          "deleted": {
           "type": "boolean"
          },
          "id": {
           "type": "string"
          },
          "object": {
           "type": "string"
          }
         },
         "type": "object"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Deletes a webhook endpoint; no more events go to it.",
    "tags": [
     "webhook_endpoints"
    ]
   },
   "get": {
    "operationId": "get-v1-webhook-endpoints-webhook-endpoint",
    "parameters": [
     {
      "description": "The webhook endpoint's id.",
      "example": "we_123",
      "in": "path",
      "name": "webhook_endpoint",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "api_version": "2026-05-27.dahlia",
         "created": 1767225600,
         "enabled_events": [
          "payment_intent.succeeded",
          "charge.refunded"
         ],
         "id": "we_123",
         "livemode": false,
         "metadata": {},
         "object": "webhook_endpoint",
         "status": "enabled",
         "url": "https://example.com/fluveo/webhooks"
        },
        "schema": {
         "$ref": "#/components/schemas/webhook_endpoint"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Retrieves a webhook endpoint.",
    "tags": [
     "webhook_endpoints"
    ]
   },
   "post": {
    "operationId": "post-v1-webhook-endpoints-webhook-endpoint",
    "parameters": [
     {
      "description": "The webhook endpoint's id.",
      "example": "we_123",
      "in": "path",
      "name": "webhook_endpoint",
      "required": true,
      "schema": {
       "type": "string"
      }
     },
     {
      "$ref": "#/components/parameters/IdempotencyKey"
     },
     {
      "$ref": "#/components/parameters/FluveoVersion"
     }
    ],
    "requestBody": {
     "content": {
      "application/x-www-form-urlencoded": {
       "example": {
        "disabled": true
       },
       "schema": {
        "additionalProperties": false,
        "properties": {
         "description": {
          "description": "A note for your own records.",
          "type": "string"
         },
         "disabled": {
          "description": "true stops deliveries to this endpoint; false starts them again.",
          "type": "boolean"
         },
         "enabled_events": {
          "description": "The event types this endpoint receives, as enabled_events[]=..., or [\"*\"] for all. Any event type of API version 2026-05-27.dahlia: a type not on the event types page is taken and never sent; any other type is refused with 400 on enabled_events[i].",
          "items": {
           "type": "string"
          },
          "type": "array"
         },
         "metadata": {
          "description": "Up to 50 key-value pairs of your own, sent as metadata[key]=value: keys of 1 to 40 characters, values up to 500. Keys starting with fluveo_ are reserved. On an update, an empty value removes a key.",
          "type": "object"
         },
         "url": {
          "description": "The address that receives the events. It must use https in live mode; a test-mode endpoint may also use plain http.",
          "type": "string"
         }
        },
        "type": "object"
       }
      }
     },
     "required": false
    },
    "responses": {
     "200": {
      "content": {
       "application/json": {
        "example": {
         "api_version": "2026-05-27.dahlia",
         "created": 1767225600,
         "enabled_events": [
          "payment_intent.succeeded",
          "charge.refunded"
         ],
         "id": "we_123",
         "livemode": false,
         "metadata": {},
         "object": "webhook_endpoint",
         "status": "enabled",
         "url": "https://example.com/fluveo/webhooks"
        },
        "schema": {
         "$ref": "#/components/schemas/webhook_endpoint"
        }
       }
      },
      "description": "OK"
     },
     "default": {
      "$ref": "#/components/responses/error"
     }
    },
    "summary": "Updates a webhook endpoint's url, event types, description, metadata or disabled flag.",
    "tags": [
     "webhook_endpoints"
    ]
   }
  }
 },
 "security": [
  {
   "bearerAuth": []
  },
  {
   "basicAuth": []
  }
 ],
 "servers": [
  {
   "description": "Test mode only, with sk_test_ keys",
   "url": "https://api.fluveo.com"
  }
 ],
 "tags": [
  {
   "description": "A PaymentIntent is one payment from a buyer, from its creation through confirmation to its final state. Create it with the amount and currency, confirm it with a payment method, and, for a manual capture, capture or cancel the authorized amount. Every state change is also sent as an event (see Events). A PaymentIntent created without payment_method_types has automatic_payment_methods enabled with allow_redirects=always: its confirm, or its create with confirm=true, needs return_url, unless it is off_session=true or the create sent automatic_payment_methods[allow_redirects]=never; without one it answers 400 return_url_required and confirms nothing (see Errors).",
   "name": "payment_intents",
   "x-displayName": "PaymentIntents"
  },
  {
   "description": "A Charge is the record of one attempt to move money for a PaymentIntent. Fluveo creates charges only through PaymentIntents: the legacy POST /v1/charges and POST /v1/charges/{charge}/capture answer a refusal that names the PaymentIntent to capture instead. You may read, list and search charges and change their description and metadata.",
   "name": "charges",
   "x-displayName": "Charges"
  },
  {
   "description": "A Refund returns all or part of a captured payment to the buyer. Fluveo reserves the amount in the store's books before it sends the refund, so a refund the store cannot cover is refused before any money moves.",
   "name": "refunds",
   "x-displayName": "Refunds"
  },
  {
   "description": "A Dispute is a buyer's challenge of a payment with their bank. Read disputes, send evidence and submit it, or close a dispute to accept it. Every dispute id starts with du_, and list limit takes 1 to 100. An update or a close sent again with the same Idempotency-Key and the same body returns the first dispute with Idempotent-Replayed: true. A refused request, such as an invalid evidence field or an unknown dispute, is not kept, so you may fix it and send it again with the same key. To send a document, upload it with POST /v1/files (purpose dispute_evidence), then name its file_ id in an evidence field such as evidence[receipt] or evidence[uncategorized_file] on POST /v1/disputes/{dispute}, with submit=true to send the evidence to the bank. Every evidence field you save is kept and sent, with the same limits: each document a PDF, JPEG or PNG of up to 5 MB, the documents together up to 4.5 MB and fewer than 50 pages, and each text up to its field's length.",
   "name": "disputes",
   "x-displayName": "Disputes"
  },
  {
   "description": "An early fraud warning tells the store that a card issuer reported one of its charges as likely fraud, before any dispute. A warning with actionable true still leaves time to refund the charge in full and avoid the dispute and its fee; a full refund makes the warning actionable false. Warnings are read-only and name the store's own charge and PaymentIntent; each new warning is also sent as radar.early_fraud_warning.created, and each change as radar.early_fraud_warning.updated (see Events).",
   "name": "early_fraud_warnings",
   "x-displayName": "Early fraud warnings"
  },
  {
   "description": "A PaymentMethod holds a buyer's payment details, such as a card, for use on PaymentIntents. Attach one to a Customer to reuse it, and detach it to stop. Stores do not send card numbers to the API: in test mode, use the pm_card_* test PaymentMethods, and take real cards through Checkout.",
   "name": "payment_methods",
   "x-displayName": "PaymentMethods"
  },
  {
   "description": "A Customer is a buyer the store keeps on file, with contact details, saved payment methods and tax ids. Find customers by their fields with the search route below. Deleting a customer sends only customer.deleted: its saved payment methods keep their customer.",
   "name": "customers",
   "x-displayName": "Customers"
  },
  {
   "description": "A Product is something the store sells, such as a T-shirt or a service. Its Prices say what it costs (see Prices). Products are catalog: they move no money, so every store has them in test mode and live mode from the start. Find products by their fields with the search route below. Each change is also sent as a product.created, product.updated or product.deleted event (see Events). An id you choose with id is unique within your store and mode, so two stores may each have a product called basic; an id Fluveo draws is prod_ and 24 characters. tax_code is checked only for its form (txcd_ and 8 digits) and never expands to an object. attributes is always empty, and tax_details names only the tax_code, with performance_location null. An update that changes nothing sends no product.updated and keeps updated as it was. The list refuses a limit outside 1 to 100 instead of moving it into range. created is not a search field. An image uploaded in the dashboard is kept as a Fluveo file and listed in images as a public file link URL, which loads without a key.",
   "name": "products",
   "x-displayName": "Products"
  },
  {
   "description": "A Price is what a Product costs: an amount in one currency, paid once (one_time). Create it for an existing product, or with product_data to make the product in the same call. Its amount, currency and product never change after creation: to change them, create a new price and archive the old one with active=false. A price is never deleted. Each change is also sent as a price.created or price.updated event (see Events); Fluveo never sends price.deleted. Tiered prices (tiers, tiers_mode) and currency_options are refused, so a price has one currency and one amount. The bounds of custom_unit_amount are 50 and 1,000,000 in the smallest currency unit (4,000,000 for brl), with minimum below maximum and preset between them. A lookup_key is unique within the store and mode; transfer_lookup_key=true takes it from the price that holds it in the same write, and that price gets its own price.updated. created is not a search field.",
   "name": "prices",
   "x-displayName": "Prices"
  },
  {
   "description": "The Balance is the money the store holds, split into what is available to pay out and what is still pending. Two Fluveo extensions show how much may be paid out now and what holds a payout back.",
   "name": "balance",
   "x-displayName": "Balance"
  },
  {
   "description": "A balance transaction is one line of the store's statement: a charge, refund, dispute adjustment, payout or fee that moved the balance. A reserve hold or release moves the reserve: its balance_type is risk_reserved, and every other line's is payments. Every line that moves the store's balance is listed; one the store's own payments, refunds and payouts did not make is an adjustment, with its own reporting_category.",
   "name": "balance_transactions",
   "x-displayName": "Balance transactions"
  },
  {
   "description": "A Payout moves money from the store's available balance to its bank account. Fluveo checks how much the store may pay out before it sends a payout, and a payout moves to paid, failed or canceled only once its outcome is known.",
   "name": "payouts",
   "x-displayName": "Payouts"
  },
  {
   "description": "A reserve keeps part of a store's sales back for a time to cover refunds and disputes. Reserve plans, holds and releases are read-only views of the reserves on the store's account, the same routes, lists and fields for every store. A hold is released on its release date, or earlier when Fluveo's operators release it; a hold made on its own, with no sale, stays until Fluveo releases it. A change can also come as a reserve.* event (see Events). The balance's risk_reserved shows what the reserve holds. A store whose reserve follows no plan has an empty plans list.",
   "name": "reserves",
   "x-displayName": "Reserves"
  },
  {
   "description": "An Event records something that happened to one of the store's objects. Fluveo sends each event to the store's webhook endpoints and keeps it for reading through the API. The event types Fluveo sends are listed in Event types.",
   "name": "events",
   "x-displayName": "Events"
  },
  {
   "description": "A webhook endpoint is a URL of the store's that receives events. Each endpoint has its own signing secret and its own list of event types. The secret is shown in full only when the endpoint is created. Every delivery is a POST with a Fluveo-Signature header, t=<unix seconds>,v1=<signature>, where the signature is the hex HMAC-SHA256 of <t>.<raw body> keyed with the endpoint's whsec_ secret. Check it against the raw body, and refuse a delivery whose t is more than 5 minutes old. When the secret is rotated in the Dashboard with an expiration (up to 7 days), the old secret keeps signing until then: the header carries one v1 per secret still valid, the current first, as t=<unix seconds>,v1=<new>,v1=<old>. Accept the delivery when any v1 matches.",
   "name": "webhook_endpoints",
   "x-displayName": "Webhook endpoints"
  },
  {
   "description": "A Checkout Session is a hosted payment page for one payment. Create a session with its line items, send the buyer to its url, and read the session or wait for checkout.session.completed. Each session pays through a PaymentIntent, made when the buyer first presses Pay: until then the session's payment_intent is null.",
   "name": "checkout_sessions",
   "x-displayName": "Checkout Sessions"
  },
  {
   "description": "A SetupIntent saves a card for later payments without charging it, such as a card on file for one-click upsells. Create one with the customer and the card, confirm it, send the buyer through next_action when the bank asks for 3D Secure, and charge the saved payment_method later with off_session=true. A SetupIntent created without payment_method_types has automatic_payment_methods enabled with allow_redirects=always: its confirm, or its create with confirm=true, needs return_url, unless the create sent automatic_payment_methods[allow_redirects]=never; without one it answers 400 return_url_required and sets nothing up (see Errors).",
   "name": "setup_intents",
   "x-displayName": "SetupIntents"
  },
  {
   "description": "A payment link is a page the store shares to sell the same Prices many times. Create one with line items that name the store's own Prices, send the buyer to its url, and switch it off with active=false. Each completed payment goes through a Checkout Session; payment_link.created and payment_link.updated tell the store's endpoints about the link itself.",
   "name": "payment_links",
   "x-displayName": "Payment links"
  },
  {
   "description": "A store turns Apple Pay and Google Pay on and off for its checkout, and names the websites where they may appear. The store's payment method configuration holds one switch per wallet; cards are always on and shown read only, and no other method is listed. A payment method domain registers one website, and validate asks again whether each wallet may show there. A wallet button appears only when the store has that wallet on and the page's domain is registered and active for it. A store that is rejected, suspended or closed is refused, and live mode needs an approved store. A wallet the store cannot offer stays off: turning it on is refused. A domain shows the registration status and any status details for each of its six wallets. A domain's registration status does not enable a wallet; the store's payment method configuration controls whether it may offer that wallet. An Apple Pay payment enters through POST /v1/tokens: send the Apple Pay payment data the device returned, then create a PaymentMethod from the token with card[token], or pay with it directly in payment_method_data[card][token]. A token is used once, and the card it makes shows its wallet in card.wallet. Apple Pay checks each domain with a domain association file: download it from the wallet domains in the Dashboard's settings and host it at https://<domain>/.well-known/apple-developer-merchantid-domain-association before you validate the domain. Every domain of a store hosts the same file.",
   "name": "wallets",
   "x-displayName": "Wallets"
  },
  {
   "description": "Files hold documents the store uploads, such as dispute evidence. A file link gives a time-limited URL to a file's contents. Both answer to test and live keys, each mode with its own files.",
   "name": "files",
   "x-displayName": "Files and file links"
  },
  {
   "description": "The Account is the calling store's own profile as Fluveo knows it. A store reading its own Account gets no requirements and no company field: a field missing from the answer is not sent, and does not mean null. What the store must still do before it can take live payments, and why live mode is blocked, show in the Dashboard.",
   "name": "account",
   "x-displayName": "Account"
  }
 ]
}
