{
  "openapi": "3.0.0",
  "paths": {
    "/health": {
      "get": {
        "operationId": "HealthController_health",
        "parameters": [
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "tags": [
          "Health"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/payments/api/v1/providers": {
      "post": {
        "operationId": "ProvidersController_configure",
        "parameters": [
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfigureProviderDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Configure a payment provider",
        "tags": [
          "Payment Providers"
        ],
        "x-mt-schema-pending": true
      },
      "get": {
        "operationId": "ProvidersController_listProviders",
        "parameters": [
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "List payment providers",
        "tags": [
          "Payment Providers"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/payments/api/v1/providers/{id}": {
      "get": {
        "operationId": "ProvidersController_getProvider",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Payment provider ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get provider by ID",
        "tags": [
          "Payment Providers"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/payments/api/v1/providers/{id}/test": {
      "post": {
        "operationId": "ProvidersController_testConnection",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Payment provider ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Test provider connection",
        "tags": [
          "Payment Providers"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/payments/api/v1/providers/{id}/disable": {
      "post": {
        "operationId": "ProvidersController_disableProvider",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Payment provider ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Disable a provider",
        "tags": [
          "Payment Providers"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/payments/api/v1/disbursements/batches": {
      "post": {
        "operationId": "DisbursementsController_createBatch",
        "parameters": [
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBatchDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Create a payment batch",
        "tags": [
          "Disbursements"
        ],
        "x-mt-schema-pending": true
      },
      "get": {
        "operationId": "DisbursementsController_listBatches",
        "parameters": [
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "List payment batches",
        "tags": [
          "Disbursements"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/payments/api/v1/disbursements/batches/{id}": {
      "get": {
        "operationId": "DisbursementsController_getBatch",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Payment batch ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get batch detail with transactions",
        "tags": [
          "Disbursements"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/payments/api/v1/disbursements/batches/{id}/approve": {
      "post": {
        "operationId": "DisbursementsController_approveBatch",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Payment batch ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Approve a payment batch",
        "tags": [
          "Disbursements"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/payments/api/v1/disbursements/batches/{id}/reject": {
      "post": {
        "operationId": "DisbursementsController_rejectBatch",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Payment batch ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RejectBatchDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Reject a payment batch",
        "tags": [
          "Disbursements"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/payments/api/v1/disbursements/batches/{id}/submit": {
      "post": {
        "operationId": "DisbursementsController_submitBatch",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Payment batch ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Submit batch for processing",
        "tags": [
          "Disbursements"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/payments/api/v1/disbursements/batches/{id}/retry-failed": {
      "post": {
        "operationId": "DisbursementsController_retryFailed",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Payment batch ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Retry failed payments in batch",
        "tags": [
          "Disbursements"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/payments/api/v1/disbursements/transactions/{id}/mark-paid": {
      "patch": {
        "operationId": "DisbursementsController_markTransactionPaid",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Disbursement transaction ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MarkTransactionPaidDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Mark disbursement transaction as paid",
        "tags": [
          "Disbursements"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/payments/api/v1/disbursements/transactions/{id}/mark-failed": {
      "patch": {
        "operationId": "DisbursementsController_markTransactionFailed",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Disbursement transaction ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MarkTransactionFailedDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Mark disbursement transaction as failed",
        "tags": [
          "Disbursements"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/payments/api/v1/reconciliation": {
      "get": {
        "operationId": "ReconciliationController_listReconciliations",
        "parameters": [
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "List reconciliation records",
        "tags": [
          "Payment Reconciliation"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/payments/api/v1/reconciliation/{id}": {
      "get": {
        "operationId": "ReconciliationController_getReconciliation",
        "parameters": [
          {
            "name": "id",
            "required": true,
            "in": "path",
            "description": "Reconciliation record ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Get reconciliation record by id",
        "tags": [
          "Payment Reconciliation"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/payments/api/v1/reconciliation/run/{batchId}": {
      "post": {
        "operationId": "ReconciliationController_reconcileBatch",
        "parameters": [
          {
            "name": "batchId",
            "required": true,
            "in": "path",
            "description": "Payment batch ID to reconcile",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "201": {
            "description": ""
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Run manual reconciliation for a batch",
        "tags": [
          "Payment Reconciliation"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/payments/api/v1/reconciliation/webhook": {
      "post": {
        "operationId": "ReconciliationController_handleWebhook",
        "parameters": [
          {
            "name": "x-webhook-signature",
            "required": true,
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "required": false,
            "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          },
          "201": {
            "description": ""
          }
        },
        "summary": "Handle provider webhook callback (HMAC-signed)",
        "tags": [
          "Payment Reconciliation"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/payments/api/v1/payroll-export/batches/{batchId}/export/csv": {
      "get": {
        "operationId": "PayrollExportController_exportBatchCsv",
        "parameters": [
          {
            "name": "batchId",
            "required": true,
            "in": "path",
            "description": "Payroll batch ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Export payroll batch as CSV",
        "tags": [
          "Payroll Export"
        ],
        "x-mt-schema-pending": true
      }
    },
    "/payments/api/v1/payroll-export/batches/{batchId}/export/xlsx": {
      "get": {
        "operationId": "PayrollExportController_exportBatchXlsx",
        "parameters": [
          {
            "name": "batchId",
            "required": true,
            "in": "path",
            "description": "Payroll batch ID",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "x-mt-timestamp",
            "in": "header",
            "required": false,
            "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
            "schema": {
              "type": "integer",
              "format": "int64",
              "example": 1735689600
            }
          },
          {
            "name": "x-mt-signature",
            "in": "header",
            "required": false,
            "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
            "schema": {
              "type": "string",
              "example": "t=1735689600,v1=5d41402abc4b…"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Success. The response schema for this operation is not yet documented — see the schema-coverage report. The SDK types this as `unknown`.",
            "x-mt-schema-pending": true
          }
        },
        "security": [
          {
            "bearer": []
          }
        ],
        "summary": "Export payroll batch as XLSX",
        "tags": [
          "Payroll Export"
        ],
        "x-mt-schema-pending": true
      }
    }
  },
  "info": {
    "title": "MineTech Payments API",
    "description": "Payroll disbursement, provider routing and reconciliation.\n\nMineTech supports two authentication schemes.\n\n**API keys** (`apiKey`) — for server-to-server integrations.\nSend `Authorization: Bearer mt_live_…` (or `mt_test_…` for sandbox). The key\ncarries its own tenant, so no tenant header is required.\n\nKeys may additionally require **request signing**. When enabled, send:\n\n- `x-mt-timestamp`: current Unix time in seconds\n- `x-mt-signature`: `t=<unix-seconds>,v1=<hex HMAC-SHA256>`\n\nThe signed string is `{timestamp}.{METHOD}.{path-with-query}.{sha256hex(body)}`.\nSignatures are accepted within a 300-second window. Signing is on by default for\nlive keys and off for test keys.\n\n**JWT** (`jwt`) — used by the MineTech web and mobile apps.\nNot intended for integrations; API keys cannot reach the auth endpoints.",
    "version": "1.0.0",
    "contact": {
      "name": "MineTech Engineering",
      "url": "https://docs.minetech.rw",
      "email": "engineering@minetech.rw"
    },
    "license": {
      "name": "Proprietary",
      "url": "https://minetech.rw/terms"
    }
  },
  "tags": [
    {
      "name": "Disbursements",
      "description": "Payroll disbursement batches"
    },
    {
      "name": "Payment Providers",
      "description": "Provider routing and status"
    },
    {
      "name": "Payroll Export",
      "description": "Bank and mobile-money exports"
    },
    {
      "name": "Reconciliation",
      "description": "Provider reconciliation"
    }
  ],
  "servers": [
    {
      "url": "https://api.minetech.rw",
      "description": "Production"
    },
    {
      "url": "https://sandbox.api.minetech.rw",
      "description": "Sandbox"
    },
    {
      "url": "http://localhost:4001",
      "description": "Local gateway"
    }
  ],
  "components": {
    "securitySchemes": {
      "jwt": {
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "type": "http",
        "description": "MineTech dashboard session token."
      },
      "apiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "description": "API key as `Bearer mt_live_…` / `Bearer mt_test_…`. Issue keys under Developers → API Keys."
      }
    },
    "schemas": {
      "ConfigureProviderDto": {
        "type": "object",
        "properties": {
          "providerType": {
            "type": "string",
            "enum": [
              "MPESA",
              "TIGOPESA",
              "AIRTEL_MONEY",
              "BANK_API",
              "EFT_FILE",
              "PAYROLL_WEBHOOK"
            ]
          },
          "displayName": {
            "type": "string"
          },
          "description": {
            "type": "string"
          }
        },
        "required": [
          "providerType",
          "displayName"
        ]
      },
      "CreateBatchItemDto": {
        "type": "object",
        "properties": {
          "workerId": {
            "type": "string"
          },
          "workerName": {
            "type": "string"
          },
          "netPayableAmount": {
            "type": "number"
          },
          "paymentDestination": {
            "type": "string"
          },
          "currency": {
            "type": "string"
          }
        },
        "required": [
          "workerId",
          "workerName",
          "netPayableAmount",
          "paymentDestination"
        ]
      },
      "CreateBatchDto": {
        "type": "object",
        "properties": {
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CreateBatchItemDto"
            }
          },
          "sourceBatchId": {
            "type": "string"
          },
          "paymentMethod": {
            "type": "string",
            "enum": [
              "MOBILE_MONEY",
              "BANK_TRANSFER",
              "CASH",
              "THIRD_PARTY_PAYROLL"
            ]
          },
          "currency": {
            "type": "string"
          }
        }
      },
      "RejectBatchDto": {
        "type": "object",
        "properties": {
          "reason": {
            "type": "string",
            "description": "Reason for rejecting the batch"
          }
        }
      },
      "MarkTransactionPaidDto": {
        "type": "object",
        "properties": {
          "providerReference": {
            "type": "string",
            "description": "Payment provider reference for successful payout"
          }
        }
      },
      "MarkTransactionFailedDto": {
        "type": "object",
        "properties": {
          "errorCode": {
            "type": "string",
            "description": "Provider/system failure code"
          },
          "errorDescription": {
            "type": "string",
            "description": "Failure description/reason"
          }
        }
      }
    },
    "parameters": {
      "MineTechTimestamp": {
        "name": "x-mt-timestamp",
        "in": "header",
        "required": false,
        "description": "Current Unix time in seconds. Required when the API key has request signing enabled.",
        "schema": {
          "type": "integer",
          "format": "int64",
          "example": 1735689600
        }
      },
      "MineTechSignature": {
        "name": "x-mt-signature",
        "in": "header",
        "required": false,
        "description": "Request signature, `t=<unix-seconds>,v1=<hex HMAC-SHA256>`. Required when the API key has request signing enabled.",
        "schema": {
          "type": "string",
          "example": "t=1735689600,v1=5d41402abc4b…"
        }
      },
      "IdempotencyKey": {
        "name": "Idempotency-Key",
        "in": "header",
        "required": false,
        "description": "Client-generated unique key. Replaying a write with the same key returns the original response instead of performing the operation twice. Retained for 24 hours.",
        "schema": {
          "type": "string",
          "format": "uuid"
        }
      }
    }
  },
  "externalDocs": {
    "description": "Developer documentation",
    "url": "https://docs.minetech.rw"
  },
  "security": [
    {
      "apiKey": []
    },
    {
      "jwt": []
    }
  ]
}
