{
  "openapi": "3.0.0",
  "info": {
    "title": "Disputes API",
    "description": "REST 2.0 Disputes API",
    "version": "1.2.8"
  },
  "servers": [
    {
      "url": "https://api-sandbox.nuvei.com/disputes-api",
      "description": "sandbox"
    },
    {
      "url": "https://api.nuvei.com/disputes-api",
      "description": "prod"
    }
  ],
  "tags": [
    {
      "name": "Disputes"
    }
  ],
  "paths": {
    "/entities/{entity-id}/disputes": {
      "get": {
        "tags": [
          "Disputes"
        ],
        "summary": "Retrieve List of Disputes",
        "description": "Retrieves a list of disputes for entity based on the provided parameters.",
        "operationId": "getDisputesList",
        "parameters": [
          {
            "name": "entity-id",
            "in": "path",
            "description": "Entity Id",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "from_date",
            "in": "query",
            "description": "From Date",
            "required": true,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "to_date",
            "in": "query",
            "description": "To Date",
            "required": true,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "response_date_sort",
            "in": "query",
            "description": "Response Date Sort",
            "required": true,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "string",
              "enum": [
                "CreateDate",
                "UpdateDate"
              ]
            }
          },
          {
            "name": "retrieve_files",
            "in": "query",
            "description": "Retrieve Files",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "offset",
            "in": "query",
            "description": "Offset",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "default": 0
            }
          },
          {
            "name": "size",
            "in": "query",
            "description": "Size",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "integer",
              "default": 100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputesResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputesResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputesResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputesResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputesResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputesResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": []
          },
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/entities/{entity-id}/disputes/{dispute-id}": {
      "get": {
        "tags": [
          "Disputes"
        ],
        "summary": "Retrieve Dispute Details",
        "description": "Retrieves the dispute details for entity based on the provided parameters.",
        "operationId": "getDisputeDetails",
        "parameters": [
          {
            "name": "entity-id",
            "in": "path",
            "description": "Entity Id",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dispute-id",
            "in": "path",
            "description": "Dispute Id",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "retrieve_files",
            "in": "query",
            "description": "Retrieve Files",
            "required": false,
            "style": "form",
            "explode": true,
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputeDetailsResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputeDetailsResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputeDetailsResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputeDetailsResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputeDetailsResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputeDetailsResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": []
          },
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/entities/{entity-id}/files": {
      "post": {
        "tags": [
          "Disputes"
        ],
        "summary": "Upload Files",
        "description": "Uploads files for later use.",
        "operationId": "postFiles",
        "parameters": [
          {
            "name": "entity-id",
            "in": "path",
            "description": "Entity Id",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UploadFileRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadFileResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadFileResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadFileResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadFileResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadFileResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UploadFileResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": []
          },
          {
            "ApiKey": []
          }
        ]
      }
    },
    "/entities/{entity-id}/disputes/{dispute-id}/{action}": {
      "post": {
        "tags": [
          "Disputes"
        ],
        "summary": "Perform Dispute Action",
        "description": "Performs an action on a dispute.",
        "operationId": "postDisputeAction",
        "parameters": [
          {
            "name": "entity-id",
            "in": "path",
            "description": "Entity Id",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "dispute-id",
            "in": "path",
            "description": "Dispute Id",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "action",
            "in": "path",
            "description": "Action",
            "required": true,
            "style": "simple",
            "explode": false,
            "schema": {
              "$ref": "#/components/schemas/AvailableAction"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DisputeActionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputeActionResponse"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputeActionResponse"
                }
              }
            }
          },
          "401": {
            "description": "Unauthorized",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputeActionResponse"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputeActionResponse"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputeActionResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DisputeActionResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "Bearer": []
          },
          {
            "ApiKey": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "Id": {
        "title": "Id",
        "type": "string",
        "description": "Id"
      },
      "TransactionId": {
        "title": "TransactionId",
        "type": "integer",
        "description": "Transactionid",
        "format": "int64"
      },
      "Currency": {
        "title": "Currency",
        "maxLength": 3,
        "minLength": 3,
        "type": "string",
        "description": "Currency"
      },
      "Verdict": {
        "type": "string",
        "enum": [
          "won",
          "lost",
          "undetermined",
          "resolved"
        ]
      },
      "Transaction": {
        "title": "Transaction",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/TransactionId"
          },
          "date": {
            "type": "string",
            "format": "date-time"
          },
          "merchantTransactionId": {
            "type": "string"
          },
          "arn": {
            "type": "string"
          },
          "amount": {
            "type": "number"
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          }
        },
        "description": "Transaction"
      },
      "AvailableAction": {
        "title": "AvailableActions",
        "type": "string",
        "description": "AvailableActions",
        "enum": [
          "ACCEPT",
          "PARTIAL",
          "REJECT"
        ]
      },
      "CodeDescription": {
        "title": "CodeDescription",
        "type": "object",
        "properties": {
          "code": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        },
        "description": "CodeDescription"
      },
      "FileId": {
        "title": "FileId",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          }
        },
        "description": "FileId"
      },
      "BaseFile": {
        "title": "BaseFile",
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "data": {
            "type": "string"
          }
        },
        "description": "BaseFile"
      },
      "FileInput": {
        "title": "FileInput",
        "description": "FileInput",
        "allOf": [
          {
            "$ref": "#/components/schemas/FileId"
          },
          {
            "$ref": "#/components/schemas/BaseFile"
          }
        ]
      },
      "FileUploaded": {
        "title": "FileUploaded",
        "type": "object",
        "properties": {
          "correlationId": {
            "$ref": "#/components/schemas/Id"
          },
          "name": {
            "type": "string"
          }
        },
        "description": "FileUploaded"
      },
      "Event": {
        "title": "Event",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "updateDate": {
            "type": "string",
            "format": "date-time"
          },
          "expirationDate": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "$ref": "#/components/schemas/CodeDescription"
          },
          "disputeAmount": {
            "type": "number"
          },
          "rejectAmount": {
            "type": "number"
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "remarks": {
            "type": "string"
          },
          "disputeReason": {
            "$ref": "#/components/schemas/CodeDescription"
          },
          "rejectReason": {
            "$ref": "#/components/schemas/CodeDescription"
          },
          "files": {
            "type": "array",
            "items": {
              "title": "FileId",
              "type": "object",
              "description": "FileId",
              "properties": {
                "id": {
                  "$ref": "#/components/schemas/Id"
                },
                "name": {
                  "type": "string"
                },
                "data": {
                  "type": "string"
                }
              }
            }
          },
          "initiatedBy": {
            "type": "string",
            "enum": [
              "Issuer",
              "Acquirer",
              "Scheme"
            ]
          }
        },
        "description": "Event"
      },
      "LastDisputeEvent": {
        "title": "LastDisputeEvent",
        "type": "object",
        "properties": {
          "lastDisputeEvent": {
            "$ref": "#/components/schemas/Event"
          }
        },
        "description": "LastDisputeEvent"
      },
      "DisputeEvents": {
        "title": "DisputeEvents",
        "type": "object",
        "properties": {
          "disputeEvents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Event"
            }
          }
        },
        "description": "DisputeEvents"
      },
      "BaseDispute": {
        "title": "Dispute",
        "type": "object",
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Id"
          },
          "creationDate": {
            "type": "string",
            "format": "date-time"
          },
          "verdict": {
            "$ref": "#/components/schemas/Verdict"
          },
          "transaction": {
            "$ref": "#/components/schemas/Transaction"
          },
          "paymentOption": {
            "type": "string"
          },
          "maskedCardNumber": {
            "type": "string"
          },
          "availableActions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AvailableAction"
            }
          }
        },
        "description": "Dispute"
      },
      "Dispute": {
        "title": "Dispute",
        "description": "Dispute",
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseDispute"
          },
          {
            "$ref": "#/components/schemas/LastDisputeEvent"
          }
        ]
      },
      "DisputeDetails": {
        "title": "DisputeDetails",
        "description": "DisputeDetails",
        "allOf": [
          {
            "$ref": "#/components/schemas/BaseDispute"
          },
          {
            "$ref": "#/components/schemas/DisputeEvents"
          }
        ]
      },
      "DisputesResponse": {
        "title": "DisputesResponse",
        "required": [
          "result"
        ],
        "type": "object",
        "properties": {
          "totalCount": {
            "type": "integer"
          },
          "disputes": {
            "type": "array",
            "items": {
              "title": "Dispute",
              "type": "object",
              "description": "Dispute",
              "properties": {
                "id": {
                  "$ref": "#/components/schemas/Id"
                },
                "creationDate": {
                  "type": "string",
                  "format": "date-time"
                },
                "verdict": {
                  "$ref": "#/components/schemas/Verdict"
                },
                "transaction": {
                  "$ref": "#/components/schemas/Transaction"
                },
                "paymentOption": {
                  "type": "string"
                },
                "maskedCardNumber": {
                  "type": "string"
                },
                "availableActions": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/AvailableAction"
                  }
                },
                "lastDisputeEvent": {
                  "$ref": "#/components/schemas/Event"
                }
              }
            }
          },
          "result": {
            "$ref": "#/components/schemas/BaseApiResultOutput"
          }
        },
        "description": "DisputesResponse"
      },
      "DisputeDetailsResponse": {
        "title": "DisputeDetailsResponse",
        "required": [
          "result"
        ],
        "type": "object",
        "properties": {
          "disputes": {
            "$ref": "#/components/schemas/DisputeDetails"
          },
          "result": {
            "$ref": "#/components/schemas/BaseApiResultOutput"
          }
        },
        "description": "DisputeDetailsResponse"
      },
      "UploadFileRequest": {
        "title": "UploadFileRequest",
        "required": [
          "file"
        ],
        "type": "object",
        "properties": {
          "file": {
            "$ref": "#/components/schemas/BaseFile"
          }
        },
        "description": "UploadFileRequest"
      },
      "UploadFileResponse": {
        "title": "UploadFieldResponse",
        "required": [
          "result"
        ],
        "type": "object",
        "properties": {
          "file": {
            "$ref": "#/components/schemas/FileUploaded"
          },
          "result": {
            "$ref": "#/components/schemas/BaseApiResultOutput"
          }
        },
        "description": "UploadFileResponse"
      },
      "DisputeActionRequest": {
        "title": "DisputeActionRequest",
        "type": "object",
        "properties": {
          "acceptedAmount": {
            "type": "number"
          },
          "currency": {
            "$ref": "#/components/schemas/Currency"
          },
          "cardholderNoLongerDisputes": {
            "type": "boolean",
            "default": false
          },
          "notes": {
            "maxLength": 100,
            "type": "string"
          },
          "files": {
            "minItems": 1,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Id"
            }
          }
        },
        "description": "DisputeActionRequest"
      },
      "DisputeActionResponse": {
        "title": "DisputeActionResponse",
        "required": [
          "result"
        ],
        "type": "object",
        "properties": {
          "disputeEventId": {
            "$ref": "#/components/schemas/Id"
          },
          "transactionId": {
            "$ref": "#/components/schemas/TransactionId"
          },
          "result": {
            "$ref": "#/components/schemas/BaseApiResultOutput"
          }
        },
        "description": "DisputeActionResponse"
      },
      "BaseApiResultOutput": {
        "required": [
          "status"
        ],
        "type": "object",
        "properties": {
          "status": {
            "$ref": "#/components/schemas/BaseResultStatus"
          },
          "errors": {
            "$ref": "#/components/schemas/ResultError"
          }
        }
      },
      "BaseResultStatus": {
        "type": "string",
        "description": "Status of the request: success | error",
        "enum": [
          "success",
          "error"
        ]
      },
      "ResultError": {
        "required": [
          "code"
        ],
        "type": "object",
        "properties": {
          "code": {
            "maxLength": 11,
            "type": "string",
            "description": "If an error occurred on the request side, an error code is returned in this parameter.",
            "example": "7000.1000"
          },
          "reason": {
            "maxLength": 400,
            "type": "string",
            "description": "If an error occurred on the request side, then an error reason is returned in this parameter.",
            "example": "Internal Processing Error"
          },
          "reference": {
            "maxLength": 400,
            "type": "string",
            "description": "Reference value for troubleshooting",
            "example": "110.1260"
          }
        },
        "description": "If an error occurred on the request side, an error code is returned in this parameter."
      }
    },
    "parameters": {
      "entity-id": {
        "name": "entity-id",
        "in": "path",
        "description": "Entity Id",
        "required": true,
        "style": "simple",
        "explode": false,
        "schema": {
          "type": "string"
        }
      },
      "dispute-id": {
        "name": "dispute-id",
        "in": "path",
        "description": "Dispute Id",
        "required": true,
        "style": "simple",
        "explode": false,
        "schema": {
          "type": "string"
        }
      },
      "action": {
        "name": "action",
        "in": "path",
        "description": "Action",
        "required": true,
        "style": "simple",
        "explode": false,
        "schema": {
          "$ref": "#/components/schemas/AvailableAction"
        }
      },
      "from_date": {
        "name": "from_date",
        "in": "query",
        "description": "From Date",
        "required": true,
        "style": "form",
        "explode": true,
        "schema": {
          "type": "string",
          "format": "date"
        }
      },
      "to_date": {
        "name": "to_date",
        "in": "query",
        "description": "To Date",
        "required": true,
        "style": "form",
        "explode": true,
        "schema": {
          "type": "string",
          "format": "date"
        }
      },
      "response_date_sort": {
        "name": "response_date_sort",
        "in": "query",
        "description": "Response Date Sort",
        "required": true,
        "style": "form",
        "explode": true,
        "schema": {
          "type": "string",
          "enum": [
            "CreateDate",
            "UpdateDate"
          ]
        }
      },
      "receive_files": {
        "name": "retrieve_files",
        "in": "query",
        "description": "Retrieve Files",
        "required": false,
        "style": "form",
        "explode": true,
        "schema": {
          "type": "boolean",
          "default": false
        }
      },
      "offset": {
        "name": "offset",
        "in": "query",
        "description": "Offset",
        "required": false,
        "style": "form",
        "explode": true,
        "schema": {
          "type": "integer",
          "default": 0
        }
      },
      "size": {
        "name": "size",
        "in": "query",
        "description": "Size",
        "required": false,
        "style": "form",
        "explode": true,
        "schema": {
          "type": "integer",
          "default": 100
        }
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      },
      "ApiKey": {
        "type": "apiKey",
        "name": "X-API-KEY",
        "in": "header"
      }
    }
  }
}