{"openapi":"3.1.0","info":{"title":"Varizet API","version":"2026-10-01","description":"Public (/v1), device (/ingest/v1), payment page (/pay/v1) and status (/status/v1) API. Webhook types: order.created, order.paid, order.needs_review, order.underpaid, order.expired, order.canceled, refund.created, deposit.unmatched, device.offline, device.online, card.cap_reached."},"servers":[{"url":"https://api.qr-scan.ir"}],"components":{"securitySchemes":{"ApiKey":{"type":"http","scheme":"bearer","description":"`vz_live_…` or `vz_test_…`"},"DeviceToken":{"type":"apiKey","in":"header","name":"Authorization","description":"`Device <token>` together with the `X-Signature` HMAC header."}},"schemas":{"ApiError":{"type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request","authentication_error","permission_error","not_found","conflict","validation_error","rate_limited","api_error"]},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":["string","null"]},"request_id":{"type":"string"}},"required":["type","code","message","param","request_id"]}},"required":["error"]},"Order":{"type":"object","properties":{"id":{"type":"string","pattern":"^ord_[0-9A-Za-z]{10,40}$"},"code":{"type":"string","pattern":"^VZ-[0-9A-Z]{4,8}$"},"status":{"type":"string","enum":["awaiting_payment","needs_review","underpaid","paid","expired","canceled","refunded","partially_refunded"]},"amount":{"type":"integer","minimum":0,"maximum":9007199254740991},"unique_amount":{"type":"integer","minimum":0,"maximum":9007199254740991},"unique_mode":{"type":"string","enum":["increase","decrease"]},"currency":{"type":"string","enum":["IRR"]},"payment_url":{"type":"string","format":"uri"},"destination":{"type":"object","properties":{"card_id":{"type":"string","pattern":"^card_[0-9A-Za-z]{10,40}$"},"bank":{"type":"string","enum":["melli","mellat","saderat","tejarat","saman","pasargad","sepah","refah","maskan","keshavarzi","parsian","shahr","ayandeh","eghtesad_novin","blu","sina","sarmayeh","dey","karafarin","iran_zamin","khavarmianeh","gardeshgari","mehr_iran","resalat","tosee_saderat","sanat_madan","tosee_taavon","post_bank","markazi","unknown"]},"last4":{"type":"string","pattern":"^\\d{4}$"},"owner_name":{"type":"string"}},"required":["card_id","bank","last4","owner_name"]},"expires_at":{"type":"string","format":"date-time"},"grace_until":{"type":"string","format":"date-time"},"paid_at":{"type":["string","null"],"format":"date-time"},"paid_amount":{"type":["integer","null"],"minimum":0,"maximum":9007199254740991},"paid_late":{"type":"boolean"},"payer":{"type":["object","null"],"properties":{"card_last4":{"type":"string","pattern":"^\\d{4}$"}},"required":["card_last4"]},"match":{"type":["object","null"],"properties":{"score":{"type":"integer","minimum":0,"maximum":100},"channel":{"type":"string","enum":["android_sms","android_notification","ios_shortcut","gsm_modem","open_banking","bot_forward","receipt_upload","manual"]},"deposit_id":{"type":"string","pattern":"^dep_[0-9A-Za-z]{10,40}$"},"reasons":{"type":"array","items":{"type":"string"}}},"required":["score","channel","deposit_id","reasons"]},"merchant_order_id":{"type":["string","null"]},"customer":{"type":["object","null"],"properties":{"name":{"type":["string","null"],"minLength":1,"maxLength":120},"phone":{"type":["string","null"],"pattern":"^09\\d{9}$"},"email":{"type":["string","null"],"format":"email"}}},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500}},"livemode":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"}},"required":["id","code","status","amount","unique_amount","unique_mode","currency","payment_url","destination","expires_at","grace_until","paid_at","paid_amount","paid_late","payer","match","merchant_order_id","customer","metadata","livemode","created_at"]},"CreateOrderRequest":{"type":"object","properties":{"amount":{"type":"integer","minimum":10000},"merchant_order_id":{"type":"string","minLength":1,"maxLength":64},"description":{"type":"string","maxLength":255},"customer":{"type":"object","properties":{"name":{"type":["string","null"],"minLength":1,"maxLength":120},"phone":{"type":["string","null"],"pattern":"^09\\d{9}$"},"email":{"type":["string","null"],"format":"email"}}},"expires_in":{"type":"integer","minimum":300,"maximum":86400,"default":1800},"unique_mode":{"type":"string","enum":["increase","decrease"]},"card_id":{"type":["string","null"],"pattern":"^card_[0-9A-Za-z]{10,40}$"},"return_url":{"type":"string","format":"uri"},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500}},"payer_last4":{"type":"string","pattern":"^\\d{4}$"},"notify":{"type":"object","properties":{"sms":{"type":"boolean"}},"required":["sms"]}},"required":["amount"]},"OrderList":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^ord_[0-9A-Za-z]{10,40}$"},"code":{"type":"string","pattern":"^VZ-[0-9A-Z]{4,8}$"},"status":{"type":"string","enum":["awaiting_payment","needs_review","underpaid","paid","expired","canceled","refunded","partially_refunded"]},"amount":{"type":"integer","minimum":0,"maximum":9007199254740991},"unique_amount":{"type":"integer","minimum":0,"maximum":9007199254740991},"unique_mode":{"type":"string","enum":["increase","decrease"]},"currency":{"type":"string","enum":["IRR"]},"payment_url":{"type":"string","format":"uri"},"destination":{"type":"object","properties":{"card_id":{"type":"string","pattern":"^card_[0-9A-Za-z]{10,40}$"},"bank":{"type":"string","enum":["melli","mellat","saderat","tejarat","saman","pasargad","sepah","refah","maskan","keshavarzi","parsian","shahr","ayandeh","eghtesad_novin","blu","sina","sarmayeh","dey","karafarin","iran_zamin","khavarmianeh","gardeshgari","mehr_iran","resalat","tosee_saderat","sanat_madan","tosee_taavon","post_bank","markazi","unknown"]},"last4":{"type":"string","pattern":"^\\d{4}$"},"owner_name":{"type":"string"}},"required":["card_id","bank","last4","owner_name"]},"expires_at":{"type":"string","format":"date-time"},"grace_until":{"type":"string","format":"date-time"},"paid_at":{"type":["string","null"],"format":"date-time"},"paid_amount":{"type":["integer","null"],"minimum":0,"maximum":9007199254740991},"paid_late":{"type":"boolean"},"payer":{"type":["object","null"],"properties":{"card_last4":{"type":"string","pattern":"^\\d{4}$"}},"required":["card_last4"]},"match":{"type":["object","null"],"properties":{"score":{"type":"integer","minimum":0,"maximum":100},"channel":{"type":"string","enum":["android_sms","android_notification","ios_shortcut","gsm_modem","open_banking","bot_forward","receipt_upload","manual"]},"deposit_id":{"type":"string","pattern":"^dep_[0-9A-Za-z]{10,40}$"},"reasons":{"type":"array","items":{"type":"string"}}},"required":["score","channel","deposit_id","reasons"]},"merchant_order_id":{"type":["string","null"]},"customer":{"type":["object","null"],"properties":{"name":{"type":["string","null"],"minLength":1,"maxLength":120},"phone":{"type":["string","null"],"pattern":"^09\\d{9}$"},"email":{"type":["string","null"],"format":"email"}}},"metadata":{"type":"object","additionalProperties":{"type":"string","maxLength":500}},"livemode":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"}},"required":["id","code","status","amount","unique_amount","unique_mode","currency","payment_url","destination","expires_at","grace_until","paid_at","paid_amount","paid_late","payer","match","merchant_order_id","customer","metadata","livemode","created_at"]}},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["data","has_more","next_cursor"]},"IngestEventRequest":{"type":"object","properties":{"source":{"type":"string","enum":["android_sms","android_notification","ios_shortcut","gsm_modem","bot_forward"]},"sender":{"type":"string","minLength":1,"maxLength":120},"body":{"type":"string","minLength":1,"maxLength":2000},"received_at":{"type":"string","format":"date-time"},"sim_slot":{"type":"integer","minimum":0,"maximum":4},"client_event_id":{"type":"string","minLength":8,"maxLength":64}},"required":["source","sender","body","received_at","client_event_id"]},"IngestEventResponse":{"type":"object","properties":{"event_id":{"type":"string"},"duplicate":{"type":"boolean"}},"required":["event_id","duplicate"]},"IngestHeartbeatRequest":{"type":"object","properties":{"sent_at":{"type":"string","format":"date-time"},"app_version":{"type":"string","minLength":1,"maxLength":32},"templates_version":{"type":"integer","minimum":0},"battery":{"type":"object","properties":{"level":{"type":"number","minimum":0,"maximum":1},"charging":{"type":"boolean"},"optimized":{"type":"boolean"}},"required":["level","charging","optimized"]},"permissions":{"type":"object","properties":{"sms":{"type":"boolean"},"notifications":{"type":"boolean"},"background":{"type":"boolean"},"autostart":{"type":"boolean"},"post_notifications":{"type":"boolean"}}},"queue":{"type":"object","properties":{"pending":{"type":"integer","minimum":0},"failed":{"type":"integer","minimum":0},"oldest_at":{"type":["string","null"],"format":"date-time"}},"required":["pending","failed"]},"network":{"type":"object","properties":{"type":{"type":"string","maxLength":16},"ping_ms":{"type":["integer","null"],"minimum":0}},"required":["type"]},"service":{"type":"object","properties":{"running_since":{"type":["string","null"],"format":"date-time"}}},"sim_slots":{"type":"array","items":{"type":"object","properties":{"slot":{"type":"integer","minimum":0,"maximum":4},"carrier":{"type":["string","null"],"maxLength":40}},"required":["slot"]},"maxItems":4}},"required":["sent_at","app_version"]},"IngestHeartbeatResponse":{"type":"object","properties":{"server_time":{"type":"string","format":"date-time"},"next_interval_sec":{"type":"integer","exclusiveMinimum":0},"min_app_version":{"type":"string"},"templates_version_latest":{"type":"integer","minimum":0},"commands":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"payload":{"type":"object","additionalProperties":{}}},"required":["id","type","payload"]}}},"required":["server_time","next_interval_sec","min_app_version","templates_version_latest","commands"]},"IngestBatchRequest":{"type":"object","properties":{"events":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["android_sms","android_notification","ios_shortcut","gsm_modem","bot_forward"]},"sender":{"type":"string","minLength":1,"maxLength":120},"body":{"type":"string","minLength":1,"maxLength":2000},"received_at":{"type":"string","format":"date-time"},"sim_slot":{"type":"integer","minimum":0,"maximum":4},"client_event_id":{"type":"string","minLength":8,"maxLength":64}},"required":["source","sender","body","received_at","client_event_id"]},"minItems":1,"maxItems":100}},"required":["events"]},"IngestBatchResponse":{"type":"object","properties":{"results":{"type":"array","items":{"type":"object","properties":{"client_event_id":{"type":"string"},"event_id":{"type":"string"},"duplicate":{"type":"boolean"}},"required":["client_event_id","event_id","duplicate"]}}},"required":["results"]},"IngestTestEventRequest":{"type":"object","properties":{"source":{"type":"string","enum":["android_sms","android_notification","ios_shortcut","gsm_modem","bot_forward"]},"sender":{"type":"string","minLength":1,"maxLength":120},"body":{"type":"string","minLength":1,"maxLength":2000},"received_at":{"type":"string","format":"date-time"},"sim_slot":{"type":"integer","minimum":0,"maximum":4},"client_event_id":{"type":"string","minLength":8,"maxLength":64},"test_id":{"type":"string","minLength":1,"maxLength":64}},"required":["source","sender","body","received_at","client_event_id"]},"IngestTestEventResponse":{"type":"object","properties":{"parse_status":{"type":"string","enum":["parsed","unknown","ignored"]},"bank":{"type":["string","null"],"enum":["melli","mellat","saderat","tejarat","saman","pasargad","sepah","refah","maskan","keshavarzi","parsian","shahr","ayandeh","eghtesad_novin","blu","sina","sarmayeh","dey","karafarin","iran_zamin","khavarmianeh","gardeshgari","mehr_iran","resalat","tosee_saderat","sanat_madan","tosee_taavon","post_bank","markazi","unknown"]},"direction":{"type":["string","null"],"enum":["credit","debit"]},"amount":{"type":["integer","null"],"minimum":0},"parse_confidence":{"type":["number","null"],"minimum":0,"maximum":1},"template_version":{"type":["integer","null"],"minimum":0},"latency_ms":{"type":"integer","minimum":0}},"required":["parse_status","bank","direction","amount","parse_confidence","template_version","latency_ms"]},"PairRequest":{"type":"object","properties":{"code":{"type":"string","minLength":1,"maxLength":32},"device":{"type":"object","properties":{"kind":{"type":"string","enum":["android","ios_shortcut","gsm_modem"]},"model":{"type":"string","maxLength":120},"manufacturer":{"type":"string","maxLength":60},"os_version":{"type":"string","maxLength":32},"app_version":{"type":"string","minLength":1,"maxLength":32},"installation_id":{"type":"string","minLength":1,"maxLength":64}},"required":["kind","model","manufacturer","os_version","app_version","installation_id"]},"replaces_device_id":{"type":["string","null"],"pattern":"^dev_[0-9A-Za-z]{10,40}$"}},"required":["code","device"]},"PairResponse":{"type":"object","properties":{"device_id":{"type":"string","pattern":"^dev_[0-9A-Za-z]{10,40}$"},"device_token":{"type":"string","pattern":"^vzd_[0-9A-Za-z]{24,64}$"},"device_secret":{"type":"string","minLength":16},"config":{"type":"object","properties":{"device_id":{"type":"string","pattern":"^dev_[0-9A-Za-z]{10,40}$"},"store":{"type":"object","properties":{"id":{"type":"string","pattern":"^sto_[0-9A-Za-z]{10,40}$"},"name":{"type":"string"},"logo_url":{"type":["string","null"]}},"required":["id","name","logo_url"]},"heartbeat_interval_sec":{"type":"integer","exclusiveMinimum":0},"min_app_version":{"type":"string"},"latest_app_version":{"type":["string","null"]},"cards":{"type":"array","items":{"type":"object","properties":{"card_id":{"type":"string","pattern":"^card_[0-9A-Za-z]{10,40}$"},"bank":{"type":"string","enum":["melli","mellat","saderat","tejarat","saman","pasargad","sepah","refah","maskan","keshavarzi","parsian","shahr","ayandeh","eghtesad_novin","blu","sina","sarmayeh","dey","karafarin","iran_zamin","khavarmianeh","gardeshgari","mehr_iran","resalat","tosee_saderat","sanat_madan","tosee_taavon","post_bank","markazi","unknown"]},"last4":{"type":"string","pattern":"^\\d{4}$"}},"required":["card_id","bank","last4"]}},"banks":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["melli","mellat","saderat","tejarat","saman","pasargad","sepah","refah","maskan","keshavarzi","parsian","shahr","ayandeh","eghtesad_novin","blu","sina","sarmayeh","dey","karafarin","iran_zamin","khavarmianeh","gardeshgari","mehr_iran","resalat","tosee_saderat","sanat_madan","tosee_taavon","post_bank","markazi","unknown"]},"name_fa":{"type":["string","null"]},"senders":{"type":"array","items":{"type":"string"}},"app_packages":{"type":"array","items":{"type":"string"}}},"required":["code","name_fa","senders","app_packages"]}},"sources":{"type":"object","properties":{"sms":{"type":"boolean"},"notifications":{"type":"boolean"}},"required":["sms","notifications"]},"receiver_enabled":{"type":"boolean"},"sim_slots":{"type":"array","items":{"type":"object","properties":{"slot":{"type":"integer","minimum":0,"maximum":4},"carrier":{"type":["string","null"],"maxLength":40},"enabled":{"type":"boolean"}},"required":["slot","carrier","enabled"]}},"fix_guides":{"type":"array","items":{"type":"object","properties":{"manufacturer":{"type":"string"},"issue":{"type":"string","enum":["autostart","battery","notifications"]},"steps":{"type":"array","items":{"type":"string"}},"deep_link":{"type":["string","null"]}},"required":["manufacturer","issue","steps","deep_link"]}},"templates_version":{"type":"integer","minimum":0}},"required":["device_id","store","heartbeat_interval_sec","min_app_version","latest_app_version","cards","banks","sources","receiver_enabled","sim_slots","fix_guides","templates_version"]}},"required":["device_id","device_token","device_secret","config"]},"DeviceConfig":{"type":"object","properties":{"device_id":{"type":"string","pattern":"^dev_[0-9A-Za-z]{10,40}$"},"store":{"type":"object","properties":{"id":{"type":"string","pattern":"^sto_[0-9A-Za-z]{10,40}$"},"name":{"type":"string"},"logo_url":{"type":["string","null"]}},"required":["id","name","logo_url"]},"heartbeat_interval_sec":{"type":"integer","exclusiveMinimum":0},"min_app_version":{"type":"string"},"latest_app_version":{"type":["string","null"]},"cards":{"type":"array","items":{"type":"object","properties":{"card_id":{"type":"string","pattern":"^card_[0-9A-Za-z]{10,40}$"},"bank":{"type":"string","enum":["melli","mellat","saderat","tejarat","saman","pasargad","sepah","refah","maskan","keshavarzi","parsian","shahr","ayandeh","eghtesad_novin","blu","sina","sarmayeh","dey","karafarin","iran_zamin","khavarmianeh","gardeshgari","mehr_iran","resalat","tosee_saderat","sanat_madan","tosee_taavon","post_bank","markazi","unknown"]},"last4":{"type":"string","pattern":"^\\d{4}$"}},"required":["card_id","bank","last4"]}},"banks":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["melli","mellat","saderat","tejarat","saman","pasargad","sepah","refah","maskan","keshavarzi","parsian","shahr","ayandeh","eghtesad_novin","blu","sina","sarmayeh","dey","karafarin","iran_zamin","khavarmianeh","gardeshgari","mehr_iran","resalat","tosee_saderat","sanat_madan","tosee_taavon","post_bank","markazi","unknown"]},"name_fa":{"type":["string","null"]},"senders":{"type":"array","items":{"type":"string"}},"app_packages":{"type":"array","items":{"type":"string"}}},"required":["code","name_fa","senders","app_packages"]}},"sources":{"type":"object","properties":{"sms":{"type":"boolean"},"notifications":{"type":"boolean"}},"required":["sms","notifications"]},"receiver_enabled":{"type":"boolean"},"sim_slots":{"type":"array","items":{"type":"object","properties":{"slot":{"type":"integer","minimum":0,"maximum":4},"carrier":{"type":["string","null"],"maxLength":40},"enabled":{"type":"boolean"}},"required":["slot","carrier","enabled"]}},"fix_guides":{"type":"array","items":{"type":"object","properties":{"manufacturer":{"type":"string"},"issue":{"type":"string","enum":["autostart","battery","notifications"]},"steps":{"type":"array","items":{"type":"string"}},"deep_link":{"type":["string","null"]}},"required":["manufacturer","issue","steps","deep_link"]}},"templates_version":{"type":"integer","minimum":0}},"required":["device_id","store","heartbeat_interval_sec","min_app_version","latest_app_version","cards","banks","sources","receiver_enabled","sim_slots","fix_guides","templates_version"]},"DeviceProfileUpdate":{"type":"object","properties":{"sim_slots":{"type":"array","items":{"type":"object","properties":{"slot":{"type":"integer","minimum":0,"maximum":4},"carrier":{"type":["string","null"],"maxLength":40},"enabled":{"type":"boolean"}},"required":["slot","enabled"]},"maxItems":5},"banks":{"type":"array","items":{"type":"string","enum":["melli","mellat","saderat","tejarat","saman","pasargad","sepah","refah","maskan","keshavarzi","parsian","shahr","ayandeh","eghtesad_novin","blu","sina","sarmayeh","dey","karafarin","iran_zamin","khavarmianeh","gardeshgari","mehr_iran","resalat","tosee_saderat","sanat_madan","tosee_taavon","post_bank","markazi","unknown"]},"maxItems":30},"sources":{"type":"object","properties":{"sms":{"type":"boolean"},"notifications":{"type":"boolean"}},"required":["sms","notifications"]},"receiver_enabled":{"type":"boolean"},"label":{"type":"string","minLength":1,"maxLength":120}}},"IngestTemplatesResponse":{"type":"object","properties":{"version":{"type":"integer","minimum":0},"banks":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["melli","mellat","saderat","tejarat","saman","pasargad","sepah","refah","maskan","keshavarzi","parsian","shahr","ayandeh","eghtesad_novin","blu","sina","sarmayeh","dey","karafarin","iran_zamin","khavarmianeh","gardeshgari","mehr_iran","resalat","tosee_saderat","sanat_madan","tosee_taavon","post_bank","markazi","unknown"]},"templates":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"integer","exclusiveMinimum":0},"kind":{"type":"string","enum":["transaction","ignore"]},"match":{"type":"object","properties":{"senders":{"type":"array","items":{"type":"string"}},"packages":{"type":"array","items":{"type":"string"}},"contains_any":{"type":"array","items":{"type":"string"}}},"required":["senders","packages","contains_any"]},"pattern":{"type":"string"},"flags":{"type":["string","null"]},"field_map":{"type":["object","null"],"additionalProperties":{}}},"required":["id","version","kind","match","pattern","flags","field_map"]}}},"required":["code","templates"]}}},"required":["version","banks"]},"WebhookEvent":{"type":"object","properties":{"id":{"type":"string","pattern":"^evt_[0-9A-Za-z]{10,40}$"},"type":{"type":"string","enum":["order.created","order.paid","order.needs_review","order.underpaid","order.expired","order.canceled","refund.created","deposit.unmatched","device.offline","device.online","card.cap_reached"]},"created_at":{"type":"string","format":"date-time"},"livemode":{"type":"boolean"},"data":{"type":"object","properties":{"object":{"type":"object","additionalProperties":{}}},"required":["object"]}},"required":["id","type","created_at","livemode","data"]},"Deposit":{"type":"object","properties":{"id":{"type":"string","pattern":"^dep_[0-9A-Za-z]{10,40}$"},"amount":{"type":"integer","minimum":0,"maximum":9007199254740991},"direction":{"type":"string","enum":["credit","debit"]},"bank":{"type":"string","enum":["melli","mellat","saderat","tejarat","saman","pasargad","sepah","refah","maskan","keshavarzi","parsian","shahr","ayandeh","eghtesad_novin","blu","sina","sarmayeh","dey","karafarin","iran_zamin","khavarmianeh","gardeshgari","mehr_iran","resalat","tosee_saderat","sanat_madan","tosee_taavon","post_bank","markazi","unknown"]},"account_hint":{"type":"string"},"payer_last4":{"type":["string","null"],"pattern":"^\\d{4}$"},"tracking_ref":{"type":["string","null"]},"occurred_at":{"type":"string","format":"date-time"},"channel":{"type":"string","enum":["android_sms","android_notification","ios_shortcut","gsm_modem","open_banking","bot_forward","receipt_upload","manual"]},"parse_confidence":{"type":"number","minimum":0,"maximum":1},"match_status":{"type":"string","enum":["matched","unmatched","review","duplicate","ignored"]},"order_id":{"type":["string","null"],"pattern":"^ord_[0-9A-Za-z]{10,40}$"}},"required":["id","amount","direction","bank","account_hint","payer_last4","tracking_ref","occurred_at","channel","parse_confidence","match_status","order_id"]},"SimulateDepositRequest":{"type":"object","properties":{"amount":{"type":"integer","exclusiveMinimum":0},"card_id":{"type":"string","pattern":"^card_[0-9A-Za-z]{10,40}$"},"payer_last4":{"type":"string","pattern":"^\\d{4}$"},"bank":{"type":"string","enum":["melli","mellat","saderat","tejarat","saman","pasargad","sepah","refah","maskan","keshavarzi","parsian","shahr","ayandeh","eghtesad_novin","blu","sina","sarmayeh","dey","karafarin","iran_zamin","khavarmianeh","gardeshgari","mehr_iran","resalat","tosee_saderat","sanat_madan","tosee_taavon","post_bank","markazi","unknown"]}},"required":["amount"]},"CheckoutView":{"type":"object","properties":{"code":{"type":"string","pattern":"^VZ-[0-9A-Z]{4,8}$"},"status":{"type":"string","enum":["awaiting_payment","needs_review","underpaid","paid","expired","canceled","refunded","partially_refunded"]},"displayStatus":{"type":"string","enum":["awaiting","reviewing","paid","underpaid","expired","canceled"]},"livemode":{"type":"boolean"},"store":{"type":"object","properties":{"name":{"type":"string"},"logoUrl":{"type":["string","null"],"format":"uri"},"brandColor":{"type":["string","null"]},"domain":{"type":["string","null"]},"verified":{"type":"boolean"},"support":{"type":"object","properties":{"phone":{"type":["string","null"]},"telegram":{"type":["string","null"]},"bale":{"type":["string","null"]},"email":{"type":["string","null"]},"hours":{"type":["string","null"]}},"required":["phone","telegram","bale","email","hours"]}},"required":["name","logoUrl","brandColor","domain","verified","support"]},"amount":{"type":"integer","minimum":0,"maximum":9007199254740991},"uniqueAmount":{"type":"integer","minimum":0,"maximum":9007199254740991},"uniqueMode":{"type":"string","enum":["increase","decrease"]},"uniqueDigits":{"type":"integer","minimum":0,"maximum":6},"description":{"type":["string","null"]},"destination":{"type":"object","properties":{"bank":{"type":"string","enum":["melli","mellat","saderat","tejarat","saman","pasargad","sepah","refah","maskan","keshavarzi","parsian","shahr","ayandeh","eghtesad_novin","blu","sina","sarmayeh","dey","karafarin","iran_zamin","khavarmianeh","gardeshgari","mehr_iran","resalat","tosee_saderat","sanat_madan","tosee_taavon","post_bank","markazi","unknown"]},"bankName":{"type":"string"},"pan":{"type":"string","pattern":"^\\d{16}$"},"ownerName":{"type":"string"},"ownerVerified":{"type":"boolean"},"iban":{"type":["string","null"],"pattern":"^IR\\d{24}$"}},"required":["bank","bankName","pan","ownerName","ownerVerified","iban"]},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"graceUntil":{"type":"string","format":"date-time"},"inGrace":{"type":"boolean"},"payerLast4":{"type":"string","enum":["off","optional","required"]},"returnUrl":{"type":["string","null"],"format":"uri"},"claim":{"type":["object","null"],"properties":{"claimedAt":{"type":"string","format":"date-time"},"hasReceipt":{"type":"boolean"}},"required":["claimedAt","hasReceipt"]},"paid":{"type":["object","null"],"properties":{"paidAt":{"type":"string","format":"date-time"},"payerLast4":{"type":["string","null"],"pattern":"^\\d{4}$"},"method":{"type":"string","enum":["auto","manual"]},"channel":{"type":"string","enum":["android_sms","android_notification","ios_shortcut","gsm_modem","open_banking","bot_forward","receipt_upload","manual"]},"trackingRef":{"type":["string","null"]},"confirmSec":{"type":["integer","null"],"minimum":0}},"required":["paidAt","payerLast4","method","channel","trackingRef","confirmSec"]},"topUp":{"type":["object","null"],"properties":{"uniqueAmount":{"type":"integer","minimum":0,"maximum":9007199254740991},"uniqueDigits":{"type":"integer","minimum":0,"maximum":6},"shortfall":{"type":"integer","minimum":0,"maximum":9007199254740991},"paidAmount":{"type":"integer","minimum":0,"maximum":9007199254740991},"requestedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"graceUntil":{"type":"string","format":"date-time"},"inGrace":{"type":"boolean"}},"required":["uniqueAmount","uniqueDigits","shortfall","paidAmount","requestedAt","expiresAt","graceUntil","inGrace"]},"serverTime":{"type":"string","format":"date-time"}},"required":["code","status","displayStatus","livemode","store","amount","uniqueAmount","uniqueMode","uniqueDigits","description","destination","createdAt","expiresAt","graceUntil","inGrace","payerLast4","returnUrl","claim","paid","serverTime"]},"CheckoutStatus":{"type":"object","properties":{"status":{"type":"string","enum":["awaiting_payment","needs_review","underpaid","paid","expired","canceled","refunded","partially_refunded"]},"displayStatus":{"type":"string","enum":["awaiting","reviewing","paid","underpaid","expired","canceled"]},"step":{"type":"string","enum":["awaiting_deposit","deposit_detected","matching","confirmed"]},"inGrace":{"type":"boolean"},"paid":{"type":["object","null"],"properties":{"paidAt":{"type":"string","format":"date-time"},"payerLast4":{"type":["string","null"],"pattern":"^\\d{4}$"},"method":{"type":"string","enum":["auto","manual"]},"channel":{"type":"string","enum":["android_sms","android_notification","ios_shortcut","gsm_modem","open_banking","bot_forward","receipt_upload","manual"]},"trackingRef":{"type":["string","null"]},"confirmSec":{"type":["integer","null"],"minimum":0}},"required":["paidAt","payerLast4","method","channel","trackingRef","confirmSec"]},"changed":{"type":"boolean"},"serverTime":{"type":"string","format":"date-time"}},"required":["status","displayStatus","step","inGrace","paid","changed","serverTime"]},"CheckoutClaimRequest":{"type":"object","properties":{"payerLast4":{"type":"string","pattern":"^\\d{4}$"}},"additionalProperties":false},"CheckoutClaimResponse":{"type":"object","properties":{"claimedAt":{"type":"string","format":"date-time"},"payerLast4":{"type":["string","null"],"pattern":"^\\d{4}$"}},"required":["claimedAt","payerLast4"]},"Refund":{"type":"object","properties":{"id":{"type":"string","pattern":"^ref_[0-9A-Za-z]{10,40}$"},"order_id":{"type":"string","pattern":"^ord_[0-9A-Za-z]{10,40}$"},"amount":{"type":"integer","minimum":0,"maximum":9007199254740991},"currency":{"type":"string","enum":["IRR"]},"method":{"type":"string","enum":["card","iban"]},"reference":{"type":["string","null"]},"reason":{"type":["string","null"]},"livemode":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"}},"required":["id","order_id","amount","currency","method","reference","reason","livemode","created_at"]},"CreateRefundRequest":{"type":"object","properties":{"order_id":{"type":"string","minLength":1,"maxLength":64},"amount":{"type":"integer","exclusiveMinimum":0},"method":{"type":"string","enum":["card","iban"]},"reference":{"type":["string","null"],"minLength":1,"maxLength":64},"reason":{"type":["string","null"],"minLength":1,"maxLength":500}},"required":["order_id","amount","method"]},"RefundList":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^ref_[0-9A-Za-z]{10,40}$"},"order_id":{"type":"string","pattern":"^ord_[0-9A-Za-z]{10,40}$"},"amount":{"type":"integer","minimum":0,"maximum":9007199254740991},"currency":{"type":"string","enum":["IRR"]},"method":{"type":"string","enum":["card","iban"]},"reference":{"type":["string","null"]},"reason":{"type":["string","null"]},"livemode":{"type":"boolean"},"created_at":{"type":"string","format":"date-time"}},"required":["id","order_id","amount","currency","method","reference","reason","livemode","created_at"]}},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}},"required":["data","has_more","next_cursor"]},"ApiKeyIdentity":{"type":"object","properties":{"store":{"type":"object","properties":{"id":{"type":"string","pattern":"^sto_[0-9A-Za-z]{10,40}$"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},"livemode":{"type":"boolean"},"scopes":{"type":"array","items":{"type":"string"}},"key":{"type":"object","properties":{"prefix":{"type":"string"},"last4":{"type":"string"}},"required":["prefix","last4"]}},"required":["store","livemode","scopes","key"]},"ConnectTokenRequest":{"anyOf":[{"type":"object","properties":{"code":{"type":"string","minLength":16,"maxLength":600},"code_verifier":{"type":"string","pattern":"^[A-Za-z0-9._~-]{43,128}$"},"site_url":{"type":"string","minLength":8,"maxLength":300,"format":"uri"}},"required":["code","code_verifier","site_url"]},{"type":"object","properties":{"code":{"type":"string","minLength":16,"maxLength":600},"webhook_url":{"type":"string","maxLength":2048,"format":"uri"}},"required":["code","webhook_url"]}]},"ConnectTokenResponse":{"type":"object","properties":{"api_key":{"type":"string"},"webhook_endpoint_id":{"type":"string","pattern":"^whe_[0-9A-Za-z]{10,40}$"},"webhook_secret":{"type":"string"},"integration_id":{"type":"string","pattern":"^int_[0-9A-Za-z]{10,40}$"},"store":{"type":"object","properties":{"id":{"type":"string","pattern":"^sto_[0-9A-Za-z]{10,40}$"},"name":{"type":"string"},"slug":{"type":"string"}},"required":["id","name","slug"]},"livemode":{"type":"boolean"},"scopes":{"type":"array","items":{"type":"string"}}},"required":["api_key","webhook_endpoint_id","webhook_secret","integration_id","store","livemode","scopes"]},"ListenSession":{"type":"object","properties":{"id":{"type":"string","pattern":"^lsn_[0-9A-Za-z]{10,40}$"},"livemode":{"type":"boolean","enum":[false]},"events":{"type":"array","items":{"type":"string","enum":["order.created","order.paid","order.needs_review","order.underpaid","order.expired","order.canceled","refund.created","deposit.unmatched","device.offline","device.online","card.cap_reached"]}},"stream_path":{"type":"string"},"idle_timeout_sec":{"type":"integer","exclusiveMinimum":0},"expires_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"}},"required":["id","livemode","events","stream_path","idle_timeout_sec","expires_at","created_at"]},"ListenSessionCreated":{"type":"object","properties":{"id":{"type":"string","pattern":"^lsn_[0-9A-Za-z]{10,40}$"},"livemode":{"type":"boolean","enum":[false]},"events":{"type":"array","items":{"type":"string","enum":["order.created","order.paid","order.needs_review","order.underpaid","order.expired","order.canceled","refund.created","deposit.unmatched","device.offline","device.online","card.cap_reached"]}},"stream_path":{"type":"string"},"idle_timeout_sec":{"type":"integer","exclusiveMinimum":0},"expires_at":{"type":"string","format":"date-time"},"created_at":{"type":"string","format":"date-time"},"secret":{"type":"string"}},"required":["id","livemode","events","stream_path","idle_timeout_sec","expires_at","created_at","secret"]},"ListenStreamWebhook":{"type":"object","properties":{"event_id":{"type":"string","pattern":"^evt_[0-9A-Za-z]{10,40}$"},"type":{"type":"string","enum":["order.created","order.paid","order.needs_review","order.underpaid","order.expired","order.canceled","refund.created","deposit.unmatched","device.offline","device.online","card.cap_reached"]},"signature":{"type":"string"},"payload":{"type":"string"}},"required":["event_id","type","signature","payload"]},"ListenSecretRotated":{"type":"object","properties":{"secret":{"type":"string"},"rotated_at":{"type":"string","format":"date-time"},"closed_sessions":{"type":"integer","minimum":0}},"required":["secret","rotated_at","closed_sessions"]},"StatusSummary":{"type":"object","properties":{"generatedAt":{"type":"string","format":"date-time"},"overall":{"type":"string","enum":["operational","maintenance","degraded","outage"]},"maintenance":{"type":["object","null"],"properties":{"message":{"type":"string"}},"required":["message"]},"windowDays":{"type":"integer","exclusiveMinimum":0},"components":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["api","panel","pay","detection","webhooks","notifications","billing"]},"name":{"type":"string"},"description":{"type":"string"},"state":{"type":"string","enum":["operational","maintenance","degraded","outage"]},"uptime":{"type":"number","minimum":0,"maximum":1},"days":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"state":{"type":"string","enum":["ok","degraded","outage"]},"minutes":{"type":"integer","minimum":0,"maximum":1440}},"required":["date","state","minutes"]}}},"required":["key","name","description","state","uptime","days"]}},"activeIncidents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^inc_[0-9A-Za-z]{10,40}$"},"title":{"type":"string"},"severity":{"type":"string","enum":["minor","major","critical"]},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved"]},"components":{"type":"array","items":{"type":"string","enum":["api","panel","pay","detection","webhooks","notifications","billing"]}},"startedAt":{"type":"string","format":"date-time"},"resolvedAt":{"type":["string","null"],"format":"date-time"},"updates":{"type":"array","items":{"type":"object","properties":{"at":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved"]},"message":{"type":"string"}},"required":["at","status","message"]}}},"required":["id","title","severity","status","components","startedAt","resolvedAt","updates"]}},"recentIncidents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^inc_[0-9A-Za-z]{10,40}$"},"title":{"type":"string"},"severity":{"type":"string","enum":["minor","major","critical"]},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved"]},"components":{"type":"array","items":{"type":"string","enum":["api","panel","pay","detection","webhooks","notifications","billing"]}},"startedAt":{"type":"string","format":"date-time"},"resolvedAt":{"type":["string","null"],"format":"date-time"},"updates":{"type":"array","items":{"type":"object","properties":{"at":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["investigating","identified","monitoring","resolved"]},"message":{"type":"string"}},"required":["at","status","message"]}}},"required":["id","title","severity","status","components","startedAt","resolvedAt","updates"]}}},"required":["generatedAt","overall","maintenance","windowDays","components","activeIncidents","recentIncidents"]},"PlanList":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","enum":["free","growth","pro","enterprise"]},"nameFa":{"type":"string"},"nameEn":{"type":"string"},"tagline":{"type":["string","null"]},"badge":{"type":["string","null"]},"priceMonthly":{"type":["integer","null"],"minimum":0},"priceYearly":{"type":["integer","null"],"minimum":0},"yearlyMonthlyEquivalent":{"type":["integer","null"],"minimum":0},"overagePricePer100":{"type":["integer","null"],"minimum":0},"limits":{"type":"object","properties":{"transactions":{"type":["integer","null"],"minimum":0},"cards":{"type":["integer","null"],"minimum":0},"devices":{"type":["integer","null"],"minimum":0},"members":{"type":["integer","null"],"minimum":0},"stores":{"type":["integer","null"],"minimum":0}},"required":["transactions","cards","devices","members","stores"]},"features":{"type":"object","additionalProperties":{}},"highlights":{"type":"array","items":{"type":"string"}},"sort":{"type":"integer"}},"required":["code","nameFa","nameEn","tagline","badge","priceMonthly","priceYearly","yearlyMonthlyEquivalent","overagePricePer100","limits","features","highlights","sort"]}},"period":{"type":"string","enum":["monthly","yearly"]},"vatPercent":{"type":"integer"},"currentPlanCode":{"type":["string","null"],"enum":["free","growth","pro","enterprise"]}},"required":["data","period","vatPercent","currentPlanCode"]}},"parameters":{}},"paths":{"/v1/orders":{"post":{"tags":["Orders"],"summary":"Create an order and reserve its unique amount","security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","maxLength":250,"description":"Replays the stored response for 24 h; another body with the same key → 409 idempotency_mismatch."},"required":false,"name":"Idempotency-Key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrderRequest"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Order"}}}},"400":{"description":"invalid_parameter, amount_too_small","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"invalid_api_key, key_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"scope_missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"card_not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"unique_amount_exhausted, no_active_card, card_not_active, idempotency_mismatch","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"merchant_order_id_duplicate, amount_out_of_range","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["Orders"],"summary":"List orders, newest first (cursor pagination); `id[]` polls up to 100 orders at once","security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"starting_after","in":"query"},{"schema":{"type":"string","enum":["awaiting_payment","needs_review","underpaid","paid","expired","canceled","refunded","partially_refunded"]},"required":false,"name":"status","in":"query"},{"schema":{"type":"string"},"required":false,"name":"merchant_order_id","in":"query"},{"schema":{"type":"string","pattern":"^09\\d{9}$"},"required":false,"name":"customer_phone","in":"query"},{"schema":{"type":"string","format":"date-time"},"required":false,"name":"created[gte]","in":"query"},{"schema":{"type":"string","format":"date-time"},"required":false,"name":"created[lte]","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"required":false,"name":"id[]","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderList"}}}},"400":{"description":"invalid_parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"invalid_api_key, key_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"scope_missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/orders/{id}":{"get":{"tags":["Orders"],"summary":"Retrieve an order by id or code","security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Order id (`ord_…`) or code (`VZ-…`).","example":"ord_01K8F3M2Q0V7E6W5X4Y3Z2A1B0"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Order"}}}},"401":{"description":"invalid_api_key, key_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"scope_missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"order_not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/orders/{id}/cancel":{"post":{"tags":["Orders"],"summary":"Cancel an unpaid order","security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","description":"Order id (`ord_…`) or code (`VZ-…`).","example":"ord_01K8F3M2Q0V7E6W5X4Y3Z2A1B0"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string","maxLength":250,"description":"Replays the stored response for 24 h; another body with the same key → 409 idempotency_mismatch."},"required":false,"name":"Idempotency-Key","in":"header"}],"responses":{"200":{"description":"Canceled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Order"}}}},"401":{"description":"invalid_api_key, key_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"scope_missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"order_not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"order_not_cancelable, idempotency_mismatch","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/refunds":{"post":{"tags":["Refunds"],"summary":"Record a refund the merchant transferred (card or IBAN); emits refund.created","description":"Needs `refunds:write`. The order (`ord_…` or `VZ-…`) must be paid; the total of its refunds never exceeds the paid amount, and the order becomes `partially_refunded` or `refunded`.","security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","maxLength":250,"description":"Replays the stored response for 24 h; another body with the same key → 409 idempotency_mismatch."},"required":false,"name":"Idempotency-Key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRefundRequest"}}}},"responses":{"201":{"description":"Recorded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Refund"}}}},"400":{"description":"invalid_parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"invalid_api_key, key_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"scope_missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"order_not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"order_not_paid, idempotency_mismatch","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"refund_exceeds_paid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"get":{"tags":["Refunds"],"summary":"List refunds, newest first (`?order=` narrows to one order); needs orders:read or refunds:write","security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string"},"required":false,"name":"starting_after","in":"query"},{"schema":{"type":"string","minLength":1,"maxLength":64},"required":false,"name":"order","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefundList"}}}},"400":{"description":"invalid_parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"invalid_api_key, key_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"scope_missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"order_not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/refunds/{id}":{"get":{"tags":["Refunds"],"summary":"Retrieve a refund; needs orders:read or refunds:write","security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","example":"ref_01K8F3M2Q0V7E6W5X4Y3Z2A1B0"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Refund"}}}},"401":{"description":"invalid_api_key, key_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"scope_missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"refund_not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/me":{"get":{"tags":["Account"],"summary":"The store, mode, scopes and display prefix of the calling API key","security":[{"ApiKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyIdentity"}}}},"401":{"description":"invalid_api_key, key_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/integrations/connect/token":{"post":{"tags":["Integrations"],"summary":"Exchange a one-time connect code (+ PKCE verifier) for the plugin key and webhook secret","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectTokenRequest"}}}},"responses":{"200":{"description":"Connected","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectTokenResponse"}}}},"400":{"description":"invalid_grant, invalid_parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"too_many_requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/integrations/heartbeat":{"post":{"tags":["Integrations"],"summary":"Report the plugin version of the calling key","security":[{"ApiKey":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"plugin_version":{"type":"string","pattern":"^\\d+\\.\\d+\\.\\d+([-+][0-9A-Za-z.-]+)?$"},"platform_version":{"type":"string","maxLength":64},"site_url":{"type":"string","minLength":8,"maxLength":300,"format":"uri"}},"required":["plugin_version"]}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"integration_id":{"type":["string","null"],"pattern":"^int_[0-9A-Za-z]{10,40}$"},"latest_version":{"type":["string","null"]},"outdated":{"type":"string","enum":["none","minor","critical"]}},"required":["integration_id","latest_version","outdated"]}}}},"401":{"description":"invalid_api_key, key_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"scope_missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/integrations/self":{"delete":{"tags":["Integrations"],"summary":"Disconnect: revoke the calling key and delete its integration webhook endpoint","security":[{"ApiKey":[]}],"responses":{"200":{"description":"Revoked","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","enum":[true]},"api_key_id":{"type":"string","pattern":"^key_[0-9A-Za-z]{10,40}$"},"integration_id":{"type":["string","null"],"pattern":"^int_[0-9A-Za-z]{10,40}$"},"webhook_endpoint_id":{"type":["string","null"],"pattern":"^whe_[0-9A-Za-z]{10,40}$"}},"required":["deleted","api_key_id","integration_id","webhook_endpoint_id"]}}}},"401":{"description":"invalid_api_key, key_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"scope_missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/webhook_endpoints/{id}/ping":{"post":{"tags":["Webhooks"],"summary":"Send one signed `webhook.ping` event to the endpoint now and report its answer","security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","example":"whe_01K8F3M2Q0V7E6W5X4Y3Z2A1B0"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Delivered or failed (see `ok`)","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"^whe_[0-9A-Za-z]{10,40}$"},"event_id":{"type":"string","pattern":"^evt_[0-9A-Za-z]{10,40}$"},"ok":{"type":"boolean"},"status_code":{"type":["integer","null"]},"latency_ms":{"type":"integer","minimum":0},"error":{"type":["string","null"]}},"required":["id","event_id","ok","status_code","latency_ms","error"]}}}},"401":{"description":"invalid_api_key, key_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"scope_missing","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"resource_not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"endpoint_disabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"too_many_requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/listen_sessions":{"post":{"tags":["Webhooks"],"summary":"Test keys only: open a listen session that receives this store's test-mode webhook events over SSE (varizet listen)","security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","maxLength":250,"description":"Replays the stored response for 24 h; another body with the same key → 409 idempotency_mismatch."},"required":false,"name":"Idempotency-Key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"events":{"type":"array","items":{"type":"string","enum":["order.created","order.paid","order.needs_review","order.underpaid","order.expired","order.canceled","refund.created","deposit.unmatched","device.offline","device.online","card.cap_reached"]},"minItems":1,"maxItems":64}},"additionalProperties":false}}}},"responses":{"201":{"description":"Created; `secret` (whsec_…) is the key's listen secret, the same for every session until rotated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListenSessionCreated"}}}},"400":{"description":"invalid_parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"invalid_api_key, key_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"scope_missing (orders:read or webhooks:manage), testmode_required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"listen_session_limit (5 active per key), idempotency_mismatch","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/listen_sessions/rotate_secret":{"post":{"tags":["Webhooks"],"summary":"Test keys only: new listen secret for the calling key; its open streams end with reason rotated","security":[{"ApiKey":[]}],"responses":{"200":{"description":"Rotated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListenSecretRotated"}}}},"401":{"description":"invalid_api_key, key_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"scope_missing (orders:read or webhooks:manage), testmode_required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/listen_sessions/{id}":{"get":{"tags":["Webhooks"],"summary":"A listen session of this key (404 once expired)","security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","example":"lsn_01K8F3M2Q0V7E6W5X4Y3Z2A1B0"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListenSession"}}}},"401":{"description":"invalid_api_key, key_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"scope_missing (orders:read or webhooks:manage), testmode_required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"resource_not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}},"delete":{"tags":["Webhooks"],"summary":"End a listen session; open streams receive `expired` (reason `deleted`)","security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","example":"lsn_01K8F3M2Q0V7E6W5X4Y3Z2A1B0"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","pattern":"^lsn_[0-9A-Za-z]{10,40}$"},"deleted":{"type":"boolean","enum":[true]}},"required":["id","deleted"]}}}},"401":{"description":"invalid_api_key, key_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"scope_missing (orders:read or webhooks:manage), testmode_required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"resource_not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/listen_sessions/{id}/stream":{"get":{"tags":["Webhooks"],"summary":"Server-Sent Events: `ready`, then `webhook` frames (payload + Varizet-Signature), `expired`","description":"Frames: `event: ready` {session_id, expires_at}; `id: <cursor>` + `event: webhook` (data = ListenStreamWebhook: forward `payload` byte for byte with `Varizet-Signature: <signature>`); `: keepalive` every 15 s; `event: expired` {session_id, reason}. Resume with `Last-Event-ID` (or `?last_event_id=`); the last 100 events are kept. Signatures are made when the frame is written.","security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","example":"lsn_01K8F3M2Q0V7E6W5X4Y3Z2A1B0"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":false,"name":"last_event_id","in":"query"},{"schema":{"type":"string"},"required":false,"name":"Last-Event-ID","in":"header"}],"responses":{"200":{"description":"text/event-stream","content":{"text/event-stream":{"schema":{"$ref":"#/components/schemas/ListenStreamWebhook"}}}},"400":{"description":"invalid_parameter (Last-Event-ID)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"invalid_api_key, key_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"scope_missing (orders:read or webhooks:manage), testmode_required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"resource_not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/ingest/v1/events":{"post":{"tags":["Device ingest"],"summary":"Submit one bank SMS or notification (raw text; parsing is server-side)","security":[{"DeviceToken":[]}],"parameters":[{"schema":{"type":"string","description":"t=<unix seconds>,v1=<hex hmac_sha256(device_secret, t + \".\" + raw_body)>"},"required":true,"name":"X-Signature","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestEventRequest"}}}},"responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestEventResponse"}}}},"400":{"description":"invalid_parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"invalid_signature, signature_expired, device_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/ingest/v1/heartbeat":{"post":{"tags":["Device ingest"],"summary":"Device liveness and health flags (every 60 s)","security":[{"DeviceToken":[]}],"parameters":[{"schema":{"type":"string","description":"t=<unix seconds>,v1=<hex hmac_sha256(device_secret, t + \".\" + raw_body)>"},"required":true,"name":"X-Signature","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestHeartbeatRequest"}}}},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestHeartbeatResponse"}}}},"401":{"description":"invalid_signature, signature_expired, device_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/ingest/v1/events/batch":{"post":{"tags":["Device ingest"],"summary":"Drain the offline queue: up to 100 events, oldest first","security":[{"DeviceToken":[]}],"parameters":[{"schema":{"type":"string","description":"t=<unix seconds>,v1=<hex hmac_sha256(device_secret, t + \".\" + raw_body)>"},"required":true,"name":"X-Signature","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestBatchRequest"}}}},"responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestBatchResponse"}}}},"400":{"description":"invalid_parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"invalid_signature, signature_expired, device_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/ingest/v1/test-events":{"post":{"tags":["Device ingest"],"summary":"Parse a test SMS synchronously; never stored or matched","security":[{"DeviceToken":[]}],"parameters":[{"schema":{"type":"string","description":"t=<unix seconds>,v1=<hex hmac_sha256(device_secret, t + \".\" + raw_body)>"},"required":true,"name":"X-Signature","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestTestEventRequest"}}}},"responses":{"200":{"description":"Parse result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestTestEventResponse"}}}},"400":{"description":"invalid_parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"invalid_signature, signature_expired, device_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/ingest/v1/templates":{"get":{"tags":["Device ingest"],"summary":"Published parser templates (offline preview); 304 when since_version is current","security":[{"DeviceToken":[]}],"parameters":[{"schema":{"type":["integer","null"],"minimum":0},"required":false,"name":"since_version","in":"query"},{"schema":{"type":"string","description":"t=<unix seconds>,v1=<hex hmac_sha256(device_secret, t + \".\" + raw_body)>"},"required":true,"name":"X-Signature","in":"header"}],"responses":{"200":{"description":"OK (with ETag)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IngestTemplatesResponse"}}}},"304":{"description":"Not modified"},"401":{"description":"invalid_signature, signature_expired, device_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/ingest/v1/pair":{"post":{"tags":["Device pairing"],"summary":"Pair a device with the 8-character code from the panel (no auth; 10/hour per IP)","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PairRequest"}}}},"responses":{"201":{"description":"Paired; device_secret is shown only here","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PairResponse"}}}},"400":{"description":"invalid_parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"device_not_found (replaces_device_id)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"pairing_code_used","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"422":{"description":"pairing_code_invalid, pairing_code_expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"too_many_requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/ingest/v1/device":{"get":{"tags":["Device pairing"],"summary":"The device's config: store, cards, sender allowlist, intervals","security":[{"DeviceToken":[]}],"parameters":[{"schema":{"type":"string","description":"t=<unix seconds>,v1=<hex hmac_sha256(device_secret, t + \".\" + raw_body)>"},"required":true,"name":"X-Signature","in":"header"}],"responses":{"200":{"description":"OK (with ETag)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceConfig"}}}},"304":{"description":"Not modified (If-None-Match)"},"401":{"description":"invalid_signature, signature_expired, device_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/ingest/v1/device/profile":{"put":{"tags":["Device pairing"],"summary":"Save SIM slots, banks, sources, the receiver switch and the label chosen on the phone","security":[{"DeviceToken":[]}],"parameters":[{"schema":{"type":"string","description":"t=<unix seconds>,v1=<hex hmac_sha256(device_secret, t + \".\" + raw_body)>"},"required":true,"name":"X-Signature","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceProfileUpdate"}}}},"responses":{"200":{"description":"Updated config","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeviceConfig"}}}},"400":{"description":"invalid_parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"invalid_signature, signature_expired, device_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/test/deposits":{"post":{"tags":["Test"],"summary":"Sandbox: simulate a deposit through the real parser and matcher (test keys only)","security":[{"ApiKey":[]}],"parameters":[{"schema":{"type":"string","maxLength":250,"description":"Replays the stored response for 24 h; another body with the same key → 409 idempotency_mismatch."},"required":false,"name":"Idempotency-Key","in":"header"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulateDepositRequest"}}}},"responses":{"201":{"description":"The deposit, already matched (or not)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Deposit"}}}},"400":{"description":"invalid_parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"description":"invalid_api_key, key_revoked","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"403":{"description":"scope_missing, testmode_required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"card_not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"no_active_card, idempotency_mismatch","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/pay/v1/checkouts/{token}":{"get":{"tags":["Payment page"],"summary":"Everything the hosted payment page renders; the first call records «link opened»","parameters":[{"schema":{"type":"string","pattern":"^[0-9A-Za-z]{16,64}$","description":"Payment token from `payment_url` (ADR-0014)."},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutView"}}}},"404":{"description":"checkout_not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"too_many_requests (per IP; RateLimit-* headers)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/pay/v1/checkouts/{token}/status":{"get":{"tags":["Payment page"],"summary":"Light status for polling until realtime is available","parameters":[{"schema":{"type":"string","pattern":"^[0-9A-Za-z]{16,64}$","description":"Payment token from `payment_url` (ADR-0014)."},"required":true,"name":"token","in":"path"},{"schema":{"type":"string","format":"date-time"},"required":false,"name":"since","in":"query"}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutStatus"}}}},"404":{"description":"checkout_not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"too_many_requests (per IP; RateLimit-* headers)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/pay/v1/checkouts/{token}/claims":{"post":{"tags":["Payment page"],"summary":"«واریز کردم» with optional payer last 4 digits; idempotent per order","parameters":[{"schema":{"type":"string","pattern":"^[0-9A-Za-z]{16,64}$","description":"Payment token from `payment_url` (ADR-0014)."},"required":true,"name":"token","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutClaimRequest"}}}},"responses":{"200":{"description":"Claim recorded (or the existing one)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutClaimResponse"}}}},"400":{"description":"invalid_parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"404":{"description":"checkout_not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"checkout_closed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"too_many_requests (per IP; RateLimit-* headers)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/pay/v1/checkouts/{token}/simulate-deposit":{"post":{"tags":["Payment page"],"summary":"Sandbox «شبیه‌سازی واریز» for a test-mode order (404 for live orders)","parameters":[{"schema":{"type":"string","pattern":"^[0-9A-Za-z]{16,64}$","description":"Payment token from `payment_url` (ADR-0014)."},"required":true,"name":"token","in":"path"}],"responses":{"200":{"description":"Status after the simulated deposit","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutStatus"}}}},"404":{"description":"checkout_not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"409":{"description":"checkout_closed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"too_many_requests (per IP; RateLimit-* headers)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/status/v1/summary":{"get":{"tags":["Status"],"summary":"Platform status: components, 90-day uptime bars and published incidents","responses":{"200":{"description":"Status feed (weak ETag; ignores generatedAt)","headers":{"ETag":{"schema":{"type":"string"},"description":"Send back as If-None-Match for a 304."},"Cache-Control":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusSummary"}}}},"304":{"description":"Not modified"},"429":{"description":"too_many_requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/public/plans":{"get":{"tags":["Meta"],"summary":"Public plan catalogue: prices in integer rial (VAT excluded), limits and features","parameters":[{"schema":{"type":"string","enum":["monthly","yearly"],"default":"monthly"},"required":false,"name":"period","in":"query"}],"responses":{"200":{"description":"Plans in display order","headers":{"ETag":{"schema":{"type":"string"},"description":"Send back as If-None-Match for a 304."},"Cache-Control":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlanList"}}}},"304":{"description":"Not modified"},"400":{"description":"invalid_parameter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"429":{"description":"too_many_requests","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}}}}},"/v1/openapi.json":{"get":{"tags":["Meta"],"summary":"This document","responses":{"200":{"description":"OpenAPI 3.1 document","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}}}}},"webhooks":{}}