openapi: 3.2.0 info: title: Ppro Dispute Reports API version: v1 description: 'Operations tagged Dispute Reports across 2 of this provider''s published API definitions: ppro-dispute-reports-openapi.yml, ppro-dispute-reports.yaml. Each path carries the servers of the definition it was published in.' servers: - url: https://api.sandbox.eu.ppro.com description: Sandbox environment for integration testing - url: https://api.eu.ppro.com description: Production tags: - name: Dispute Reports description: Endpoints for generating and retrieving dispute reports paths: /v1/dispute-reports: post: tags: - Dispute Reports summary: Create a dispute report description: Triggers generation of a dispute report for the given merchant over the specified date range. The date range must be within the last 90 days and the end date must be before now. operationId: disputeReports parameters: - name: Merchant-Id in: header description: The merchant identifier. required: true schema: type: string example: merch_cb6RQnZbBwSBkn34QYXhr - name: Request-Reference in: header description: Optional Reference for the request. This is used to identify the request in debugging. schema: type: string example: unique-value-for-request-reference - name: Request-Idempotency-Key in: header description: Optional Idempotency Key for the request. Sending duplicate requests will result in 409 HTTP status code. schema: type: string example: unique-value-for-idempotency requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateReportRequest' required: true responses: '200': description: Report created successfully content: application/json: schema: $ref: '#/components/schemas/ReportResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ExceptionResponseBody' '401': description: Unauthorised '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ExceptionResponseBody' '409': description: Duplicate request received with the same idempotency key. content: application/json: schema: $ref: '#/components/schemas/ExceptionResponseBody' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ExceptionResponseBody' servers: - url: https://api.sandbox.eu.ppro.com description: Sandbox environment for integration testing - url: https://api.eu.ppro.com description: Production /v1/dispute-reports/{reportId}: get: tags: - Dispute Reports summary: Get a dispute report by ID description: Returns the report metadata and, when processing is complete, a pre-signed download URL. operationId: getReportById parameters: - name: Merchant-Id in: header description: The merchant identifier. required: true schema: type: string example: merch_cb6RQnZbBwSBkn34QYXhr - name: reportId in: path description: The report ID returned when the report was created. required: true schema: type: string example: report_a1b2c3d4e5f67890abcde - name: Request-Reference in: header description: Optional Reference for the request. This is used to identify the request in debugging. schema: type: string example: unique-value-for-request-reference responses: '200': description: Report found content: application/json: schema: $ref: '#/components/schemas/ReportResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/ExceptionResponseBody' '401': description: Unauthorised '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ExceptionResponseBody' '409': description: Duplicate request received with the same idempotency key. content: application/json: schema: $ref: '#/components/schemas/ExceptionResponseBody' '500': description: Internal Server Error content: application/json: schema: $ref: '#/components/schemas/ExceptionResponseBody' servers: - url: https://api.sandbox.eu.ppro.com description: Sandbox environment for integration testing - url: https://api.eu.ppro.com description: Production components: schemas: ExceptionResponseBody: type: object properties: status: type: integer format: int32 failureMessage: type: string timestamp: type: string format: date-time extensions: type: object additionalProperties: {} ReportResponse: type: object description: Dispute report details properties: id: type: string description: Unique report identifier. example: report_a1b2c3d4e5f67890abcde startDate: type: string format: date-time description: Start of the reporting window. example: '2026-06-17T00:00:00Z' endDate: type: string format: date-time description: End of the reporting window. example: '2026-07-17T11:58:00Z' status: type: string description: Current processing status of the report. enum: - PENDING - PROCESSED - FAILED - EXPIRED example: PENDING downloadUrl: type: string description: Pre-signed URL to download the generated report file. Present only when status is PROCESSED. example: https://example.com/reports/report_a1b2c3d4e5f67890abcde.csv?expires=3600 createdAt: type: string format: date-time description: Timestamp when the report was created. example: '2026-07-17T12:00:00Z' updatedAt: type: string format: date-time description: Timestamp when the report was updated. example: '2026-07-17T12:00:00Z' CreateReportRequest: type: object description: Request body for creating a dispute report properties: startDate: type: string format: date-time description: Start of the reporting window. Must be within the last 90 days. example: '2026-06-17T00:00:00Z' endDate: type: string format: date-time description: End of the reporting window. example: '2026-07-17T11:58:00Z' webhookUrl: type: string description: Optional URL to notify via webhook when the report status changes. example: https://merchant.example.com/webhooks/reports required: - endDate - startDate x-refined-from: - ppro-dispute-reports-openapi.yml - ppro-dispute-reports.yaml