{
  "openapi": "3.0.1",
  "info": {
    "title": "ReconProof - Invoice & Payment Reconciliation",
    "description": "Match structured invoice and payment records, including split and grouped payments. Get proposed matches, ambiguity flags, unmatched records and arithmetic checks in JSON. Human review required. No bank connection or PDF extraction.",
    "version": "0.0",
    "x-build-id": "G0jO9kZ5EF0eMJcen"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zahi90~reconproof/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zahi90-reconproof",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/zahi90~reconproof/runs": {
      "post": {
        "operationId": "runs-sync-zahi90-reconproof",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/zahi90~reconproof/run-sync": {
      "post": {
        "operationId": "run-sync-zahi90-reconproof",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "left",
          "right"
        ],
        "properties": {
          "left": {
            "title": "Left records",
            "minItems": 1,
            "maxItems": 100,
            "type": "array",
            "description": "1-100 records with id, decimal-string amount, currency, ISO date and scope. Add partyKey/reference for identity evidence.",
            "items": {
              "type": "object",
              "required": [
                "id",
                "amount",
                "currency",
                "date",
                "scope"
              ],
              "additionalProperties": false,
              "properties": {
                "id": {
                  "type": "string",
                  "maxLength": 80,
                  "description": "Unique within this side. Use pseudonymous IDs, not names.",
                  "title": "Record ID",
                  "editor": "textfield"
                },
                "amount": {
                  "type": "string",
                  "description": "Canonical decimal string, e.g. 123.45; no separators, symbols or exponent. Nonzero.",
                  "title": "Amount",
                  "editor": "textfield"
                },
                "currency": {
                  "type": "string",
                  "description": "Supported uppercase three-letter currency. No currency conversion.",
                  "title": "Currency",
                  "editor": "textfield"
                },
                "date": {
                  "type": "string",
                  "description": "ISO calendar date YYYY-MM-DD. No ambiguous dates.",
                  "title": "Transaction date",
                  "editor": "textfield"
                },
                "scope": {
                  "type": "string",
                  "maxLength": 160,
                  "description": "Shared reconciliation partition, e.g. subsidiary/account/book. Different scopes never match.",
                  "title": "Reconciliation scope",
                  "editor": "textfield"
                },
                "partyKey": {
                  "type": "string",
                  "maxLength": 160,
                  "description": "Same pseudonymous counterparty ID on both sides. Required for group matches.",
                  "title": "Counterparty key",
                  "editor": "textfield"
                },
                "reference": {
                  "type": "string",
                  "maxLength": 160,
                  "description": "Invoice/payment reference. Case and whitespace normalized; punctuation preserved.",
                  "title": "Reference",
                  "editor": "textfield"
                }
              }
            }
          },
          "right": {
            "title": "Right records",
            "minItems": 1,
            "maxItems": 100,
            "type": "array",
            "description": "1-100 comparable records. Same partyKey must mean the same party. Choose rightSign opposite only when your bookkeeping convention requires it.",
            "items": {
              "type": "object",
              "required": [
                "id",
                "amount",
                "currency",
                "date",
                "scope"
              ],
              "additionalProperties": false,
              "properties": {
                "id": {
                  "type": "string",
                  "maxLength": 80,
                  "description": "Unique within this side. Use pseudonymous IDs, not names.",
                  "title": "Record ID",
                  "editor": "textfield"
                },
                "amount": {
                  "type": "string",
                  "description": "Canonical decimal string, e.g. 123.45; no separators, symbols or exponent. Nonzero.",
                  "title": "Amount",
                  "editor": "textfield"
                },
                "currency": {
                  "type": "string",
                  "description": "Supported uppercase three-letter currency. No currency conversion.",
                  "title": "Currency",
                  "editor": "textfield"
                },
                "date": {
                  "type": "string",
                  "description": "ISO calendar date YYYY-MM-DD. No ambiguous dates.",
                  "title": "Transaction date",
                  "editor": "textfield"
                },
                "scope": {
                  "type": "string",
                  "maxLength": 160,
                  "description": "Shared reconciliation partition, e.g. subsidiary/account/book. Different scopes never match.",
                  "title": "Reconciliation scope",
                  "editor": "textfield"
                },
                "partyKey": {
                  "type": "string",
                  "maxLength": 160,
                  "description": "Same pseudonymous counterparty ID on both sides. Required for group matches.",
                  "title": "Counterparty key",
                  "editor": "textfield"
                },
                "reference": {
                  "type": "string",
                  "maxLength": 160,
                  "description": "Invoice/payment reference. Case and whitespace normalized; punctuation preserved.",
                  "title": "Reference",
                  "editor": "textfield"
                }
              }
            }
          },
          "options": {
            "title": "Matching policy",
            "type": "object",
            "description": "Optional policy object. Exact amounts by default. maxGroupSize 1-3. Grouped matches require matching partyKey and bounded pools. See README for all limits and the coverage-first objective.",
            "default": {
              "dateWindowDays": 14,
              "maxGroupSize": 3,
              "allowManyToMany": false,
              "allowAmountOnly": false,
              "amountToleranceMinorUnits": 0,
              "ambiguityMargin": 5,
              "rightSign": "same"
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}