{"openapi":"3.1.0","info":{"title":"Maven API","description":"Voice payment infrastructure — collect credit card payments securely over phone calls.","version":"1.0.0"},"paths":{"/health":{"get":{"tags":["Health"],"summary":"Health Check","description":"Health check endpoint with service connectivity verification.","operationId":"health_check_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/auth/check":{"get":{"tags":["Public API (v1)","Auth"],"summary":"Check Auth","description":"Check if API key is valid.\n\nUse this to verify your API key is working correctly.\n\n**Authentication:** API Key (Bearer token)","operationId":"check_auth_v1_auth_check_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthCheckResponse"}}}}},"security":[{"API Key":[]}]}},"/v1/projects":{"get":{"tags":["Public API (v1)","Projects"],"summary":"List Projects","description":"List all projects for this organization.\n\n**Authentication:** API Key (Bearer token)","operationId":"list_projects_v1_projects_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[{"API Key":[]}]}},"/v1/sessions":{"post":{"tags":["Public API (v1)","Sessions"],"summary":"Create Session","description":"Create a new payment session.\n\nReturns minimal identifiers needed for polling.\n\nPass `?response_status=200` if your platform does not accept HTTP 201.\n\n**Authentication:** API Key (Bearer token)","operationId":"create_session_v1_sessions_post","security":[{"API Key":[]}],"parameters":[{"name":"response_status","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Override the HTTP status code (e.g. 200). Some voice platforms only accept 200 as success.","title":"Response Status"},"description":"Override the HTTP status code (e.g. 200). Some voice platforms only accept 200 as success."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["Public API (v1)","Sessions"],"summary":"Get Session By Caller","description":"Get the most recent session for a phone number.\n\nReturns the most recent active session, or falls back to the latest terminal session.\n\n**Authentication:** API Key (Bearer token)","operationId":"get_session_by_caller_v1_sessions_get","security":[{"API Key":[]}],"parameters":[{"name":"caller","in":"query","required":true,"schema":{"type":"string","description":"Phone number in E.164 format","title":"Caller"},"description":"Phone number in E.164 format"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionGetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sessions/{session_id}":{"get":{"tags":["Public API (v1)","Sessions"],"summary":"Get Session","description":"Get session details by ID.\n\nReturns full session details including status, payment info, and processor details.\n\n**Authentication:** API Key (Bearer token)","operationId":"get_session_v1_sessions__session_id__get","security":[{"API Key":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SessionGetResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sessions/{session_id}/stream":{"get":{"tags":["Public API (v1)","Sessions"],"summary":"Stream Session","description":"Stream session status updates via Server-Sent Events.\n\nSends an initial event immediately, then pushes updates whenever\nthe status changes (~1 s poll interval). The stream closes\nautomatically on truly terminal statuses (payment-success,\nexpired, cancelled, abandoned) or client disconnect.","operationId":"stream_session_v1_sessions__session_id__stream_get","security":[{"API Key":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sessions/{session_id}/cancel":{"post":{"tags":["Public API (v1)","Sessions"],"summary":"Cancel Session","description":"Cancel a pending session.\n\nOnly sessions in PENDING or COLLECTING status can be cancelled.\n\n**Authentication:** API Key (Bearer token)","operationId":"cancel_session_v1_sessions__session_id__cancel_post","security":[{"API Key":[]}],"parameters":[{"name":"session_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Session Id"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/widget-sessions":{"post":{"tags":["Widget Sessions"],"summary":"Create a chat payment session","description":"Create a chat/web payment session.\n\nCall this from your **server** with your secret API key. Hand the returned\n`session_id` to your frontend and mount the widget:\n`Maven.createPayment({ sessionId }).mount(\"#slot\")`.\n\nTheme, labels, and fields are set once per project in the dashboard\n(Chat Payments tab → Customize) and applied automatically.","operationId":"create_widget_session_v1_widget_sessions_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWidgetSession"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"API Key":[]}]}},"/integrations/vapi/webhook":{"post":{"tags":["VAPI"],"summary":"Vapi Webhook","description":"Handle VAPI server URL webhook events.\n\nAuthenticates and configures via query params:\n  ?api_key=mvn_test_xxx&project=my-store&mode=charge&gateway=stripe\n\nHandles:\n- tool-calls (collect_payment) → creates a payment session\n- function-call (legacy) → same as above\n- Other event types → logs and acknowledges","operationId":"vapi_webhook_integrations_vapi_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/integrations/retell/webhook":{"post":{"tags":["Retell"],"summary":"Retell Webhook","description":"Handle Retell AI custom function calls.\n\nAuthenticates and configures via query params:\n  ?api_key=mvn_test_xxx&project=my-store&mode=charge&gateway=stripe\n\nRetell sends a POST with:\n  {name, args, call: {call_id, from_number, metadata}}\n\nEvery POST is a function call — no event type branching needed.","operationId":"retell_webhook_integrations_retell_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}}},"components":{"schemas":{"AuthCheckResponse":{"properties":{"authenticated":{"type":"boolean","title":"Authenticated"},"org_id":{"type":"string","title":"Org Id"},"mode":{"type":"string","title":"Mode"},"message":{"type":"string","title":"Message"}},"type":"object","required":["authenticated","org_id","mode","message"],"title":"AuthCheckResponse","description":"Response for auth check endpoint."},"BillingAddress":{"properties":{"street":{"type":"string","maxLength":60,"minLength":1,"title":"Street","description":"Street address line 1"},"city":{"type":"string","maxLength":40,"minLength":1,"title":"City","description":"City"},"state":{"type":"string","maxLength":40,"minLength":2,"title":"State","description":"State / region (2-letter code for US)"},"zip":{"type":"string","maxLength":20,"minLength":3,"title":"Zip","description":"Postal code (5 or 9 digits for US)"},"country":{"anyOf":[{"type":"string","maxLength":60,"minLength":2},{"type":"null"}],"title":"Country","description":"ISO-3166-1 alpha-2 country code; defaults to US","default":"US"},"first_name":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"First Name","description":"Cardholder first name; falls back to value collected during card capture"},"last_name":{"anyOf":[{"type":"string","maxLength":50},{"type":"null"}],"title":"Last Name","description":"Cardholder last name; falls back to value collected during card capture"}},"type":"object","required":["street","city","state","zip"],"title":"BillingAddress","description":"Cardholder billing address for AVS. Forwarded to the processor's billTo block.\n\nAlways pass the cardholder's *billing* address (the one on file with the card\nissuer), not shipping — AVS only matches against billing."},"CreateWidgetSession":{"properties":{"project":{"type":"string","title":"Project","description":"Project UUID or slug"},"amount_cents":{"type":"integer","minimum":0.0,"title":"Amount Cents","description":"Charge amount in cents. For mode='tokenize' may be 0."},"gateway":{"type":"string","title":"Gateway","description":"stripe | authorizenet | braintree | shift4 | fiserv | jpmorgan | webhook"},"mode":{"type":"string","pattern":"^(charge|tokenize)$","title":"Mode","default":"charge"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"stripe_account":{"anyOf":[{"type":"string","pattern":"^acct_[A-Za-z0-9]+$"},{"type":"null"}],"title":"Stripe Account","description":"Stripe Platform Mode only: connected account (acct_...) on YOUR Stripe platform"}},"type":"object","required":["project","amount_cents","gateway"],"title":"CreateWidgetSession"},"ErrorDetail":{"properties":{"code":{"type":"string","title":"Code","description":"Machine-readable error code"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message","description":"Human-readable error message"}},"type":"object","required":["code"],"title":"ErrorDetail","description":"Error information for failed sessions."},"Gateway":{"type":"string","enum":["stripe","authorizenet","braintree","shift4","fiserv","jpmorgan","webhook","nmi","qualpay","clover","adyen","checkoutcom","cybersource","worldpay","usaepay","moneris","globalpayments","cardconnect","paysafe","fortis","payflow","opayo","fatzebra","trustpayments","quickbooks","ecommpay"],"title":"Gateway","description":"Payment gateway."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"PaymentMode":{"type":"string","enum":["charge","tokenize"],"title":"PaymentMode","description":"Payment mode."},"Processor":{"properties":{"card_brand":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Brand","description":"Card brand (visa, mastercard, etc.)"},"card_last4":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Card Last4","description":"Last 4 digits of the card"},"receipt_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Receipt Url","description":"Stripe hosted receipt URL"},"stripe_charge_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Charge Id","description":"Stripe Charge ID"},"stripe_payment_intent_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Payment Intent Id","description":"Stripe PaymentIntent ID"},"payment_method_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payment Method Id","description":"Stripe PaymentMethod ID (tokenize mode, on connected account)"},"stripe_customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Stripe Customer Id","description":"Stripe Customer ID on connected account (tokenize mode)"},"authnet_transaction_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authnet Transaction Id","description":"Authorize.net Transaction ID"},"authnet_auth_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authnet Auth Code","description":"Authorize.net Authorization Code"},"authnet_response_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authnet Response Code","description":"Authorize.net response code (1=Approved, 2=Declined, 3=Error, 4=Held)"},"authnet_avs_result_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authnet Avs Result Code","description":"Authorize.net AVS (Address Verification) result code"},"authnet_cvv_result_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authnet Cvv Result Code","description":"Authorize.net CVV match result code"},"authnet_cavv_result_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authnet Cavv Result Code","description":"Authorize.net CAVV (3D Secure) result code"},"authnet_network_trans_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authnet Network Trans Id","description":"Card network transaction ID (Visa/Mastercard) for card-on-file flows"},"authnet_capture_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authnet Capture Status","description":"'captured' (auto) or 'authorized' (auth-only, awaiting manual capture)"},"authnet_customer_profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authnet Customer Profile Id","description":"Authorize.net CIM Customer Profile ID"},"authnet_payment_profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Authnet Payment Profile Id","description":"Authorize.net CIM Payment Profile ID"},"braintree_transaction_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Braintree Transaction Id","description":"Braintree Transaction ID"},"braintree_customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Braintree Customer Id","description":"Braintree Customer ID (tokenize mode)"},"braintree_payment_method_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Braintree Payment Method Token","description":"Braintree Payment Method Token (tokenize mode)"},"shift4_charge_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shift4 Charge Id","description":"Shift4 Charge ID"},"shift4_customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shift4 Customer Id","description":"Shift4 Customer ID (tokenize mode)"},"shift4_card_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shift4 Card Id","description":"Shift4 Card ID (tokenize mode)"},"fiserv_transaction_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fiserv Transaction Id","description":"Fiserv ipgTransactionId"},"fiserv_order_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fiserv Order Id","description":"Fiserv orderId"},"fiserv_payment_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fiserv Payment Token","description":"Fiserv reusable paymentToken value"},"fiserv_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fiserv State","description":"Fiserv transactionState (CAPTURED or AUTHORIZED)"},"jpmorgan_transaction_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jpmorgan Transaction Id","description":"J.P. Morgan transactionId"},"jpmorgan_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jpmorgan State","description":"J.P. Morgan transactionState (CLOSED = captured)"},"jpmorgan_consumer_profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jpmorgan Consumer Profile Id","description":"J.P. Morgan consumerProfileId (tokenize mode)"},"jpmorgan_payment_method_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jpmorgan Payment Method Id","description":"J.P. Morgan paymentMethodId within the consumer profile (tokenize mode)"},"jpmorgan_payment_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Jpmorgan Payment Token","description":"J.P. Morgan Safetech network token (tokenize mode, reusable as accountNumber)"},"webhook_transaction_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Transaction Id","description":"Transaction ID returned by the customer's forwarding endpoint"},"webhook_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Webhook Token","description":"Token returned by the customer's forwarding endpoint (tokenize mode)"},"nmi_transaction_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nmi Transaction Id","description":"NMI transaction ID"},"nmi_customer_vault_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Nmi Customer Vault Id","description":"NMI Customer Vault ID (tokenize mode)"},"qualpay_pg_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qualpay Pg Id","description":"Qualpay payment gateway ID (pg_id)"},"qualpay_card_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Qualpay Card Id","description":"Qualpay tokenized card ID"},"clover_charge_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clover Charge Id","description":"Clover charge ID"},"clover_customer_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Clover Customer Id","description":"Clover customer ID (tokenize mode)"},"adyen_psp_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adyen Psp Reference","description":"Adyen pspReference"},"adyen_stored_payment_method_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Adyen Stored Payment Method Id","description":"Adyen stored payment method / recurring detail reference (tokenize mode)"},"checkoutcom_payment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Checkoutcom Payment Id","description":"Checkout.com payment ID (pay_...)"},"checkoutcom_source_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Checkoutcom Source Id","description":"Checkout.com stored source ID (src_..., tokenize mode)"},"cybersource_payment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cybersource Payment Id","description":"Cybersource payment ID"},"cybersource_instrument_identifier_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cybersource Instrument Identifier Id","description":"Cybersource TMS instrument identifier (tokenize mode)"},"worldpay_payment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Worldpay Payment Id","description":"Access Worldpay payment ID"},"worldpay_token_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Worldpay Token Id","description":"Access Worldpay stored card token (tokenize mode)"},"usaepay_refnum":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Usaepay Refnum","description":"USAePay transaction reference number"},"usaepay_card_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Usaepay Card Key","description":"USAePay saved card key (tokenize mode)"},"moneris_txn_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Moneris Txn Id","description":"Moneris TransID"},"moneris_data_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Moneris Data Key","description":"Moneris Vault data key (tokenize mode)"},"globalpayments_transaction_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Globalpayments Transaction Id","description":"Global Payments transaction ID (TRN_...)"},"globalpayments_payment_method_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Globalpayments Payment Method Id","description":"Global Payments stored payment method (PMT_..., tokenize mode)"},"cardconnect_retref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cardconnect Retref","description":"CardPointe retrieval reference (retref)"},"cardconnect_profile_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Cardconnect Profile Id","description":"CardPointe profile ID (tokenize mode)"},"paysafe_auth_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Paysafe Auth Id","description":"Paysafe authorization ID"},"paysafe_payment_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Paysafe Payment Token","description":"Paysafe vault payment token (tokenize mode)"},"fortis_transaction_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fortis Transaction Id","description":"Fortis transaction ID"},"fortis_token_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fortis Token Id","description":"Fortis card token ID (tokenize mode)"},"payflow_pnref":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Payflow Pnref","description":"Payflow PNREF (also the reusable ORIGID token in tokenize mode)"},"opayo_vps_tx_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opayo Vps Tx Id","description":"Opayo VPSTxId"},"opayo_security_key":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Opayo Security Key","description":"Opayo SecurityKey (needed for refund/void)"},"fatzebra_purchase_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fatzebra Purchase Id","description":"Fat Zebra purchase ID"},"fatzebra_card_token":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fatzebra Card Token","description":"Fat Zebra card token (tokenize mode)"},"trustpayments_transaction_reference":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trustpayments Transaction Reference","description":"Trust Payments transaction reference (reusable as parenttransactionreference)"},"quickbooks_charge_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quickbooks Charge Id","description":"QuickBooks Payments charge ID"},"quickbooks_card_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Quickbooks Card Id","description":"QuickBooks vaulted card ID (tokenize mode)"},"ecommpay_payment_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ecommpay Payment Id","description":"Ecommpay merchant payment ID"},"ecommpay_operation_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ecommpay Operation Id","description":"Ecommpay operation ID"}},"type":"object","title":"Processor","description":"Payment processor details."},"SessionCreate":{"properties":{"project":{"type":"string","title":"Project","description":"Project identifier (UUID or slug)"},"caller":{"type":"string","title":"Caller","description":"Phone number in E.164 format"},"amount":{"anyOf":[{"type":"number","minimum":0.0},{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"}],"title":"Amount","description":"Amount in dollars (e.g. 150.00; must be > 0 for charge mode)"},"mode":{"$ref":"#/components/schemas/PaymentMode","description":"Payment mode: 'charge' or 'tokenize'"},"gateway":{"$ref":"#/components/schemas/Gateway","description":"Payment gateway: 'stripe', 'authorizenet', 'braintree', 'shift4', 'fiserv', 'jpmorgan', or 'webhook' (forward card to your own endpoint)"},"description":{"anyOf":[{"type":"string","maxLength":500},{"type":"null"}],"title":"Description","description":"Charge description"},"callback":{"anyOf":[{"type":"string","maxLength":256},{"type":"null"}],"title":"Callback","description":"Callback phone number or SIP URI for transfer-back"},"memory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Memory","description":"Call context passed back on transfer"},"stripe_account":{"anyOf":[{"type":"string","pattern":"^acct_[A-Za-z0-9]+$"},{"type":"null"}],"title":"Stripe Account","description":"Stripe Platform Mode only: the connected account (acct_...) on YOUR Stripe platform to charge or vault on. Requires your platform API key to be configured on the project."},"billing_address":{"anyOf":[{"$ref":"#/components/schemas/BillingAddress"},{"type":"null"}],"description":"Cardholder billing address. When provided, forwarded to the processor's billTo block so AVS can return a full match. Authorize.net only today; ignored for other gateways."}},"type":"object","required":["project","caller","amount","mode","gateway"],"title":"SessionCreate","description":"Request to create a payment session."},"SessionCreateResponse":{"properties":{"session_id":{"type":"string","title":"Session Id","description":"Session UUID"},"status":{"type":"string","title":"Status","description":"Session status"},"phone_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Phone Number","description":"IVR phone number to call"},"sip_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sip Uri","description":"Twilio SIP domain for SIP calls"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Creation timestamp"}},"type":"object","required":["session_id","status","created_at"],"title":"SessionCreateResponse","description":"Minimal response after creating a session."},"SessionGetResponse":{"properties":{"session_id":{"type":"string","title":"Session Id","description":"Session UUID"},"status":{"type":"string","title":"Status","description":"Session status"},"is_terminal":{"type":"boolean","title":"Is Terminal","description":"Whether the session has reached a final state"},"processor":{"anyOf":[{"$ref":"#/components/schemas/Processor"},{"type":"null"}],"description":"Payment processor details"},"error":{"anyOf":[{"$ref":"#/components/schemas/ErrorDetail"},{"type":"null"}],"description":"Error details when status is payment-failed"},"amount":{"type":"string","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","title":"Amount","description":"Amount to charge"},"currency":{"type":"string","title":"Currency","description":"Currency code"},"mode":{"type":"string","title":"Mode","description":"Payment mode"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description","description":"Charge description"},"caller":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Caller","description":"Phone number in E.164 format (voice sessions). Null for chat/widget sessions, which have no caller."},"project_slug":{"type":"string","title":"Project Slug","description":"Project slug"},"gateway":{"type":"string","title":"Gateway","description":"Payment gateway"},"callback":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Callback","description":"Callback phone number"},"memory":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Memory","description":"Call context passed back on transfer"},"transfer_status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Transfer Status","description":"Outcome of post-payment transfer-back dial"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"Creation timestamp"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"Last update timestamp"},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At","description":"When the session expires if unused"},"completed_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Completed At","description":"When the session reached a terminal state"}},"type":"object","required":["session_id","status","is_terminal","amount","currency","mode","project_slug","gateway","created_at","updated_at"],"title":"SessionGetResponse","description":"Full response for session details (GET endpoint)."},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}},"securitySchemes":{"API Key":{"type":"http","description":"Enter your API key: mvn_test_xxx or mvn_live_xxx","scheme":"bearer"}}}}