{"openapi": "3.1.0", "info": {"title": "Triple Disputes API", "version": "1.0.0", "description": "Public API for submitting disputes and retrieving evaluation results."}, "paths": {"/api/evaluations/": {"post": {"operationId": "disputes_rest_external_evaluations_create_evaluation", "summary": "Create an evaluation", "parameters": [], "responses": {"200": {"description": "OK"}}, "description": "Submit a dispute with evidence for automated evaluation.", "tags": ["Evaluations"], "requestBody": {"content": {"application/json": {"schema": {"discriminator": {"mapping": {"cancelled": "#/components/schemas/CancelledEvaluation", "fraud": "#/components/schemas/FraudEvaluation", "processing_duplicate": "#/components/schemas/ProcessingDuplicateEvaluation", "service_not_received": "#/components/schemas/ServiceNotReceivedEvaluation"}, "propertyName": "category"}, "oneOf": [{"$ref": "#/components/schemas/FraudEvaluation"}, {"$ref": "#/components/schemas/ServiceNotReceivedEvaluation"}, {"$ref": "#/components/schemas/ProcessingDuplicateEvaluation"}, {"$ref": "#/components/schemas/CancelledEvaluation"}], "title": "Payload"}}}, "required": true}, "security": [{"BearerAuthentication": []}]}}, "/api/evaluations/{evaluation_id}/result": {"get": {"operationId": "disputes_rest_external_evaluations_get_evaluation_result", "summary": "Get evaluation result", "parameters": [{"in": "path", "name": "evaluation_id", "schema": {"format": "uuid", "title": "Evaluation Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/GetEvaluationResultOut"}}}}}, "description": "Retrieve the evaluation confidence and any failed checks.", "tags": ["Evaluations"], "security": [{"BearerAuthentication": []}]}}, "/api/files/evidence_files/": {"post": {"operationId": "disputes_rest_external_files_upload_evidence_file", "summary": "Upload an evidence file", "parameters": [], "responses": {"201": {"description": "Created", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FileOut"}}}}}, "description": "Upload an evidence file and receive its id for use in evaluations.", "tags": ["Files"], "requestBody": {"content": {"multipart/form-data": {"schema": {"properties": {"file": {"format": "binary", "title": "File", "type": "string"}}, "required": ["file"], "title": "FileParams", "type": "object"}}}, "required": true}, "security": [{"BearerAuthentication": []}]}}, "/api/files/evidence_files/{file_id}": {"get": {"operationId": "disputes_rest_external_files_get_file", "summary": "Get file metadata and signed URL", "parameters": [{"in": "path", "name": "file_id", "schema": {"format": "uuid", "title": "File Id", "type": "string"}, "required": true}], "responses": {"200": {"description": "OK", "content": {"application/json": {"schema": {"$ref": "#/components/schemas/FileOut"}}}}}, "description": "Retrieve metadata and a signed URL for an evidence file.", "tags": ["Files"], "security": [{"BearerAuthentication": []}]}}}, "components": {"schemas": {"AVSResult": {"description": "Address Verification Service (AVS) result.\n\nCompares only numeric portions (house number, ZIP code) of the billing address.", "enum": ["MATCH", "NO_MATCH", "PARTIAL_MATCH", "NOT_PROVIDED"], "title": "AVSResult", "type": "string", "x-enum-descriptions": {"MATCH": "House number and ZIP code matched the issuer's records.", "NO_MATCH": "Address did not match issuer's records. Fraud indicator.", "PARTIAL_MATCH": "Partial match (e.g., ZIP matched but house number didn't).", "NOT_PROVIDED": "AVS not performed. Card may be foreign or merchant didn't request it."}}, "AuthorizationMode": {"description": "How payment authorization was performed.", "enum": ["ONLINE", "OFFLINE", "NO_AUTH", "UNKNOWN"], "title": "AuthorizationMode", "type": "string", "x-enum-descriptions": {"ONLINE": "The transaction was authorized online with the issuer/network.", "OFFLINE": "The transaction followed an EMV offline authorization path.", "NO_AUTH": "No authorization step was performed.", "UNKNOWN": "The authorization path is unavailable or could not be mapped."}}, "CancelledEvaluation": {"additionalProperties": false, "description": "Base schema for creating an evaluation.", "properties": {"dispute": {"$ref": "#/components/schemas/Dispute", "description": "Dispute details including the disputed amount and currency."}, "transaction": {"$ref": "#/components/schemas/Transaction", "description": "Transaction being disputed."}, "card": {"$ref": "#/components/schemas/Card"}, "category": {"const": "cancelled", "description": "Dispute category for cancelled transactions.", "title": "Category", "type": "string"}, "evidences": {"$ref": "#/components/schemas/CancelledEvidences", "description": "Evidence for cancellation disputes."}}, "required": ["dispute", "transaction", "card", "category", "evidences"], "title": "CancelledEvaluation", "type": "object"}, "CancelledEvidences": {"additionalProperties": false, "description": "Evidence required for cancellation disputes. These disputes occur when a cardholder recognizes the transaction but claims cancellation handling or resulting charges were inconsistent with policy/disclosure.", "properties": {"cardholder_statement": {"description": "A written statement from the cardholder describing the cancellation claim, including what was purchased/cancelled and why the charged amount is disputed.", "examples": ["I cancelled the booking in time but was charged a fee that does not match policy."], "minLength": 35, "title": "Cardholder Statement", "type": "string", "x-multiline": true}, "purchase_type": {"$ref": "#/components/schemas/PurchaseType", "description": "Type of purchase. Options: product (goods) or service (bookings/subscriptions).", "examples": ["service"]}, "cancelled_at": {"anyOf": [{"description": "Date when the cardholder requested cancellation from the merchant (YYYY-MM-DD).", "examples": ["2026-02-01"], "format": "date", "type": "string"}, {"type": "null"}], "title": "Cancelled At"}, "additional_documentation": {"anyOf": [{"description": "Optional list of uploaded file IDs for the `additional_documentation` evidence field (for example purchase receipts, cancellation policy terms, disclosure documents, shipment status proofs, or return attempt evidence). Maximum 5 files.", "examples": [["550e8400-e29b-41d4-a716-446655440000"]], "items": {"format": "uuid", "type": "string"}, "maxItems": 5, "type": "array"}, {"type": "null"}], "title": "Additional Documentation"}}, "required": ["cardholder_statement", "purchase_type"], "title": "CancelledEvidences", "type": "object"}, "Card": {"additionalProperties": false, "description": "Card snapshot for the disputed transaction.", "properties": {"bin": {"description": "Card BIN (Issuer Identification Number), 6 to 8 digits. Use the identifier associated with the card details used in this transaction.", "examples": ["54133388"], "maxLength": 8, "minLength": 6, "pattern": "^\\d{6,8}$", "title": "Bin", "type": "string"}, "last_4": {"description": "Last 4 digits associated with the card details used in this transaction. For network-tokenized payments, these may correspond to tokenized card details.", "examples": ["1234"], "maxLength": 4, "minLength": 4, "pattern": "^\\d{4}$", "title": "Last 4", "type": "string"}, "emv_chip_enabled": {"anyOf": [{"description": "Whether the card profile supports EMV chip functionality for in-person payments.", "examples": [true], "type": "boolean"}, {"type": "null"}], "title": "Emv Chip Enabled"}, "emv_pin_preferring": {"anyOf": [{"description": "Whether the card is configured to prefer PIN verification in EMV chip flows.", "examples": [false], "type": "boolean"}, {"type": "null"}], "title": "Emv Pin Preferring"}}, "required": ["bin", "last_4"], "title": "Card", "type": "object"}, "CardScheme": {"description": "The card network (payment scheme) that processed the transaction.\n\nDifferent networks have different dispute rules and timeframes.", "enum": ["VISA", "MC"], "title": "CardScheme", "type": "string", "x-enum-descriptions": {"VISA": "Visa card network. Disputes follow Visa's Claims Resolution process with specific reason codes and documentation requirements.", "MC": "Mastercard network. Disputes follow Mastercard's chargeback process with its own reason codes and evidence requirements."}}, "ChannelType": {"description": "The channel through which the transaction was conducted.\n\nThis affects what evidence is available and applicable for the dispute.", "enum": ["ATM", "POS", "ECOMMERCE"], "title": "ChannelType", "type": "string", "x-enum-descriptions": {"ATM": "Automated Teller Machine transaction. Cash withdrawal or balance inquiry at an ATM terminal.", "POS": "Point of Sale transaction. An in-person, card-present purchase at a physical retail location where the card was swiped, inserted, or tapped.", "ECOMMERCE": "E-commerce or card-not-present transaction. An online or remote purchase where the card details were entered manually without the physical card being present."}}, "Dispute": {"additionalProperties": false, "description": "Dispute details specifying the amount and currency being disputed.", "properties": {"disputed_amount": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,10}|(?=[\\d.]{1,13}0*$)\\d{0,10}\\.\\d{0,2}0*$)", "type": "string"}], "description": "The amount being disputed, in major currency units (e.g., dollars, not cents). This may match the full transaction amount or be a partial amount when only some items or services are being disputed.", "examples": [149.99], "title": "Disputed Amount"}, "disputed_currency": {"description": "The ISO 4217 three-letter currency code for the disputed amount (e.g., 'USD', 'EUR', 'GBP').", "examples": ["USD"], "maxLength": 3, "minLength": 3, "title": "Disputed Currency", "type": "string"}}, "required": ["disputed_amount", "disputed_currency"], "title": "Dispute", "type": "object"}, "FraudEvaluation": {"additionalProperties": false, "description": "Base schema for creating an evaluation.", "properties": {"dispute": {"$ref": "#/components/schemas/Dispute", "description": "Dispute details including the disputed amount and currency."}, "transaction": {"$ref": "#/components/schemas/Transaction", "description": "Transaction being disputed."}, "card": {"$ref": "#/components/schemas/Card"}, "category": {"const": "fraud", "description": "Dispute category for fraud.", "title": "Category", "type": "string"}, "evidences": {"$ref": "#/components/schemas/FraudEvidences", "description": "Evidence for fraud disputes."}}, "required": ["dispute", "transaction", "card", "category", "evidences"], "title": "FraudEvaluation", "type": "object"}, "FraudEvidences": {"additionalProperties": false, "description": "Evidence required for fraud disputes. These disputes occur when a cardholder claims they did not make or authorize a transaction. The cardholder states that the purchase was made by someone else using their card or card details without permission and does not recognize or acknowledge the transaction. Sometimes fraud disputes may require additional actions from the issuer, such as cancelling the compromised card or reporting the transaction to Visa or Mastercard via TC40/SAFE reports.", "properties": {"cardholder_statement": {"description": "A written statement from the cardholder describing the fraudulent transaction in their own words. Should clearly explain why they believe the transaction was unauthorized.", "examples": ["I did not make this purchase and my card details were stolen."], "minLength": 35, "title": "Cardholder Statement", "type": "string", "x-multiline": true}, "additional_documentation": {"anyOf": [{"description": "Optional list of uploaded file IDs for the `additional_documentation` evidence field (for example police reports, merchant communications, receipts, or policy documents). Maximum 5 files.", "examples": [["550e8400-e29b-41d4-a716-446655440000"]], "items": {"format": "uuid", "type": "string"}, "maxItems": 5, "type": "array"}, {"type": "null"}], "title": "Additional Documentation"}, "oldest_matching_transaction_timestamps": {"anyOf": [{"description": "An array containing the two oldest non-disputed transaction timestamps (up to 365 days) that match both the merchant ID and the device fingerprint or device location of the disputed transaction. Provide timestamps in ISO 8601 format (UTC).", "examples": [["2023-06-15T10:30:00Z", "2023-08-20T14:00:00Z"]], "items": {"format": "date-time", "type": "string"}, "maxItems": 2, "type": "array"}, {"type": "null"}], "title": "Oldest Matching Transaction Timestamps"}, "oldest_merchant_purchase_at": {"anyOf": [{"description": "The timestamp of the cardholder's oldest purchase at the same merchant, including the disputed transaction. Provide in ISO 8601 format (UTC).", "examples": ["2023-06-15T14:30:00Z"], "format": "date-time", "type": "string"}, {"type": "null"}], "title": "Oldest Merchant Purchase At"}, "emv_tlv_hex": {"anyOf": [{"description": "Hex-encoded EMV TLV payload for the disputed transaction. Provide the DE55 field from the authorization message where available, or from the clearing message if not captured at authorization.", "examples": ["9F2608A1B2C3D4E5F607089F2701809F3602001E9F3303E0F8C8"], "type": "string"}, {"type": "null"}], "title": "Emv Tlv Hex"}}, "required": ["cardholder_statement"], "title": "FraudEvidences", "type": "object"}, "PosEntryType": {"description": "How the card data was captured for the disputed transaction.", "enum": ["MANUAL", "CHIP", "CONTACTLESS", "MAGSTRIPE", "FALLBACK", "UNKNOWN"], "title": "PosEntryType", "type": "string", "x-enum-descriptions": {"MANUAL": "Card details were entered manually.", "CHIP": "Card data was captured through a contact EMV chip read.", "CONTACTLESS": "Card data was captured through an EMV contactless read.", "MAGSTRIPE": "Card data was captured from a magnetic stripe read.", "FALLBACK": "The transaction completed through a fallback flow after the preferred path failed.", "UNKNOWN": "The entry mode is unavailable, ambiguous, or could not be mapped."}}, "ProcessingDuplicateEvaluation": {"additionalProperties": false, "description": "Base schema for creating an evaluation.", "properties": {"dispute": {"$ref": "#/components/schemas/Dispute", "description": "Dispute details including the disputed amount and currency."}, "transaction": {"$ref": "#/components/schemas/Transaction", "description": "Transaction being disputed."}, "card": {"$ref": "#/components/schemas/Card"}, "category": {"const": "processing_duplicate", "description": "Dispute category for duplicate processing.", "title": "Category", "type": "string"}, "evidences": {"$ref": "#/components/schemas/ProcessingDuplicateEvidences", "description": "Evidence for duplicate processing disputes."}}, "required": ["dispute", "transaction", "card", "category", "evidences"], "title": "ProcessingDuplicateEvaluation", "type": "object"}, "ProcessingDuplicateEvidences": {"additionalProperties": false, "description": "Evidence required for duplicate processing disputes. These disputes occur when a cardholder recognizes the purchase and the merchant, but was charged more than once for a single transaction due to a processing or technical error. The cardholder confirms one valid purchase and receipt of goods or services, and claims the additional charge(s) are erroneous duplicates.", "properties": {"cardholder_statement": {"description": "A written statement from the cardholder describing the duplicate charge situation. Should explain that they were charged multiple times for a single purchase.", "examples": ["I was charged twice for the same purchase on the same day."], "minLength": 35, "title": "Cardholder Statement", "type": "string", "x-multiline": true}, "intended_transaction": {"$ref": "#/components/schemas/TransactionEvidence", "description": "The details of the original, legitimate transaction that the cardholder intended to make and wishes to keep. This transaction will NOT be disputed. By providing this, you are identifying which of the multiple charges should remain on the cardholder's account while the duplicates are reversed. The system uses this to compare against the disputed transaction and identify the duplicate processing. It is essential to include the acquirer reference number (ARN) to correctly identify the original charge. The intended transaction card data is required."}, "additional_documentation": {"anyOf": [{"description": "Optional list of uploaded file IDs for the `additional_documentation` evidence field (for example receipts, order confirmations, or merchant communication logs). Maximum 5 files.", "examples": [["550e8400-e29b-41d4-a716-446655440000"]], "items": {"format": "uuid", "type": "string"}, "maxItems": 5, "type": "array"}, {"type": "null"}], "title": "Additional Documentation"}}, "required": ["cardholder_statement", "intended_transaction"], "title": "ProcessingDuplicateEvidences", "type": "object"}, "PurchaseType": {"description": "Indicates whether the disputed transaction was for a physical/digital product or a service.\n\nThis distinction affects the dispute evaluation process and the type of evidence\nthat may be relevant.", "enum": ["product", "service"], "title": "PurchaseType", "type": "string", "x-enum-descriptions": {"product": "A physical or digital good that was purchased, such as electronics, clothing, software, or digital downloads. For products, evidence like tracking information and delivery confirmation is particularly relevant.", "service": "A service that was purchased, such as a subscription, consultation, repair work, or event tickets. For services, evidence like appointment confirmations, service agreements, or proof of non-performance is particularly relevant."}}, "ServiceNotReceivedEvaluation": {"additionalProperties": false, "description": "Base schema for creating an evaluation.", "properties": {"dispute": {"$ref": "#/components/schemas/Dispute", "description": "Dispute details including the disputed amount and currency."}, "transaction": {"$ref": "#/components/schemas/Transaction", "description": "Transaction being disputed."}, "card": {"$ref": "#/components/schemas/Card"}, "category": {"const": "service_not_received", "description": "Dispute category for service not received.", "title": "Category", "type": "string"}, "evidences": {"$ref": "#/components/schemas/ServiceNotReceivedEvidences", "description": "Evidence for service not received disputes."}}, "required": ["dispute", "transaction", "card", "category", "evidences"], "title": "ServiceNotReceivedEvaluation", "type": "object"}, "ServiceNotReceivedEvidences": {"additionalProperties": false, "description": "Evidence required for service or goods not received disputes. These disputes occur when a cardholder recognizes the transaction and the merchant, but claims that the purchased goods or services were never delivered or fulfilled. This includes both physical products and services. The cardholder confirms the purchase was made, an expected delivery or completion date passed, and the merchant failed to provide what was paid for.", "properties": {"cardholder_statement": {"description": "A written statement from the cardholder describing the non-receipt situation. Should explain what was ordered, confirm that the goods or services were never received, and include any attempts to resolve the issue with the merchant.", "examples": ["I never received the items I ordered despite waiting over 3 weeks."], "minLength": 35, "title": "Cardholder Statement", "type": "string", "x-multiline": true}, "purchase_type": {"$ref": "#/components/schemas/PurchaseType", "description": "Type of purchase. Options: product (tangible goods or digital downloads), service (bookings, subscriptions, consultations, repairs, or experiences).", "examples": ["product"]}, "expected_at": {"anyOf": [{"description": "The date when the merchandise or service was expected to be delivered, as communicated by the merchant. Provide in ISO 8601 format (YYYY-MM-DD).", "examples": ["2024-01-15"], "format": "date", "type": "string"}, {"type": "null"}], "title": "Expected At"}, "tracking_url": {"anyOf": [{"description": "URL to the shipping carrier's tracking page for this order, if provided by the merchant (e.g., from USPS, FedEx, UPS, DHL).", "examples": ["https://tracking.example.com/123"], "type": "string"}, {"type": "null"}], "title": "Tracking Url"}, "additional_documentation": {"anyOf": [{"description": "Optional list of uploaded file IDs for the `additional_documentation` evidence field (for example receipts, merchant communication logs, or policy evidence). Maximum 5 files.", "examples": [["550e8400-e29b-41d4-a716-446655440000"]], "items": {"format": "uuid", "type": "string"}, "maxItems": 5, "type": "array"}, {"type": "null"}], "title": "Additional Documentation"}}, "required": ["cardholder_statement", "purchase_type"], "title": "ServiceNotReceivedEvidences", "type": "object"}, "TerminalEntryCapability": {"description": "Card entry methods supported by the terminal.", "enum": ["MSR_ONLY", "MSR_MANUAL", "MANUAL_ONLY", "CHIP", "CONTACTLESS_CHIP_ONLY", "MSR_CHIP", "MSR_CONTACTLESS", "CHIP_CONTACTLESS", "MSR_CHIP_CONTACTLESS", "UNKNOWN"], "title": "TerminalEntryCapability", "type": "string", "x-enum-descriptions": {"MSR_ONLY": "Terminal supports magnetic stripe reads only.", "MSR_MANUAL": "Terminal supports magnetic stripe reads and manual entry.", "MANUAL_ONLY": "Terminal supports manual entry only.", "CHIP": "Terminal supports contact EMV chip entry only.", "CONTACTLESS_CHIP_ONLY": "Terminal supports contactless and contact EMV chip entry.", "MSR_CHIP": "Terminal supports magnetic stripe and contact EMV chip entry.", "MSR_CONTACTLESS": "Terminal supports magnetic stripe and contactless entry.", "CHIP_CONTACTLESS": "Terminal supports contact EMV chip and contactless entry.", "MSR_CHIP_CONTACTLESS": "Terminal supports magnetic stripe, contact EMV chip, and contactless entry.", "UNKNOWN": "Terminal entry capability is unavailable or could not be mapped."}}, "Transaction": {"additionalProperties": false, "description": "Transaction details for the disputed charge.", "properties": {"transaction_id": {"description": "Your unique identifier for this transaction. Used to correlate the dispute with your internal records.", "examples": ["txn_12345"], "maxLength": 255, "title": "Transaction Id", "type": "string"}, "card_scheme": {"$ref": "#/components/schemas/CardScheme", "description": "Card network that processed the transaction. Options: VISA (Visa network), MC (Mastercard network). Each network has different dispute rules and timeframes.", "examples": ["MC"]}, "channel_type": {"$ref": "#/components/schemas/ChannelType", "description": "Channel where the transaction occurred. Options: ECOMMERCE (online/card-not-present purchase), POS (in-person card-present purchase), ATM (cash withdrawal at ATM).", "examples": ["ECOMMERCE"]}, "merchant_name": {"description": "Merchant name exactly as it appears on the cardholder's statement. This is how the cardholder identifies the charge.", "examples": ["ACME Store"], "maxLength": 255, "title": "Merchant Name", "type": "string"}, "merchant_country": {"description": "ISO 3166-1 alpha-3 country code where the merchant is located (e.g., 'USA', 'GBR', 'DEU').", "examples": ["USA"], "maxLength": 3, "minLength": 3, "title": "Merchant Country", "type": "string"}, "transaction_amount": {"anyOf": [{"type": "number"}, {"pattern": "^(?!^[-+.]*$)[+-]?0*(?:\\d{0,10}|(?=[\\d.]{1,13}0*$)\\d{0,10}\\.\\d{0,2}0*$)", "type": "string"}], "description": "Transaction amount in major currency units (e.g., dollars, not cents). This is the full amount that was charged to the card.", "examples": [299.99], "title": "Transaction Amount"}, "transaction_currency": {"description": "Three-letter ISO 4217 currency code for the transaction amount (e.g., USD, EUR, GBP).", "examples": ["USD"], "maxLength": 3, "minLength": 3, "title": "Transaction Currency", "type": "string"}, "merchant_id": {"description": "Unique identifier assigned to the merchant by the acquirer. Used to identify the business across multiple transactions and terminals.", "examples": ["mid_123"], "maxLength": 100, "title": "Merchant Id", "type": "string"}, "transaction_timestamp": {"description": "Date and time when the transaction was authorized, in ISO 8601 format (UTC). This is when the cardholder initiated the purchase.", "examples": ["2024-01-20T00:00:00Z"], "format": "date-time", "title": "Transaction Timestamp", "type": "string"}, "settlement_timestamp": {"anyOf": [{"description": "Date and time when the transaction was settled, in ISO 8601 format (UTC). Settlement occurs when funds are transferred from issuer to acquirer.", "examples": ["2024-01-22T00:00:00Z"], "format": "date-time", "type": "string"}, {"type": "null"}], "title": "Settlement Timestamp"}, "merchant_category_code": {"description": "Merchant Category Code (MCC). A four-digit code classifying the merchant's business type (e.g., 5411 for grocery stores, 5812 for restaurants).", "examples": ["5311"], "maxLength": 4, "title": "Merchant Category Code", "type": "string"}, "arn": {"description": "Acquirer Reference Number. A unique 23-digit identifier assigned by the acquirer to trace the transaction through the card network.", "examples": ["12345678901234567890123"], "maxLength": 50, "title": "Arn", "type": "string"}, "rrn": {"anyOf": [{"description": "Retrieval Reference Number. A 12-digit identifier used to locate and retrieve the original transaction record.", "examples": ["123456789012"], "maxLength": 50, "type": "string"}, {"type": "null"}], "title": "Rrn"}, "batch_id": {"anyOf": [{"description": "Batch identifier from the acquirer. Transactions are grouped into batches for settlement processing, typically at end of business day.", "examples": ["batch_001"], "maxLength": 50, "type": "string"}, {"type": "null"}], "title": "Batch Id"}, "terminal_id": {"anyOf": [{"description": "Identifier of the payment terminal or point-of-sale device where the transaction was processed. Useful for card-present transactions.", "examples": ["term_01"], "maxLength": 50, "type": "string"}, {"type": "null"}], "title": "Terminal Id"}, "device_fingerprint": {"anyOf": [{"description": "A unique identifier derived from the device used to initiate the transaction (e.g., browser fingerprint, device ID). Used to match transactions originating from the same device.", "examples": ["dfp_abc123xyz"], "maxLength": 255, "type": "string"}, {"type": "null"}], "title": "Device Fingerprint"}, "device_location": {"anyOf": [{"description": "IP address of the device at transaction time, if available", "examples": ["203.0.113.42"], "maxLength": 255, "type": "string"}, {"type": "null"}], "title": "Device Location"}, "avs_result": {"anyOf": [{"$ref": "#/components/schemas/AVSResult", "description": "Address Verification Service result. Compares only numeric portions of the billing address (house number and ZIP code) against the issuer's records. Options include MATCH, NO_MATCH, PARTIAL_MATCH, and NOT_PROVIDED."}, {"type": "null"}]}, "cvv_match": {"anyOf": [{"description": "Whether the CVV2/CVC2 (3-4 digit security code on the card) matched during the transaction.", "examples": [true], "title": "CVV Match", "type": "boolean"}, {"type": "null"}], "title": "Cvv Match"}, "eci_code": {"anyOf": [{"description": "The final Electronic Commerce Indicator (ECI) code for the transaction. Indicates the level of authentication achieved (e.g., '05' for fully authenticated 3DS on Visa, '02' for Mastercard).", "examples": ["05"], "maxLength": 2, "title": "ECI Code", "type": "string"}, {"type": "null"}], "title": "Eci Code"}, "pos_entry_type": {"anyOf": [{"$ref": "#/components/schemas/PosEntryType", "description": "How card data was captured at POS. Options include MANUAL, CHIP, CONTACTLESS, MAGSTRIPE, FALLBACK, and UNKNOWN.", "examples": ["CHIP"]}, {"type": "null"}]}, "terminal_entry_capability": {"anyOf": [{"$ref": "#/components/schemas/TerminalEntryCapability", "description": "Terminal-supported entry methods. Options include MSR_ONLY, MSR_MANUAL, MANUAL_ONLY, CHIP, CONTACTLESS_CHIP_ONLY, MSR_CHIP, MSR_CONTACTLESS, CHIP_CONTACTLESS, MSR_CHIP_CONTACTLESS, and UNKNOWN.", "examples": ["MSR_CHIP_CONTACTLESS"]}, {"type": "null"}]}, "authorization_mode": {"anyOf": [{"$ref": "#/components/schemas/AuthorizationMode", "description": "How authorization was performed. ONLINE means issuer/network auth; OFFLINE means EMV offline path; NO_AUTH indicates no authorization step; UNKNOWN means the authorization path is unavailable or could not be mapped.", "examples": ["ONLINE"]}, {"type": "null"}]}, "is_network_tokenized": {"anyOf": [{"description": "Whether the disputed transaction was processed using a network token (for example, wallet/device tokenization) instead of only PAN details.", "examples": [true], "type": "boolean"}, {"type": "null"}], "title": "Is Network Tokenized"}}, "required": ["transaction_id", "card_scheme", "channel_type", "merchant_name", "merchant_country", "transaction_amount", "transaction_currency", "merchant_id", "transaction_timestamp", "merchant_category_code", "arn"], "title": "Transaction", "type": "object"}, "TransactionEvidence": {"additionalProperties": false, "description": "Transaction evidence payload with transaction details and a required card snapshot for that specific transaction.", "properties": {"transaction": {"$ref": "#/components/schemas/Transaction", "description": "Transaction details for the evidence transaction."}, "card": {"$ref": "#/components/schemas/Card", "description": "Card snapshot for the evidence transaction."}}, "required": ["transaction", "card"], "title": "TransactionEvidence", "type": "object"}, "FailedCheck": {"description": "Validation issue detected during evaluation.", "properties": {"loc": {"description": "Location of the failed check in the request payload.", "examples": [["body", "payload", "fraud", "evidences", "cardholder_statement"]], "items": {"type": "string"}, "title": "Loc", "type": "array"}, "msg": {"description": "Human-readable description of the failure.", "examples": ["Cardholder statement is too short."], "title": "Msg", "type": "string"}, "type": {"$ref": "#/components/schemas/FailedCheckType", "description": "Type of validation failure.", "examples": ["missing_info"]}}, "required": ["loc", "msg", "type"], "title": "FailedCheck", "type": "object"}, "FailedCheckType": {"enum": ["error", "missing_info"], "title": "FailedCheckType", "type": "string"}, "GetEvaluationResultOut": {"description": "Evaluation result with confidence and failed checks.", "properties": {"id": {"description": "Evaluation identifier.", "examples": ["eval_a1b2c3"], "title": "Id", "type": "string"}, "confidence": {"description": "Confidence level for the evaluation.", "examples": ["high"], "title": "Confidence", "type": "string"}, "reason_code": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Resolved card-network reason code (for example, '10.4' for VISA or '4837' for Mastercard) when mapping exists; otherwise null.", "examples": ["10.4", "4837", null], "title": "Reason Code"}, "failed_checks": {"description": "List of failed checks requiring attention.", "items": {"$ref": "#/components/schemas/FailedCheck"}, "title": "Failed Checks", "type": "array"}}, "required": ["id", "confidence", "failed_checks"], "title": "GetEvaluationResultOut", "type": "object"}, "FileOut": {"description": "Metadata for an uploaded evidence file.", "properties": {"id": {"description": "Evidence file identifier.", "examples": ["550e8400-e29b-41d4-a716-446655440000"], "format": "uuid", "title": "Id", "type": "string"}, "url": {"description": "Signed URL to access the file.", "examples": ["https://files.example.com/evidence/550e8400-e29b-41d4-a716-446655440000"], "title": "Url", "type": "string"}, "original_name": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "Original filename provided by the client.", "examples": ["receipt.pdf"], "title": "Original Name"}, "mime_type": {"anyOf": [{"type": "string"}, {"type": "null"}], "description": "MIME type detected for the file.", "examples": ["application/pdf"], "title": "Mime Type"}, "size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "description": "File size in bytes.", "examples": [123456], "title": "Size"}}, "required": ["id", "url"], "title": "FileOut", "type": "object"}}, "securitySchemes": {"BearerAuthentication": {"type": "http", "scheme": "bearer"}}}, "servers": [{"url": "https://api.disputes.sandbox.tripledev.app"}]}