{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/underly/json-schema/underly-analysis-schema.json",
  "title": "Analysis",
  "x-generated": "2026-10-30",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/underly-openapi.json#/components/schemas/Analysis",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "merchantName": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "status": {
      "type": "string",
      "enum": [
        "pending",
        "processing",
        "completed",
        "failed"
      ]
    },
    "periodStart": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "periodEnd": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "updatedAt": {
      "type": "string"
    },
    "statementFiles": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          },
          "fileName": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "fileName",
          "status",
          "error"
        ]
      }
    },
    "summary": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "currency": {
              "type": "string"
            },
            "period": {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "start": {
                      "type": "string"
                    },
                    "end": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "start",
                    "end"
                  ]
                },
                {
                  "type": "null"
                }
              ]
            },
            "totals": {
              "type": "object",
              "properties": {
                "grossDeposits": {
                  "type": "number"
                },
                "trueRevenue": {
                  "type": "number"
                },
                "averageMonthlyTrueRevenue": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "averageMonthlyGrossDeposits": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "averageDailyBalance": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "daysNegative": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "minimum": -9007199254740991,
                      "maximum": 9007199254740991
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "nsfCount": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                "overdraftCount": {
                  "type": "integer",
                  "minimum": -9007199254740991,
                  "maximum": 9007199254740991
                },
                "existingMonthlyDebtService": {
                  "type": "number"
                },
                "existingDebtServiceShareOfRevenue": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "null"
                    }
                  ]
                }
              },
              "required": [
                "grossDeposits",
                "trueRevenue",
                "averageMonthlyTrueRevenue",
                "averageMonthlyGrossDeposits",
                "averageDailyBalance",
                "daysNegative",
                "nsfCount",
                "overdraftCount",
                "existingMonthlyDebtService",
                "existingDebtServiceShareOfRevenue"
              ]
            },
            "months": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "month": {
                    "type": "string"
                  },
                  "deposits": {
                    "type": "number"
                  },
                  "depositCount": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  "withdrawals": {
                    "type": "number"
                  },
                  "trueRevenue": {
                    "type": "number"
                  },
                  "debtService": {
                    "type": "number"
                  },
                  "endBalance": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "averageDailyBalance": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "daysNegative": {
                    "anyOf": [
                      {
                        "type": "integer",
                        "minimum": -9007199254740991,
                        "maximum": 9007199254740991
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "coveredDays": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  "days": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "month",
                  "deposits",
                  "depositCount",
                  "withdrawals",
                  "trueRevenue",
                  "debtService",
                  "endBalance",
                  "averageDailyBalance",
                  "daysNegative",
                  "coveredDays",
                  "days"
                ]
              }
            },
            "statements": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "bankName": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "accountNumberLast4": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "periodStart": {
                    "type": "string"
                  },
                  "periodEnd": {
                    "type": "string"
                  },
                  "openingBalance": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "closingBalance": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "transactionCount": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "id",
                  "bankName",
                  "accountNumberLast4",
                  "periodStart",
                  "periodEnd",
                  "openingBalance",
                  "closingBalance",
                  "transactionCount"
                ]
              }
            },
            "positions": {
              "type": "array",
              "items": {
                "type": "object",
                "properties": {
                  "id": {
                    "type": "string"
                  },
                  "funder": {
                    "type": "string"
                  },
                  "registryFunder": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "instrument": {
                    "type": "string"
                  },
                  "excluded": {
                    "type": "boolean"
                  },
                  "cadence": {
                    "anyOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "paymentAmount": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "monthlyRunRate": {
                    "anyOf": [
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "observedTotal": {
                    "type": "number"
                  },
                  "debitCount": {
                    "type": "integer",
                    "minimum": -9007199254740991,
                    "maximum": 9007199254740991
                  },
                  "firstSeen": {
                    "type": "string"
                  },
                  "lastSeen": {
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "funder",
                  "registryFunder",
                  "instrument",
                  "excluded",
                  "cadence",
                  "paymentAmount",
                  "monthlyRunRate",
                  "observedTotal",
                  "debitCount",
                  "firstSeen",
                  "lastSeen"
                ]
              }
            }
          },
          "required": [
            "currency",
            "period",
            "totals",
            "months",
            "statements",
            "positions"
          ]
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "id",
    "name",
    "merchantName",
    "status",
    "periodStart",
    "periodEnd",
    "updatedAt",
    "statementFiles",
    "summary"
  ]
}