# Overview of Sandbox project source: https://developer.mastercard.com/india-online-dispute-resolution/documentation/tutorials-and-guides/sandbox-access-tutorial/index.md ## Introduction {#introduction} The India Online Dispute Resolution (IODR) guide walks through the steps required to create a project and how to gain access to the Sandbox environment. ## Create a project {#create-a-project} 1. Select the [Projects](https://developer.mastercard.com/dashboard) menu. 2. On the **My projects** page, click **Create new project** . ![](https://static.developer.mastercard.com/content/india-online-dispute-resolution/uploads/create_new_project.png) ## Add the project details {#add-the-project-details} Create a new project with IODR APIs and begin Sandbox testing. 1. In the **About the project** section, enter the project details. a. In the **Project name** box, enter a name of the project. b. If you are creating a project on behalf of a client, select **Yes** ; otherwise, select **No** . ![](https://static.developer.mastercard.com/content/india-online-dispute-resolution/uploads/project_details_on_behalf_of_client.png) 2. In the **Select API service** section, enter the API service details. a. In the **Select your API service** list, select **India Online Dispute Resolution** . b. In the **Commercial countries** list, select **India**. 3. Click **Proceed**. ## Add the service details {#add-the-service-details} 1. In the **Client Type** list, select an issuer, acquirer, or TPAPs as a client. 2. In the **Customer ID** box, enter a value of the company ID. ![](https://static.developer.mastercard.com/content/india-online-dispute-resolution/uploads/add_service_details.png) 3. Click **Proceed**. ## Add the project credentials {#add-the-project-credentials} Use the Keystore password with the .p12 file and client ID for OAuth authentication. These credentials give you access to the sandbox service in this project. 1. In the **Key alias** box, enter a unique value to identify the key. 2. In the **Keystore password** box, enter a password for keystore. ![](https://static.developer.mastercard.com/content/india-online-dispute-resolution/uploads/add_project_credentials.png) 3. Click **Proceed**. ## Add more credentials {#add-more-credentials} Payload encryption and decryption require both client and Mastercard encryption keys. 1. In the **Key alias** box, enter a unique value to identify the key. 2. In the **Keystore password** box, enter a password for keystore. ![](https://static.developer.mastercard.com/content/india-online-dispute-resolution/uploads/additional_credentails_details.png) 3. Click **Create Project**. ## Create your sandbox project {#create-your-sandbox-project} Your sandbox project has been successfully created. The Mastercard Developers portal has generated your project keys, which are ready for download. 1. To save the project key, click the **Download key file** . Save this key in a safe location. 2. To view the project summary, click **Open project**. Note: Downloading the project keys file enables the **Open project** button. After confirmation, you will receive an email that includes the provisioning request and keys. ![](https://static.developer.mastercard.com/content/india-online-dispute-resolution/uploads/creating_your_project.png) ### Step 6 - View project summary {#step-6---view-project-summary} **Summary page** The Summary page displays that your sandbox project has been successfully created. ![](https://static.developer.mastercard.com/content/india-online-dispute-resolution/uploads/project_summary.png) **Sandbox page** The Sandbox page displays the credential details. ![](https://static.developer.mastercard.com/content/india-online-dispute-resolution/uploads/sandbox_credentials.png) ## 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." } ```