# Mock Data Warehouse (DWH)
source: https://developer.mastercard.com/india-online-dispute-resolution/documentation/mock-data-warehouse/index.md

## Mock Data Warehouse (DWH) API {#mock-data-warehouse-dwh-api}

This documentation outlines the behavior and structure of the Mock Data Warehouse (DWH) API in the Sandbox environment for B2B integrations. It is designed to simulate real-world transaction data retrieval and status validation workflows for complaint resolution and testing.

### Request Flow {#request-flow}

API consumers initiate a request to fetch transaction details using complaint identifiers.  

The initial response always returns a status of `PENDING`, indicating that the data retrieval process has started.

### Asynchronous Status Update {#asynchronous-status-update}

A background process updates the transaction status asynchronously.  

Consumers must use the **Transaction Status API** to poll for the latest status.

### Mock Data Behavior {#mock-data-behavior}

The sandbox randomly returns **success** or **failure** scenarios to simulate real-world variability.  

This helps developers test **error handling** and **retry logic** effectively.

## Transaction Details API {#transaction-details-api}

The Transaction Details API retrieves transaction data from the DWH for a given complaint. This API is designed to support complaint resolution workflows by providing structured access to transaction records.

**Endpoint**: /transactions/details

**Behavior**

* Initial status: Always return PENDING upon request.
* Mock data: Simulates both success and failure scenarios randomly.
* Background processing: An asynchronous process fetches actual data from the DWH.
* Status monitoring: Use the Transaction Status API to check for updates.

**Request payload (encrypted)**

```java
{
  "retrievalReferenceNumber": "435465768997",
  "banknetReferenceNumber": "400000000",
  "approvalCode": "00231W",
  "acquirerICA": "00000023910",
  "trackingNumber": "X0NNECBZBU3U"
}
```

**Response payload (encrypted)**

```java
{
  "status": "PENDING",
  "description": "Transaction status validation still in progress",
  "transactionStatus": null,
  "banknetReferenceNumber": null,
  "acquirerName": null
}
```

## Transaction Status API {#transaction-status-api}

The Transaction Status API provides the current status of a transaction data retrieval request initiated through the Transaction Details API.

**Endpoint**: /transactions/status

**Request payload**

```java
tracking_number=X0NNECBZBU3U
```

**Response payload - success**

You must decrypt the response to access the transaction status.

```java
{
  "status": "COMPLETED",
  "description": "Transaction status validation is completed.",
  "transactionStatus": "Only Authorization found.",
  "banknetReferenceNumber": "400000000",
  "acquirerName": "IODR API ACQ"
}

{
  "status": "COMPLETED",
  "description": "Transaction status validation is completed.",
  "transactionStatus": "Authorization with Reversal found.",
  "banknetReferenceNumber": "400000000",
  "acquirerName": "IODR API ACQ"
}

{
  "status": "COMPLETED",
  "description": "Transaction status validation is completed.",
  "transactionStatus": "Authorization and Clearing found.",
  "banknetReferenceNumber": "400000000",
  "acquirerName": "IODR API ACQ"
}
```

**Response - payload failure**

```java
{
  "status": "FAILED",
  "description": "Transaction status call failed due to No matching record identified.",
  "transactionStatus": null,
  "banknetReferenceNumber": null,
  "acquirerName": null
}

{
  "status": "FAILED",
  "description": "Transaction status call failed due to multiple matching record identified.",
  "transactionStatus": null,
  "banknetReferenceNumber": null,
  "acquirerName": null
}
```

## Update User Complaint API {#update-user-complaint-api}

The Update User Complaint API modifies complaint details using the complaint tracking number.

When a dispute is routed by the issuer to the acquirer queue, the dispute status is randomly updated by a scheduler. By the next day (IST 11:55 PM), the dispute is automatically returned to the issuer queue.

**Endpoint**: /complaints

**Request payload**

```java
{
    "trackingNumber":"ARDBVFMEQEQV",
    "complaintStatus":"SENT_TO_ACQUIRER",
    "comments":"ARDBVFMEQEQV-test update API comment SENT_TO_ACQUIRER"
}
```

**Response payload**

```Java
{
    "trackingNumber": "ARDBVFMEQEQV",
    "description": "Complaint updated successfully."
}
```

