{
  "openapi": "3.1.1",
  "info": {
    "title": "SpreadSpace API",
    "description": "SpreadSpace API for document classification and extraction. Date-versioned via the `SpreadSpace-Version` header (latest: `2026-07-19`). Service-account callers using API keys can dedupe retries with the `Idempotency-Key` header on POST/PATCH/PUT/DELETE. Every response carries `X-Request-ID` and `SpreadSpace-Version` headers; errors use the canonical `ApiErrorResponse` envelope.\n\n## Testing (test mode)\n\nTest mode lets you build and verify an integration without touching live data or incurring processing charges. There is **no separate test base URL**: you call the same `https://api.spreadspace.app` and the mode is selected by the API-key prefix:\n\n- `ss_live_…` keys operate on your live workspace data.\n- `ss_test_…` keys route every request to an isolated, per-customer **developer sandbox tenant**. Your live data is never read or written in test mode.\n\nThe developer sandbox tenant is pre-seeded with sample borrowers, loans, and documents, so list/read endpoints return realistic data immediately. Test uploads do **not** parse your bytes: they return premade **sample extractions** drawn from the seeded fixtures, with real figures and at no charge. Choose which seeded fixture is returned via the optional `sample_document` field on the confirm requests (single, batch and intake); omit it and the file name decides. Those confirm responses carry `\"sample\": true`, and webhooks delivered for test-mode activity carry `\"livemode\": false`. Reset (wipe and reseed) your test data at any time with `POST /api/sandbox/reset`.\n\n> **Not the trial workspace.** This developer test mode is distinct from the trial workspace **\"Sandbox Mode\"**, a workspace lifecycle state that shows a trial banner in the web application. \"Sandbox Mode\" describes the workspace lifecycle; **test mode** is the API behavior selected by your `ss_test_` key.",
    "termsOfService": "https://spreadspace.app/legal/msa",
    "contact": {
      "name": "SpreadSpace Support",
      "email": "support@spreadspace.app"
    },
    "version": "2026-07-19"
  },
  "servers": [
    {
      "url": "https://api.spreadspace.app",
      "description": "Production"
    },
    {
      "url": "http://localhost:8080",
      "description": "Local development"
    }
  ],
  "paths": {
    "/api/borrowers": {
      "get": {
        "tags": [
          "Borrowers"
        ],
        "operationId": "Borrowers_List",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "intake",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPaginatedOfBorrowerResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "borrowers",
        "x-fern-sdk-method-name": "list",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "borrowers:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      },
      "post": {
        "tags": [
          "Borrowers"
        ],
        "operationId": "Borrowers_Create",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBorrowerRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBorrowerRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateBorrowerRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BorrowerResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "borrowers",
        "x-fern-sdk-method-name": "create",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "borrowers:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{id}": {
      "get": {
        "tags": [
          "Borrowers"
        ],
        "operationId": "Borrowers_GetById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BorrowerResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "borrowers",
        "x-fern-sdk-method-name": "getById",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "borrowers:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      },
      "patch": {
        "tags": [
          "Borrowers"
        ],
        "operationId": "Borrowers_Update",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBorrowerRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBorrowerRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateBorrowerRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BorrowerResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "borrowers",
        "x-fern-sdk-method-name": "update",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "borrowers:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      },
      "delete": {
        "tags": [
          "Borrowers"
        ],
        "operationId": "Borrowers_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "borrowers",
        "x-fern-sdk-method-name": "delete",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "borrowers:delete"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{id}/complete-intake": {
      "post": {
        "tags": [
          "Borrowers"
        ],
        "summary": "Completes an intake borrower's profile: sets its business name and\nclears `is_intake`, moving it from the intake list into the curated\nborrower list. The body carries the name and nothing else; every other\nprofile field is set through `PATCH /api/borrowers/{id}`. Requires\n`borrowers:write`. Answers `409` for a borrower that is already\ncompleted.",
        "operationId": "Borrowers_CompleteIntake",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompleteIntakeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CompleteIntakeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CompleteIntakeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BorrowerResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "borrowers",
        "x-fern-sdk-method-name": "completeIntake",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "borrowers:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{id}/jobs": {
      "get": {
        "tags": [
          "Borrowers"
        ],
        "operationId": "Borrowers_ListJobs",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32",
              "default": 50
            }
          },
          {
            "name": "loanId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/JobStatusResponse"
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "borrowers",
        "x-fern-sdk-method-name": "listJobs",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "jobs:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{id}/jobs/{jobId}/results": {
      "get": {
        "tags": [
          "Borrowers"
        ],
        "operationId": "Borrowers_GetJobResults",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResultsResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "borrowers",
        "x-fern-sdk-method-name": "getJobResults",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "jobs:read",
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/documents/presigned-url": {
      "post": {
        "tags": [
          "Documents"
        ],
        "operationId": "Documents_GeneratePresignedUrl",
        "parameters": [
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PresignedUrlRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PresignedUrlRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PresignedUrlRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PresignedUrlResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope whose `type` says why: `subscription_required` (no active or trialing subscription), `spend_cap_reached` (the workspace's monthly usage limit is used up), or `insufficient_credits` (the prepaid balance cannot cover this upload; `details` carries `balance_usd`, `reserved_usd`, `in_flight_docs`, `incoming_docs` and `per_doc_reservation_usd` as decimal strings).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "Document processing requires an active billing subscription. Set up billing in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Too many requests: the standard error envelope with `type` `rate_limited` (the endpoint's rate budget), `idempotency_in_progress` (a request with the same `Idempotency-Key` is still executing) or `usage_throttled` (the workspace is under an admission throttle). Honor `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "usage_throttled",
                    "message": "Uploads for this workspace are temporarily paused. Contact support if you believe this is a mistake.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "documents",
        "x-fern-sdk-method-name": "generatePresignedUrl",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "documents:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "upload",
          "requests_per_minute": 1000
        }
      }
    },
    "/api/documents/presigned-urls-batch": {
      "post": {
        "tags": [
          "Documents"
        ],
        "summary": "Signs an upload URL for each of up to 100 files in one call, minting a\npending job per file. `results[i]` corresponds to `files[i]`,\nalways the same length and order; each result carries the single-file\nsuccess fields (`job_id`, `upload_url`, ...) or a per-file\n`error`. A whole-request 4xx fires only for an empty, over-cap or\nmalformed body or an authorization failure. Content-hash duplicates are\nreported at confirm time as a `DUPLICATE` status, never as a\npresign error.",
        "operationId": "Documents_GeneratePresignedUrlsBatch",
        "parameters": [
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PresignedUrlBatchRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/PresignedUrlBatchRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/PresignedUrlBatchRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PresignedUrlBatchResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope whose `type` says why: `subscription_required` (no active or trialing subscription), `spend_cap_reached` (the workspace's monthly usage limit is used up), or `insufficient_credits` (the prepaid balance cannot cover this upload; `details` carries `balance_usd`, `reserved_usd`, `in_flight_docs`, `incoming_docs` and `per_doc_reservation_usd` as decimal strings).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "Document processing requires an active billing subscription. Set up billing in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Too many requests: the standard error envelope with `type` `rate_limited` (the endpoint's rate budget), `idempotency_in_progress` (a request with the same `Idempotency-Key` is still executing) or `usage_throttled` (the workspace is under an admission throttle). Honor `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "usage_throttled",
                    "message": "Uploads for this workspace are temporarily paused. Contact support if you believe this is a mistake.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "documents",
        "x-fern-sdk-method-name": "generatePresignedUrlsBatch",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "documents:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "upload",
          "requests_per_minute": 1000
        }
      }
    },
    "/api/documents/{jobId}/confirm-upload": {
      "post": {
        "tags": [
          "Documents"
        ],
        "summary": "Confirms that the file behind a presigned upload URL has landed in\nstorage and starts the asynchronous extraction pipeline. Answers 202\nwith `status` `PROCESSING` when processing was started (a ZIP\nupload is unpacked here and its child jobs are listed in the response);\npoll `GET /api/documents/{jobId}/status` or subscribe to webhooks\nfor completion. When the same content was already extracted for this\nloan, nothing is started and the answer is 200 with `status`\n`DUPLICATE` and `duplicate_of_job_id`. A retry carrying the\nsame `Idempotency-Key` within 24 hours replays the original\nresponse with `Idempotency-Replay: true`.",
        "operationId": "Documents_ConfirmUpload",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ConfirmUploadRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ConfirmUploadRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ConfirmUploadRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfirmUploadResponse"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfirmUploadResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope whose `type` says why: `subscription_required` (no active or trialing subscription), `spend_cap_reached` (the workspace's monthly usage limit is used up), or `insufficient_credits` (the prepaid balance cannot cover this upload; `details` carries `balance_usd`, `reserved_usd`, `in_flight_docs`, `incoming_docs` and `per_doc_reservation_usd` as decimal strings).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "Document processing requires an active billing subscription. Set up billing in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Too many requests: the standard error envelope with `type` `rate_limited` (the endpoint's rate budget), `idempotency_in_progress` (a request with the same `Idempotency-Key` is still executing) or `usage_throttled` (the workspace is under an admission throttle). Honor `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "usage_throttled",
                    "message": "Uploads for this workspace are temporarily paused. Contact support if you believe this is a mistake.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "documents",
        "x-fern-sdk-method-name": "confirmUpload",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "documents:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "upload",
          "requests_per_minute": 1000
        }
      }
    },
    "/api/documents/confirm-uploads": {
      "post": {
        "tags": [
          "Documents"
        ],
        "summary": "Confirms a batch of uploaded files in one call and starts processing for\nevery file that enters the pipeline. Answers 202 when at least one file\nwas started and 200 when none was (every entry was a duplicate of\ncontent already extracted for its loan, was rejected, or processing\ncould not be started). `results` are positionally aligned with\n`job_ids`; each carries its own `status` (`PROCESSING`,\n`DUPLICATE`, `FAILED` or `ERROR`) and, when it did not\nproceed, an `error`. Poll `POST /api/documents/status-batch`\nor subscribe to webhooks for completion.",
        "operationId": "Documents_ConfirmUploads",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchConfirmRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchConfirmRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BatchConfirmRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchConfirmResponse"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchConfirmResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope whose `type` says why: `subscription_required` (no active or trialing subscription), `spend_cap_reached` (the workspace's monthly usage limit is used up), or `insufficient_credits` (the prepaid balance cannot cover this upload; `details` carries `balance_usd`, `reserved_usd`, `in_flight_docs`, `incoming_docs` and `per_doc_reservation_usd` as decimal strings).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "Document processing requires an active billing subscription. Set up billing in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Too many requests: the standard error envelope with `type` `rate_limited` (the endpoint's rate budget), `idempotency_in_progress` (a request with the same `Idempotency-Key` is still executing) or `usage_throttled` (the workspace is under an admission throttle). Honor `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "usage_throttled",
                    "message": "Uploads for this workspace are temporarily paused. Contact support if you believe this is a mistake.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "documents",
        "x-fern-sdk-method-name": "confirmUploads",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "documents:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "upload",
          "requests_per_minute": 1000
        }
      }
    },
    "/api/documents/{jobId}/status": {
      "get": {
        "tags": [
          "Documents"
        ],
        "operationId": "Documents_GetJobStatus",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "documents",
        "x-fern-sdk-method-name": "getJobStatus",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "documents:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "upload",
          "requests_per_minute": 1000
        }
      }
    },
    "/api/documents/status-batch": {
      "post": {
        "tags": [
          "Documents"
        ],
        "summary": "Look up the status of several jobs in one request instead of polling\neach one. Jobs you cannot see, including ones that do not exist, are\nomitted rather than reported as an error.",
        "operationId": "Documents_GetJobStatusBatch",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchStatusRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/BatchStatusRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/BatchStatusRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BatchStatusResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "documents",
        "x-fern-sdk-method-name": "getJobStatusBatch",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "documents:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "upload",
          "requests_per_minute": 1000
        }
      }
    },
    "/api/documents/{jobId}/download-url": {
      "get": {
        "tags": [
          "Documents"
        ],
        "operationId": "Documents_GenerateDownloadUrl",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "docId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DownloadUrlResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "documents",
        "x-fern-sdk-method-name": "generateDownloadUrl",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "documents:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "upload",
          "requests_per_minute": 1000
        }
      }
    },
    "/api/embed/sessions": {
      "post": {
        "tags": [
          "EmbedSessions"
        ],
        "operationId": "EmbedSessions_Create",
        "parameters": [
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEmbedSessionRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEmbedSessionRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEmbedSessionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateEmbedSessionResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "embedSessions",
        "x-fern-sdk-method-name": "create",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "embed:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/embed/sessions/{sessionId}": {
      "delete": {
        "tags": [
          "EmbedSessions"
        ],
        "summary": "Revokes an embed session by id, invalidating its token immediately. The\nAPI key that minted the session (holding `embed:write`) may revoke\nit, and a workspace administrator may revoke any session in the\norganization. Embed-session tokens themselves are always refused: a\nleaked browser token cannot manage sessions.",
        "operationId": "EmbedSessions_Revoke",
        "parameters": [
          {
            "name": "sessionId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "embedSessions",
        "x-fern-sdk-method-name": "revoke",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "embed:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/embed/iframe-urls": {
      "post": {
        "tags": [
          "EmbedSessions"
        ],
        "summary": "Mints a single-use signed URL for the embed iframe. Your server calls\nthis and places the returned `signed_url` in an\n`&lt;iframe src&gt;`; the frame exchanges the handle inside it for\nits own short-lived `ss_embed_*` session token, which never crosses\nthe parent frame's boundary, so your code never handles a raw token.\nThe same rules as `POST /api/embed/sessions` apply: the Embed\nfeature on the workspace's plan, an API key holding `embed:write`,\nand embed-session tokens themselves are refused.",
        "operationId": "EmbedSessions_CreateIframeUrl",
        "parameters": [
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEmbedIframeUrlRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEmbedIframeUrlRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateEmbedIframeUrlRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateEmbedIframeUrlResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "embedSessions",
        "x-fern-sdk-method-name": "createIframeUrl",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "embed:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/extractions/exports": {
      "post": {
        "tags": [
          "ExtractionExports"
        ],
        "summary": "Creates an export of selected extracted-document line items as a\ndownloadable bundle (xlsx for bank statements, csv or json for every\ndocument type). Returns 202 with the export in `queued` status.\nPoll `GET /api/extractions/exports/{exportId}` until `status`\nis terminal; once it is `succeeded`, every read carries a fresh\n`download_url` and a `links.download` door. A retry carrying\nthe same `Idempotency-Key` within 24 hours replays the original 202\nresponse with `Idempotency-Replay: true`; after that window the same\nkey returns the existing export with 200 for as long as the export exists.",
        "operationId": "ExtractionExports_Create",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExtractionExportRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/ExtractionExportRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/ExtractionExportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExtractionExportResponse"
                }
              }
            }
          },
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExtractionExportResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractionExports",
        "x-fern-sdk-method-name": "create",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:export"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "export",
          "requests_per_minute": 120
        }
      },
      "get": {
        "tags": [
          "ExtractionExports"
        ],
        "summary": "Lists the exports this credential created, newest first. Filters by\n`status` when supplied (`queued`, `running`,\n`cancelling`, `succeeded`, `failed`, `cancelled`);\nany other value is rejected with 400. `limit` is\nclamped to 1-200 and defaults to 50; pass the returned\n`next_cursor` back as `cursor` for the following page.",
        "operationId": "ExtractionExports_List",
        "parameters": [
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExtractionExportListResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractionExports",
        "x-fern-sdk-method-name": "list",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/extractions/exports/{exportId}": {
      "get": {
        "tags": [
          "ExtractionExports"
        ],
        "summary": "Retrieves one export so you can poll it until `status` is\nterminal (`succeeded`, `failed`, or `cancelled`). An\nexport that does not exist, or that another credential created,\nreturns 404.",
        "operationId": "ExtractionExports_Get",
        "parameters": [
          {
            "name": "exportId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExtractionExportResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractionExports",
        "x-fern-sdk-method-name": "get",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/extractions/exports/{exportId}/cancel": {
      "post": {
        "tags": [
          "ExtractionExports"
        ],
        "summary": "Cancels an export. One still `queued` goes straight to\n`cancelled`. One already `running` moves to `cancelling`\nand the worker stops at the next document boundary, at which point it\nbecomes `cancelled`. An export that already succeeded or failed\nreturns 409; one already cancelling or cancelled is returned unchanged.",
        "operationId": "ExtractionExports_Cancel",
        "parameters": [
          {
            "name": "exportId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExtractionExportResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractionExports",
        "x-fern-sdk-method-name": "cancel",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:export"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/extractions/exports/{exportId}/download": {
      "get": {
        "tags": [
          "ExtractionExports"
        ],
        "summary": "Redirects with 302 to a short-lived download link for a finished\nexport's bundle. Answers 404 until the export has succeeded and again\nonce it has expired.",
        "operationId": "ExtractionExports_Download",
        "parameters": [
          {
            "name": "exportId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "302": {
            "description": "Found",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractionExports",
        "x-fern-sdk-method-name": "download",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "List all extracted documents for a borrower.",
        "operationId": "Extractions_ListExtractedDocuments",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "loanId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExtractedDocumentsResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "listExtractedDocuments",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/{docId}/export": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "Export a single document's extraction synchronously. `format` is\nrequired: `csv` (flat line-item rows) or `json` (the same\nreport body the extraction read endpoints return). The response is a\nfile attachment (`text/csv` or `application/json`). xlsx is\nnot available on this endpoint; create an export\n(`POST /api/extractions/exports`) instead. Exports above the\nline-item cap (default 10,000 rows) return 413 with a hint to create an\nexport. Available to both live and test keys.",
        "operationId": "Extractions_ExportSingleDocumentSync",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "format",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "text/csv": { },
              "application/json": { }
            }
          },
          "413": {
            "$ref": "#/components/responses/Error413"
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "exportSingleDocumentSync",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:export"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "export",
          "requests_per_minute": 120
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/{docId}": {
      "delete": {
        "tags": [
          "Extractions"
        ],
        "summary": "Permanently deletes one extracted document: its line items, its stored\nsource pages and its extraction file. There is no undo; this is the\nendpoint for honoring a data deletion request at document granularity.\nThe upload the document came from is shared with its sibling documents\nand is not removed; delete the job to remove the upload itself. Deleting\na statement that superseded others brings those documents back in full\nand re-runs the loan's document passes before the response returns, so\nthe next document in line takes the deleted one's place at once.",
        "operationId": "Extractions_DeleteExtractedDocument",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "deleteExtractedDocument",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "documents:delete"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/bank-statements": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "Every extracted bank statement for the borrower, optionally scoped to a\nloan: one `report_data` object per processed statement, each with\nits account, period, metrics, daily balances and transactions. Group by\nthe account's masked number (`accountNumberLast4`) and stitch daily\nbalances by date to follow one account across statements.",
        "operationId": "Extractions_GetBankStatements",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "loanId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BankStatementReportDataListResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getBankStatements",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/bank-statement-accounts": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "The account roster behind a borrower's bank statements, optionally scoped\nto one loan: one entry per statement carrying only the statement's\n`account` and `period`, under the same access rules and with\nthe same duplicate exclusion as the full bank-statement list. Use it when\nonly the accounts and their periods are needed; the full list carries\nevery transaction and can run to tens of megabytes on a large loan. A\ntop-level `document_account_labels` roster, present when non-empty,\nnames each account tail with the asset line the borrower's own balance\nsheet gives it.",
        "operationId": "Extractions_GetBankStatementAccounts",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "loanId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BankStatementAccountReportDataListResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getBankStatementAccounts",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/owners": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "The borrower's owner and officer principals as its returns'\n    Schedule K-1s list them: one row per principal, keyed by a stable id that\n    survives re-processing, carrying the latest relationship on record.\n    Requires access to the borrower and the Counterparty feature on the\n    workspace's plan.",
        "operationId": "Extractions_GetBorrowerOwners",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OwnerPartnerDto"
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getBorrowerOwners",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/fin-ebitda-addbacks": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "List the loan's saved company-reported EBITDA add-back\n    selections: every company scope on the loan in one read, each row\n    carrying its own `entity_key` (`\"\"` is the whole-loan\n    scope). The read is unfiltered by design; group rows by\n    `entity_key`.",
        "operationId": "Extractions_GetFinEbitdaAddbacks",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "loanId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FinEbitdaAddbacksResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getFinEbitdaAddbacks",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      },
      "put": {
        "tags": [
          "Extractions"
        ],
        "summary": "Replace the company-reported EBITDA add-back selection set for\n    one company scope on the loan — an absent `entityKey` is the\n    whole-loan scope, and a save under one scope leaves every other\n    scope's picks alone.",
        "operationId": "Extractions_SetFinEbitdaAddbacks",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "loanId",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "entityKey",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SetFinEbitdaAddbacksRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/SetFinEbitdaAddbacksRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/SetFinEbitdaAddbacksRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FinEbitdaAddbacksResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "setFinEbitdaAddbacks",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/{docId}/tax-return": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "One extracted tax return by document id: the return's `report_data`\nobject (`form`, `data`, `k1_partners`, `statements`,\n`metadata`, and `tie_signals` when at least one exists).\nAnswers 404 for a document of another category.",
        "operationId": "Extractions_GetTaxReturn",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxReturnReportData"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getTaxReturn",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/tax-returns": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "Every usable tax return for the borrower, business and personal,\noptionally scoped to one loan, in one response. Each entry carries the\nsame `report_data` the single-document tax-return read returns,\npassed through the same disclosure rules, so the two reads never\ndisagree. One loan-scoped `report_viewed` audit row is written per\ncall; per-document view rows are written only by the single-document\nread.",
        "operationId": "Extractions_GetTaxReturns",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "loanId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TaxReturnReportDataListResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getTaxReturns",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/personal-financial-statements": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "Every usable personal financial statement for the borrower, optionally\nscoped to one loan, in one response, in both wire shapes: the SBA Form\n413 structure and the free-form bank or accountant sheet. Each entry\ncarries the same `report_data` the single-document read returns,\npassed through the same disclosure rules, so the two reads never\ndisagree. One loan-scoped `report_viewed` audit row is written per\ncall; per-document view rows are written only by the single-document\nread.",
        "operationId": "Extractions_GetPersonalFinancialStatements",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "loanId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersonalFinancialStatementReportDataListResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getPersonalFinancialStatements",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/{docId}/pfs": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "One extracted Personal Financial Statement by document id: the\nstatement's `report_data` object. Answers 404 for a document of\nanother category.",
        "operationId": "Extractions_GetPfs",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PersonalFinancialStatementReportData"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getPfs",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/{docId}/cash-flow-statement": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "One extracted statement of cash flows by document id: the statement's\n`report_data` object, its operating, investing and financing\nsections as printed, with the reporting-period signals (whether a\nreporting date could be read, and which evidence dated it). Answers 404\nfor a document of another category.",
        "operationId": "Extractions_GetCashFlowStatement",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CashFlowStatementReportData"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getCashFlowStatement",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/{docId}/report-data": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "One document's extraction payload by document id, whatever its\ncategory: the stored `report_data` object as the caller may see it.\nDocuments with a typed read (tax returns, statements, bank statements,\nagings, debt schedules, personal financial statements) should use it;\nthis operation makes no shape promise beyond the document's category.",
        "operationId": "Extractions_GetReportData",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportData"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getReportData",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/{docId}/balance-sheet-statement": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "One extracted balance sheet by document id: the statement's\n`report_data` object, sections nested as printed, with the\nreporting-period signals. Answers 404 for a document of another\ncategory.",
        "operationId": "Extractions_GetBalanceSheetStatement",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BalanceSheetReportData"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getBalanceSheetStatement",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/{docId}/profit-loss-statement": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "One extracted profit and loss statement by document id: the statement's\n`report_data` object, its `lines` and `periods` as\nprinted, with the reporting-period signals. Answers 404 for a document\nof another category.",
        "operationId": "Extractions_GetProfitLossStatement",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfitLossStatementReportData"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getProfitLossStatement",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/{docId}/debt-schedule": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "One extracted debt schedule by document id: the schedule's\n`report_data` object, one row per obligation with balances,\npayments and rates as printed, the column totals, and the findings in\n`signals`. Answers 404 for a document of another category.",
        "operationId": "Extractions_GetDebtSchedule",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DebtScheduleReportData"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getDebtSchedule",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/balance-sheets": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "Every usable balance sheet extraction's report data for the borrower,\noptionally scoped to one loan, in a single response. Single-, dual- and\nmulti-period balance sheets are all included; each row carries its\ndocument category.",
        "operationId": "Extractions_GetBalanceSheets",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "loanId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BalanceSheetReportDataListResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getBalanceSheets",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/profit-loss-statements": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "Every usable profit &amp; loss extraction's report data for the\nborrower, optionally scoped to one loan, in a single response. Single-,\ndual- and multi-period statements are all included; each row carries\nits document category.",
        "operationId": "Extractions_GetProfitLossStatements",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "loanId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfitLossStatementReportDataListResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getProfitLossStatements",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/cash-flow-statements": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "Every usable cash flow statement extraction's report data for the\nborrower, optionally scoped to one loan, in a single response. Each row\ncarries its document category.",
        "operationId": "Extractions_GetCashFlowStatements",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "loanId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CashFlowStatementReportDataListResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getCashFlowStatements",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/debt-schedules": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "Every usable debt schedule extraction's report data for the borrower,\noptionally scoped to one loan, in a single response. Covers both the\ngeneric business debt schedule and the SBA Form 2202 shape; each row\ncarries its document category.",
        "operationId": "Extractions_GetDebtSchedules",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "loanId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DebtScheduleReportDataListResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getDebtSchedules",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/{docId}/bank-statement": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "A single bank statement extraction's report data by document id.",
        "operationId": "Extractions_GetBankStatement",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BankStatementReportData"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getBankStatement",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/{docId}/ar-aging": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "A single accounts receivable aging extraction's report data by document\nid, summary or detail form.",
        "operationId": "Extractions_GetArAging",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ArAgingReportData"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getArAging",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/ar-agings": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "Every usable accounts receivable aging extraction's report data for the\nborrower, optionally scoped to one loan, in a single response. Filter\nwith `?form=summary` or `?form=detail`; each row carries its\ndocument category.",
        "operationId": "Extractions_GetArAgings",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "loanId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "form",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ArAgingReportDataListResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getArAgings",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/{docId}/ap-aging": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "A single accounts payable aging extraction's report data by document\nid, summary or detail form.",
        "operationId": "Extractions_GetApAging",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "docId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApAgingReportData"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getApAging",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/ap-agings": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "Every usable accounts payable aging extraction's report data for the\nborrower, optionally scoped to one loan, in a single response. Filter\nwith `?form=summary` or `?form=detail`; each row carries its\ndocument category.",
        "operationId": "Extractions_GetApAgings",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "loanId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "form",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApAgingReportDataListResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getApAgings",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/query": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "Queries a borrower's extracted line items across documents, filtered by\nstandard category, section, fiscal year and a free-text item name.",
        "operationId": "Extractions_QueryExtractions",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "category",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "section",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "search",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "documentId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "loanId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExtractionQueryResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "queryExtractions",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/query-bulk": {
      "post": {
        "tags": [
          "Extractions"
        ],
        "summary": "The bulk form of the line-item query: takes `document_ids` (1 to\n200) and returns the line items grouped by document in one response, at\none rate-limit charge, so a caller reading many documents needs no\nfan-out of single-document calls.",
        "operationId": "Extractions_QueryExtractionsBulk",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QueryExtractionsBulkRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/QueryExtractionsBulkRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/QueryExtractionsBulkRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExtractionQueryBulkResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "queryExtractionsBulk",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/extractions/reports/{reportType}": {
      "get": {
        "tags": [
          "Extractions"
        ],
        "summary": "Get the full report payload for a document category — the borrower's\nnewest extraction of that category, optionally scoped to one loan. The\ntype is the category slug: profit-and-loss, balance-sheet,\ncash-flow-statement, accounts-receivable-summary,\naccounts-payable-summary, accounts-receivable-detail,\naccounts-payable-detail, bank-statement-business, debt-schedule, or a\ntax-form slug (1065, 1120s, 1120, 1040).",
        "operationId": "Extractions_GetReport",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "reportType",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "loanId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReportData"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "extractions",
        "x-fern-sdk-method-name": "getReport",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/intake": {
      "post": {
        "tags": [
          "Intake"
        ],
        "summary": "Creates a submission: resolves or creates a borrower and loan for it,\nkeyed by `client_reference` when one is given, and returns a\npresigned upload URL. A retry carrying the same `Idempotency-Key`\nwithin 24 hours replays the original response; a repeat submission with\nthe same `client_reference` after that window lands on the same\nloan rather than creating another.",
        "operationId": "Intake_CreateIntake",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IntakeRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/IntakeRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/IntakeRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IntakeResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope whose `type` says why: `subscription_required` (no active or trialing subscription), `spend_cap_reached` (the workspace's monthly usage limit is used up), or `insufficient_credits` (the prepaid balance cannot cover this upload; `details` carries `balance_usd`, `reserved_usd`, `in_flight_docs`, `incoming_docs` and `per_doc_reservation_usd` as decimal strings).",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "Document processing requires an active billing subscription. Set up billing in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "429": {
            "description": "Too many requests: the standard error envelope with `type` `rate_limited` (the endpoint's rate budget), `idempotency_in_progress` (a request with the same `Idempotency-Key` is still executing) or `usage_throttled` (the workspace is under an admission throttle). Honor `Retry-After`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "usage_throttled",
                    "message": "Uploads for this workspace are temporarily paused. Contact support if you believe this is a mistake.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "intake",
        "x-fern-sdk-method-name": "createIntake",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "intake:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "upload",
          "requests_per_minute": 1000
        }
      }
    },
    "/api/intake/{jobId}/confirm": {
      "post": {
        "tags": [
          "Intake"
        ],
        "summary": "Confirms that an intake upload has landed in storage and starts the\nasynchronous processing pipeline. Answers 202 with `status`\n`PROCESSING`; poll `GET /api/documents/{jobId}/status` or\nsubscribe to webhooks for completion. A retry carrying the same\n`Idempotency-Key` within 24 hours replays the original response\nwith `Idempotency-Replay: true`.",
        "operationId": "Intake_ConfirmIntake",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ConfirmIntakeRequest"
                  }
                ]
              }
            },
            "text/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ConfirmIntakeRequest"
                  }
                ]
              }
            },
            "application/*+json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "null"
                  },
                  {
                    "$ref": "#/components/schemas/ConfirmIntakeRequest"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfirmIntakeResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "intake",
        "x-fern-sdk-method-name": "confirmIntake",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "intake:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "upload",
          "requests_per_minute": 1000
        }
      }
    },
    "/api/jobs": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_List",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPaginatedOfJobStatusResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "jobs",
        "x-fern-sdk-method-name": "list",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "jobs:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/jobs/{jobId}/status": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_GetStatus",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobStatusResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "jobs",
        "x-fern-sdk-method-name": "getStatus",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "jobs:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/jobs/{jobId}/results": {
      "get": {
        "tags": [
          "Jobs"
        ],
        "operationId": "Jobs_GetResults",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobResultsResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "jobs",
        "x-fern-sdk-method-name": "getResults",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "jobs:read",
            "extractions:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/jobs/{jobId}": {
      "delete": {
        "tags": [
          "Jobs"
        ],
        "summary": "Permanently deletes an uploaded file and everything extracted from it.\nThere is no undo. Requires the `documents:delete` scope and access\nto the file's loan; a file in another organization answers 404. Embed\ntokens are refused. An upload that is still processing is refused with\n409, because its extracted documents have not landed yet.",
        "operationId": "Jobs_DeleteJob",
        "parameters": [
          {
            "name": "jobId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "jobs",
        "x-fern-sdk-method-name": "deleteJob",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "documents:delete"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/loans/{loanId}/memos": {
      "get": {
        "tags": [
          "LoanMemos"
        ],
        "summary": "Lists the memos saved on a loan — metadata only. Each entry carries the\nmemo's id, name, last-edited time, whether it has been finalized\n(`finalized_at`, null while the memo is still open), and its render\nstate: `none` (never rendered), `rendering` (a render is in\nflight), `ready` (the latest PDF matches the memo as saved), or\n`stale` (the memo changed after its latest PDF was rendered).\n\nA finalized memo reports on its final PDF instead: rendering\nwhile that PDF is being made, ready once it is made, and\nnone if it could not be made. It is never stale, because\nthe final PDF is the memo's document of record and nothing later\nreplaces it.",
        "operationId": "LoanMemos_List",
        "parameters": [
          {
            "name": "loanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LoanMemoSummaryResponse"
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "loanMemos",
        "x-fern-sdk-method-name": "list",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "memos:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/loans/{loanId}/memos/{memoId}/renders": {
      "post": {
        "tags": [
          "LoanMemos"
        ],
        "summary": "Requests a PDF render of one saved memo. Returns 202 with the render;\npoll it on\n`GET /api/loans/{loanId}/memos/{memoId}/renders/{renderId}` until\n`status` is terminal, then download the PDF from the memo's\n`pdf` endpoint (`links.pdf`). Every request renders: the PDF\ncarries the loan's figures as they stand when it is printed, so an\nunchanged memo over changed statements is a different document and is\nnever re-served from a previous render. One render runs per workspace\nat a time; a concurrent request is refused with 429 naming the active\nrender in `render_id`, and can be retried once it finishes. A memo\nthat has been finalized is refused with 423 `memo_locked`: its\nfinal PDF is the document of record until someone reopens the memo.",
        "operationId": "LoanMemos_RequestRender",
        "parameters": [
          {
            "name": "loanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "memoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Accepted",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemoRenderResponse"
                }
              }
            }
          },
          "423": {
            "$ref": "#/components/responses/Error423"
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "loanMemos",
        "x-fern-sdk-method-name": "requestRender",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "memos:render"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/loans/{loanId}/memos/{memoId}/renders/{renderId}": {
      "get": {
        "tags": [
          "LoanMemos"
        ],
        "summary": "Retrieves one render of a saved memo so you can poll it until\n`status` is terminal. A render that does not belong to this memo\nreturns 404.",
        "operationId": "LoanMemos_GetRender",
        "parameters": [
          {
            "name": "loanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "memoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "renderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemoRenderResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "loanMemos",
        "x-fern-sdk-method-name": "getRender",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "memos:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/loans/{loanId}/memos/{memoId}/renders/{renderId}/cancel": {
      "post": {
        "tags": [
          "LoanMemos"
        ],
        "summary": "Cancels a render that has not started yet. A render already in progress\ncannot be interrupted and returns 409; it finishes in seconds. One that\nalready succeeded or failed returns 409 too; one already cancelled is\nreturned unchanged.",
        "operationId": "LoanMemos_CancelRender",
        "parameters": [
          {
            "name": "loanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "memoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "renderId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MemoRenderResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "loanMemos",
        "x-fern-sdk-method-name": "cancelRender",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "memos:render"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/loans/{loanId}/memos/{memoId}/pdf": {
      "get": {
        "tags": [
          "LoanMemos"
        ],
        "summary": "A short-lived download link for the latest rendered PDF of one saved\nmemo. Returns 404 until a render has finished. The response also says\nwhether the PDF is stale — the memo was edited after this PDF was\nrendered — so the caller can request a fresh render before pulling.\nThe link expires in five to ten minutes; request again for a new one.\n\nOnce the memo is finalized this serves its final PDF instead, with\nfinal true and stale false: that document is the record,\nand no later render replaces it. While the final PDF is still being\nmade, or if it could not be made, this returns 404.",
        "operationId": "LoanMemos_GetPdf",
        "parameters": [
          {
            "name": "loanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "memoId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoanMemoPdfResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "loanMemos",
        "x-fern-sdk-method-name": "getPdf",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "memos:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/loans": {
      "get": {
        "tags": [
          "Loans"
        ],
        "operationId": "Loans_ListAll",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPaginatedOfLoanResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "loans",
        "x-fern-sdk-method-name": "listAll",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "loans:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/borrowers/{borrowerId}/loans": {
      "get": {
        "tags": [
          "Loans"
        ],
        "operationId": "Loans_ListByBorrower",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPaginatedOfLoanResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "loans",
        "x-fern-sdk-method-name": "listByBorrower",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "loans:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      },
      "post": {
        "tags": [
          "Loans"
        ],
        "operationId": "Loans_Create",
        "parameters": [
          {
            "name": "borrowerId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLoanRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLoanRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateLoanRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoanResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "loans",
        "x-fern-sdk-method-name": "create",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "loans:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/loans/{id}": {
      "get": {
        "tags": [
          "Loans"
        ],
        "operationId": "Loans_GetById",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoanResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "loans",
        "x-fern-sdk-method-name": "getById",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "loans:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      },
      "patch": {
        "tags": [
          "Loans"
        ],
        "operationId": "Loans_Update",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLoanRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLoanRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateLoanRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LoanResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "loans",
        "x-fern-sdk-method-name": "update",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "loans:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      },
      "delete": {
        "tags": [
          "Loans"
        ],
        "operationId": "Loans_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "loans",
        "x-fern-sdk-method-name": "delete",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "loans:delete"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/me": {
      "get": {
        "tags": [
          "Me"
        ],
        "operationId": "Me_GetMe",
        "parameters": [
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MeResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "me",
        "x-fern-sdk-method-name": "getMe",
        "x-spreadspace-scopes": {
          "mode": "none",
          "scopes": [ ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/organizations": {
      "get": {
        "tags": [
          "Organizations"
        ],
        "operationId": "Organizations_List",
        "parameters": [
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/OrganizationResponse"
                  }
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "organizations",
        "x-fern-sdk-method-name": "list",
        "x-spreadspace-scopes": {
          "mode": "none",
          "scopes": [ ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/sandbox/reset": {
      "post": {
        "tags": [
          "SandboxReset"
        ],
        "summary": "Wipes the calling workspace's test sandbox and reseeds the sample\ndocuments. Requires the `sandbox:reset` scope and a test-mode key;\na live key gets 403 `mode_mismatch`. Returns what happened: whether\nthe sandbox existed, whether it was reseeded, and how many stored\nartifacts could not be purged (0 means a clean reset).",
        "operationId": "SandboxReset_Reset",
        "parameters": [
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SandboxResetResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "sandboxReset",
        "x-fern-sdk-method-name": "reset",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "sandbox:reset"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "strict",
          "requests_per_minute": 10
        }
      }
    },
    "/api/loans/{loanId}/attributes": {
      "get": {
        "tags": [
          "SpreadAttributes"
        ],
        "summary": "The loan's latest attribute snapshot of one status — `final` by\ndefault, or `?status=draft` / `?status=machine`. The envelope\nis constant; `snapshot` is null when the loan has no snapshot of\nthat status yet.\n\nThe three statuses. final is what an analyst\napproved: minted when they finalize a spread, frozen from then on, and\nthe one to build on. machine is minted alongside it at the same\nmoment from the documents alone, with none of the analyst's inputs\napplied — diff the two to see what the analyst changed. draft is\nthe latest autosave of a spread still being worked on, so it moves; an\nautosave whose values are byte-identical to the last one does not mint a\nnew version.\n\nAn API-key caller receives values only: the source geometry the\nworkspace and embed views use to highlight a figure on its document is\nstripped from the payload and the manifest at every depth.",
        "operationId": "SpreadAttributes_GetLatest",
        "parameters": [
          {
            "name": "loanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SpreadAttributesResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "spreadAttributes",
        "x-fern-sdk-method-name": "getLatest",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "spreads:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/loans/{loanId}/attributes/versions": {
      "get": {
        "tags": [
          "SpreadAttributes"
        ],
        "summary": "The loan's snapshot history across every status, newest first — ids,\nstatuses, versions and timestamps only, never the figures. The list is\ncapped at the 200 most recent snapshots and is not paginated; fetch any\none of them by id for its payload and manifest.\n\nFilter to one status with ?status=final (or draft,\nmachine): the first row is then the newest snapshot of that\nstatus, so \"has this loan ever been finalized, and which is the current\nfinal\" is one call. The 200-row cap applies after the filter.",
        "operationId": "SpreadAttributes_ListVersions",
        "parameters": [
          {
            "name": "loanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SpreadAttributeVersionsResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "spreadAttributes",
        "x-fern-sdk-method-name": "listVersions",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "spreads:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/loans/{loanId}/attributes/{snapshotId}": {
      "get": {
        "tags": [
          "SpreadAttributes"
        ],
        "summary": "One snapshot by id, with its payload and manifest — the way to read a\nversion that is no longer the latest of its status. Tenant- and\nloan-scoped: an id belonging to another tenant or another loan is a\n404, never a 403. Source-provenance geometry is stripped for an API key\nhere exactly as it is on the latest read.",
        "operationId": "SpreadAttributes_GetById",
        "parameters": [
          {
            "name": "loanId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "snapshotId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SpreadAttributeSnapshotResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "spreadAttributes",
        "x-fern-sdk-method-name": "getById",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "spreads:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/webhooks": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "operationId": "Webhooks_Create",
        "parameters": [
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebhookEndpointRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebhookEndpointRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/CreateWebhookEndpointRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateWebhookEndpointResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "webhooks",
        "x-fern-sdk-method-name": "create",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "webhooks:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      },
      "get": {
        "tags": [
          "Webhooks"
        ],
        "operationId": "Webhooks_List",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "include_revoked",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPaginatedOfWebhookEndpointSummary"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "webhooks",
        "x-fern-sdk-method-name": "list",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "webhooks:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/webhooks/{id}": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "operationId": "Webhooks_Get",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpointSummary"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "webhooks",
        "x-fern-sdk-method-name": "get",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "webhooks:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      },
      "patch": {
        "tags": [
          "Webhooks"
        ],
        "operationId": "Webhooks_Update",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWebhookEndpointRequest"
              }
            },
            "text/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWebhookEndpointRequest"
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateWebhookEndpointRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/WebhookEndpointSummary"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "webhooks",
        "x-fern-sdk-method-name": "update",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "webhooks:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      },
      "delete": {
        "tags": [
          "Webhooks"
        ],
        "operationId": "Webhooks_Delete",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "webhooks",
        "x-fern-sdk-method-name": "delete",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "webhooks:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/webhooks/{id}/rotate": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "operationId": "Webhooks_Rotate",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RotateWebhookEndpointResponse"
                }
              }
            }
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "webhooks",
        "x-fern-sdk-method-name": "rotate",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "webhooks:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/webhooks/{id}/deliveries": {
      "get": {
        "tags": [
          "Webhooks"
        ],
        "operationId": "Webhooks_ListDeliveries",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "pattern": "^-?(?:0|[1-9]\\d*)$",
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "cursor",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "event_type",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "loan_id",
            "in": "query",
            "description": "Only deliveries whose event was about this loan (the payload's\n`data.loan_id`).",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CursorPaginatedOfWebhookDeliverySummary"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "webhooks",
        "x-fern-sdk-method-name": "listDeliveries",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "webhooks:read"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "api",
          "requests_per_minute": 200
        }
      }
    },
    "/api/webhooks/{id}/deliveries/{deliveryId}/replay": {
      "post": {
        "tags": [
          "Webhooks"
        ],
        "operationId": "Webhooks_ReplayDelivery",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "deliveryId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "Idempotency-Key",
            "in": "header",
            "description": "Idempotency token. Retries that reuse the key within 24h replay the original response. Up to 255 characters; a UUID is typical. See [Idempotency](https://docs.spreadspace.app/api/idempotency).",
            "schema": {
              "maxLength": 255,
              "type": "string"
            }
          },
          {
            "name": "SpreadSpace-Version",
            "in": "header",
            "description": "Pin the API version, e.g. `2026-07-19`. Omit to get the latest. See [Versioning](https://docs.spreadspace.app/api/versioning).",
            "schema": {
              "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
              "type": "string",
              "example": "2026-07-19"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Request-ID": {
                "description": "Correlation ID for this request. Quote it in support tickets.",
                "schema": {
                  "pattern": "^req_[0-9a-f]{24}$",
                  "type": "string",
                  "example": "req_0123456789abcdef01234567"
                }
              },
              "Idempotency-Replay": {
                "description": "Set to `true` when the response is replayed from the idempotency cache for a request that re-presented an `Idempotency-Key` it had already used. Absent on the original (winner) response. A replay repeats the original status and body. When the original could not be stored (an unhandled server fault, or a body over the 1 MiB replay cap) the replay is an error envelope that says so; the operation is never re-run under the same key.",
                "schema": {
                  "type": "boolean",
                  "example": true
                }
              },
              "SpreadSpace-Version": {
                "description": "The API surface version the server resolved for this request. Always present, regardless of whether the client supplied the request-side `SpreadSpace-Version` header. Default: `2026-07-19`.",
                "schema": {
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                  "type": "string",
                  "example": "2026-07-19"
                }
              },
              "RateLimit-Limit": {
                "description": "Request budget of the endpoint's rate-limit policy per 60-second sliding window. See [Rate limits](https://docs.spreadspace.app/api/rate-limits).",
                "schema": {
                  "type": "integer",
                  "example": 200
                }
              },
              "RateLimit-Remaining": {
                "description": "Requests left in the current window. Suppressed on 429 responses produced outside the rate limiter (for example a usage throttle), where a remaining budget would be misleading.",
                "schema": {
                  "type": "integer",
                  "example": 137
                }
              },
              "RateLimit-Reset": {
                "description": "Seconds until a guaranteed-fresh window.",
                "schema": {
                  "type": "integer",
                  "example": 60
                }
              },
              "RateLimit-Policy": {
                "description": "The active policy in `limit;w=window-seconds` form.",
                "schema": {
                  "type": "string",
                  "example": "200;w=60"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReplayWebhookDeliveryResponse"
                }
              }
            }
          },
          "402": {
            "description": "Payment required: the standard error envelope with `type` `subscription_required` when the workspace has no active or trialing subscription, or `billing_required` where a plan entitlement applies.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ApiErrorResponse"
                },
                "example": {
                  "error": {
                    "type": "subscription_required",
                    "message": "SpreadSpace requires an active subscription. Subscribe in Settings → Billing.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Error400"
          },
          "401": {
            "$ref": "#/components/responses/Error401"
          },
          "403": {
            "$ref": "#/components/responses/Error403"
          },
          "404": {
            "$ref": "#/components/responses/Error404"
          },
          "409": {
            "$ref": "#/components/responses/Error409"
          },
          "429": {
            "$ref": "#/components/responses/Error429"
          },
          "500": {
            "$ref": "#/components/responses/Error500"
          }
        },
        "x-fern-sdk-group-name": "webhooks",
        "x-fern-sdk-method-name": "replayDelivery",
        "x-spreadspace-scopes": {
          "mode": "all",
          "scopes": [
            "webhooks:write"
          ]
        },
        "x-spreadspace-rate-limit": {
          "lane": "strict",
          "requests_per_minute": 10
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ApAgingReportData": {
        "title": "Accounts Payable Aging",
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/ApAgingReportData_AgingSummary"
          },
          {
            "$ref": "#/components/schemas/ApAgingReportData_AgingDetail"
          }
        ],
        "description": "An accounts payable aging: a summary by vendor, or a detail by open bill. The report_subtype key says which. Money is a number in dollars.",
        "discriminator": {
          "propertyName": "report_subtype",
          "mapping": {
            "summary": "#/components/schemas/ApAgingReportData_AgingSummary",
            "detail": "#/components/schemas/ApAgingReportData_AgingDetail"
          }
        },
        "x-spreadspace-discriminator": {
          "propertyName": "report_subtype"
        },
        "x-spreadspace-family": "ap_aging",
        "x-spreadspace-document-categories": [
          "ap",
          "accounts_payable",
          "ap_aging_platform",
          "ap_aging",
          "accounts_payable_summary",
          "accounts_payable_detail",
          "ap_aging_detail",
          "ap_detail_platform",
          "ap_detail"
        ]
      },
      "ApAgingReportDataListItem": {
        "required": [
          "extracted_document_id",
          "document_category",
          "report_data"
        ],
        "type": "object",
        "properties": {
          "extracted_document_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "Identifier of the extracted document."
          },
          "document_category": {
            "type": "string",
            "description": "The document category the extraction is stored under."
          },
          "report_data": {
            "description": "The extracted object, in the family's shape.",
            "$ref": "#/components/schemas/ApAgingReportData"
          }
        },
        "additionalProperties": false,
        "description": "One row of the Accounts Payable Aging list: the document's identity and its extracted object."
      },
      "ApAgingReportDataListResponse": {
        "required": [
          "borrower_id",
          "agings"
        ],
        "type": "object",
        "properties": {
          "borrower_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "The borrower the documents belong to."
          },
          "agings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApAgingReportDataListItem"
            },
            "description": "One row per document."
          }
        },
        "additionalProperties": false,
        "description": "Every usable Accounts Payable Aging document on the borrower's file, one row per document."
      },
      "ApAgingReportData_AgingBucketColumn": {
        "required": [
          "key",
          "label"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The key the column's figures carry on each row, for example bucket_91_plus."
          },
          "label": {
            "type": "string",
            "description": "The column heading as printed."
          }
        },
        "additionalProperties": false,
        "description": "One aged column as the report prints it."
      },
      "ApAgingReportData_AgingCustomerRow": {
        "patternProperties": {
          "^bucket_[0-9a-z_]+$": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "x-spreadspace-unit": "money"
          }
        },
        "required": [
          "customer_name"
        ],
        "type": "object",
        "properties": {
          "customer_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The customer, or the vendor on a payables aging."
          },
          "customer_no": {
            "type": [
              "string",
              "null"
            ],
            "description": "The counterparty's account number, when printed."
          },
          "terms": {
            "type": [
              "string",
              "null"
            ],
            "description": "Payment terms, when printed."
          },
          "status_flag": {
            "type": [
              "string",
              "null"
            ],
            "description": "A status mark printed on the row, when any."
          },
          "current": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Not yet due.",
            "x-spreadspace-unit": "money"
          },
          "bucket_1_30": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "1 to 30 days past due.",
            "x-spreadspace-unit": "money"
          },
          "bucket_31_60": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "31 to 60 days past due.",
            "x-spreadspace-unit": "money"
          },
          "bucket_61_90": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "61 to 90 days past due.",
            "x-spreadspace-unit": "money"
          },
          "bucket_91_plus": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "91 or more days past due.",
            "x-spreadspace-unit": "money"
          },
          "retainage": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Retainage held, when the report has the column.",
            "x-spreadspace-unit": "money"
          },
          "total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The row's total.",
            "x-spreadspace-unit": "money"
          },
          "is_intercompany": {
            "type": "boolean",
            "description": "True when the counterparty's name shares a distinctive word with the reporting company's name."
          }
        },
        "additionalProperties": false,
        "description": "One counterparty row of a summary aging: a customer on a receivables aging, a vendor on a payables aging. A column the report prints beyond the standard tiers appears under its own bucket_ key."
      },
      "ApAgingReportData_AgingCustomerSubtotal": {
        "required": [
          "customer_name",
          "subtotal"
        ],
        "type": "object",
        "properties": {
          "customer_name": {
            "type": "string",
            "description": "The customer, or the vendor on a payables aging."
          },
          "subtotal": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "Total balance due across the counterparty's transactions.",
            "x-spreadspace-unit": "money"
          },
          "is_intercompany": {
            "type": "boolean",
            "description": "True when the counterparty's name shares a distinctive word with the reporting company's name."
          }
        },
        "additionalProperties": false,
        "description": "One counterparty's subtotal on a detail aging."
      },
      "ApAgingReportData_AgingDetail": {
        "title": "Detail",
        "required": [
          "document_type",
          "report_subtype",
          "company_name",
          "as_of_date",
          "currency",
          "transactions",
          "customer_subtotals",
          "grand_totals",
          "computed_totals",
          "anomalies",
          "status"
        ],
        "type": "object",
        "properties": {
          "document_type": {
            "enum": [
              "accounts_payable_detail"
            ],
            "type": "string",
            "description": "The document category: a receivables or a payables detail aging."
          },
          "report_subtype": {
            "const": "detail",
            "type": "string",
            "description": "Always detail."
          },
          "company_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The reporting company as printed."
          },
          "as_of_date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The aging date.",
            "x-spreadspace-format": "date"
          },
          "currency": {
            "type": "string",
            "description": "Currency code; USD."
          },
          "customers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApAgingReportData_AgingCustomerRow"
            },
            "description": "Empty on a detail aging."
          },
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApAgingReportData_AgingTransactionRow"
            },
            "description": "One entry per open transaction."
          },
          "customer_subtotals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApAgingReportData_AgingCustomerSubtotal"
            },
            "description": "One entry per counterparty."
          },
          "grand_totals": {
            "description": "The printed grand totals.",
            "$ref": "#/components/schemas/ApAgingReportData_AgingGrandTotals"
          },
          "computed_totals": {
            "description": "The transaction rows added together.",
            "$ref": "#/components/schemas/ApAgingReportData_AgingDetailComputedTotals"
          },
          "anomalies": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Irregularities noted on the report, in words."
          },
          "signals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApAgingReportData_AgingSignal"
            },
            "description": "Notes about the aging date, when any."
          },
          "status": {
            "enum": [
              "RECONCILED",
              "FLAGGED"
            ],
            "type": "string",
            "description": "`RECONCILED` when the printed grand total equals the rows added together; `FLAGGED` otherwise."
          },
          "entity_source": {
            "type": "string",
            "description": "What names the company when the report heading does not: the page image (`page_image`); absent when the heading names it."
          },
          "period_source": {
            "type": "string",
            "description": "Which part of the document dates the report when its printed as-of line states no date: the page image (`page_image`), the file's name (`filename`) or the file's own creation date (`file_metadata`); absent when the as-of line dates the report."
          }
        },
        "additionalProperties": false,
        "description": "A detail aging: one row per open transaction."
      },
      "ApAgingReportData_AgingDetailComputedTotals": {
        "required": [
          "balance_due_sum",
          "n_transactions"
        ],
        "type": "object",
        "properties": {
          "balance_due_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The rows' balance due total, stated beside the printed total for comparison.",
            "x-spreadspace-unit": "money"
          },
          "n_transactions": {
            "type": "integer",
            "description": "Number of open items in the report."
          }
        },
        "additionalProperties": false,
        "description": "Sums over the open items in the report, kept apart from the printed totals."
      },
      "ApAgingReportData_AgingFormulaCensus": {
        "required": [
          "foots",
          "rows_in_total",
          "rows_outside_total",
          "outside_sum"
        ],
        "type": "object",
        "properties": {
          "foots": {
            "type": "boolean",
            "description": "Whether the rows the printed total covers add up to it."
          },
          "rows_in_total": {
            "type": "integer",
            "description": "Number of rows the printed total covers."
          },
          "rows_outside_total": {
            "type": "integer",
            "description": "Number of rows the printed total leaves out."
          },
          "outside_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The total column of the rows the printed total leaves out, added together.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Present when the report is a workbook whose printed total is a cell the workbook computes itself from only some of its rows, rather than a typed value: how many rows that total covers, how many it leaves out, and what those left out add up to, so the rows and the printed total can be read together."
      },
      "ApAgingReportData_AgingGrandTotals": {
        "patternProperties": {
          "^bucket_[0-9a-z_]+$": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "x-spreadspace-unit": "money"
          }
        },
        "type": "object",
        "properties": {
          "current": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Printed total of the current column.",
            "x-spreadspace-unit": "money"
          },
          "bucket_1_30": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Printed total of the 1 to 30 days column.",
            "x-spreadspace-unit": "money"
          },
          "bucket_31_60": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Printed total of the 31 to 60 days column.",
            "x-spreadspace-unit": "money"
          },
          "bucket_61_90": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Printed total of the 61 to 90 days column.",
            "x-spreadspace-unit": "money"
          },
          "bucket_91_plus": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Printed total of the over 90 days column.",
            "x-spreadspace-unit": "money"
          },
          "retainage": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Printed total of the retainage column.",
            "x-spreadspace-unit": "money"
          },
          "grand_total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The printed grand total.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "The report's own printed totals row. Each aged column the report prints beyond the standard five carries its own key."
      },
      "ApAgingReportData_AgingSignal": {
        "required": [
          "severity",
          "code",
          "detail"
        ],
        "type": "object",
        "properties": {
          "severity": {
            "enum": [
              "info",
              "warn"
            ],
            "type": "string",
            "description": "How much weight the note carries: info or warn."
          },
          "code": {
            "enum": [
              "coverage_unreadable",
              "no_reporting_period",
              "year_from_file_metadata",
              "year_from_filename",
              "year_from_page_image",
              "year_matches_print_stamp"
            ],
            "type": "string",
            "description": "The note's identifier."
          },
          "detail": {
            "type": "string",
            "description": "The note in words."
          }
        },
        "additionalProperties": false,
        "description": "A note about the report's as-of date."
      },
      "ApAgingReportData_AgingSummary": {
        "title": "Summary",
        "required": [
          "document_type",
          "report_subtype",
          "company_name",
          "as_of_date",
          "currency",
          "customers",
          "grand_totals",
          "anomalies"
        ],
        "type": "object",
        "properties": {
          "document_type": {
            "enum": [
              "accounts_payable_summary"
            ],
            "type": "string",
            "description": "The document category: a receivables or a payables summary aging."
          },
          "report_subtype": {
            "const": "summary",
            "type": "string",
            "description": "Always summary."
          },
          "company_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The reporting company as printed."
          },
          "as_of_date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The aging date.",
            "x-spreadspace-format": "date"
          },
          "currency": {
            "type": "string",
            "description": "Currency code; USD."
          },
          "customers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApAgingReportData_AgingCustomerRow"
            },
            "description": "One entry per counterparty."
          },
          "grand_totals": {
            "description": "The printed grand totals.",
            "$ref": "#/components/schemas/ApAgingReportData_AgingGrandTotals"
          },
          "computed_totals": {
            "description": "The counterparty rows added together, column by column, beside the printed totals.",
            "$ref": "#/components/schemas/ApAgingReportData_AgingSummaryComputedTotals"
          },
          "bucket_columns": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ApAgingReportData_AgingBucketColumn"
            },
            "description": "The aging columns as the report prints them, in print order."
          },
          "formula_census": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ApAgingReportData_AgingFormulaCensus"
              },
              {
                "type": "null"
              }
            ],
            "description": "On a spreadsheet aging whose printed total covers only some of its rows, how many rows it covers; null otherwise."
          },
          "anomalies": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Irregularities noted on the report, in words."
          },
          "signals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApAgingReportData_AgingSignal"
            },
            "description": "Notes about the aging date, when any."
          },
          "status": {
            "enum": [
              "RECONCILED",
              "FLAGGED"
            ],
            "type": "string",
            "description": "`RECONCILED` when the printed grand totals equal the rows added together; `FLAGGED` otherwise."
          },
          "entity_source": {
            "type": "string",
            "description": "What names the company when the report heading does not: the page image (`page_image`); absent when the heading names it."
          },
          "period_source": {
            "type": "string",
            "description": "Which part of the document dates the report when its printed as-of line states no date: the page image (`page_image`), the file's name (`filename`) or the file's own creation date (`file_metadata`); absent when the as-of line dates the report."
          }
        },
        "additionalProperties": false,
        "description": "A summary aging: one row per counterparty with the balance per aging column."
      },
      "ApAgingReportData_AgingSummaryComputedTotals": {
        "patternProperties": {
          "^bucket_[0-9a-z_]+_sum$": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "x-spreadspace-unit": "money"
          }
        },
        "required": [
          "total_sum"
        ],
        "type": "object",
        "properties": {
          "current_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The rows' current total, stated beside the printed total for comparison.",
            "x-spreadspace-unit": "money"
          },
          "bucket_1_30_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The rows' 1 to 30 days total, stated beside the printed total for comparison.",
            "x-spreadspace-unit": "money"
          },
          "bucket_31_60_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The rows' 31 to 60 days total, stated beside the printed total for comparison.",
            "x-spreadspace-unit": "money"
          },
          "bucket_61_90_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The rows' 61 to 90 days total, stated beside the printed total for comparison.",
            "x-spreadspace-unit": "money"
          },
          "bucket_91_plus_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The rows' over 90 days total, stated beside the printed total for comparison.",
            "x-spreadspace-unit": "money"
          },
          "retainage_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The rows' retainage total, stated beside the printed total for comparison.",
            "x-spreadspace-unit": "money"
          },
          "total_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The rows' total, stated beside the printed grand total for comparison.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Column sums over the report's rows, kept apart from the printed totals. Each aged column has a matching key ending in _sum."
      },
      "ApAgingReportData_AgingTransactionRow": {
        "required": [
          "customer_name",
          "transaction_type",
          "transaction_number",
          "transaction_date",
          "due_date",
          "po_number",
          "age_days",
          "amount",
          "balance_due"
        ],
        "type": "object",
        "properties": {
          "customer_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The customer, or the vendor on a payables aging."
          },
          "transaction_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "The transaction's kind as printed: invoice, credit, payment."
          },
          "transaction_number": {
            "type": [
              "string",
              "null"
            ],
            "description": "The transaction's number as printed."
          },
          "transaction_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "The transaction date as printed.",
            "x-spreadspace-format": "printed"
          },
          "due_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "The due date as printed.",
            "x-spreadspace-format": "printed"
          },
          "po_number": {
            "type": [
              "string",
              "null"
            ],
            "description": "Purchase order number, when printed."
          },
          "age_days": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Days past the transaction or due date at the aging date, as printed."
          },
          "amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The transaction's original amount.",
            "x-spreadspace-unit": "money"
          },
          "balance_due": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The open balance.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One open transaction on a detail aging."
      },
      "ApiErrorBody": {
        "required": [
          "type",
          "message"
        ],
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "Stable error type identifier. Pattern-match on this value, not the human-readable message.",
            "example": "invalid_request"
          },
          "message": {
            "type": "string",
            "description": "Human-readable error message. Subject to wording changes; do not parse."
          },
          "request_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Per-request correlation ID (matches `X-Request-ID` response header). Quote in support tickets.",
            "example": "req_0123456789abcdef01234567"
          },
          "details": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": {
              "type": "string"
            },
            "description": "Structured detail. Some error types populate documented keys in every environment: a version conflict (409) carries `current_version`, the version the resource is actually at, so the client can reload and re-apply. Free-form diagnostic detail beyond those keys appears in development environments only. An `insufficient_credits` 402 carries `balance_usd`, `reserved_usd`, `in_flight_docs`, `incoming_docs` and `per_doc_reservation_usd` as decimal strings."
          }
        },
        "description": "Inner body of the canonical API error envelope."
      },
      "ApiErrorResponse": {
        "required": [
          "error"
        ],
        "type": "object",
        "properties": {
          "error": {
            "$ref": "#/components/schemas/ApiErrorBody"
          }
        },
        "description": "Canonical error envelope returned by all SpreadSpace API endpoints."
      },
      "ArAgingReportData": {
        "title": "Accounts Receivable Aging",
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/ArAgingReportData_AgingSummary"
          },
          {
            "$ref": "#/components/schemas/ArAgingReportData_AgingDetail"
          }
        ],
        "description": "An accounts receivable aging: a summary by customer, or a detail by open invoice. The report_subtype key says which. Money is a number in dollars.",
        "discriminator": {
          "propertyName": "report_subtype",
          "mapping": {
            "summary": "#/components/schemas/ArAgingReportData_AgingSummary",
            "detail": "#/components/schemas/ArAgingReportData_AgingDetail"
          }
        },
        "x-spreadspace-discriminator": {
          "propertyName": "report_subtype"
        },
        "x-spreadspace-family": "ar_aging",
        "x-spreadspace-document-categories": [
          "ar",
          "accounts_receivable",
          "ar_aging_platform",
          "ar_aging",
          "accounts_receivable_summary",
          "accounts_receivable_detail",
          "ar_aging_detail",
          "ar_detail_platform",
          "ar_detail"
        ]
      },
      "ArAgingReportDataListItem": {
        "required": [
          "extracted_document_id",
          "document_category",
          "report_data"
        ],
        "type": "object",
        "properties": {
          "extracted_document_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "Identifier of the extracted document."
          },
          "document_category": {
            "type": "string",
            "description": "The document category the extraction is stored under."
          },
          "report_data": {
            "description": "The extracted object, in the family's shape.",
            "$ref": "#/components/schemas/ArAgingReportData"
          }
        },
        "additionalProperties": false,
        "description": "One row of the Accounts Receivable Aging list: the document's identity and its extracted object."
      },
      "ArAgingReportDataListResponse": {
        "required": [
          "borrower_id",
          "agings"
        ],
        "type": "object",
        "properties": {
          "borrower_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "The borrower the documents belong to."
          },
          "agings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ArAgingReportDataListItem"
            },
            "description": "One row per document."
          }
        },
        "additionalProperties": false,
        "description": "Every usable Accounts Receivable Aging document on the borrower's file, one row per document."
      },
      "ArAgingReportData_AgingBucketColumn": {
        "required": [
          "key",
          "label"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The key the column's figures carry on each row, for example bucket_91_plus."
          },
          "label": {
            "type": "string",
            "description": "The column heading as printed."
          }
        },
        "additionalProperties": false,
        "description": "One aged column as the report prints it."
      },
      "ArAgingReportData_AgingCustomerRow": {
        "patternProperties": {
          "^bucket_[0-9a-z_]+$": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "x-spreadspace-unit": "money"
          }
        },
        "required": [
          "customer_name"
        ],
        "type": "object",
        "properties": {
          "customer_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The customer, or the vendor on a payables aging."
          },
          "customer_no": {
            "type": [
              "string",
              "null"
            ],
            "description": "The counterparty's account number, when printed."
          },
          "terms": {
            "type": [
              "string",
              "null"
            ],
            "description": "Payment terms, when printed."
          },
          "status_flag": {
            "type": [
              "string",
              "null"
            ],
            "description": "A status mark printed on the row, when any."
          },
          "current": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Not yet due.",
            "x-spreadspace-unit": "money"
          },
          "bucket_1_30": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "1 to 30 days past due.",
            "x-spreadspace-unit": "money"
          },
          "bucket_31_60": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "31 to 60 days past due.",
            "x-spreadspace-unit": "money"
          },
          "bucket_61_90": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "61 to 90 days past due.",
            "x-spreadspace-unit": "money"
          },
          "bucket_91_plus": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "91 or more days past due.",
            "x-spreadspace-unit": "money"
          },
          "retainage": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Retainage held, when the report has the column.",
            "x-spreadspace-unit": "money"
          },
          "total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The row's total.",
            "x-spreadspace-unit": "money"
          },
          "is_intercompany": {
            "type": "boolean",
            "description": "True when the counterparty's name shares a distinctive word with the reporting company's name."
          }
        },
        "additionalProperties": false,
        "description": "One counterparty row of a summary aging: a customer on a receivables aging, a vendor on a payables aging. A column the report prints beyond the standard tiers appears under its own bucket_ key."
      },
      "ArAgingReportData_AgingCustomerSubtotal": {
        "required": [
          "customer_name",
          "subtotal"
        ],
        "type": "object",
        "properties": {
          "customer_name": {
            "type": "string",
            "description": "The customer, or the vendor on a payables aging."
          },
          "subtotal": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "Total balance due across the counterparty's transactions.",
            "x-spreadspace-unit": "money"
          },
          "is_intercompany": {
            "type": "boolean",
            "description": "True when the counterparty's name shares a distinctive word with the reporting company's name."
          }
        },
        "additionalProperties": false,
        "description": "One counterparty's subtotal on a detail aging."
      },
      "ArAgingReportData_AgingDetail": {
        "title": "Detail",
        "required": [
          "document_type",
          "report_subtype",
          "company_name",
          "as_of_date",
          "currency",
          "transactions",
          "customer_subtotals",
          "grand_totals",
          "computed_totals",
          "anomalies",
          "status"
        ],
        "type": "object",
        "properties": {
          "document_type": {
            "enum": [
              "accounts_receivable_detail"
            ],
            "type": "string",
            "description": "The document category: a receivables or a payables detail aging."
          },
          "report_subtype": {
            "const": "detail",
            "type": "string",
            "description": "Always detail."
          },
          "company_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The reporting company as printed."
          },
          "as_of_date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The aging date.",
            "x-spreadspace-format": "date"
          },
          "currency": {
            "type": "string",
            "description": "Currency code; USD."
          },
          "customers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ArAgingReportData_AgingCustomerRow"
            },
            "description": "Empty on a detail aging."
          },
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ArAgingReportData_AgingTransactionRow"
            },
            "description": "One entry per open transaction."
          },
          "customer_subtotals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ArAgingReportData_AgingCustomerSubtotal"
            },
            "description": "One entry per counterparty."
          },
          "grand_totals": {
            "description": "The printed grand totals.",
            "$ref": "#/components/schemas/ArAgingReportData_AgingGrandTotals"
          },
          "computed_totals": {
            "description": "The transaction rows added together.",
            "$ref": "#/components/schemas/ArAgingReportData_AgingDetailComputedTotals"
          },
          "anomalies": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Irregularities noted on the report, in words."
          },
          "signals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ArAgingReportData_AgingSignal"
            },
            "description": "Notes about the aging date, when any."
          },
          "status": {
            "enum": [
              "RECONCILED",
              "FLAGGED"
            ],
            "type": "string",
            "description": "`RECONCILED` when the printed grand total equals the rows added together; `FLAGGED` otherwise."
          },
          "entity_source": {
            "type": "string",
            "description": "What names the company when the report heading does not: the page image (`page_image`); absent when the heading names it."
          },
          "period_source": {
            "type": "string",
            "description": "Which part of the document dates the report when its printed as-of line states no date: the page image (`page_image`), the file's name (`filename`) or the file's own creation date (`file_metadata`); absent when the as-of line dates the report."
          }
        },
        "additionalProperties": false,
        "description": "A detail aging: one row per open transaction."
      },
      "ArAgingReportData_AgingDetailComputedTotals": {
        "required": [
          "balance_due_sum",
          "n_transactions"
        ],
        "type": "object",
        "properties": {
          "balance_due_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The rows' balance due total, stated beside the printed total for comparison.",
            "x-spreadspace-unit": "money"
          },
          "n_transactions": {
            "type": "integer",
            "description": "Number of open items in the report."
          }
        },
        "additionalProperties": false,
        "description": "Sums over the open items in the report, kept apart from the printed totals."
      },
      "ArAgingReportData_AgingFormulaCensus": {
        "required": [
          "foots",
          "rows_in_total",
          "rows_outside_total",
          "outside_sum"
        ],
        "type": "object",
        "properties": {
          "foots": {
            "type": "boolean",
            "description": "Whether the rows the printed total covers add up to it."
          },
          "rows_in_total": {
            "type": "integer",
            "description": "Number of rows the printed total covers."
          },
          "rows_outside_total": {
            "type": "integer",
            "description": "Number of rows the printed total leaves out."
          },
          "outside_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The total column of the rows the printed total leaves out, added together.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Present when the report is a workbook whose printed total is a cell the workbook computes itself from only some of its rows, rather than a typed value: how many rows that total covers, how many it leaves out, and what those left out add up to, so the rows and the printed total can be read together."
      },
      "ArAgingReportData_AgingGrandTotals": {
        "patternProperties": {
          "^bucket_[0-9a-z_]+$": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "x-spreadspace-unit": "money"
          }
        },
        "type": "object",
        "properties": {
          "current": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Printed total of the current column.",
            "x-spreadspace-unit": "money"
          },
          "bucket_1_30": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Printed total of the 1 to 30 days column.",
            "x-spreadspace-unit": "money"
          },
          "bucket_31_60": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Printed total of the 31 to 60 days column.",
            "x-spreadspace-unit": "money"
          },
          "bucket_61_90": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Printed total of the 61 to 90 days column.",
            "x-spreadspace-unit": "money"
          },
          "bucket_91_plus": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Printed total of the over 90 days column.",
            "x-spreadspace-unit": "money"
          },
          "retainage": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Printed total of the retainage column.",
            "x-spreadspace-unit": "money"
          },
          "grand_total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The printed grand total.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "The report's own printed totals row. Each aged column the report prints beyond the standard five carries its own key."
      },
      "ArAgingReportData_AgingSignal": {
        "required": [
          "severity",
          "code",
          "detail"
        ],
        "type": "object",
        "properties": {
          "severity": {
            "enum": [
              "info",
              "warn"
            ],
            "type": "string",
            "description": "How much weight the note carries: info or warn."
          },
          "code": {
            "enum": [
              "coverage_unreadable",
              "no_reporting_period",
              "year_from_file_metadata",
              "year_from_filename",
              "year_from_page_image",
              "year_matches_print_stamp"
            ],
            "type": "string",
            "description": "The note's identifier."
          },
          "detail": {
            "type": "string",
            "description": "The note in words."
          }
        },
        "additionalProperties": false,
        "description": "A note about the report's as-of date."
      },
      "ArAgingReportData_AgingSummary": {
        "title": "Summary",
        "required": [
          "document_type",
          "report_subtype",
          "company_name",
          "as_of_date",
          "currency",
          "customers",
          "grand_totals",
          "anomalies"
        ],
        "type": "object",
        "properties": {
          "document_type": {
            "enum": [
              "accounts_receivable_summary"
            ],
            "type": "string",
            "description": "The document category: a receivables or a payables summary aging."
          },
          "report_subtype": {
            "const": "summary",
            "type": "string",
            "description": "Always summary."
          },
          "company_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The reporting company as printed."
          },
          "as_of_date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The aging date.",
            "x-spreadspace-format": "date"
          },
          "currency": {
            "type": "string",
            "description": "Currency code; USD."
          },
          "customers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ArAgingReportData_AgingCustomerRow"
            },
            "description": "One entry per counterparty."
          },
          "grand_totals": {
            "description": "The printed grand totals.",
            "$ref": "#/components/schemas/ArAgingReportData_AgingGrandTotals"
          },
          "computed_totals": {
            "description": "The counterparty rows added together, column by column, beside the printed totals.",
            "$ref": "#/components/schemas/ArAgingReportData_AgingSummaryComputedTotals"
          },
          "bucket_columns": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ArAgingReportData_AgingBucketColumn"
            },
            "description": "The aging columns as the report prints them, in print order."
          },
          "formula_census": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/ArAgingReportData_AgingFormulaCensus"
              },
              {
                "type": "null"
              }
            ],
            "description": "On a spreadsheet aging whose printed total covers only some of its rows, how many rows it covers; null otherwise."
          },
          "anomalies": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Irregularities noted on the report, in words."
          },
          "signals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ArAgingReportData_AgingSignal"
            },
            "description": "Notes about the aging date, when any."
          },
          "status": {
            "enum": [
              "RECONCILED",
              "FLAGGED"
            ],
            "type": "string",
            "description": "`RECONCILED` when the printed grand totals equal the rows added together; `FLAGGED` otherwise."
          },
          "entity_source": {
            "type": "string",
            "description": "What names the company when the report heading does not: the page image (`page_image`); absent when the heading names it."
          },
          "period_source": {
            "type": "string",
            "description": "Which part of the document dates the report when its printed as-of line states no date: the page image (`page_image`), the file's name (`filename`) or the file's own creation date (`file_metadata`); absent when the as-of line dates the report."
          }
        },
        "additionalProperties": false,
        "description": "A summary aging: one row per counterparty with the balance per aging column."
      },
      "ArAgingReportData_AgingSummaryComputedTotals": {
        "patternProperties": {
          "^bucket_[0-9a-z_]+_sum$": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "x-spreadspace-unit": "money"
          }
        },
        "required": [
          "total_sum"
        ],
        "type": "object",
        "properties": {
          "current_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The rows' current total, stated beside the printed total for comparison.",
            "x-spreadspace-unit": "money"
          },
          "bucket_1_30_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The rows' 1 to 30 days total, stated beside the printed total for comparison.",
            "x-spreadspace-unit": "money"
          },
          "bucket_31_60_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The rows' 31 to 60 days total, stated beside the printed total for comparison.",
            "x-spreadspace-unit": "money"
          },
          "bucket_61_90_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The rows' 61 to 90 days total, stated beside the printed total for comparison.",
            "x-spreadspace-unit": "money"
          },
          "bucket_91_plus_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The rows' over 90 days total, stated beside the printed total for comparison.",
            "x-spreadspace-unit": "money"
          },
          "retainage_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The rows' retainage total, stated beside the printed total for comparison.",
            "x-spreadspace-unit": "money"
          },
          "total_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The rows' total, stated beside the printed grand total for comparison.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Column sums over the report's rows, kept apart from the printed totals. Each aged column has a matching key ending in _sum."
      },
      "ArAgingReportData_AgingTransactionRow": {
        "required": [
          "customer_name",
          "transaction_type",
          "transaction_number",
          "transaction_date",
          "due_date",
          "po_number",
          "age_days",
          "amount",
          "balance_due"
        ],
        "type": "object",
        "properties": {
          "customer_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The customer, or the vendor on a payables aging."
          },
          "transaction_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "The transaction's kind as printed: invoice, credit, payment."
          },
          "transaction_number": {
            "type": [
              "string",
              "null"
            ],
            "description": "The transaction's number as printed."
          },
          "transaction_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "The transaction date as printed.",
            "x-spreadspace-format": "printed"
          },
          "due_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "The due date as printed.",
            "x-spreadspace-format": "printed"
          },
          "po_number": {
            "type": [
              "string",
              "null"
            ],
            "description": "Purchase order number, when printed."
          },
          "age_days": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Days past the transaction or due date at the aging date, as printed."
          },
          "amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The transaction's original amount.",
            "x-spreadspace-unit": "money"
          },
          "balance_due": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The open balance.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One open transaction on a detail aging."
      },
      "BalanceSheetReportData": {
        "title": "Balance Sheet",
        "required": [
          "periods",
          "period_count",
          "billing_years",
          "balance_sheet",
          "total_assets",
          "total_liabilities",
          "total_equity",
          "total_liabilities_and_equity",
          "sections",
          "status"
        ],
        "type": "object",
        "properties": {
          "entity": {
            "type": [
              "string",
              "null"
            ],
            "description": "The reporting entity's name as printed."
          },
          "entity_source": {
            "type": "string",
            "description": "What names the entity when the file's text does not: the page image (`page_image`); absent when the file's text names it."
          },
          "periods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BalanceSheetReportData_BalanceSheetPeriod"
            },
            "description": "The statement's columns, one entry per period, newest first."
          },
          "period_count": {
            "type": "integer",
            "description": "Number of period columns."
          },
          "billing_years": {
            "type": "integer",
            "description": "Number of distinct fiscal years the periods cover."
          },
          "as_of_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The year of the latest period, when the document states one."
          },
          "balance_sheet": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BalanceSheetReportData_BalanceSheetRow"
            },
            "description": "The printed lines as a tree: section headings, their lines, and subtotals."
          },
          "totals": {
            "description": "The four headline totals per period, the totals the balance check used, and whether each of those is printed.",
            "$ref": "#/components/schemas/BalanceSheetReportData_BalanceSheetTotals"
          },
          "total_assets": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total assets for the latest period.",
            "x-spreadspace-unit": "money"
          },
          "total_liabilities": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total liabilities for the latest period.",
            "x-spreadspace-unit": "money"
          },
          "total_equity": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total equity for the latest period.",
            "x-spreadspace-unit": "money"
          },
          "total_liabilities_and_equity": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total liabilities and equity for the latest period.",
            "x-spreadspace-unit": "money"
          },
          "sections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BalanceSheetReportData_BalanceSheetSection"
            },
            "description": "The printed lines grouped by section, with subtotals marked."
          },
          "status": {
            "enum": [
              "RECONCILED",
              "FLAGGED"
            ],
            "type": "string",
            "description": "`RECONCILED` when total assets equal total liabilities and equity in every period; `FLAGGED` otherwise."
          },
          "signals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BalanceSheetReportData_StatementSignal"
            },
            "description": "Notes about the statement's reporting period, when any."
          },
          "period_source": {
            "type": "string",
            "description": "Which part of the document dates the periods when the column headers state no date: the date the statement was printed on (`print_stamp`), a year a column prints alone (`year_only`, the period being that year's end), the page image (`page_image`), the file's name (`filename`) or the file's own creation date (`file_metadata`); absent when the column headers date the periods."
          },
          "canonical": {
            "description": "The printed lines mapped onto standard line names.",
            "$ref": "#/components/schemas/BalanceSheetReportData_CanonicalAnnotation"
          },
          "cpa_engagement": {
            "maximum": 3,
            "minimum": 0,
            "type": "integer",
            "description": "The accountant's level of assurance: 0 unaudited, 1 compiled, 2 reviewed, 3 audited."
          },
          "cpa_engagement_label": {
            "type": "string",
            "description": "The assurance level in words."
          },
          "packet": {
            "description": "Where the statement sat in the financial statement packet it arrived in, when it arrived in one.",
            "$ref": "#/components/schemas/BalanceSheetReportData_PacketProvenance"
          },
          "summary": {
            "description": "The statement's headline figures by section, on the single-document read.",
            "x-spreadspace-present-when": "On the single-document read, when at least one summary row matches a printed line; not on the list or the untyped reads.",
            "$ref": "#/components/schemas/BalanceSheetReportData_StatementSummary"
          }
        },
        "additionalProperties": false,
        "description": "A balance sheet: the printed line tree, the four headline totals per period, the sections by side, and the reporting periods. Figures are numbers in whole dollars as printed.",
        "x-spreadspace-family": "balance_sheet",
        "x-spreadspace-document-categories": [
          "balance_sheet",
          "balance_sheet_platform",
          "balance_sheet_single",
          "balance_sheet_dual",
          "comparative_balance_sheet",
          "balance_sheet_multi",
          "monthly_balance_sheet",
          "quarterly_balance_sheet",
          "trend_balance_sheet"
        ]
      },
      "BalanceSheetReportDataListItem": {
        "required": [
          "extracted_document_id",
          "document_category",
          "report_data"
        ],
        "type": "object",
        "properties": {
          "extracted_document_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "Identifier of the extracted document."
          },
          "document_category": {
            "type": "string",
            "description": "The document category the extraction is stored under."
          },
          "report_data": {
            "description": "The extracted object, in the family's shape.",
            "$ref": "#/components/schemas/BalanceSheetReportData"
          }
        },
        "additionalProperties": false,
        "description": "One row of the Balance Sheet list: the document's identity and its extracted object."
      },
      "BalanceSheetReportDataListResponse": {
        "required": [
          "borrower_id",
          "statements"
        ],
        "type": "object",
        "properties": {
          "borrower_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "The borrower the documents belong to."
          },
          "statements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BalanceSheetReportDataListItem"
            },
            "description": "One row per document."
          }
        },
        "additionalProperties": false,
        "description": "Every usable Balance Sheet document on the borrower's file, one row per document."
      },
      "BalanceSheetReportData_BalanceSheetEffectiveTotals": {
        "type": "object",
        "properties": {
          "TOTAL_ASSETS": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "pattern": "^-?\\d+\\.\\d{2}$",
              "type": [
                "string",
                "null"
              ],
              "x-spreadspace-unit": "money"
            },
            "description": "Total assets per period used by the balance check: the printed total when the statement prints one, else the total its own figures give; null when neither exists."
          },
          "TOTAL_LIABILITIES": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "pattern": "^-?\\d+\\.\\d{2}$",
              "type": [
                "string",
                "null"
              ],
              "x-spreadspace-unit": "money"
            },
            "description": "Total liabilities per period used by the balance check: the printed total when the statement prints one, else the total its own figures give; null when neither exists."
          },
          "TOTAL_EQUITY": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "pattern": "^-?\\d+\\.\\d{2}$",
              "type": [
                "string",
                "null"
              ],
              "x-spreadspace-unit": "money"
            },
            "description": "Total equity per period used by the balance check: the printed total when the statement prints one, else the total its own figures give; null when neither exists."
          },
          "TOTAL_LIABILITIES_AND_EQUITY": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "pattern": "^-?\\d+\\.\\d{2}$",
              "type": [
                "string",
                "null"
              ],
              "x-spreadspace-unit": "money"
            },
            "description": "Total liabilities and equity per period used by the balance check: the printed total when the statement prints one, else the total its own figures give; null when neither exists."
          }
        },
        "additionalProperties": false,
        "description": "The four totals per period the balance check used: the printed total where the statement prints one, else the total the statement's own figures give. `src` states which."
      },
      "BalanceSheetReportData_BalanceSheetPeriod": {
        "required": [
          "label",
          "as_of",
          "inferred"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "The column header as printed."
          },
          "as_of": {
            "type": [
              "string",
              "null"
            ],
            "description": "The period's as-of date, when the header states one.",
            "x-spreadspace-format": "printed"
          },
          "inferred": {
            "type": "boolean",
            "description": "True when the document prints no header for the period."
          }
        },
        "additionalProperties": false,
        "description": "One period column."
      },
      "BalanceSheetReportData_BalanceSheetRow": {
        "required": [
          "label",
          "values",
          "path",
          "children"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "The line's label as printed."
          },
          "values": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "pattern": "^-?\\d+\\.\\d{2}$",
              "type": [
                "string",
                "null"
              ],
              "x-spreadspace-unit": "money"
            },
            "description": "The line's figure per period; null where the column is blank, and null as a whole for a heading with no figures."
          },
          "path": {
            "type": "string",
            "description": "The line's address in the tree."
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BalanceSheetReportData_BalanceSheetRow"
            },
            "description": "The lines nested under this one."
          }
        },
        "additionalProperties": false,
        "description": "One printed line, with the lines nested under it when it heads a section."
      },
      "BalanceSheetReportData_BalanceSheetSection": {
        "required": [
          "name",
          "side",
          "items"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The section heading as printed."
          },
          "side": {
            "enum": [
              "assets",
              "liabilities",
              "equity"
            ],
            "type": "string",
            "description": "One of assets, liabilities or equity."
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BalanceSheetReportData_BalanceSheetSectionItem"
            },
            "description": "The section's lines in print order."
          }
        },
        "additionalProperties": false,
        "description": "One section of the statement."
      },
      "BalanceSheetReportData_BalanceSheetSectionItem": {
        "required": [
          "label",
          "value",
          "is_subtotal"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "The line's label as printed."
          },
          "value": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The line's figure for the latest period.",
            "x-spreadspace-unit": "money"
          },
          "is_subtotal": {
            "type": "boolean",
            "description": "True when the line is a printed subtotal."
          }
        },
        "additionalProperties": false,
        "description": "One line of a section."
      },
      "BalanceSheetReportData_BalanceSheetTotalSources": {
        "type": "object",
        "properties": {
          "TOTAL_ASSETS": {
            "type": [
              "string",
              "null"
            ],
            "description": "`printed` when the statement prints a total assets line, `derived` otherwise; null when the balance check had no such total."
          },
          "TOTAL_LIABILITIES": {
            "type": [
              "string",
              "null"
            ],
            "description": "`printed` when the statement prints a total liabilities line, `derived` otherwise; null when the balance check had no such total."
          },
          "TOTAL_EQUITY": {
            "type": [
              "string",
              "null"
            ],
            "description": "`printed` when the statement prints a total equity line, `derived` otherwise; null when the balance check had no such total."
          },
          "TOTAL_LIABILITIES_AND_EQUITY": {
            "type": [
              "string",
              "null"
            ],
            "description": "`printed` when the statement prints a total liabilities and equity line, `derived` otherwise; null when the balance check had no such total."
          }
        },
        "additionalProperties": false,
        "description": "Whether each total the balance check used is printed: `printed` or `derived` per total."
      },
      "BalanceSheetReportData_BalanceSheetTotals": {
        "type": "object",
        "properties": {
          "TOTAL_ASSETS": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "pattern": "^-?\\d+\\.\\d{2}$",
              "type": [
                "string",
                "null"
              ],
              "x-spreadspace-unit": "money"
            },
            "description": "Total assets per period as printed; null when the statement prints no such line."
          },
          "TOTAL_LIABILITIES": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "pattern": "^-?\\d+\\.\\d{2}$",
              "type": [
                "string",
                "null"
              ],
              "x-spreadspace-unit": "money"
            },
            "description": "Total liabilities per period as printed; null when the statement prints no such line."
          },
          "TOTAL_EQUITY": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "pattern": "^-?\\d+\\.\\d{2}$",
              "type": [
                "string",
                "null"
              ],
              "x-spreadspace-unit": "money"
            },
            "description": "Total equity per period as printed; null when the statement prints no such line."
          },
          "TOTAL_LIABILITIES_AND_EQUITY": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "pattern": "^-?\\d+\\.\\d{2}$",
              "type": [
                "string",
                "null"
              ],
              "x-spreadspace-unit": "money"
            },
            "description": "Total liabilities and equity per period as printed; null when the statement prints no such line."
          },
          "effective": {
            "description": "The four totals the balance check used.",
            "$ref": "#/components/schemas/BalanceSheetReportData_BalanceSheetEffectiveTotals"
          },
          "src": {
            "description": "Whether each total the balance check used is printed.",
            "$ref": "#/components/schemas/BalanceSheetReportData_BalanceSheetTotalSources"
          }
        },
        "additionalProperties": false,
        "description": "The four headline totals per period, with the totals the balance check used and whether each is printed."
      },
      "BalanceSheetReportData_CanonicalAnnotation": {
        "required": [
          "schema_version",
          "statement",
          "rows",
          "blocks",
          "gates",
          "entity_signal"
        ],
        "type": "object",
        "properties": {
          "schema_version": {
            "type": [
              "string",
              "null"
            ],
            "description": "Version of the standard line vocabulary the names come from."
          },
          "statement": {
            "type": "string",
            "description": "Which statement vocabulary applies: balance_sheet, income_statement or cash_flow."
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BalanceSheetReportData_CanonicalRow"
            },
            "description": "One entry per printed line, in print order."
          },
          "blocks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BalanceSheetReportData_CanonicalBlock"
            },
            "description": "One entry per printed subtotal and the lines that foot into it."
          },
          "gates": {
            "description": "Summary verdicts over the whole statement.",
            "$ref": "#/components/schemas/BalanceSheetReportData_CanonicalGates"
          },
          "entity_signal": {
            "type": [
              "string",
              "null"
            ],
            "description": "A note about the entity the statement belongs to, when the line names carry one."
          }
        },
        "additionalProperties": false,
        "description": "The statement's printed lines mapped onto standard line names, with the footing of each printed subtotal."
      },
      "BalanceSheetReportData_CanonicalBlock": {
        "required": [
          "id",
          "parent_concept_id",
          "footing"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Address of the subtotal's printed line."
          },
          "parent_concept_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The standard name of the subtotal, when it corresponds to one."
          },
          "footing": {
            "type": "string",
            "description": "Whether the lines above the subtotal add up to it: pass, fail or not_applicable."
          }
        },
        "additionalProperties": false,
        "description": "A printed subtotal and whether its lines foot into it."
      },
      "BalanceSheetReportData_CanonicalGates": {
        "required": [
          "identity",
          "classified_footing",
          "blocks_failed"
        ],
        "type": "object",
        "properties": {
          "identity": {
            "type": "string",
            "description": "Whether total assets equal total liabilities plus equity on every column: pass, fail or not_applicable."
          },
          "classified_footing": {
            "type": "string",
            "description": "Whether the current and noncurrent subtotals foot: pass, fail or not_applicable."
          },
          "blocks_failed": {
            "type": "integer",
            "description": "Number of printed subtotals whose lines do not add up to them."
          }
        },
        "additionalProperties": false,
        "description": "Verdicts over the whole statement."
      },
      "BalanceSheetReportData_CanonicalRow": {
        "required": [
          "key",
          "raw_label",
          "concept_id",
          "method",
          "block",
          "parent_concept_id"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Address of the printed line within the statement."
          },
          "raw_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "The line's label as printed."
          },
          "concept_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The standard line name the printed label corresponds to, or null when it corresponds to none."
          },
          "method": {
            "enum": [
              "exact",
              "fuzzy",
              "structural",
              "reconciled"
            ],
            "type": "string",
            "description": "How closely the printed label matches the standard name: exact, fuzzy, structural, or reconciled when it matches none."
          },
          "block": {
            "type": [
              "string",
              "null"
            ],
            "description": "The subtotal block the line belongs to, when it belongs to one."
          },
          "parent_concept_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The standard name of the subtotal the line foots into, when it foots into one."
          }
        },
        "additionalProperties": false,
        "description": "One printed line and the standard line name it corresponds to."
      },
      "BalanceSheetReportData_PacketProvenance": {
        "required": [
          "section_index",
          "pages",
          "letter_date",
          "letter_page"
        ],
        "type": "object",
        "properties": {
          "section_index": {
            "type": "integer",
            "description": "Position of the statement among the packet's statements, counting from zero."
          },
          "pages": {
            "maxItems": 2,
            "minItems": 2,
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "First and last page of the statement within the packet, counting from one."
          },
          "letter_date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Date of the accountant's letter that accompanied the packet, when the letter printed one.",
            "x-spreadspace-format": "date"
          },
          "letter_page": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Page of the packet the accountant's letter is on, when the packet carries one."
          }
        },
        "additionalProperties": false,
        "description": "Where a statement sat in the financial statement packet it arrived in, when it arrived in one."
      },
      "BalanceSheetReportData_StatementSignal": {
        "required": [
          "severity",
          "code",
          "detail"
        ],
        "type": "object",
        "properties": {
          "severity": {
            "enum": [
              "info",
              "warn"
            ],
            "type": "string",
            "description": "How much weight the note carries: info or warn."
          },
          "code": {
            "enum": [
              "coverage_unreadable",
              "no_reporting_period",
              "year_from_file_metadata",
              "year_from_filename",
              "year_from_page_image",
              "year_matches_print_stamp"
            ],
            "type": "string",
            "description": "The note's identifier."
          },
          "detail": {
            "type": "string",
            "description": "The note in words."
          }
        },
        "additionalProperties": false,
        "description": "A note about the statement's reporting period."
      },
      "BalanceSheetReportData_StatementSummary": {
        "required": [
          "title",
          "sections"
        ],
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "The period the rows cover, as a heading."
          },
          "sections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BalanceSheetReportData_StatementSummarySection"
            },
            "description": "The row blocks, in display order."
          }
        },
        "additionalProperties": false,
        "description": "The statement's headline figures: one block of rows per section, titled by the period the rows cover."
      },
      "BalanceSheetReportData_StatementSummaryRow": {
        "required": [
          "key",
          "label",
          "value"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The row's identifier, for example revenue, cash or total_assets."
          },
          "label": {
            "type": "string",
            "description": "The row's wording as displayed."
          },
          "value": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The figure in dollars, or null when the printed line carries no figure.",
            "x-spreadspace-unit": "money"
          },
          "aggregated": {
            "type": "boolean",
            "description": "True when the figure combines more than one printed line rather than reading a single printed cell."
          },
          "emphasis": {
            "type": "boolean",
            "description": "True on a section total or a bottom line."
          },
          "depth": {
            "minimum": 0,
            "type": "integer",
            "description": "Indentation of the row beneath the row above it, counting from zero."
          },
          "pinned": {
            "type": "boolean",
            "description": "True on a row that stays in view when its section is collapsed."
          }
        },
        "additionalProperties": false,
        "description": "One headline figure and the printed line it names."
      },
      "BalanceSheetReportData_StatementSummarySection": {
        "required": [
          "key",
          "heading",
          "rows"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The block's identifier, for example assets, liabilities or pl."
          },
          "heading": {
            "type": [
              "string",
              "null"
            ],
            "description": "The block's heading, or null when the block has none."
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BalanceSheetReportData_StatementSummaryRow"
            },
            "description": "The rows of the block, in display order."
          }
        },
        "additionalProperties": false,
        "description": "A block of headline rows under one heading."
      },
      "BankStatementAccountReportData": {
        "title": "Bank Statement Account",
        "required": [
          "account",
          "period"
        ],
        "type": "object",
        "properties": {
          "account": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/BankStatementAccountReportData_BankStatementAccount"
              },
              {
                "type": "null"
              }
            ],
            "description": "The account the statement is for; null when the statement has no account block."
          },
          "period": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/BankStatementAccountReportData_BankStatementPeriod"
              },
              {
                "type": "null"
              }
            ],
            "description": "The statement period; null when the statement has no period block."
          }
        },
        "additionalProperties": false,
        "description": "The account and period blocks of a bank statement, as the account list serves them.",
        "x-spreadspace-family": "bank_statement_account",
        "x-spreadspace-document-categories": [
          "bank_statement_business",
          "bank_statement"
        ]
      },
      "BankStatementAccountReportDataListItem": {
        "required": [
          "extracted_document_id",
          "report_data"
        ],
        "type": "object",
        "properties": {
          "extracted_document_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "Identifier of the extracted document."
          },
          "report_data": {
            "description": "The extracted object, in the family's shape.",
            "$ref": "#/components/schemas/BankStatementAccountReportData"
          }
        },
        "additionalProperties": false,
        "description": "One row of the Bank Statement Account list: the document's identity and its extracted object."
      },
      "BankStatementAccountReportDataListResponse": {
        "required": [
          "borrower_id",
          "statements"
        ],
        "type": "object",
        "properties": {
          "borrower_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "The borrower the documents belong to."
          },
          "statements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BankStatementAccountReportDataListItem"
            },
            "description": "One row per document."
          },
          "document_account_labels": {
            "type": "array",
            "items": {
              "required": [
                "account_last4",
                "label"
              ],
              "type": "object",
              "properties": {
                "account_last4": {
                  "type": "string",
                  "description": "Last four digits of the account the label names."
                },
                "label": {
                  "type": "string",
                  "description": "The account's name as the balance sheet prints it."
                },
                "source_doc_id": {
                  "type": "string",
                  "description": "Identifier of the balance sheet that prints the label, when one document supplied it."
                }
              },
              "additionalProperties": false,
              "description": "An account label as a balance sheet on the file prints it."
            },
            "description": "Balance sheet account names for the accounts in this list, when a balance sheet on the file prints any."
          }
        },
        "additionalProperties": false,
        "description": "Every usable Bank Statement Account document on the borrower's file, one row per document."
      },
      "BankStatementAccountReportData_BankStatementAccount": {
        "required": [
          "holder",
          "institution",
          "accountNumberLast4",
          "type"
        ],
        "type": "object",
        "properties": {
          "holder": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of the account holder as printed."
          },
          "institution": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of the bank as printed."
          },
          "accountNumberLast4": {
            "type": [
              "string",
              "null"
            ],
            "description": "The last four digits of the account number."
          },
          "linkedAccountLast4": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Last four digits of the other accounts that appear on a statement covering several accounts. Empty for a statement of one account."
          },
          "type": {
            "type": [
              "string",
              "null"
            ],
            "description": "The account type as printed, for example checking or savings."
          }
        },
        "additionalProperties": false,
        "description": "The account the statement is for."
      },
      "BankStatementAccountReportData_BankStatementPeriod": {
        "required": [
          "start",
          "end",
          "openingBalance",
          "closingBalance"
        ],
        "type": "object",
        "properties": {
          "start": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "First day of the statement period.",
            "x-spreadspace-format": "date"
          },
          "end": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Last day of the statement period.",
            "x-spreadspace-format": "date"
          },
          "openingBalance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Balance at the start of the period, as printed; for a statement that prints none, the linked account's current balance carried back through its own transactions.",
            "x-spreadspace-unit": "money"
          },
          "closingBalance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Balance at the end of the period, as printed; for a statement that prints none, the linked account's current balance carried back through its own transactions.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "The statement period and its opening and closing balances."
      },
      "BankStatementReportData": {
        "title": "Bank Statement",
        "required": [
          "reportType",
          "account",
          "period",
          "metrics",
          "dailyBalances",
          "transactions"
        ],
        "type": "object",
        "properties": {
          "reportType": {
            "const": "bank_statement_analysis",
            "type": "string",
            "description": "Always bank_statement_analysis."
          },
          "account": {
            "description": "The account the statement is for.",
            "$ref": "#/components/schemas/BankStatementReportData_BankStatementAccount"
          },
          "period": {
            "description": "The statement period with its opening and closing balances.",
            "$ref": "#/components/schemas/BankStatementReportData_BankStatementPeriod"
          },
          "period_source": {
            "type": "string",
            "description": "Whether the statement prints both ends of its period (`declared`) or at least one end is a date stated elsewhere in the statement's own text (`statement_text`); absent when the statement states no period."
          },
          "balance_source": {
            "type": "string",
            "description": "Where the period balances come from when the statement prints none: the linked account's current balance carried back through its own transactions (`feed_balance`); absent when the statement prints its balances.",
            "x-spreadspace-present-when": "When the statement prints no period balances and the upload states the linked account's current balance; absent otherwise."
          },
          "metrics": {
            "description": "Totals over the statement period.",
            "$ref": "#/components/schemas/BankStatementReportData_BankStatementMetrics"
          },
          "dailyBalances": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BankStatementReportData_BankDailyBalance"
            },
            "description": "One entry per day of the period."
          },
          "transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BankStatementReportData_BankTransaction"
            },
            "description": "Every transaction, in statement order."
          },
          "underwritingFlags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BankStatementReportData_UnderwritingFlag"
            },
            "description": "Notes about fees, returned items and other events in the transactions, when any."
          }
        },
        "additionalProperties": false,
        "description": "A business bank statement: the account, the statement period, the balance summary, one entry per day, and every transaction. Money is a number in dollars.",
        "x-spreadspace-family": "bank_statement",
        "x-spreadspace-document-categories": [
          "bank_statement_business",
          "bank_statement"
        ]
      },
      "BankStatementReportDataListItem": {
        "required": [
          "extracted_document_id",
          "report_data"
        ],
        "type": "object",
        "properties": {
          "extracted_document_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "Identifier of the extracted document."
          },
          "report_data": {
            "description": "The extracted object, in the family's shape.",
            "$ref": "#/components/schemas/BankStatementReportData"
          }
        },
        "additionalProperties": false,
        "description": "One row of the Bank Statement list: the document's identity and its extracted object."
      },
      "BankStatementReportDataListResponse": {
        "required": [
          "borrower_id",
          "statements"
        ],
        "type": "object",
        "properties": {
          "borrower_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "The borrower the documents belong to."
          },
          "statements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BankStatementReportDataListItem"
            },
            "description": "One row per document."
          }
        },
        "additionalProperties": false,
        "description": "Every usable Bank Statement document on the borrower's file, one row per document."
      },
      "BankStatementReportData_BankDailyBalance": {
        "required": [
          "date",
          "closing"
        ],
        "type": "object",
        "properties": {
          "date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "The day.",
            "x-spreadspace-format": "date"
          },
          "opening": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Opening balance for the day.",
            "x-spreadspace-unit": "money"
          },
          "deposits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total deposits for the day.",
            "x-spreadspace-unit": "money"
          },
          "withdrawals": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total withdrawals for the day.",
            "x-spreadspace-unit": "money"
          },
          "closing": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Closing balance for the day.",
            "x-spreadspace-unit": "money"
          },
          "transactionCount": {
            "type": "integer",
            "description": "Number of transactions posted that day."
          },
          "low_cash": {
            "type": "boolean",
            "description": "True when the day's closing balance is low relative to the statement's other balances."
          }
        },
        "additionalProperties": false,
        "description": "One day of the statement period."
      },
      "BankStatementReportData_BankStatementAccount": {
        "required": [
          "holder",
          "institution",
          "accountNumberLast4",
          "type"
        ],
        "type": "object",
        "properties": {
          "holder": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of the account holder as printed."
          },
          "institution": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of the bank as printed."
          },
          "accountNumberLast4": {
            "type": [
              "string",
              "null"
            ],
            "description": "The last four digits of the account number."
          },
          "linkedAccountLast4": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Last four digits of the other accounts that appear on a statement covering several accounts. Empty for a statement of one account."
          },
          "type": {
            "type": [
              "string",
              "null"
            ],
            "description": "The account type as printed, for example checking or savings."
          }
        },
        "additionalProperties": false,
        "description": "The account the statement is for."
      },
      "BankStatementReportData_BankStatementMetrics": {
        "required": [
          "totalDeposits",
          "totalWithdrawals",
          "netCashFlow",
          "transactionCount"
        ],
        "type": "object",
        "properties": {
          "totalDeposits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total deposits.",
            "x-spreadspace-unit": "money"
          },
          "totalWithdrawals": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total withdrawals.",
            "x-spreadspace-unit": "money"
          },
          "netCashFlow": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Deposits less withdrawals.",
            "x-spreadspace-unit": "money"
          },
          "avgDailyBalance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Average of the daily closing balances.",
            "x-spreadspace-unit": "money"
          },
          "minDailyBalance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Lowest daily closing balance.",
            "x-spreadspace-unit": "money"
          },
          "maxDailyBalance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Highest daily closing balance.",
            "x-spreadspace-unit": "money"
          },
          "daysNegative": {
            "type": "integer",
            "description": "Number of days the closing balance was below zero."
          },
          "transactionCount": {
            "type": "integer",
            "description": "Number of transactions."
          }
        },
        "additionalProperties": false,
        "description": "Totals over the statement period."
      },
      "BankStatementReportData_BankStatementPeriod": {
        "required": [
          "start",
          "end",
          "openingBalance",
          "closingBalance"
        ],
        "type": "object",
        "properties": {
          "start": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "First day of the statement period.",
            "x-spreadspace-format": "date"
          },
          "end": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Last day of the statement period.",
            "x-spreadspace-format": "date"
          },
          "openingBalance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Balance at the start of the period, as printed; for a statement that prints none, the linked account's current balance carried back through its own transactions.",
            "x-spreadspace-unit": "money"
          },
          "closingBalance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Balance at the end of the period, as printed; for a statement that prints none, the linked account's current balance carried back through its own transactions.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "The statement period and its opening and closing balances."
      },
      "BankStatementReportData_BankTransaction": {
        "required": [
          "date",
          "description",
          "amount"
        ],
        "type": "object",
        "properties": {
          "date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Posting date.",
            "x-spreadspace-format": "date"
          },
          "description": {
            "type": "string",
            "description": "The description as printed."
          },
          "amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "Signed amount: deposits positive, withdrawals negative.",
            "x-spreadspace-unit": "money"
          },
          "checkNumber": {
            "type": [
              "string",
              "null"
            ],
            "description": "Check number, when the transaction is a check."
          },
          "transactionType": {
            "type": "string",
            "description": "The transaction's kind: check, ach, wire, transfer, debit_card, fee, interest, atm, deposit or other."
          },
          "lineOrder": {
            "type": "integer",
            "description": "Position of the transaction on the statement, in posting order."
          },
          "accountLast4": {
            "type": "string",
            "description": "Last four digits of the account the transaction posted to, on a feed that carries several accounts."
          }
        },
        "additionalProperties": false,
        "description": "One posted transaction."
      },
      "BankStatementReportData_UnderwritingFlag": {
        "required": [
          "category",
          "severity",
          "code",
          "message_customer",
          "field_ref"
        ],
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "description": "The note's category."
          },
          "severity": {
            "enum": [
              "high",
              "medium",
              "low"
            ],
            "type": "string",
            "description": "One of high, medium or low."
          },
          "code": {
            "type": "string",
            "description": "The note's identifier."
          },
          "message_customer": {
            "type": "string",
            "description": "The note in words."
          },
          "field_ref": {
            "type": [
              "string",
              "null"
            ],
            "description": "The field the note refers to, when it refers to one."
          },
          "detail": {
            "description": "The transactions behind the note.",
            "$ref": "#/components/schemas/BankStatementReportData_UnderwritingFlagDetail"
          }
        },
        "additionalProperties": false,
        "description": "A note about events in the transactions: fees, returned items, overdrafts."
      },
      "BankStatementReportData_UnderwritingFlagDetail": {
        "type": "object",
        "properties": {
          "count": {
            "type": "integer",
            "description": "Number of matching transactions."
          },
          "total_amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "Their amounts added together.",
            "x-spreadspace-unit": "money"
          },
          "matches": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BankStatementReportData_UnderwritingFlagMatch"
            },
            "description": "The matching transactions."
          }
        },
        "additionalProperties": false,
        "description": "The transactions behind a note."
      },
      "BankStatementReportData_UnderwritingFlagMatch": {
        "required": [
          "date",
          "description",
          "amount"
        ],
        "type": "object",
        "properties": {
          "date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Posting date.",
            "x-spreadspace-format": "date"
          },
          "description": {
            "type": "string",
            "description": "The description as printed."
          },
          "amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "Signed amount: deposits positive, withdrawals negative.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One transaction behind a note."
      },
      "BatchChildJob": {
        "required": [
          "job_id",
          "file_name"
        ],
        "type": "object",
        "properties": {
          "job_id": {
            "type": "string"
          },
          "file_name": {
            "type": "string"
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "description": "Terminal status for this entry when it was rejected on its own: one of\n`PROCESSING`, `FAILED` (including an oversized file) or\n`DUPLICATE` (the same content was already uploaded). Omitted when\nthe entry proceeds normally, and the parent job's status applies."
          },
          "error": {
            "type": [
              "string",
              "null"
            ],
            "description": "Message explaining a `FAILED` or `DUPLICATE` status. Null\notherwise."
          }
        }
      },
      "BatchConfirmRequest": {
        "required": [
          "job_ids"
        ],
        "type": "object",
        "properties": {
          "job_ids": {
            "maxItems": 250,
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sample_document": {
            "maxLength": 64,
            "type": [
              "string",
              "null"
            ],
            "description": "Test mode only: selects which sample document every job in this batch\nreturns. Must be one of the published sample document ids (any other\nvalue is a 400); ignored on live keys."
          }
        }
      },
      "BatchConfirmResponse": {
        "required": [
          "results"
        ],
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BatchJobResult"
            }
          },
          "sample": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "`true` when these results are test-mode sample data rather than a\nreal extraction. Omitted on live responses."
          }
        },
        "description": "Response from `POST /api/documents/confirm-uploads`. The request\nanswers 202 when at least one file entered the pipeline and 200 when none\ndid; each entry in `results` reports its own `status` and, when\nit did not proceed, an `error`. A pipeline start failure is reported\nper file as `status: FAILED` (with 200, since nothing is running)."
      },
      "BatchJobResult": {
        "required": [
          "job_id",
          "status"
        ],
        "type": "object",
        "properties": {
          "job_id": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "child_jobs": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/BatchChildJob"
            }
          },
          "error": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "BatchStatusRequest": {
        "required": [
          "job_ids"
        ],
        "type": "object",
        "properties": {
          "job_ids": {
            "maxItems": 200,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Job ids to look up. Duplicates are silently de-duplicated."
          }
        },
        "description": "Request body for `POST /api/documents/status-batch`. Look up several\njobs in one request instead of polling each one."
      },
      "BatchStatusResponse": {
        "required": [
          "statuses"
        ],
        "type": "object",
        "properties": {
          "statuses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JobStatusResponse"
            }
          }
        },
        "description": "Response for `POST /api/documents/status-batch`. Jobs you cannot see,\nincluding ones that do not exist, are omitted rather than reported as an\nerror, so the response can be shorter than the request."
      },
      "BorrowerResponse": {
        "required": [
          "borrower_id",
          "name",
          "created_at",
          "updated_at",
          "status",
          "is_intake"
        ],
        "type": "object",
        "properties": {
          "borrower_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "dba_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "legal_entity_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "tax_filing_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "tin_last4": {
            "type": [
              "string",
              "null"
            ]
          },
          "tin_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "zip_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "state_of_formation": {
            "type": [
              "string",
              "null"
            ]
          },
          "industry": {
            "type": [
              "string",
              "null"
            ]
          },
          "sub_industry": {
            "type": [
              "string",
              "null"
            ]
          },
          "naics_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "date_established": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "fiscal_year_end_month": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "format": "int16"
          },
          "number_of_principals": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "format": "int16"
          },
          "filing_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "last_activity_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "loan_count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "status": {
            "type": "string"
          },
          "notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "is_intake": {
            "type": "boolean",
            "description": "True for a borrower auto-provisioned by intake whose profile has not\nbeen completed. Present on every borrower payload."
          }
        }
      },
      "CashFlowStatementReportData": {
        "title": "Cash Flow Statement",
        "required": [
          "entity",
          "title",
          "cpa_engagement",
          "cpa_engagement_label",
          "periods",
          "billing_years",
          "reporting_unit",
          "scale_multiplier",
          "operating",
          "investing",
          "financing",
          "operating_subtotal",
          "investing_subtotal",
          "financing_subtotal",
          "adjustments_subtotal",
          "beginning_cash",
          "ending_cash",
          "net_change",
          "fx",
          "discontinued_operations",
          "supplemental"
        ],
        "type": "object",
        "properties": {
          "entity": {
            "type": [
              "string",
              "null"
            ],
            "description": "The reporting entity's name as printed."
          },
          "entity_source": {
            "type": "string",
            "description": "What names the entity when the file's text does not: the page image (`page_image`); absent when the file's text names it."
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The statement's printed title."
          },
          "cpa_engagement": {
            "maximum": 3,
            "minimum": 0,
            "type": "integer",
            "description": "The accountant's level of assurance: 0 unaudited, 1 compiled, 2 reviewed, 3 audited."
          },
          "cpa_engagement_label": {
            "type": "string",
            "description": "The assurance level in words."
          },
          "periods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashFlowStatementReportData_CashFlowPeriod"
            },
            "description": "The statement's figure columns, one entry per column."
          },
          "billing_years": {
            "type": "integer",
            "description": "Number of distinct fiscal years the columns cover."
          },
          "billing_group": {
            "type": "string",
            "description": "Present when one file carries several statements: an identifier shared by that file's statements."
          },
          "reporting_unit": {
            "type": [
              "string",
              "null"
            ],
            "description": "The unit the figures are printed in, such as ones or thousands."
          },
          "scale_multiplier": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Scale of the printed figures: 1 for whole dollars, 1000 when the statement is stated in thousands, 1000000 when it is stated in millions."
          },
          "operating": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashFlowStatementReportData_CashFlowLine"
            },
            "description": "The operating activities lines."
          },
          "investing": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashFlowStatementReportData_CashFlowLine"
            },
            "description": "The investing activities lines."
          },
          "financing": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashFlowStatementReportData_CashFlowLine"
            },
            "description": "The financing activities lines."
          },
          "operating_subtotal": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CashFlowStatementReportData_CashFlowTotal"
              },
              {
                "type": "null"
              }
            ],
            "description": "Net cash from operating activities, as printed."
          },
          "investing_subtotal": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CashFlowStatementReportData_CashFlowTotal"
              },
              {
                "type": "null"
              }
            ],
            "description": "Net cash from investing activities, as printed."
          },
          "financing_subtotal": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CashFlowStatementReportData_CashFlowTotal"
              },
              {
                "type": "null"
              }
            ],
            "description": "Net cash from financing activities, as printed."
          },
          "adjustments_subtotal": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CashFlowStatementReportData_CashFlowTotal"
              },
              {
                "type": "null"
              }
            ],
            "description": "Total adjustments to reconcile net income, when printed."
          },
          "beginning_cash": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CashFlowStatementReportData_CashFlowTotal"
              },
              {
                "type": "null"
              }
            ],
            "description": "Cash at the beginning of the period."
          },
          "ending_cash": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CashFlowStatementReportData_CashFlowTotal"
              },
              {
                "type": "null"
              }
            ],
            "description": "Cash at the end of the period."
          },
          "net_change": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CashFlowStatementReportData_CashFlowTotal"
              },
              {
                "type": "null"
              }
            ],
            "description": "Net change in cash."
          },
          "fx": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CashFlowStatementReportData_CashFlowTotal"
              },
              {
                "type": "null"
              }
            ],
            "description": "Effect of exchange rate changes on cash, when printed."
          },
          "discontinued_operations": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/CashFlowStatementReportData_CashFlowTotal"
              },
              {
                "type": "null"
              }
            ],
            "description": "Cash flows of discontinued operations, when printed."
          },
          "supplemental": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashFlowStatementReportData_CashFlowLine"
            },
            "description": "Supplemental disclosures such as cash paid for interest and for income taxes."
          },
          "status": {
            "enum": [
              "RECONCILED",
              "FLAGGED"
            ],
            "type": "string",
            "description": "`RECONCILED` when the sections add up to the net change and beginning cash plus the net change equals ending cash in every period; `FLAGGED` otherwise."
          },
          "signals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashFlowStatementReportData_StatementSignal"
            },
            "description": "Notes about the statement's reporting period, when any."
          },
          "period_source": {
            "type": "string",
            "description": "Which part of the document dates the periods when the column headers state no date: the date the statement was printed on (`print_stamp`), the page image (`page_image`), the file's name (`filename`) or the file's own creation date (`file_metadata`); absent when the column headers date the periods."
          },
          "canonical": {
            "description": "The printed lines mapped onto standard line names.",
            "$ref": "#/components/schemas/CashFlowStatementReportData_CanonicalAnnotation"
          },
          "packet": {
            "description": "Where the statement sat in the financial statement packet it arrived in, when it arrived in one.",
            "$ref": "#/components/schemas/CashFlowStatementReportData_PacketProvenance"
          }
        },
        "additionalProperties": false,
        "description": "A statement of cash flows: the operating, investing and financing lines with their figures per period, the section subtotals and the cash roll-forward. Figures are strings of the printed amount.",
        "x-spreadspace-family": "cash_flow_statement",
        "x-spreadspace-document-categories": [
          "cash_flow_statement",
          "cash_flow",
          "cash_flow_statement_platform",
          "cash_flow_statement_excel",
          "cash_flow_single",
          "cash_flow_dual",
          "cash_flow_multi"
        ]
      },
      "CashFlowStatementReportDataListItem": {
        "required": [
          "extracted_document_id",
          "document_category",
          "report_data"
        ],
        "type": "object",
        "properties": {
          "extracted_document_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "Identifier of the extracted document."
          },
          "document_category": {
            "type": "string",
            "description": "The document category the extraction is stored under."
          },
          "report_data": {
            "description": "The extracted object, in the family's shape.",
            "$ref": "#/components/schemas/CashFlowStatementReportData"
          }
        },
        "additionalProperties": false,
        "description": "One row of the Cash Flow Statement list: the document's identity and its extracted object."
      },
      "CashFlowStatementReportDataListResponse": {
        "required": [
          "borrower_id",
          "statements"
        ],
        "type": "object",
        "properties": {
          "borrower_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "The borrower the documents belong to."
          },
          "statements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashFlowStatementReportDataListItem"
            },
            "description": "One row per document."
          }
        },
        "additionalProperties": false,
        "description": "Every usable Cash Flow Statement document on the borrower's file, one row per document."
      },
      "CashFlowStatementReportData_CanonicalAnnotation": {
        "required": [
          "schema_version",
          "statement",
          "rows",
          "blocks",
          "gates",
          "entity_signal"
        ],
        "type": "object",
        "properties": {
          "schema_version": {
            "type": [
              "string",
              "null"
            ],
            "description": "Version of the standard line vocabulary the names come from."
          },
          "statement": {
            "type": "string",
            "description": "Which statement vocabulary applies: balance_sheet, income_statement or cash_flow."
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashFlowStatementReportData_CanonicalRow"
            },
            "description": "One entry per printed line, in print order."
          },
          "blocks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CashFlowStatementReportData_CanonicalBlock"
            },
            "description": "One entry per printed subtotal and the lines that foot into it."
          },
          "gates": {
            "description": "Summary verdicts over the whole statement.",
            "$ref": "#/components/schemas/CashFlowStatementReportData_CanonicalGates"
          },
          "entity_signal": {
            "type": [
              "string",
              "null"
            ],
            "description": "A note about the entity the statement belongs to, when the line names carry one."
          }
        },
        "additionalProperties": false,
        "description": "The statement's printed lines mapped onto standard line names, with the footing of each printed subtotal."
      },
      "CashFlowStatementReportData_CanonicalBlock": {
        "required": [
          "id",
          "parent_concept_id",
          "footing"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Address of the subtotal's printed line."
          },
          "parent_concept_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The standard name of the subtotal, when it corresponds to one."
          },
          "footing": {
            "type": "string",
            "description": "Whether the lines above the subtotal add up to it: pass, fail or not_applicable."
          }
        },
        "additionalProperties": false,
        "description": "A printed subtotal and whether its lines foot into it."
      },
      "CashFlowStatementReportData_CanonicalGates": {
        "required": [
          "identity",
          "classified_footing",
          "blocks_failed"
        ],
        "type": "object",
        "properties": {
          "identity": {
            "type": "string",
            "description": "Whether total assets equal total liabilities plus equity on every column: pass, fail or not_applicable."
          },
          "classified_footing": {
            "type": "string",
            "description": "Whether the current and noncurrent subtotals foot: pass, fail or not_applicable."
          },
          "blocks_failed": {
            "type": "integer",
            "description": "Number of printed subtotals whose lines do not add up to them."
          }
        },
        "additionalProperties": false,
        "description": "Verdicts over the whole statement."
      },
      "CashFlowStatementReportData_CanonicalRow": {
        "required": [
          "key",
          "raw_label",
          "concept_id",
          "method",
          "block",
          "parent_concept_id"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Address of the printed line within the statement."
          },
          "raw_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "The line's label as printed."
          },
          "concept_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The standard line name the printed label corresponds to, or null when it corresponds to none."
          },
          "method": {
            "enum": [
              "exact",
              "fuzzy",
              "structural",
              "reconciled"
            ],
            "type": "string",
            "description": "How closely the printed label matches the standard name: exact, fuzzy, structural, or reconciled when it matches none."
          },
          "block": {
            "type": [
              "string",
              "null"
            ],
            "description": "The subtotal block the line belongs to, when it belongs to one."
          },
          "parent_concept_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The standard name of the subtotal the line foots into, when it foots into one."
          }
        },
        "additionalProperties": false,
        "description": "One printed line and the standard line name it corresponds to."
      },
      "CashFlowStatementReportData_CashFlowLine": {
        "required": [
          "label",
          "account",
          "subgroup",
          "values"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "The line's label as printed."
          },
          "account": {
            "type": [
              "string",
              "null"
            ],
            "description": "The account number printed beside the line, when any."
          },
          "subgroup": {
            "type": [
              "string",
              "null"
            ],
            "description": "The sub-heading the line sits under, when any."
          },
          "values": {
            "type": "array",
            "items": {
              "pattern": "^-?\\d+\\.\\d{2}$",
              "type": [
                "string",
                "null"
              ],
              "x-spreadspace-unit": "money"
            },
            "description": "The line's figure per column; null where the column is blank."
          }
        },
        "additionalProperties": false,
        "description": "One printed line."
      },
      "CashFlowStatementReportData_CashFlowPeriod": {
        "required": [
          "label",
          "range",
          "as_of"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": [
              "string",
              "null"
            ],
            "description": "The column header as printed."
          },
          "range": {
            "type": [
              "string",
              "null"
            ],
            "description": "The period as printed, when the header prints a range."
          },
          "as_of": {
            "type": [
              "string",
              "null"
            ],
            "description": "The period's end date as printed.",
            "x-spreadspace-format": "printed"
          },
          "start": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "First day of the period, when the header states one.",
            "x-spreadspace-format": "date"
          },
          "end": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Last day of the period, when the header states one.",
            "x-spreadspace-format": "date"
          }
        },
        "additionalProperties": false,
        "description": "One figure column."
      },
      "CashFlowStatementReportData_CashFlowTotal": {
        "required": [
          "label",
          "values"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "The line's label as printed."
          },
          "values": {
            "type": "array",
            "items": {
              "pattern": "^-?\\d+\\.\\d{2}$",
              "type": [
                "string",
                "null"
              ],
              "x-spreadspace-unit": "money"
            },
            "description": "The line's figure per column; null where the column is blank."
          }
        },
        "additionalProperties": false,
        "description": "A printed total line."
      },
      "CashFlowStatementReportData_PacketProvenance": {
        "required": [
          "section_index",
          "pages",
          "letter_date",
          "letter_page"
        ],
        "type": "object",
        "properties": {
          "section_index": {
            "type": "integer",
            "description": "Position of the statement among the packet's statements, counting from zero."
          },
          "pages": {
            "maxItems": 2,
            "minItems": 2,
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "First and last page of the statement within the packet, counting from one."
          },
          "letter_date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Date of the accountant's letter that accompanied the packet, when the letter printed one.",
            "x-spreadspace-format": "date"
          },
          "letter_page": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Page of the packet the accountant's letter is on, when the packet carries one."
          }
        },
        "additionalProperties": false,
        "description": "Where a statement sat in the financial statement packet it arrived in, when it arrived in one."
      },
      "CashFlowStatementReportData_StatementSignal": {
        "required": [
          "severity",
          "code",
          "detail"
        ],
        "type": "object",
        "properties": {
          "severity": {
            "enum": [
              "info",
              "warn"
            ],
            "type": "string",
            "description": "How much weight the note carries: info or warn."
          },
          "code": {
            "enum": [
              "coverage_unreadable",
              "no_reporting_period",
              "year_from_file_metadata",
              "year_from_filename",
              "year_from_page_image",
              "year_matches_print_stamp"
            ],
            "type": "string",
            "description": "The note's identifier."
          },
          "detail": {
            "type": "string",
            "description": "The note in words."
          }
        },
        "additionalProperties": false,
        "description": "A note about the statement's reporting period."
      },
      "CompleteIntakeRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 256,
            "type": "string",
            "description": "The borrower's real business name. Required and non-blank; supplying it\non this endpoint is the only way a borrower leaves intake."
          }
        },
        "description": "Body for `POST /api/borrowers/{id}/complete-intake`, which flips an\nintake borrower to active (`is_intake` becomes false). It takes the\nbusiness name and nothing else: every other profile field, including a tax\nidentifier, is set afterwards through `PATCH /api/borrowers/{id}`."
      },
      "ConfirmIntakeRequest": {
        "type": "object",
        "properties": {
          "sample_document": {
            "maxLength": 64,
            "type": [
              "string",
              "null"
            ],
            "description": "Test mode only: selects which sample document this upload returns. Must\nbe one of the published sample document ids (any other value is a 400);\nignored on live keys."
          }
        },
        "description": "Optional body for `POST /api/intake/{jobId}/confirm`. The confirm\nendpoint works with no body; the only field is the test-mode sample selector."
      },
      "ConfirmIntakeResponse": {
        "required": [
          "job_id",
          "loan_id",
          "status"
        ],
        "type": "object",
        "properties": {
          "job_id": {
            "type": "string"
          },
          "loan_id": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "sample": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "`true` when this confirm returned test-mode sample data rather\nthan a real extraction. Omitted on live responses."
          }
        },
        "description": "Response from `POST /api/intake/{jobId}/confirm` (202). The upload has\nlanded and processing has started."
      },
      "ConfirmUploadChildJob": {
        "required": [
          "job_id",
          "file_name"
        ],
        "type": "object",
        "properties": {
          "job_id": {
            "type": "string"
          },
          "file_name": {
            "type": "string"
          }
        },
        "description": "One file found in a ZIP upload: the job id to track it by and the file name\nit carried."
      },
      "ConfirmUploadRequest": {
        "type": "object",
        "properties": {
          "sample_document": {
            "maxLength": 64,
            "type": [
              "string",
              "null"
            ],
            "description": "Test-mode only. Selects which seeded sample document the confirm returns.\nMust be one of the seeded sample-document ids; an unrecognized value is\nrejected with 400. Ignored on the live path."
          }
        },
        "description": "Optional body for `POST /api/documents/{jobId}/confirm-upload`. The\nendpoint works with no body; the only field is the test-mode sample selector."
      },
      "ConfirmUploadResponse": {
        "required": [
          "job_id",
          "status"
        ],
        "type": "object",
        "properties": {
          "job_id": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "duplicate_of_job_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The prior job whose extraction this upload duplicates. Present only on a\n`\"DUPLICATE\"` status; omitted otherwise."
          },
          "message": {
            "type": [
              "string",
              "null"
            ],
            "description": "Human-readable explanation accompanying a non-`PROCESSING` status.\nOmitted when there is nothing to explain."
          },
          "child_jobs": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/ConfirmUploadChildJob"
            },
            "description": "One row per file found in a ZIP upload. Omitted on any other upload."
          },
          "sample": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "`true` when this confirm returned test-mode sample data rather\nthan a real extraction. Omitted on live responses."
          }
        },
        "description": "Response from `POST /api/documents/{jobId}/confirm-upload`. Carried by\nboth success codes: 202 with `status` `PROCESSING` once processing\nhas started, 200 with `status` `DUPLICATE` when the same content\nwas already extracted for this loan and nothing was processed. A ZIP upload\nlists one child per file it contained; other uploads omit that field."
      },
      "CreateBorrowerRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "type": "string"
          },
          "dba_name": {
            "maxLength": 200,
            "type": [
              "string",
              "null"
            ]
          },
          "legal_entity_type": {
            "maxLength": 100,
            "type": [
              "string",
              "null"
            ]
          },
          "tax_filing_status": {
            "maxLength": 100,
            "type": [
              "string",
              "null"
            ]
          },
          "ein_last4": {
            "maxLength": 4,
            "pattern": "^\\d{4}$",
            "type": [
              "string",
              "null"
            ]
          },
          "ssn_last4": {
            "maxLength": 4,
            "pattern": "^\\d{4}$",
            "type": [
              "string",
              "null"
            ]
          },
          "tin_last4": {
            "maxLength": 4,
            "pattern": "^\\d{4}$",
            "type": [
              "string",
              "null"
            ]
          },
          "tin_type": {
            "maxLength": 10,
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "maxLength": 100,
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "maxLength": 2,
            "type": [
              "string",
              "null"
            ]
          },
          "zip_code": {
            "maxLength": 10,
            "type": [
              "string",
              "null"
            ]
          },
          "state_of_formation": {
            "maxLength": 2,
            "type": [
              "string",
              "null"
            ]
          },
          "industry": {
            "maxLength": 100,
            "type": [
              "string",
              "null"
            ]
          },
          "sub_industry": {
            "maxLength": 100,
            "type": [
              "string",
              "null"
            ]
          },
          "naics_code": {
            "maxLength": 6,
            "type": [
              "string",
              "null"
            ]
          },
          "date_established": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "fiscal_year_end_month": {
            "maximum": 12,
            "minimum": 1,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "format": "int16"
          },
          "number_of_principals": {
            "maximum": 10000,
            "minimum": 0,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "format": "int16"
          },
          "notes": {
            "maxLength": 2000,
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "maxLength": 20,
            "type": [
              "string",
              "null"
            ],
            "description": "Free-text status label, at most 20 characters. Defaults to `good_standing` when omitted."
          }
        }
      },
      "CreateEmbedIframeUrlRequest": {
        "required": [
          "loan_id",
          "surface"
        ],
        "type": "object",
        "properties": {
          "loan_id": {
            "type": "string"
          },
          "surface": {
            "type": "string"
          },
          "scopes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "handle_lifetime_seconds": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "token_lifetime_seconds": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "external_user_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional opaque, stable end-user identifier, with the same contract as\n`external_user_id` on `POST /api/embed/sessions`. It is\ncarried onto the session the exchange returns."
          },
          "display_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Reserved, with the same contract as `display_name` on\n`POST /api/embed/sessions`, including that it requires\n`external_user_id`. It is carried onto the session the exchange\nreturns."
          }
        },
        "description": "Request body for `POST /api/embed/iframe-urls`.\n`handle_lifetime_seconds` defaults to 60 (cap 300);\n`token_lifetime_seconds` defaults to 3600 (cap 86400). `surface`\nnames the embedded surface (for example `spreading`) and an\nunrecognized value is rejected."
      },
      "CreateEmbedIframeUrlResponse": {
        "required": [
          "signed_url",
          "handle_id",
          "expires_at",
          "surface",
          "loan_id",
          "borrower_id",
          "scopes"
        ],
        "type": "object",
        "properties": {
          "signed_url": {
            "type": "string"
          },
          "handle_id": {
            "type": "string"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "surface": {
            "type": "string"
          },
          "loan_id": {
            "type": "string"
          },
          "borrower_id": {
            "type": "string"
          },
          "scopes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "display_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Echo of the request's `display_name` as stored, with control\ncharacters stripped and the value trimmed. Omitted when the request\ncarried no label."
          }
        },
        "description": "Response body for `POST /api/embed/iframe-urls`. Put `signed_url`\nin the iframe's `src`. `handle_id` is returned separately so you\ncan record it without parsing the URL. `expires_at` is when the signed\nURL stops working, not when the session behind it ends."
      },
      "CreateEmbedSessionRequest": {
        "required": [
          "loan_id"
        ],
        "type": "object",
        "properties": {
          "loan_id": {
            "type": "string"
          },
          "scopes": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          },
          "expires_in_seconds": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "external_user_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Optional opaque, stable identifier for the end user you are embedding\nfor. Supply it and that user's saved work persists across their\nsessions; omit it and the session keeps nothing. Max 256 characters\nafter trimming, and a blank value is rejected rather than ignored."
          },
          "display_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Reserved. Stored with the end user's id, not shown anywhere yet.\nRequires `external_user_id` (a label on its own is a 400). Control\ncharacters are stripped and the value trimmed; max 120 characters, and\na blank value is rejected rather than ignored."
          }
        },
        "description": "Mint request body. `scopes` is optional: when omitted the session gets\nread-only scopes (`documents:read`, `extractions:read`,\n`spreads:read`), and a write scope is granted only when named and only\nif the minting key holds it. `expires_in_seconds` defaults to 3600\n(1 hour); a value above 86400 (24 hours) is rejected with 400\n`invalid_request`."
      },
      "CreateEmbedSessionResponse": {
        "required": [
          "embed_token",
          "session_id",
          "expires_at",
          "loan_id",
          "borrower_id",
          "scopes",
          "persistence"
        ],
        "type": "object",
        "properties": {
          "embed_token": {
            "type": "string"
          },
          "session_id": {
            "type": "string"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "loan_id": {
            "type": "string"
          },
          "borrower_id": {
            "type": "string"
          },
          "scopes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "external_user_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Echo of the request's `external_user_id`, trimmed. Omitted when the\nmint carried no end-user id."
          },
          "persistence": {
            "type": "string",
            "description": "How far the end user's work survives this session. `user` means the\nmint carried an `external_user_id`, so saved spreads, preferences\nand memo templates come back on that user's next session. `session`\nmeans it did not, so everything the end user arranges is discarded when\nthe frame unloads. Always present."
          },
          "display_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Echo of the request's `display_name` as stored, with control\ncharacters stripped and the value trimmed. Omitted when the mint carried\nno label."
          }
        },
        "description": "Mint response. `embed_token` is the `ss_embed_`-prefixed bearer\nstring to pass to the browser. It is returned exactly once; there is no\nendpoint that retrieves it again."
      },
      "CreateLoanRequest": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "loan_type": {
            "maxLength": 100,
            "type": [
              "string",
              "null"
            ],
            "description": "One of `AlternativeFinancing`, `SBA`, `CommercialTerm`, `CommercialRealEstate`, `ResidentialMortgage`, `Auto`, `Personal`. Case-insensitive. Any other value is rejected with 400."
          },
          "loan_sub_type": {
            "maxLength": 100,
            "type": [
              "string",
              "null"
            ],
            "description": "A subtype of the given `loan_type`; a subtype that belongs to a different type is rejected with 400."
          },
          "name": {
            "maxLength": 200,
            "type": "string"
          },
          "loan_number": {
            "maxLength": 100,
            "type": [
              "string",
              "null"
            ]
          },
          "requested_amount": {
            "pattern": "^(0|[1-9][0-9]{0,11})\\.[0-9]{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Monetary amount as a decimal string with exactly two decimal places. From 0.00 through 999999999999.99.",
            "x-spreadspace-unit": "money"
          },
          "rate_type": {
            "maxLength": 20,
            "pattern": "^(Fixed|SOFR|Prime)$",
            "type": [
              "string",
              "null"
            ]
          },
          "interest_rate": {
            "maximum": 99.999,
            "minimum": 0,
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "null"
            ],
            "format": "double"
          },
          "term_months": {
            "maximum": 600,
            "minimum": 1,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "notes": {
            "maxLength": 2000,
            "type": [
              "string",
              "null"
            ]
          },
          "guarantors": {
            "maxItems": 50,
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Guarantor names declared on the loan. They can be declared before any\ndocument is uploaded; each one is matched by name to the people the\nloan's documents identify."
          }
        }
      },
      "CreateWebhookEndpointRequest": {
        "required": [
          "url",
          "subscribed_events"
        ],
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Absolute `https` URL that resolves to a public address. Credentials in the URL, private or loopback addresses, and unresolvable hosts are rejected with 400."
          },
          "description": {
            "maxLength": 256,
            "type": [
              "string",
              "null"
            ],
            "description": "At most 256 characters."
          },
          "subscribed_events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebhookEventType"
            }
          }
        }
      },
      "CreateWebhookEndpointResponse": {
        "required": [
          "id",
          "url",
          "status",
          "subscribed_events",
          "signing_secret",
          "created_at"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "url": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": "string"
          },
          "subscribed_events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebhookEventType"
            }
          },
          "signing_secret": {
            "type": "string",
            "description": "The plaintext signing secret. Returned exactly once at creation; the\nserver never re-emits it. The admin must capture it now or rotate."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "CursorPaginatedOfBorrowerResponse": {
        "required": [
          "data",
          "limit"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BorrowerResponse"
            }
          },
          "limit": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "     The envelope every paginated list endpoint returns.\n\n     * data: the page of items, in the requested ordering.\n* limit: the limit actually applied, clamped to 1-100.\n* next_cursor: an opaque string to pass as cursor for\n       the next page, or null when there are no more results."
      },
      "CursorPaginatedOfJobStatusResponse": {
        "required": [
          "data",
          "limit"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/JobStatusResponse"
            }
          },
          "limit": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "     The envelope every paginated list endpoint returns.\n\n     * data: the page of items, in the requested ordering.\n* limit: the limit actually applied, clamped to 1-100.\n* next_cursor: an opaque string to pass as cursor for\n       the next page, or null when there are no more results."
      },
      "CursorPaginatedOfLoanResponse": {
        "required": [
          "data",
          "limit"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoanResponse"
            }
          },
          "limit": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "     The envelope every paginated list endpoint returns.\n\n     * data: the page of items, in the requested ordering.\n* limit: the limit actually applied, clamped to 1-100.\n* next_cursor: an opaque string to pass as cursor for\n       the next page, or null when there are no more results."
      },
      "CursorPaginatedOfWebhookDeliverySummary": {
        "required": [
          "data",
          "limit"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebhookDeliverySummary"
            }
          },
          "limit": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "     The envelope every paginated list endpoint returns.\n\n     * data: the page of items, in the requested ordering.\n* limit: the limit actually applied, clamped to 1-100.\n* next_cursor: an opaque string to pass as cursor for\n       the next page, or null when there are no more results."
      },
      "CursorPaginatedOfWebhookEndpointSummary": {
        "required": [
          "data",
          "limit"
        ],
        "type": "object",
        "properties": {
          "data": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebhookEndpointSummary"
            }
          },
          "limit": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "     The envelope every paginated list endpoint returns.\n\n     * data: the page of items, in the requested ordering.\n* limit: the limit actually applied, clamped to 1-100.\n* next_cursor: an opaque string to pass as cursor for\n       the next page, or null when there are no more results."
      },
      "DebtScheduleReportData": {
        "title": "Debt Schedule",
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/DebtScheduleReportData_DebtScheduleSba2202"
          },
          {
            "$ref": "#/components/schemas/DebtScheduleReportData_DebtScheduleFreeform"
          }
        ],
        "description": "A business debt schedule: SBA Form 2202, or a schedule in the filer's own columns. The form_variant key says which. Money is a string of the printed amount.",
        "discriminator": {
          "propertyName": "form_variant",
          "mapping": {
            "sba_2202": "#/components/schemas/DebtScheduleReportData_DebtScheduleSba2202",
            "freeform": "#/components/schemas/DebtScheduleReportData_DebtScheduleFreeform"
          }
        },
        "x-spreadspace-discriminator": {
          "propertyName": "form_variant"
        },
        "x-spreadspace-family": "debt_schedule",
        "x-spreadspace-document-categories": [
          "debt_schedule",
          "sba_2202"
        ]
      },
      "DebtScheduleReportDataListItem": {
        "required": [
          "extracted_document_id",
          "document_category",
          "report_data"
        ],
        "type": "object",
        "properties": {
          "extracted_document_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "Identifier of the extracted document."
          },
          "document_category": {
            "type": "string",
            "description": "The document category the extraction is stored under."
          },
          "report_data": {
            "description": "The extracted object, in the family's shape.",
            "$ref": "#/components/schemas/DebtScheduleReportData"
          }
        },
        "additionalProperties": false,
        "description": "One row of the Debt Schedule list: the document's identity and its extracted object."
      },
      "DebtScheduleReportDataListResponse": {
        "required": [
          "borrower_id",
          "schedules"
        ],
        "type": "object",
        "properties": {
          "borrower_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "The borrower the documents belong to."
          },
          "schedules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DebtScheduleReportDataListItem"
            },
            "description": "One row per document."
          }
        },
        "additionalProperties": false,
        "description": "Every usable Debt Schedule document on the borrower's file, one row per document."
      },
      "DebtScheduleReportData_DebtScheduleColumnRole": {
        "required": [
          "money",
          "rate",
          "compact"
        ],
        "type": "object",
        "properties": {
          "money": {
            "type": "boolean",
            "description": "True when the column holds dollar figures."
          },
          "rate": {
            "type": "boolean",
            "description": "True when the column holds an interest rate."
          },
          "compact": {
            "type": "boolean",
            "description": "True when the column holds dollar figures other than a rate or an identifier."
          }
        },
        "additionalProperties": false,
        "description": "What a printed column holds."
      },
      "DebtScheduleReportData_DebtScheduleConvertedLayout": {
        "required": [
          "convert",
          "money_roles",
          "cell_columns"
        ],
        "type": "object",
        "properties": {
          "convert": {
            "type": "boolean",
            "description": "True when at least two standard fields have no printed column of their own."
          },
          "money_roles": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The standard money fields the rows carry."
          },
          "cell_columns": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "Positions of the printed money columns that do not restate a standard field."
          }
        },
        "additionalProperties": false,
        "description": "How the printed columns relate to the standard debt fields."
      },
      "DebtScheduleReportData_DebtScheduleFreeform": {
        "title": "Filer's own columns",
        "required": [
          "form_variant",
          "applicant",
          "as_of_date",
          "columns",
          "creditor_column",
          "balance_column",
          "total_balance",
          "debt_schedule",
          "status",
          "signals"
        ],
        "type": "object",
        "properties": {
          "form_variant": {
            "const": "freeform",
            "type": "string",
            "description": "Always freeform."
          },
          "applicant": {
            "type": [
              "string",
              "null"
            ],
            "description": "The borrower's name from the schedule's title."
          },
          "as_of_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "The schedule's date, when it prints one: `YYYY-MM-DD` when the schedule states a full date, else the month and year as printed.",
            "x-spreadspace-format": "printed"
          },
          "columns": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The printed column headers in order."
          },
          "creditor_column": {
            "type": [
              "string",
              "null"
            ],
            "description": "Which printed column names the creditor."
          },
          "balance_column": {
            "type": [
              "string",
              "null"
            ],
            "description": "Which printed column holds the outstanding balance."
          },
          "total_balance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total outstanding balance across the rows.",
            "x-spreadspace-unit": "money"
          },
          "printed_total_balance": {
            "type": "string",
            "description": "The total balance line as printed, when the schedule prints one."
          },
          "reporting_unit": {
            "type": [
              "string",
              "null"
            ],
            "description": "The unit the schedule's figures were printed in, such as ones, thousands or millions; the figures on the wire are already whole dollars."
          },
          "scale_multiplier": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Scale applied to the printed figures: 1 for whole dollars, 1000 when the schedule was printed in thousands, 1000000 when it was printed in millions."
          },
          "debt_schedule": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DebtScheduleReportData_FreeformLiabilityRow"
            },
            "description": "One entry per printed row."
          },
          "status": {
            "type": "string",
            "description": "Always `EXTRACTED` on a schedule the API returns."
          },
          "signals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DebtScheduleReportData_DebtScheduleSignal"
            },
            "description": "Notes about the schedule's date and entity name."
          },
          "column_roles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DebtScheduleReportData_DebtScheduleColumnRole"
            },
            "description": "What each printed column holds, in column order."
          },
          "rate_display": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Interest rate cells with a percent sign, keyed by row and column position."
          },
          "converted_layout": {
            "description": "How the printed columns relate to the standard debt fields.",
            "$ref": "#/components/schemas/DebtScheduleReportData_DebtScheduleConvertedLayout"
          },
          "period_source": {
            "type": "string",
            "description": "Which part of the document dates the schedule when its printed heading states no date: the page image (`page_image`), the file's name (`filename`) or the file's own creation date (`file_metadata`); absent when the heading dates the schedule."
          },
          "entity_source": {
            "type": "string",
            "description": "What names the borrower when the schedule's title does not: the page image (`page_image`); absent when the title names the borrower."
          }
        },
        "additionalProperties": false,
        "description": "A debt schedule in the filer's own columns."
      },
      "DebtScheduleReportData_DebtScheduleSba2202": {
        "title": "SBA Form 2202",
        "required": [
          "form_variant",
          "applicant",
          "as_of_date",
          "debt_schedule",
          "computed_totals",
          "status"
        ],
        "type": "object",
        "properties": {
          "form_variant": {
            "const": "sba_2202",
            "type": "string",
            "description": "Always sba_2202."
          },
          "form_revision": {
            "type": [
              "string",
              "null"
            ],
            "description": "The form revision printed in the footer."
          },
          "applicant": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of the applicant."
          },
          "as_of_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "Date of the schedule: `YYYY-MM-DD`, `YYYY-MM` or `YYYY` when the printed date reads as one, else the text as printed.",
            "x-spreadspace-format": "printed"
          },
          "debt_schedule": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DebtScheduleReportData_SbaLiabilityRow"
            },
            "description": "One entry per liability row."
          },
          "computed_totals": {
            "description": "The liability rows added together, column by column.",
            "$ref": "#/components/schemas/DebtScheduleReportData_SbaComputedTotals"
          },
          "signature_present": {
            "type": "boolean",
            "description": "True when the signature line is signed."
          },
          "signer_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The signer's title."
          },
          "status": {
            "type": "string",
            "description": "Always `EXTRACTED` on a schedule the API returns."
          },
          "signals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DebtScheduleReportData_DebtScheduleSignal"
            },
            "description": "Notes about the schedule's date and entity name."
          },
          "period_source": {
            "type": "string",
            "description": "Which part of the document dates the schedule when its printed heading states no date: the page image (`page_image`), the file's name (`filename`) or the file's own creation date (`file_metadata`); absent when the heading dates the schedule."
          },
          "entity_source": {
            "type": "string",
            "description": "What names the applicant when the form does not: the page image (`page_image`); absent when the form names the applicant."
          }
        },
        "additionalProperties": false,
        "description": "SBA Form 2202, Schedule of Liabilities."
      },
      "DebtScheduleReportData_DebtScheduleSignal": {
        "required": [
          "severity",
          "code",
          "detail"
        ],
        "type": "object",
        "properties": {
          "severity": {
            "enum": [
              "info",
              "warn"
            ],
            "type": "string",
            "description": "How much weight the note carries: info or warn."
          },
          "code": {
            "type": "string",
            "description": "The note's identifier."
          },
          "detail": {
            "type": "string",
            "description": "The note in words."
          }
        },
        "additionalProperties": false,
        "description": "A note about the schedule's date or entity name."
      },
      "DebtScheduleReportData_FreeformLiabilityRow": {
        "required": [
          "cells",
          "creditor_name",
          "current_balance",
          "is_total"
        ],
        "type": "object",
        "properties": {
          "cells": {
            "type": "object",
            "additionalProperties": {
              "type": [
                "string",
                "null"
              ]
            },
            "description": "Every printed cell, keyed by column header. An account number is masked to its last four digits."
          },
          "creditor_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The creditor, from the creditor column."
          },
          "current_balance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The outstanding balance, from the balance column.",
            "x-spreadspace-unit": "money"
          },
          "is_total": {
            "type": "boolean",
            "description": "True when the row is a printed total."
          },
          "original_amount": {
            "type": [
              "string",
              "null"
            ],
            "description": "Original loan amount as printed, when a column carries it."
          },
          "original_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "Original loan date as printed, when a column carries it.",
            "x-spreadspace-format": "printed"
          },
          "interest_rate": {
            "type": [
              "string",
              "null"
            ],
            "description": "Interest rate as printed, when a column carries it."
          },
          "maturity_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "Maturity date as printed, when a column carries it.",
            "x-spreadspace-format": "printed"
          },
          "payment_amount": {
            "type": [
              "string",
              "null"
            ],
            "description": "Payment amount as printed, when a column carries it."
          },
          "payment_frequency": {
            "type": [
              "string",
              "null"
            ],
            "description": "Payment frequency as printed, when a column carries it."
          },
          "how_secured": {
            "type": [
              "string",
              "null"
            ],
            "description": "Collateral or security as printed, when a column carries it."
          },
          "loan_status": {
            "type": [
              "string",
              "null"
            ],
            "description": "Loan status as printed, when a column carries it."
          }
        },
        "additionalProperties": false,
        "description": "One printed row of a free-form schedule."
      },
      "DebtScheduleReportData_SbaComputedTotals": {
        "required": [
          "original_amount_sum",
          "current_balance_sum",
          "payment_amount_sum"
        ],
        "type": "object",
        "properties": {
          "original_amount_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Original amounts added together.",
            "x-spreadspace-unit": "money"
          },
          "current_balance_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Current balances added together.",
            "x-spreadspace-unit": "money"
          },
          "payment_amount_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Payment amounts added together.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "The liability rows added together, column by column."
      },
      "DebtScheduleReportData_SbaLiabilityRow": {
        "required": [
          "creditor_name",
          "original_amount",
          "original_date",
          "current_balance",
          "current_or_delinquent",
          "maturity_date",
          "payment_amount",
          "how_secured"
        ],
        "type": "object",
        "properties": {
          "creditor_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of creditor."
          },
          "original_amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Original amount.",
            "x-spreadspace-unit": "money"
          },
          "original_date": {
            "pattern": "^\\d{4}(-\\d{2}(-\\d{2})?)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Original date.",
            "x-spreadspace-format": "date-partial"
          },
          "current_balance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Current balance.",
            "x-spreadspace-unit": "money"
          },
          "current_or_delinquent": {
            "type": [
              "string",
              "null"
            ],
            "description": "Current or delinquent, as printed."
          },
          "maturity_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "Maturity date: `YYYY-MM-DD`, `YYYY-MM` or `YYYY` when the cell reads as a date; the cell's text as printed when it states a term instead, such as revolving or on demand.",
            "x-spreadspace-format": "printed"
          },
          "payment_amount": {
            "type": [
              "string",
              "null"
            ],
            "description": "Payment amount; null when the cell prints a term rather than a figure."
          },
          "how_secured": {
            "type": [
              "string",
              "null"
            ],
            "description": "How secured or endorsed, and the type of collateral."
          }
        },
        "additionalProperties": false,
        "description": "One row of the Schedule of Liabilities."
      },
      "DocumentCompanyAttachment": {
        "required": [
          "entity_name"
        ],
        "type": "object",
        "properties": {
          "entity_name": {
            "type": "string",
            "description": "The company's name as it files."
          },
          "entity_ein_last4": {
            "type": [
              "string",
              "null"
            ],
            "description": "The last four digits of the company's EIN, or null."
          },
          "printed_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The name printed on the document itself, or null\n    when it named nobody."
          },
          "cross_kind": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "True when a return or personal financial statement was filed by hand under an entity of the other kind. Such a document is grouped under that entity, while the spreads keep reading it as its printed filer. Absent otherwise."
          },
          "entity_kind": {
            "type": [
              "string",
              "null"
            ],
            "description": "The resolved target kind: 'company' or 'person'."
          }
        },
        "description": "Which of the borrower's companies a financial document belongs to, as\nresolved for this read. A company identified later can change the answer on\na subsequent read."
      },
      "DocumentExtractionResult": {
        "required": [
          "document_id",
          "items",
          "total",
          "not_found"
        ],
        "type": "object",
        "properties": {
          "document_id": {
            "type": "string"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LineItemSummary"
            }
          },
          "total": {
            "pattern": "^-?[0-9]+\\.[0-9]{2}$",
            "type": "string",
            "description": "Monetary amount as a decimal string with exactly two decimal places.",
            "x-spreadspace-unit": "money"
          },
          "not_found": {
            "type": "boolean"
          }
        }
      },
      "DocumentFailedEvent": {
        "required": [
          "id",
          "type",
          "created",
          "tenant_id",
          "livemode",
          "data"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^evt_[0-9a-f]{24}$",
            "type": "string",
            "description": "Event id: `evt_` plus 24 lowercase hex characters. Also sent as the `SpreadSpace-Event-Id` header. Stable across retries and replays, so dedupe on it.",
            "example": "evt_4b8c1d2e3f405162738495a6"
          },
          "type": {
            "enum": [
              "document.failed"
            ],
            "type": "string",
            "description": "Always this event type on this body."
          },
          "created": {
            "type": "integer",
            "description": "Seconds since the Unix epoch at which the event was created server-side. Seconds, not milliseconds. Deliveries are not ordered; reconcile on this.",
            "format": "int64",
            "example": 1700000000
          },
          "tenant_id": {
            "type": "string",
            "description": "The workspace the event belongs to. Reject a delivery whose tenant does not match the endpoint you registered."
          },
          "livemode": {
            "type": "boolean",
            "description": "`true` for live activity, `false` for test mode (an `ss_test_` key or the sandbox simulator). Branch on it to route test deliveries to a staging handler."
          },
          "data": {
            "$ref": "#/components/schemas/DocumentFailedPayload"
          }
        },
        "description": "Body of a `document.failed` delivery."
      },
      "DocumentFailedPayload": {
        "required": [
          "document_id",
          "job_id",
          "borrower_id",
          "loan_id",
          "reason",
          "failed_at"
        ],
        "type": "object",
        "properties": {
          "document_id": {
            "type": "string",
            "description": "The extracted document."
          },
          "job_id": {
            "type": "string",
            "description": "The document package (job) the document was uploaded in."
          },
          "borrower_id": {
            "type": "string",
            "description": "The borrower that owns the loan."
          },
          "loan_id": {
            "type": "string",
            "description": "The loan the document belongs to."
          },
          "reason": {
            "type": "string",
            "description": "Short failure code or message, for example `extraction_error`, a\nrejection code, or free text. A document resolved as a duplicate carries\nthat resolution instead (`content_hash_duplicate`,\n`exact_duplicate`, `subset_superseded`). Those are not\nextraction errors: the content is already on the deal under the original\ndocument."
          },
          "message": {
            "type": [
              "string",
              "null"
            ],
            "description": "A sentence you can show the uploader, present only when the failure has\none, for example a bank statement that did not include all of its pages.\n`reason` is unchanged by it. Omitted otherwise."
          },
          "failed_at": {
            "type": "string",
            "description": "Server-side wall-clock time the failure was recorded.",
            "format": "date-time"
          }
        },
        "description": "The `data` object on a `document.failed` delivery, sent when a\ndocument is rejected or hits an unrecoverable extraction error.\n\n`reason` is a short failure code or a human-readable message. Match it\nfor equality against the codes you know and treat anything else as opaque;\na richer machine-readable reason can be added later without changing the\nwire schema."
      },
      "DocumentProcessedEvent": {
        "required": [
          "id",
          "type",
          "created",
          "tenant_id",
          "livemode",
          "data"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^evt_[0-9a-f]{24}$",
            "type": "string",
            "description": "Event id: `evt_` plus 24 lowercase hex characters. Also sent as the `SpreadSpace-Event-Id` header. Stable across retries and replays, so dedupe on it.",
            "example": "evt_4b8c1d2e3f405162738495a6"
          },
          "type": {
            "enum": [
              "document.processed"
            ],
            "type": "string",
            "description": "Always this event type on this body."
          },
          "created": {
            "type": "integer",
            "description": "Seconds since the Unix epoch at which the event was created server-side. Seconds, not milliseconds. Deliveries are not ordered; reconcile on this.",
            "format": "int64",
            "example": 1700000000
          },
          "tenant_id": {
            "type": "string",
            "description": "The workspace the event belongs to. Reject a delivery whose tenant does not match the endpoint you registered."
          },
          "livemode": {
            "type": "boolean",
            "description": "`true` for live activity, `false` for test mode (an `ss_test_` key or the sandbox simulator). Branch on it to route test deliveries to a staging handler."
          },
          "data": {
            "$ref": "#/components/schemas/DocumentProcessedPayload"
          }
        },
        "description": "Body of a `document.processed` delivery."
      },
      "DocumentProcessedPayload": {
        "required": [
          "document_id",
          "job_id",
          "borrower_id",
          "loan_id",
          "document_type",
          "processed_at"
        ],
        "type": "object",
        "properties": {
          "document_id": {
            "type": "string",
            "description": "The extracted document, a 24-character identifier."
          },
          "job_id": {
            "type": "string",
            "description": "The document package (job) the document was uploaded in."
          },
          "borrower_id": {
            "type": "string",
            "description": "The borrower that owns the loan."
          },
          "loan_id": {
            "type": "string",
            "description": "The loan the document belongs to."
          },
          "document_type": {
            "type": "string",
            "description": "What the document was classified as, for example\n`bank_statement`, `w2` or `1120s`."
          },
          "processed_at": {
            "type": "string",
            "description": "Server-side wall-clock time the extraction finished and was persisted.",
            "format": "date-time"
          },
          "extraction_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The extraction record to fetch. Equal to `document_id` today, and\nnull when the document was only classified and no extraction ran. Read\nit as its own id so a later split of the two does not break you."
          },
          "extraction_version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "description": "The revision of the stored extraction at the moment this event fired,\n1 for a freshly ingested document. A bank statement can be rewritten\nshortly after this event, so build on the version\n`extraction.ready` announces. Null only on events emitted before\nversioning shipped.",
            "format": "int32"
          }
        },
        "description": "The `data` object on a `document.processed` delivery, sent once\nper document once its results have been stored.\n\nIdentifiers only: no figures and no personal data ever travel in a webhook\nbody. Read the extracted values back through the API with\n`document_id`."
      },
      "DownloadUrlResponse": {
        "required": [
          "job_id",
          "expires_in_seconds"
        ],
        "type": "object",
        "properties": {
          "job_id": {
            "type": "string"
          },
          "download_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "expires_in_seconds": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ExportCancelledEvent": {
        "required": [
          "id",
          "type",
          "created",
          "tenant_id",
          "livemode",
          "data"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^evt_[0-9a-f]{24}$",
            "type": "string",
            "description": "Event id: `evt_` plus 24 lowercase hex characters. Also sent as the `SpreadSpace-Event-Id` header. Stable across retries and replays, so dedupe on it.",
            "example": "evt_4b8c1d2e3f405162738495a6"
          },
          "type": {
            "enum": [
              "export.cancelled"
            ],
            "type": "string",
            "description": "Always this event type on this body."
          },
          "created": {
            "type": "integer",
            "description": "Seconds since the Unix epoch at which the event was created server-side. Seconds, not milliseconds. Deliveries are not ordered; reconcile on this.",
            "format": "int64",
            "example": 1700000000
          },
          "tenant_id": {
            "type": "string",
            "description": "The workspace the event belongs to. Reject a delivery whose tenant does not match the endpoint you registered."
          },
          "livemode": {
            "type": "boolean",
            "description": "`true` for live activity, `false` for test mode (an `ss_test_` key or the sandbox simulator). Branch on it to route test deliveries to a staging handler."
          },
          "data": {
            "$ref": "#/components/schemas/ExportCancelledPayload"
          }
        },
        "description": "Body of a `export.cancelled` delivery."
      },
      "ExportCancelledPayload": {
        "required": [
          "export_id",
          "borrower_id",
          "loan_id",
          "format",
          "cancelled_at"
        ],
        "type": "object",
        "properties": {
          "export_id": {
            "type": "string",
            "description": "The export that was cancelled."
          },
          "borrower_id": {
            "type": "string",
            "description": "The borrower the requested documents belong to."
          },
          "loan_id": {
            "type": "string",
            "description": "The loan the requested documents sit on."
          },
          "format": {
            "type": "string",
            "description": "The bundle format the export was created with."
          },
          "cancelled_at": {
            "type": "string",
            "description": "Server-side wall-clock time the export reached cancelled.",
            "format": "date-time"
          }
        },
        "description": "The `data` object on an `export.cancelled` delivery. The export is\nterminal and has no bundle."
      },
      "ExportFailedEvent": {
        "required": [
          "id",
          "type",
          "created",
          "tenant_id",
          "livemode",
          "data"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^evt_[0-9a-f]{24}$",
            "type": "string",
            "description": "Event id: `evt_` plus 24 lowercase hex characters. Also sent as the `SpreadSpace-Event-Id` header. Stable across retries and replays, so dedupe on it.",
            "example": "evt_4b8c1d2e3f405162738495a6"
          },
          "type": {
            "enum": [
              "export.failed"
            ],
            "type": "string",
            "description": "Always this event type on this body."
          },
          "created": {
            "type": "integer",
            "description": "Seconds since the Unix epoch at which the event was created server-side. Seconds, not milliseconds. Deliveries are not ordered; reconcile on this.",
            "format": "int64",
            "example": 1700000000
          },
          "tenant_id": {
            "type": "string",
            "description": "The workspace the event belongs to. Reject a delivery whose tenant does not match the endpoint you registered."
          },
          "livemode": {
            "type": "boolean",
            "description": "`true` for live activity, `false` for test mode (an `ss_test_` key or the sandbox simulator). Branch on it to route test deliveries to a staging handler."
          },
          "data": {
            "$ref": "#/components/schemas/ExportFailedPayload"
          }
        },
        "description": "Body of a `export.failed` delivery."
      },
      "ExportFailedPayload": {
        "required": [
          "export_id",
          "borrower_id",
          "loan_id",
          "format",
          "reason",
          "failed_at"
        ],
        "type": "object",
        "properties": {
          "export_id": {
            "type": "string",
            "description": "The export that failed."
          },
          "borrower_id": {
            "type": "string",
            "description": "The borrower the requested documents belong to."
          },
          "loan_id": {
            "type": "string",
            "description": "The loan the requested documents sit on."
          },
          "format": {
            "type": "string",
            "description": "The bundle format the export was created with."
          },
          "reason": {
            "type": "string",
            "description": "The export's error code."
          },
          "failed_at": {
            "type": "string",
            "description": "Server-side wall-clock time the export failed.",
            "format": "date-time"
          }
        },
        "description": "The `data` object on an `export.failed` delivery. The export has no\nbundle and will never get one; create a new export to try again."
      },
      "ExportSucceededEvent": {
        "required": [
          "id",
          "type",
          "created",
          "tenant_id",
          "livemode",
          "data"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^evt_[0-9a-f]{24}$",
            "type": "string",
            "description": "Event id: `evt_` plus 24 lowercase hex characters. Also sent as the `SpreadSpace-Event-Id` header. Stable across retries and replays, so dedupe on it.",
            "example": "evt_4b8c1d2e3f405162738495a6"
          },
          "type": {
            "enum": [
              "export.succeeded"
            ],
            "type": "string",
            "description": "Always this event type on this body."
          },
          "created": {
            "type": "integer",
            "description": "Seconds since the Unix epoch at which the event was created server-side. Seconds, not milliseconds. Deliveries are not ordered; reconcile on this.",
            "format": "int64",
            "example": 1700000000
          },
          "tenant_id": {
            "type": "string",
            "description": "The workspace the event belongs to. Reject a delivery whose tenant does not match the endpoint you registered."
          },
          "livemode": {
            "type": "boolean",
            "description": "`true` for live activity, `false` for test mode (an `ss_test_` key or the sandbox simulator). Branch on it to route test deliveries to a staging handler."
          },
          "data": {
            "$ref": "#/components/schemas/ExportSucceededPayload"
          }
        },
        "description": "Body of a `export.succeeded` delivery."
      },
      "ExportSucceededPayload": {
        "required": [
          "export_id",
          "borrower_id",
          "loan_id",
          "format",
          "document_count",
          "succeeded_at"
        ],
        "type": "object",
        "properties": {
          "export_id": {
            "type": "string",
            "description": "The export that finished."
          },
          "borrower_id": {
            "type": "string",
            "description": "The borrower the exported documents belong to."
          },
          "loan_id": {
            "type": "string",
            "description": "The loan the exported documents sit on."
          },
          "format": {
            "type": "string",
            "description": "The bundle format the export was created with."
          },
          "document_count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "description": "How many documents landed in the bundle.",
            "format": "int32"
          },
          "succeeded_at": {
            "type": "string",
            "description": "Server-side wall-clock time the export succeeded.",
            "format": "date-time"
          }
        },
        "description": "The `data` object on an `export.succeeded` delivery. The bundle is\nbuilt and ready to pull. No link travels in the event: fetch the export\nthrough the API and use the download link it mints for that read."
      },
      "ExtractedDocumentSummary": {
        "required": [
          "extracted_document_id",
          "job_id",
          "loan_id",
          "document_category",
          "line_item_count",
          "created_at",
          "company_attachment"
        ],
        "type": "object",
        "properties": {
          "extracted_document_id": {
            "type": "string"
          },
          "job_id": {
            "type": "string"
          },
          "loan_id": {
            "type": "string"
          },
          "document_category": {
            "type": "string"
          },
          "original_filename": {
            "type": [
              "string",
              "null"
            ]
          },
          "period_start": {
            "type": [
              "string",
              "null"
            ]
          },
          "period_end": {
            "type": [
              "string",
              "null"
            ]
          },
          "fiscal_year": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "line_item_count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "extraction_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "error_message": {
            "type": [
              "string",
              "null"
            ]
          },
          "duplicate_of_extracted_document_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "dedup_resolution": {
            "type": [
              "string",
              "null"
            ]
          },
          "extraction_source": {
            "type": [
              "string",
              "null"
            ],
            "description": "Set when the document came from a transaction feed rather than a document\nfile, and names that feed. Null otherwise."
          },
          "pfs_applicant_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "pfs_kind": {
            "type": [
              "string",
              "null"
            ]
          },
          "assurance_level": {
            "type": [
              "string",
              "null"
            ]
          },
          "entity_ein_last4": {
            "type": [
              "string",
              "null"
            ]
          },
          "company_attachment": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/DocumentCompanyAttachment"
              }
            ]
          },
          "extraction_version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "company_attachments": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/DocumentCompanyAttachment"
            }
          },
          "entity_unlinked": {
            "type": [
              "boolean",
              "null"
            ]
          },
          "unextractable_reason": {
            "type": [
              "string",
              "null"
            ],
            "description": "A sentence you can show for a document that could not be extracted, for\nexample a bank statement that did not include all of its pages. Absent\notherwise."
          }
        }
      },
      "ExtractedDocumentsResponse": {
        "required": [
          "borrower_id",
          "documents"
        ],
        "type": "object",
        "properties": {
          "borrower_id": {
            "type": "string"
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExtractedDocumentSummary"
            }
          }
        }
      },
      "ExtractionExportBundle": {
        "required": [
          "name",
          "size_bytes",
          "line_item_count"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "size_bytes": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int64"
          },
          "line_item_count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "The finished file: its name, its size in bytes, and how many line\n    items it carries."
      },
      "ExtractionExportDocumentCounts": {
        "required": [
          "requested",
          "exported",
          "skipped"
        ],
        "type": "object",
        "properties": {
          "requested": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          },
          "exported": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          },
          "skipped": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "How the selection turned out: `requested` is what the caller\n    named, `exported` is what landed in the bundle, and `skipped`\n    counts the ids that did not resolve inside the borrower and loan."
      },
      "ExtractionExportLinks": {
        "required": [
          "self"
        ],
        "type": "object",
        "properties": {
          "self": {
            "type": "string"
          },
          "cancel": {
            "type": [
              "string",
              "null"
            ]
          },
          "download": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Where to go next. `self` re-reads the export; `cancel` is\n    present only while it can still be stopped; `download` appears once the\n    bundle is ready."
      },
      "ExtractionExportListResponse": {
        "required": [
          "exports"
        ],
        "type": "object",
        "properties": {
          "exports": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ExtractionExportResponse"
            }
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "A page of exports, newest first. `next_cursor` is null on\n    the last page; otherwise pass it back as `cursor` for the next\n    one."
      },
      "ExtractionExportRequest": {
        "required": [
          "borrower_id",
          "loan_id",
          "document_ids"
        ],
        "type": "object",
        "properties": {
          "borrower_id": {
            "type": "string",
            "description": "The borrower whose documents are being exported."
          },
          "loan_id": {
            "type": "string",
            "description": "The loan the documents sit on."
          },
          "document_ids": {
            "maxItems": 1000,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The documents to include. Required: name between 1 and 1000 of them."
          },
          "format": {
            "type": [
              "string",
              "null"
            ],
            "description": "`xlsx` (bank statements only) | `csv` | `json`. Defaults to `xlsx`; a request that names any non-bank-statement document with `xlsx` is rejected with 400."
          }
        },
        "description": "A request to export selected extracted documents as one downloadable\nbundle. `borrower_id` and `loan_id` are required and name the\ndocuments' owner; `document_ids` selects up to 1000 of them."
      },
      "ExtractionExportResponse": {
        "required": [
          "export_id",
          "status",
          "progress",
          "document_counts",
          "skipped_document_ids",
          "bundle",
          "created_at",
          "expires_at",
          "links"
        ],
        "type": "object",
        "properties": {
          "export_id": {
            "type": "string"
          },
          "borrower_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "loan_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "format": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": "string"
          },
          "progress": {
            "$ref": "#/components/schemas/ProgressCounts"
          },
          "document_counts": {
            "$ref": "#/components/schemas/ExtractionExportDocumentCounts"
          },
          "skipped_document_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "bundle": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/ExtractionExportBundle"
              }
            ]
          },
          "download_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "download_expires_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "error_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "error_message": {
            "type": [
              "string",
              "null"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "started_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "completed_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "links": {
            "$ref": "#/components/schemas/ExtractionExportLinks"
          }
        },
        "description": "One export of extracted documents. `status` is `queued`,\n`running`, `cancelling`, `succeeded`, `failed`, or\n`cancelled`. While it is `succeeded`, `download_url` is\nminted fresh on every read and expires within minutes, so fetch the export\nagain rather than storing the link. `expires_at` is when the export and\nits bundle are deleted; after that every endpoint answers 404. A failed\nexport carries `error_code` (`no_documents_resolved`,\n`export_ceiling_exceeded`, `stale_running_exceeded`, or\n`internal_error`) and `error_message`."
      },
      "ExtractionQueryBulkResponse": {
        "required": [
          "borrower_id",
          "documents",
          "total_documents",
          "total_line_items",
          "total_amount"
        ],
        "type": "object",
        "properties": {
          "borrower_id": {
            "type": "string"
          },
          "documents": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DocumentExtractionResult"
            }
          },
          "total_documents": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          },
          "total_line_items": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          },
          "total_amount": {
            "pattern": "^-?[0-9]+\\.[0-9]{2}$",
            "type": "string",
            "description": "Monetary amount as a decimal string with exactly two decimal places.",
            "x-spreadspace-unit": "money"
          }
        }
      },
      "ExtractionQueryResponse": {
        "required": [
          "borrower_id",
          "items"
        ],
        "type": "object",
        "properties": {
          "borrower_id": {
            "type": "string"
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LineItemSummary"
            }
          },
          "total": {
            "pattern": "^-?[0-9]+\\.[0-9]{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Monetary amount as a decimal string with exactly two decimal places.",
            "x-spreadspace-unit": "money"
          }
        }
      },
      "ExtractionReadyEvent": {
        "required": [
          "id",
          "type",
          "created",
          "tenant_id",
          "livemode",
          "data"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^evt_[0-9a-f]{24}$",
            "type": "string",
            "description": "Event id: `evt_` plus 24 lowercase hex characters. Also sent as the `SpreadSpace-Event-Id` header. Stable across retries and replays, so dedupe on it.",
            "example": "evt_4b8c1d2e3f405162738495a6"
          },
          "type": {
            "enum": [
              "extraction.ready"
            ],
            "type": "string",
            "description": "Always this event type on this body."
          },
          "created": {
            "type": "integer",
            "description": "Seconds since the Unix epoch at which the event was created server-side. Seconds, not milliseconds. Deliveries are not ordered; reconcile on this.",
            "format": "int64",
            "example": 1700000000
          },
          "tenant_id": {
            "type": "string",
            "description": "The workspace the event belongs to. Reject a delivery whose tenant does not match the endpoint you registered."
          },
          "livemode": {
            "type": "boolean",
            "description": "`true` for live activity, `false` for test mode (an `ss_test_` key or the sandbox simulator). Branch on it to route test deliveries to a staging handler."
          },
          "data": {
            "$ref": "#/components/schemas/ExtractionReadyPayload"
          }
        },
        "description": "Body of a `extraction.ready` delivery."
      },
      "ExtractionReadyPayload": {
        "required": [
          "extraction_id",
          "document_id",
          "job_id",
          "borrower_id",
          "loan_id",
          "document_type",
          "enrichment",
          "ready_at"
        ],
        "type": "object",
        "properties": {
          "extraction_id": {
            "type": "string",
            "description": "The extraction record to fetch. Equal to `document_id` today, but\ncarried as its own id so a later split into several extractions per\ndocument does not break you."
          },
          "document_id": {
            "type": "string",
            "description": "The extracted document."
          },
          "job_id": {
            "type": "string",
            "description": "The document package (job) the document was uploaded in."
          },
          "borrower_id": {
            "type": "string",
            "description": "The borrower that owns the loan."
          },
          "loan_id": {
            "type": "string",
            "description": "The loan the document belongs to."
          },
          "document_type": {
            "type": "string",
            "description": "What the document was classified as, using the same values\n`document.processed` reports."
          },
          "extraction_version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "description": "The revision of the stored extraction this event announces, 1 as\ningested and incremented on every later rewrite. Compare it against the\nversion on the document you fetched, or on a later\n`extraction.updated`, to spot a stale read. Null only on events\nemitted before versioning shipped.",
            "format": "int32"
          },
          "enrichment": {
            "type": "string",
            "description": "Enrichment state of the extraction this event announces. One of\n`complete` (the enrichment is already in what you can fetch now),\n`not_applicable` (no enrichment applies to this document, so it is\nfinal), or `timed_out` (enrichment was expected but did not land\nwithin the grace window, so you are reading the un-enriched extraction\nand an `extraction.updated` follows if it lands later)."
          },
          "ready_at": {
            "type": "string",
            "description": "Server-side wall-clock time the extraction was made queryable.",
            "format": "date-time"
          }
        },
        "description": "The `data` object on an `extraction.ready` delivery, sent once per\ndocument the moment its extraction is queryable in the shape you should\nbuild on. It is the usual cue to pull line items, and narrower than\n`document.processed`, which also covers the classification-only and\nfailure paths.\n\nA bank statement can be enriched shortly after it is ingested. So that what\nyou fetch on this event is what you keep, `extraction.ready` for such a\nstatement is held back until the enrichment lands (`enrichment` is\n`complete`), or until a grace window elapses without it\n(`timed_out`, and an `extraction.updated` follows if it arrives\nlater). Every other document fires at ingestion with\n`not_applicable`. `document.processed` is never held back."
      },
      "ExtractionUpdatedEvent": {
        "required": [
          "id",
          "type",
          "created",
          "tenant_id",
          "livemode",
          "data"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^evt_[0-9a-f]{24}$",
            "type": "string",
            "description": "Event id: `evt_` plus 24 lowercase hex characters. Also sent as the `SpreadSpace-Event-Id` header. Stable across retries and replays, so dedupe on it.",
            "example": "evt_4b8c1d2e3f405162738495a6"
          },
          "type": {
            "enum": [
              "extraction.updated"
            ],
            "type": "string",
            "description": "Always this event type on this body."
          },
          "created": {
            "type": "integer",
            "description": "Seconds since the Unix epoch at which the event was created server-side. Seconds, not milliseconds. Deliveries are not ordered; reconcile on this.",
            "format": "int64",
            "example": 1700000000
          },
          "tenant_id": {
            "type": "string",
            "description": "The workspace the event belongs to. Reject a delivery whose tenant does not match the endpoint you registered."
          },
          "livemode": {
            "type": "boolean",
            "description": "`true` for live activity, `false` for test mode (an `ss_test_` key or the sandbox simulator). Branch on it to route test deliveries to a staging handler."
          },
          "data": {
            "$ref": "#/components/schemas/ExtractionUpdatedPayload"
          }
        },
        "description": "Body of a `extraction.updated` delivery."
      },
      "ExtractionUpdatedPayload": {
        "required": [
          "extraction_id",
          "document_id",
          "job_id",
          "borrower_id",
          "loan_id",
          "document_type",
          "extraction_version",
          "previous_extraction_version",
          "reason",
          "updated_at"
        ],
        "type": "object",
        "properties": {
          "extraction_id": {
            "type": "string",
            "description": "The extraction record to fetch. Equal to `document_id` today."
          },
          "document_id": {
            "type": "string",
            "description": "The extracted document."
          },
          "job_id": {
            "type": "string",
            "description": "The document package (job) the document was uploaded in."
          },
          "borrower_id": {
            "type": "string",
            "description": "The borrower that owns the loan."
          },
          "loan_id": {
            "type": "string",
            "description": "The loan the document belongs to."
          },
          "document_type": {
            "type": "string",
            "description": "What the document was classified as, using the same values the sibling\nevents report."
          },
          "extraction_version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "description": "The revision the stored extraction is at now, which is what a fresh fetch returns.",
            "format": "int32"
          },
          "previous_extraction_version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "description": "The revision that was current before this rewrite (the one `ready` may have announced).",
            "format": "int32"
          },
          "reason": {
            "type": "string",
            "description": "Why the extraction changed: `enrichment` when an enrichment landed,\nor `rewrite` for any other change to the stored payload."
          },
          "updated_at": {
            "type": "string",
            "description": "Server-side wall-clock time the rewrite was persisted.",
            "format": "date-time"
          }
        },
        "description": "The `data` object on an `extraction.updated` delivery, sent when a\nstored extraction is rewritten after `extraction.ready` already fired\nfor that document. What you fetched on `ready` is now stale: re-fetch\nthe document, and the new read carries `extraction_version`. Today the\nonly cause is an enrichment landing after the ready grace window.\n\nIdentifiers only: no figures and no personal data, like every sibling\npayload."
      },
      "FinEbitdaAddbackDto": {
        "required": [
          "key",
          "label",
          "source"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The selected line's opaque key: `fin_pl:&lt;label path&gt;`\n    for a statement line, or `writein:&lt;uuid&gt;` for an analyst\n    write-in. Pass it back unchanged."
          },
          "entity_key": {
            "type": [
              "string",
              "null"
            ],
            "description": "Which of the loan's companies the pick belongs to: an entity\n    key (`business:&lt;folded name&gt;`), or `\"\"` for the\n    whole-loan scope. Read-only on the wire: the GET returns every scope's\n    rows in one pass and callers group by this field; the PUT takes its\n    scope from the `entityKey` query parameter, not from the body, and\n    ignores this field."
          },
          "label": {
            "type": "string",
            "description": "Display label captured when the selection was made; shown when\n    the key no longer resolves against the current extraction."
          },
          "source": {
            "type": "string",
            "description": "Candidate source kind: `stmt_expense` |\n    `stmt_income` | `write_in`. Sets the add-back direction: an\n    expense pick folds back into adjusted EBITDA, an income pick comes\n    out."
          },
          "years": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Fiscal years the pick applies to (four-digit year labels,\n    e.g. `\"2023\"`). Null means every year; new saves always carry\n    explicit years."
          },
          "write_in_amounts": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": {
              "pattern": "^-?[0-9]+\\.[0-9]{2}$",
              "type": "string",
              "description": "Monetary amount as a decimal string with exactly two decimal places.",
              "x-spreadspace-unit": "money"
            },
            "description": "Write-in amounts by four-digit fiscal year label (source\n    `write_in` only): the analyst's free-typed signed dollars.\n    Positive folds into adjusted EBITDA, negative comes out. Null on every\n    statement-resolved selection."
          },
          "added_by": {
            "type": [
              "string",
              "null"
            ],
            "description": "Display name of the analyst who first added this selection,\n    resolved from the row's author at read time, `write_in` selections\n    only. Null when the author no longer resolves. Read-only: ignored on\n    PUT."
          }
        }
      },
      "FinEbitdaAddbacksResponse": {
        "required": [
          "selections"
        ],
        "type": "object",
        "properties": {
          "selections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FinEbitdaAddbackDto"
            }
          }
        }
      },
      "IntakeRequest": {
        "required": [
          "file_name",
          "content_type"
        ],
        "type": "object",
        "properties": {
          "file_name": {
            "maxLength": 255,
            "type": "string"
          },
          "content_type": {
            "maxLength": 100,
            "type": "string"
          },
          "file_size": {
            "maximum": 104857600,
            "minimum": 1,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "description": "Optional file size in bytes, reported by the client. The upload itself\nis capped server-side.",
            "format": "int64"
          },
          "content_hash": {
            "maxLength": 64,
            "pattern": "^[a-fA-F0-9]{64}$",
            "type": [
              "string",
              "null"
            ],
            "description": "SHA-256 hex digest of the file, computed client-side. Used for within-loan\nduplicate detection. Verified server-side during processing."
          },
          "client_reference": {
            "maxLength": 128,
            "type": [
              "string",
              "null"
            ],
            "description": "Customer-supplied idempotency / grouping key. Unique per tenant: repeat\nsubmissions for the same end-borrower pile onto the same auto-provisioned\nloan. Omit to always create a new submission."
          },
          "borrower_name": {
            "maxLength": 256,
            "type": [
              "string",
              "null"
            ],
            "description": "Optional human-readable borrower name. When omitted, the auto-provisioned\nborrower gets a placeholder name; the `is_intake` flag (not the name)\nmarks it as not-yet-completed. Completion renames the borrower in place."
          }
        },
        "description": "     Body for `POST /api/intake`. Submit a document (and optionally your own\n     reference id) without first creating a borrower: the API provisions a\n     borrower and loan for the submission, then returns an upload URL.\n\n     client_reference groups repeat submissions: when supplied, repeat\nsubmissions for the same end-borrower resolve to the same provisioned loan\ninstead of creating duplicates, even past the 24-hour\nIdempotency-Key window. When omitted, every call creates a fresh\nsubmission (new borrower and loan)."
      },
      "IntakeResponse": {
        "required": [
          "job_id",
          "loan_id",
          "borrower_id",
          "upload_url",
          "expires_in_seconds"
        ],
        "type": "object",
        "properties": {
          "job_id": {
            "type": "string"
          },
          "loan_id": {
            "type": "string"
          },
          "borrower_id": {
            "type": "string"
          },
          "upload_url": {
            "type": "string"
          },
          "expires_in_seconds": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "Response from `POST /api/intake`. Carries the provisioned\n`loan_id` and `borrower_id` (both server-assigned) plus the URL to\n`PUT` the file to. Once the `PUT` completes, call\n`POST /api/intake/{jobId}/confirm` to start processing."
      },
      "JobCompletedEvent": {
        "required": [
          "id",
          "type",
          "created",
          "tenant_id",
          "livemode",
          "data"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^evt_[0-9a-f]{24}$",
            "type": "string",
            "description": "Event id: `evt_` plus 24 lowercase hex characters. Also sent as the `SpreadSpace-Event-Id` header. Stable across retries and replays, so dedupe on it.",
            "example": "evt_4b8c1d2e3f405162738495a6"
          },
          "type": {
            "enum": [
              "job.completed"
            ],
            "type": "string",
            "description": "Always this event type on this body."
          },
          "created": {
            "type": "integer",
            "description": "Seconds since the Unix epoch at which the event was created server-side. Seconds, not milliseconds. Deliveries are not ordered; reconcile on this.",
            "format": "int64",
            "example": 1700000000
          },
          "tenant_id": {
            "type": "string",
            "description": "The workspace the event belongs to. Reject a delivery whose tenant does not match the endpoint you registered."
          },
          "livemode": {
            "type": "boolean",
            "description": "`true` for live activity, `false` for test mode (an `ss_test_` key or the sandbox simulator). Branch on it to route test deliveries to a staging handler."
          },
          "data": {
            "$ref": "#/components/schemas/JobCompletedPayload"
          }
        },
        "description": "Body of a `job.completed` delivery."
      },
      "JobCompletedPayload": {
        "required": [
          "job_id",
          "borrower_id",
          "loan_id",
          "document_count_total",
          "document_count_succeeded",
          "document_count_failed",
          "completed_at"
        ],
        "type": "object",
        "properties": {
          "job_id": {
            "type": "string",
            "description": "The document package (job) that finished."
          },
          "borrower_id": {
            "type": "string",
            "description": "The borrower that owns the loan."
          },
          "loan_id": {
            "type": "string",
            "description": "The loan the package was uploaded against."
          },
          "document_count_total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "description": "Total documents in the package.",
            "format": "int32"
          },
          "document_count_succeeded": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "description": "Documents that reached a terminal success state.",
            "format": "int32"
          },
          "document_count_failed": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "description": "Documents that terminated in failure.",
            "format": "int32"
          },
          "completed_at": {
            "type": "string",
            "description": "Server-side wall-clock time the job entered its terminal state.",
            "format": "date-time"
          }
        },
        "description": "The `data` object on a `job.completed` delivery, the terminal event\nfor a document package. Sent exactly once, when every document in it has\nreached a terminal state, success or failure. Most integrators trigger\ndownstream work from this event rather than from the per-document ones.\n\nThe three counts are authoritative: succeeded plus failed can briefly\ndisagree with the total while a package is still settling."
      },
      "JobResultsResponse": {
        "required": [
          "job_id",
          "classifications",
          "extractions"
        ],
        "type": "object",
        "properties": {
          "job_id": {
            "type": "string"
          },
          "classifications": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "What each document in this job was classified as. Null until\nclassification has run.",
                "$ref": "#/components/schemas/JsonElement"
              }
            ]
          },
          "extractions": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "The extracted values for each document in this job. Null until\nextraction has run.",
                "$ref": "#/components/schemas/JsonElement"
              }
            ]
          }
        }
      },
      "JobStatusResponse": {
        "required": [
          "job_id",
          "status",
          "total_files",
          "completed_files",
          "failed_files",
          "extracted_document_ids",
          "created_at",
          "updated_at"
        ],
        "type": "object",
        "properties": {
          "job_id": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "borrower_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "loan_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "total_files": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          },
          "completed_files": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          },
          "failed_files": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          },
          "processing_started_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "processing_completed_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "error_message": {
            "type": [
              "string",
              "null"
            ]
          },
          "unextractable_reason": {
            "type": [
              "string",
              "null"
            ],
            "description": "A sentence you can show the uploader when the job's document could not\nbe extracted for a reason we name, for example a bank statement that did\nnot include all of its pages. Null otherwise."
          },
          "category": {
            "type": [
              "string",
              "null"
            ],
            "description": "Document category resolved from the extracted document(s) for this job.\nOne category is reported even when a document split into several. Null\nuntil extraction results have been ingested."
          },
          "extraction_source": {
            "type": [
              "string",
              "null"
            ],
            "description": "Set when the category-determining document came from a transaction\nfeed rather than a document file, and names that feed. Null otherwise."
          },
          "extracted_document_ids": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Ids of the extracted documents produced by this job, in creation order. A\nsingle PDF that splits into N child documents yields N ids; empty when no\ndocuments have been ingested yet."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "JsonElement": { },
      "LineItemSummary": {
        "required": [
          "section",
          "item_name",
          "amount"
        ],
        "type": "object",
        "properties": {
          "section": {
            "type": "string"
          },
          "group_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "item_name": {
            "type": "string"
          },
          "standard_category": {
            "type": [
              "string",
              "null"
            ]
          },
          "amount": {
            "pattern": "^-?[0-9]+\\.[0-9]{2}$",
            "type": "string",
            "description": "Monetary amount as a decimal string with exactly two decimal places.",
            "x-spreadspace-unit": "money"
          },
          "period": {
            "type": [
              "string",
              "null"
            ]
          },
          "fiscal_year": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "aging_bucket": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "LoanAssigneeResponse": {
        "required": [
          "user_id",
          "assigned_at"
        ],
        "type": "object",
        "properties": {
          "user_id": {
            "type": "string",
            "format": "uuid"
          },
          "assigned_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "description": "One user assigned to a loan. `display_name` and `email` are\npresent for workspace callers only; an API-key or embed caller receives\n`user_id` and `assigned_at` alone."
      },
      "LoanBorrowerSummary": {
        "required": [
          "borrower_id",
          "name"
        ],
        "type": "object",
        "properties": {
          "borrower_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "dba_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "legal_entity_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ]
          },
          "industry": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Borrower summary nested into a LoanResponse when the caller\nrequests `?include=borrower` on a loan list endpoint. Carries the\nborrower metadata the list surface already exposes (name, entity type,\nlocation, industry), never a tax identifier, so a per-loan borrower read is\nnot needed."
      },
      "LoanClassifiedEvent": {
        "required": [
          "id",
          "type",
          "created",
          "tenant_id",
          "livemode",
          "data"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^evt_[0-9a-f]{24}$",
            "type": "string",
            "description": "Event id: `evt_` plus 24 lowercase hex characters. Also sent as the `SpreadSpace-Event-Id` header. Stable across retries and replays, so dedupe on it.",
            "example": "evt_4b8c1d2e3f405162738495a6"
          },
          "type": {
            "enum": [
              "loan.classified"
            ],
            "type": "string",
            "description": "Always this event type on this body."
          },
          "created": {
            "type": "integer",
            "description": "Seconds since the Unix epoch at which the event was created server-side. Seconds, not milliseconds. Deliveries are not ordered; reconcile on this.",
            "format": "int64",
            "example": 1700000000
          },
          "tenant_id": {
            "type": "string",
            "description": "The workspace the event belongs to. Reject a delivery whose tenant does not match the endpoint you registered."
          },
          "livemode": {
            "type": "boolean",
            "description": "`true` for live activity, `false` for test mode (an `ss_test_` key or the sandbox simulator). Branch on it to route test deliveries to a staging handler."
          },
          "data": {
            "$ref": "#/components/schemas/LoanClassifiedPayload"
          }
        },
        "description": "Body of a `loan.classified` delivery."
      },
      "LoanClassifiedPayload": {
        "required": [
          "loan_id",
          "borrower_id",
          "job_id",
          "document_count",
          "classified_at"
        ],
        "type": "object",
        "properties": {
          "loan_id": {
            "type": "string",
            "description": "The loan whose documents were classified."
          },
          "borrower_id": {
            "type": "string",
            "description": "The borrower that owns the loan."
          },
          "job_id": {
            "type": "string",
            "description": "The document package (job) this event is for."
          },
          "document_count": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "description": "Number of documents classified for this package.",
            "format": "int32"
          },
          "classified_at": {
            "type": "string",
            "description": "Server-side wall-clock time classification completed.",
            "format": "date-time"
          }
        },
        "description": "The `data` object on a `loan.classified` delivery, sent once per\nloan once every document in the package has been classified.\n`document_count` is how many were classified, which you can check\nagainst your own inventory."
      },
      "LoanDocumentSummary": {
        "required": [
          "extracted_document_id",
          "document_category",
          "created_at"
        ],
        "type": "object",
        "properties": {
          "extracted_document_id": {
            "type": "string"
          },
          "document_category": {
            "type": "string"
          },
          "original_filename": {
            "type": [
              "string",
              "null"
            ]
          },
          "extraction_status": {
            "type": [
              "string",
              "null"
            ]
          },
          "unextractable_reason": {
            "type": [
              "string",
              "null"
            ],
            "description": "A sentence you can show for a document that could not be extracted, for\nexample a bank statement that did not include all of its pages. Null\notherwise."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "description": "Per-document summary row nested into a LoanResponse when the\ncaller requests `?include=documents`. Summary only (id, category,\nfilename, extraction status, the sentence for a document that could not be\nextracted, created at), never the extracted figures. Nested only for loans\nthe caller may read."
      },
      "LoanMemoPdfResponse": {
        "required": [
          "memo_id",
          "loan_id",
          "url",
          "expires_in_seconds",
          "stale",
          "rendered_at",
          "final"
        ],
        "type": "object",
        "properties": {
          "memo_id": {
            "type": "string"
          },
          "loan_id": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "expires_in_seconds": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          },
          "stale": {
            "type": "boolean"
          },
          "rendered_at": {
            "type": "string",
            "format": "date-time"
          },
          "final": {
            "type": "boolean"
          }
        },
        "description": "A short-lived download link for a memo's latest rendered PDF.\n    `stale` is true when the memo was edited after this PDF was rendered;\n    request a new render for a current one. `final` is true when the memo\n    has been finalized and this link is its final PDF, the document of record:\n    such a link is never stale."
      },
      "LoanMemoSummaryResponse": {
        "required": [
          "id",
          "name",
          "updated_at",
          "render_state"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "finalized_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "render_state": {
            "type": "string"
          }
        },
        "description": "One saved memo on a loan, metadata only. `render_state` is\n    `none`, `rendering`, `ready`, or `stale`; a stale memo\n    was edited after its latest PDF was rendered. `finalized_at` says when\n    the memo was finalized and is null while it is still open; a finalized memo\n    reports on its final PDF and is never stale."
      },
      "LoanResponse": {
        "required": [
          "loan_id",
          "borrower_id",
          "assignees",
          "status",
          "created_at",
          "updated_at",
          "borrower"
        ],
        "type": "object",
        "properties": {
          "loan_id": {
            "type": "string"
          },
          "borrower_id": {
            "type": "string"
          },
          "borrower_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "assignees": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LoanAssigneeResponse"
            }
          },
          "loan_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "loan_sub_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "loan_type_label": {
            "type": [
              "string",
              "null"
            ]
          },
          "loan_sub_type_label": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": [
              "string",
              "null"
            ]
          },
          "loan_number": {
            "type": [
              "string",
              "null"
            ]
          },
          "requested_amount": {
            "pattern": "^(0|[1-9][0-9]{0,11})\\.[0-9]{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Monetary amount as a decimal string with exactly two decimal places. From 0.00 through 999999999999.99.",
            "x-spreadspace-unit": "money"
          },
          "rate_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "interest_rate": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "null"
            ],
            "format": "double"
          },
          "term_months": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "priority": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": "string"
          },
          "notes": {
            "type": [
              "string",
              "null"
            ]
          },
          "guarantors": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Guarantor names declared on the loan. Gated like Notes:\nnull when the caller may not read the loan file, and null when none were\ndeclared."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "borrower": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "description": "Nested borrower summary. Populated only when the loan list endpoint was\ncalled with `?include=borrower`, and null otherwise. The field is\nalways present on the wire.",
                "$ref": "#/components/schemas/LoanBorrowerSummary"
              }
            ]
          },
          "documents": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/LoanDocumentSummary"
            },
            "description": "Nested per-loan document summaries. Populated only when the loan list\nendpoint was called with `?include=documents` and the caller may\nread this loan, and null otherwise. The field is always present on the\nwire; an empty list means the loan has no documents yet."
          }
        }
      },
      "MeApiKeyContext": {
        "required": [
          "id",
          "name",
          "tags",
          "mode",
          "scopes"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "type": "string"
          },
          "key_prefix": {
            "type": [
              "string",
              "null"
            ]
          },
          "last4": {
            "type": [
              "string",
              "null"
            ]
          },
          "scopes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "template": {
            "type": [
              "string",
              "null"
            ]
          },
          "service_account_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "pinned_api_version": {
            "type": [
              "string",
              "null"
            ]
          },
          "expires_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "description": "The calling API key's identity block on `GET /api/me`. Only what the\nkey holder already knows or needs to identify the key: never its secret,\nits IP allowlist, or its usage counters."
      },
      "MeOrganizationContext": {
        "required": [
          "id",
          "name",
          "tier",
          "workspace_mode",
          "intake_available",
          "counterparty_available",
          "spreads_available"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "tier": {
            "type": "string"
          },
          "workspace_mode": {
            "type": "string",
            "description": "`sandbox` for a trial workspace with seed data, `live` once\nactivated."
          },
          "intake_available": {
            "type": "boolean"
          },
          "counterparty_available": {
            "type": "boolean"
          },
          "spreads_available": {
            "type": "boolean"
          }
        }
      },
      "MeResponse": {
        "required": [
          "caller_type",
          "id",
          "organization",
          "api_key"
        ],
        "type": "object",
        "properties": {
          "caller_type": {
            "type": "string"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "email": {
            "type": [
              "string",
              "null"
            ]
          },
          "display_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "organization": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MeOrganizationContext"
              }
            ]
          },
          "api_key": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/MeApiKeyContext"
              }
            ]
          }
        }
      },
      "MemoFinalizedEvent": {
        "required": [
          "id",
          "type",
          "created",
          "tenant_id",
          "livemode",
          "data"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^evt_[0-9a-f]{24}$",
            "type": "string",
            "description": "Event id: `evt_` plus 24 lowercase hex characters. Also sent as the `SpreadSpace-Event-Id` header. Stable across retries and replays, so dedupe on it.",
            "example": "evt_4b8c1d2e3f405162738495a6"
          },
          "type": {
            "enum": [
              "memo.finalized"
            ],
            "type": "string",
            "description": "Always this event type on this body."
          },
          "created": {
            "type": "integer",
            "description": "Seconds since the Unix epoch at which the event was created server-side. Seconds, not milliseconds. Deliveries are not ordered; reconcile on this.",
            "format": "int64",
            "example": 1700000000
          },
          "tenant_id": {
            "type": "string",
            "description": "The workspace the event belongs to. Reject a delivery whose tenant does not match the endpoint you registered."
          },
          "livemode": {
            "type": "boolean",
            "description": "`true` for live activity, `false` for test mode (an `ss_test_` key or the sandbox simulator). Branch on it to route test deliveries to a staging handler."
          },
          "data": {
            "$ref": "#/components/schemas/MemoFinalizedPayload"
          }
        },
        "description": "Body of a `memo.finalized` delivery."
      },
      "MemoFinalizedPayload": {
        "required": [
          "memo_id",
          "loan_id",
          "borrower_id",
          "render_id",
          "finalized_at"
        ],
        "type": "object",
        "properties": {
          "memo_id": {
            "type": "string",
            "description": "The memo that was finalized."
          },
          "loan_id": {
            "type": "string",
            "description": "The loan the memo is saved on."
          },
          "borrower_id": {
            "type": "string",
            "description": "The borrower that owns the loan."
          },
          "render_id": {
            "type": "string",
            "description": "The render that made the final PDF, named by the render id this API serves everywhere else."
          },
          "finalized_at": {
            "type": "string",
            "description": "When the memo was finalized. This is the same instant the memo list reports as `finalized_at`, not when the PDF finished printing.",
            "format": "date-time"
          }
        },
        "description": "The `data` object on a `memo.finalized` delivery, sent once per\nfinalize: an analyst finished a credit memo and its final PDF is made. The\nmemo is locked until someone reopens it, so what this points at is the\ndeal's finished document.\n\nA pointer, not a payload: ids and the time only, never the memo's prose.\nPull the PDF through\n`GET /api/loans/{loanId}/memos/{memoId}/pdf`."
      },
      "MemoRenderCancelledEvent": {
        "required": [
          "id",
          "type",
          "created",
          "tenant_id",
          "livemode",
          "data"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^evt_[0-9a-f]{24}$",
            "type": "string",
            "description": "Event id: `evt_` plus 24 lowercase hex characters. Also sent as the `SpreadSpace-Event-Id` header. Stable across retries and replays, so dedupe on it.",
            "example": "evt_4b8c1d2e3f405162738495a6"
          },
          "type": {
            "enum": [
              "memo_render.cancelled"
            ],
            "type": "string",
            "description": "Always this event type on this body."
          },
          "created": {
            "type": "integer",
            "description": "Seconds since the Unix epoch at which the event was created server-side. Seconds, not milliseconds. Deliveries are not ordered; reconcile on this.",
            "format": "int64",
            "example": 1700000000
          },
          "tenant_id": {
            "type": "string",
            "description": "The workspace the event belongs to. Reject a delivery whose tenant does not match the endpoint you registered."
          },
          "livemode": {
            "type": "boolean",
            "description": "`true` for live activity, `false` for test mode (an `ss_test_` key or the sandbox simulator). Branch on it to route test deliveries to a staging handler."
          },
          "data": {
            "$ref": "#/components/schemas/MemoRenderCancelledPayload"
          }
        },
        "description": "Body of a `memo_render.cancelled` delivery."
      },
      "MemoRenderCancelledPayload": {
        "required": [
          "render_id",
          "memo_id",
          "loan_id",
          "cancelled_at"
        ],
        "type": "object",
        "properties": {
          "render_id": {
            "type": "string",
            "description": "The render that was cancelled."
          },
          "memo_id": {
            "type": "string",
            "description": "The saved memo the render was for."
          },
          "loan_id": {
            "type": "string",
            "description": "The loan the memo sits on."
          },
          "cancelled_at": {
            "type": "string",
            "description": "Server-side wall-clock time the render reached cancelled.",
            "format": "date-time"
          }
        },
        "description": "The `data` object on a `memo_render.cancelled` delivery. The render\nwas stopped before it started and no PDF was produced."
      },
      "MemoRenderFailedEvent": {
        "required": [
          "id",
          "type",
          "created",
          "tenant_id",
          "livemode",
          "data"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^evt_[0-9a-f]{24}$",
            "type": "string",
            "description": "Event id: `evt_` plus 24 lowercase hex characters. Also sent as the `SpreadSpace-Event-Id` header. Stable across retries and replays, so dedupe on it.",
            "example": "evt_4b8c1d2e3f405162738495a6"
          },
          "type": {
            "enum": [
              "memo_render.failed"
            ],
            "type": "string",
            "description": "Always this event type on this body."
          },
          "created": {
            "type": "integer",
            "description": "Seconds since the Unix epoch at which the event was created server-side. Seconds, not milliseconds. Deliveries are not ordered; reconcile on this.",
            "format": "int64",
            "example": 1700000000
          },
          "tenant_id": {
            "type": "string",
            "description": "The workspace the event belongs to. Reject a delivery whose tenant does not match the endpoint you registered."
          },
          "livemode": {
            "type": "boolean",
            "description": "`true` for live activity, `false` for test mode (an `ss_test_` key or the sandbox simulator). Branch on it to route test deliveries to a staging handler."
          },
          "data": {
            "$ref": "#/components/schemas/MemoRenderFailedPayload"
          }
        },
        "description": "Body of a `memo_render.failed` delivery."
      },
      "MemoRenderFailedPayload": {
        "required": [
          "render_id",
          "memo_id",
          "loan_id",
          "reason",
          "failed_at"
        ],
        "type": "object",
        "properties": {
          "render_id": {
            "type": "string",
            "description": "The render that failed."
          },
          "memo_id": {
            "type": "string",
            "description": "The saved memo the render was for."
          },
          "loan_id": {
            "type": "string",
            "description": "The loan the memo sits on."
          },
          "reason": {
            "type": "string",
            "description": "The render's error code."
          },
          "failed_at": {
            "type": "string",
            "description": "Server-side wall-clock time the render failed.",
            "format": "date-time"
          }
        },
        "description": "The `data` object on a `memo_render.failed` delivery. No PDF was\nproduced; request another render to try again."
      },
      "MemoRenderLinks": {
        "required": [
          "self"
        ],
        "type": "object",
        "properties": {
          "self": {
            "type": "string"
          },
          "cancel": {
            "type": [
              "string",
              "null"
            ]
          },
          "pdf": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "Where to go next with one render. `self` re-reads it,\n    `cancel` is present only while it can still be stopped, and\n    `pdf` appears once the render has succeeded."
      },
      "MemoRenderResponse": {
        "required": [
          "render_id",
          "memo_id",
          "loan_id",
          "status",
          "progress",
          "created_at",
          "expires_at",
          "links"
        ],
        "type": "object",
        "properties": {
          "render_id": {
            "type": "string"
          },
          "memo_id": {
            "type": "string"
          },
          "loan_id": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "progress": {
            "$ref": "#/components/schemas/ProgressCounts"
          },
          "error_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "error_message": {
            "type": [
              "string",
              "null"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "started_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "completed_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "links": {
            "$ref": "#/components/schemas/MemoRenderLinks"
          }
        },
        "description": "One render of a saved memo. `status` is `queued`,\n    `running`, `succeeded`, `failed`, or `cancelled`; a\n    failed render carries `error_code` and `error_message`. Download\n    the finished PDF from `links.pdf`."
      },
      "MemoRenderSucceededEvent": {
        "required": [
          "id",
          "type",
          "created",
          "tenant_id",
          "livemode",
          "data"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^evt_[0-9a-f]{24}$",
            "type": "string",
            "description": "Event id: `evt_` plus 24 lowercase hex characters. Also sent as the `SpreadSpace-Event-Id` header. Stable across retries and replays, so dedupe on it.",
            "example": "evt_4b8c1d2e3f405162738495a6"
          },
          "type": {
            "enum": [
              "memo_render.succeeded"
            ],
            "type": "string",
            "description": "Always this event type on this body."
          },
          "created": {
            "type": "integer",
            "description": "Seconds since the Unix epoch at which the event was created server-side. Seconds, not milliseconds. Deliveries are not ordered; reconcile on this.",
            "format": "int64",
            "example": 1700000000
          },
          "tenant_id": {
            "type": "string",
            "description": "The workspace the event belongs to. Reject a delivery whose tenant does not match the endpoint you registered."
          },
          "livemode": {
            "type": "boolean",
            "description": "`true` for live activity, `false` for test mode (an `ss_test_` key or the sandbox simulator). Branch on it to route test deliveries to a staging handler."
          },
          "data": {
            "$ref": "#/components/schemas/MemoRenderSucceededPayload"
          }
        },
        "description": "Body of a `memo_render.succeeded` delivery."
      },
      "MemoRenderSucceededPayload": {
        "required": [
          "render_id",
          "memo_id",
          "loan_id",
          "succeeded_at"
        ],
        "type": "object",
        "properties": {
          "render_id": {
            "type": "string",
            "description": "The render that finished."
          },
          "memo_id": {
            "type": "string",
            "description": "The saved memo that was rendered."
          },
          "loan_id": {
            "type": "string",
            "description": "The loan the memo sits on."
          },
          "succeeded_at": {
            "type": "string",
            "description": "Server-side wall-clock time the render succeeded.",
            "format": "date-time"
          }
        },
        "description": "The `data` object on a `memo_render.succeeded` delivery. The PDF is\nready. No link travels in the event: pull the PDF through the memo's own\ndownload endpoint."
      },
      "MemoReopenedEvent": {
        "required": [
          "id",
          "type",
          "created",
          "tenant_id",
          "livemode",
          "data"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^evt_[0-9a-f]{24}$",
            "type": "string",
            "description": "Event id: `evt_` plus 24 lowercase hex characters. Also sent as the `SpreadSpace-Event-Id` header. Stable across retries and replays, so dedupe on it.",
            "example": "evt_4b8c1d2e3f405162738495a6"
          },
          "type": {
            "enum": [
              "memo.reopened"
            ],
            "type": "string",
            "description": "Always this event type on this body."
          },
          "created": {
            "type": "integer",
            "description": "Seconds since the Unix epoch at which the event was created server-side. Seconds, not milliseconds. Deliveries are not ordered; reconcile on this.",
            "format": "int64",
            "example": 1700000000
          },
          "tenant_id": {
            "type": "string",
            "description": "The workspace the event belongs to. Reject a delivery whose tenant does not match the endpoint you registered."
          },
          "livemode": {
            "type": "boolean",
            "description": "`true` for live activity, `false` for test mode (an `ss_test_` key or the sandbox simulator). Branch on it to route test deliveries to a staging handler."
          },
          "data": {
            "$ref": "#/components/schemas/MemoReopenedPayload"
          }
        },
        "description": "Body of a `memo.reopened` delivery."
      },
      "MemoReopenedPayload": {
        "required": [
          "memo_id",
          "loan_id",
          "borrower_id",
          "reopened_at"
        ],
        "type": "object",
        "properties": {
          "memo_id": {
            "type": "string",
            "description": "The memo that was reopened."
          },
          "loan_id": {
            "type": "string",
            "description": "The loan the memo is saved on."
          },
          "borrower_id": {
            "type": "string",
            "description": "The borrower that owns the loan."
          },
          "render_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The render behind the final PDF that was in force when the memo was reopened. Kept and unchanged; the next finalize makes a new one beside it. Null when the memo has no final PDF to name."
          },
          "reopened_at": {
            "type": "string",
            "description": "Server-side wall-clock time of the reopen.",
            "format": "date-time"
          }
        },
        "description": "The `data` object on a `memo.reopened` delivery, sent once per\nreopen: an analyst reopened a finalized credit memo to edit it. The lock is\ncleared and the final PDF the finalize made is KEPT, but the memo is under\nrevision until the next `memo.finalized`, so a receiver holding a copy\nshould mark it stale.\n\nA pointer, not a payload: ids and the time only, never the memo's prose.\nThe PDF that was in force is still pulled through\n`GET /api/loans/{loanId}/memos/{memoId}/pdf`."
      },
      "OrganizationResponse": {
        "required": [
          "id",
          "name",
          "tier",
          "workspace_mode",
          "created_at"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "name": {
            "type": "string"
          },
          "tier": {
            "type": "string"
          },
          "workspace_mode": {
            "type": "string"
          },
          "business_type": {
            "type": [
              "string",
              "null"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "OwnerPartnerDto": {
        "required": [
          "registry_entity_id",
          "name"
        ],
        "type": "object",
        "properties": {
          "registry_entity_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "ownership_percent": {
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "null"
            ],
            "format": "double"
          },
          "evidence": {
            "type": [
              "string",
              "null"
            ]
          },
          "source_doc_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "k1_form": {
            "type": [
              "string",
              "null"
            ]
          },
          "aliases": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            }
          }
        },
        "description": "One of the borrower's owner or officer principals, keyed by a\n    stable id that survives re-processing."
      },
      "PersonalFinancialStatementReportData": {
        "title": "Personal Financial Statement",
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PersonalFinancialStatementForm413"
          },
          {
            "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PersonalFinancialStatementFreeform"
          }
        ],
        "description": "A Personal Financial Statement: SBA Form 413, or a bank or accountant form in the filer's own layout. The pfs_kind key says which.",
        "discriminator": {
          "propertyName": "pfs_kind",
          "mapping": {
            "sba_413": "#/components/schemas/PersonalFinancialStatementReportData_PersonalFinancialStatementForm413",
            "freeform": "#/components/schemas/PersonalFinancialStatementReportData_PersonalFinancialStatementFreeform"
          }
        },
        "x-spreadspace-discriminator": {
          "propertyName": "pfs_kind"
        },
        "x-spreadspace-family": "personal_financial_statement",
        "x-spreadspace-document-categories": [
          "pfs_generic",
          "personal_financial_statement",
          "sba_413",
          "sba_form_413"
        ]
      },
      "PersonalFinancialStatementReportDataListItem": {
        "required": [
          "extracted_document_id",
          "document_category",
          "period_end",
          "report_data"
        ],
        "type": "object",
        "properties": {
          "extracted_document_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "Identifier of the extracted document."
          },
          "document_category": {
            "type": "string",
            "description": "The document category the extraction is stored under."
          },
          "period_end": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The statement's as-of date, when the document states one.",
            "x-spreadspace-format": "date"
          },
          "report_data": {
            "description": "The extracted object, in the family's shape.",
            "$ref": "#/components/schemas/PersonalFinancialStatementReportData"
          }
        },
        "additionalProperties": false,
        "description": "One row of the Personal Financial Statement list: the document's identity and its extracted object."
      },
      "PersonalFinancialStatementReportDataListResponse": {
        "required": [
          "borrower_id",
          "statements"
        ],
        "type": "object",
        "properties": {
          "borrower_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "The borrower the documents belong to."
          },
          "statements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportDataListItem"
            },
            "description": "One row per document."
          }
        },
        "additionalProperties": false,
        "description": "Every usable Personal Financial Statement document on the borrower's file, one row per document."
      },
      "PersonalFinancialStatementReportData_PersonalFinancialStatementForm413": {
        "title": "SBA Form 413",
        "required": [
          "pfs_kind"
        ],
        "type": "object",
        "properties": {
          "pfs_kind": {
            "const": "sba_413",
            "type": "string",
            "description": "Always sba_413: the statement is on SBA Form 413."
          },
          "applicant": {
            "description": "The applicant block at the top of the form.",
            "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsApplicant"
          },
          "assets": {
            "description": "The asset lines on page 1.",
            "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsAssets"
          },
          "liabilities": {
            "description": "The liability lines, the totals and net worth on page 1.",
            "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsLiabilities"
          },
          "income": {
            "description": "Section 1, source of income.",
            "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsIncome"
          },
          "contingent": {
            "description": "Contingent liabilities, printed below the income section.",
            "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsContingent"
          },
          "notes_payable": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsNotePayable"
            },
            "description": "Section 2, notes payable to banks and others, one entry per row."
          },
          "stocks_and_bonds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsStock"
            },
            "description": "Section 3, stocks and bonds, one entry per row."
          },
          "real_estate": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsRealEstate"
            },
            "description": "Section 4, real estate owned, one entry per property."
          },
          "descriptions": {
            "description": "The free text of sections 1 and 5 through 8.",
            "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsDescriptions"
          },
          "acceptance": {
            "description": "Whether the statement carries figures and counts as a valid statement.",
            "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsAcceptance"
          },
          "signals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsSignal"
            },
            "description": "Notes on where the printed totals disagree with the printed lines, and on the reporting date."
          },
          "period_source": {
            "type": "string",
            "description": "Which part of the document dates the statement when the form's as-of line is blank: the page image (`page_image`), the file's name (`filename`) or the file's own creation date (`file_metadata`); absent when the form prints an as-of date."
          }
        },
        "additionalProperties": false,
        "description": "A Personal Financial Statement on SBA Form 413."
      },
      "PersonalFinancialStatementReportData_PersonalFinancialStatementFreeform": {
        "title": "Other form or spreadsheet",
        "required": [
          "pfs_kind"
        ],
        "type": "object",
        "properties": {
          "pfs_kind": {
            "const": "freeform",
            "type": "string",
            "description": "Always freeform."
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The statement's printed title."
          },
          "applicant": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of the person the statement is for."
          },
          "applicant_address": {
            "type": [
              "string",
              "null"
            ],
            "description": "The applicant's address as printed."
          },
          "business_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The applicant's business, as printed."
          },
          "employer": {
            "type": [
              "string",
              "null"
            ],
            "description": "The applicant's employer, as printed."
          },
          "as_of_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "The date the statement is current as of, as printed.",
            "x-spreadspace-format": "printed"
          },
          "as_of_source": {
            "type": [
              "string",
              "null"
            ],
            "description": "`signature_date` when the signature date dates the statement, `income_year` when the year the income section covers does; null when the form prints an as-of date."
          },
          "panel_index": {
            "type": [
              "integer",
              "null"
            ],
            "description": "On a form that lays several people's statements side by side, this statement's position counting from one; null otherwise."
          },
          "panel_count": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Number of side-by-side statements on the form; null for a single statement."
          },
          "home_address": {
            "type": [
              "string",
              "null"
            ],
            "description": "Home address, when the form separates it from the business address."
          },
          "business_address": {
            "type": [
              "string",
              "null"
            ],
            "description": "Business address, when the form separates it from the home address."
          },
          "business_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "Legal form of the business, as printed."
          },
          "spouse_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Spouse's name, when printed."
          },
          "contact_phone": {
            "type": [
              "string",
              "null"
            ],
            "description": "Contact phone number, as printed."
          },
          "contact_email": {
            "type": [
              "string",
              "null"
            ],
            "description": "Contact email address, as printed."
          },
          "assets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsLineItem"
            },
            "description": "Each captured asset line."
          },
          "liabilities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsLineItem"
            },
            "description": "Each captured liability line."
          },
          "total_assets": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total assets as printed.",
            "x-spreadspace-unit": "money"
          },
          "total_liabilities": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total liabilities as printed.",
            "x-spreadspace-unit": "money"
          },
          "net_worth": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Net worth reported for the statement's as-of date.",
            "x-spreadspace-unit": "money"
          },
          "total_liabilities_and_net_worth": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total liabilities and net worth, when the form prints that line.",
            "x-spreadspace-unit": "money"
          },
          "net_worth_is_derived": {
            "type": "boolean",
            "description": "True when the form printed no net worth and the figure is total assets less total liabilities."
          },
          "real_estate_owned": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Real estate owned, from the asset side.",
            "x-spreadspace-unit": "money"
          },
          "income_lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsLineItem"
            },
            "description": "Each captured income line."
          },
          "expense_lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsLineItem"
            },
            "description": "Each captured expense line."
          },
          "total_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total income as printed.",
            "x-spreadspace-unit": "money"
          },
          "total_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total expenses as printed.",
            "x-spreadspace-unit": "money"
          },
          "gross_annual_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Gross annual income, when the form prints it.",
            "x-spreadspace-unit": "money"
          },
          "gross_rental_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Gross rental income, when the form prints it.",
            "x-spreadspace-unit": "money"
          },
          "entities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsEntity"
            },
            "description": "Rows of an entities schedule, the businesses the person owns or serves, when the workbook carries one."
          },
          "cash_accounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsCashAccount"
            },
            "description": "Rows of a cash schedule, one per bank account, when the workbook carries one."
          },
          "real_estate": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsRealEstateHolding"
            },
            "description": "Rows of a real estate or projects schedule, when the workbook carries one."
          },
          "debt_schedule": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsDebtItem"
            },
            "description": "Rows of a notes payable or debt schedule, when the workbook carries one."
          },
          "schedules": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsSchedule"
            },
            "description": "Supporting schedules printed on the statement sheet, one entry per schedule."
          },
          "disclosures": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsDisclosure"
            },
            "description": "Yes or no questionnaire answers: guarantees, contingent liabilities, judgments, bankruptcy, litigation."
          },
          "liability_schedule": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsLiabilitySchedule"
              },
              {
                "type": "null"
              }
            ],
            "description": "Every captured debt grouped into six lender categories, with subtotals; null when no debt was captured."
          },
          "acceptance": {
            "description": "Whether the statement carries figures and counts as a valid statement.",
            "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsAcceptance"
          },
          "signals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsSignal"
            },
            "description": "Notes on where the printed totals disagree with the printed lines, and on the reporting date."
          },
          "period_source": {
            "type": "string",
            "description": "Which part of the document dates the statement when no as-of line is printed: the signature date (`signature_date`), the year the income section covers (`income_year`), the page image (`page_image`), the file's name (`filename`) or the file's own creation date (`file_metadata`); absent when the form prints an as-of date."
          }
        },
        "additionalProperties": false,
        "description": "A Personal Financial Statement on a bank or accountant form other than SBA Form 413, or on a spreadsheet."
      },
      "PersonalFinancialStatementReportData_PfsAcceptance": {
        "required": [
          "accepted"
        ],
        "type": "object",
        "properties": {
          "accepted": {
            "type": "boolean",
            "description": "True when the statement carries at least one monetary figure in its asset or liability columns."
          },
          "reject_code": {
            "type": "string",
            "description": "Present when the statement was not accepted: the reason's identifier."
          },
          "reject_detail": {
            "type": "string",
            "description": "The reason in words."
          },
          "signal_code": {
            "type": "string",
            "description": "Present when the statement carries a note about its balance check: the note's identifier."
          },
          "signal_detail": {
            "type": "string",
            "description": "The note in words."
          },
          "signal_severity": {
            "enum": [
              "info",
              "warn"
            ],
            "type": "string",
            "description": "How much weight the note carries: info or warn."
          }
        },
        "additionalProperties": false,
        "description": "Whether the statement counts as a valid statement."
      },
      "PersonalFinancialStatementReportData_PfsApplicant": {
        "required": [
          "name",
          "business_name",
          "business_type",
          "home_address",
          "business_address",
          "city_state_zip",
          "home_phone",
          "business_phone",
          "as_of_date",
          "program",
          "signer_names",
          "signer_ssn_last4",
          "signed_dates"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name as printed."
          },
          "business_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Business name as printed."
          },
          "business_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "Legal form of the business as marked: corporation, S corporation, LLC, partnership or sole proprietorship."
          },
          "home_address": {
            "type": [
              "string",
              "null"
            ],
            "description": "Home address."
          },
          "business_address": {
            "type": [
              "string",
              "null"
            ],
            "description": "Business address."
          },
          "city_state_zip": {
            "type": [
              "string",
              "null"
            ],
            "description": "City, state and ZIP code."
          },
          "home_phone": {
            "type": [
              "string",
              "null"
            ],
            "description": "Home phone number."
          },
          "business_phone": {
            "type": [
              "string",
              "null"
            ],
            "description": "Business phone number."
          },
          "as_of_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "The date the information is current as of: `YYYY-MM-DD`, `YYYY-MM` or `YYYY` when the printed date reads as one, else the text as printed.",
            "x-spreadspace-format": "printed"
          },
          "program": {
            "type": [
              "string",
              "null"
            ],
            "description": "The SBA program the form was completed for, when one is marked."
          },
          "signer_names": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Printed names on the signature lines."
          },
          "signer_ssn_last4": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Last four digits of each signer's Social Security number."
          },
          "signed_dates": {
            "type": "array",
            "items": {
              "type": "string",
              "x-spreadspace-format": "printed"
            },
            "description": "Dates beside the signatures."
          }
        },
        "additionalProperties": false,
        "description": "The applicant block of SBA Form 413."
      },
      "PersonalFinancialStatementReportData_PfsAssets": {
        "required": [
          "cash_on_hand_and_banks",
          "savings_accounts",
          "ira_retirement",
          "accounts_notes_receivable",
          "life_insurance_csv",
          "stocks_and_bonds",
          "real_estate",
          "automobiles",
          "other_personal_property",
          "other_assets",
          "total_assets"
        ],
        "type": "object",
        "properties": {
          "cash_on_hand_and_banks": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Cash on hand and in banks.",
            "x-spreadspace-unit": "money"
          },
          "savings_accounts": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Savings accounts.",
            "x-spreadspace-unit": "money"
          },
          "ira_retirement": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "IRA or other retirement account.",
            "x-spreadspace-unit": "money"
          },
          "accounts_notes_receivable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Accounts and notes receivable.",
            "x-spreadspace-unit": "money"
          },
          "life_insurance_csv": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Life insurance, cash surrender value only.",
            "x-spreadspace-unit": "money"
          },
          "stocks_and_bonds": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Stocks and bonds.",
            "x-spreadspace-unit": "money"
          },
          "real_estate": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Real estate.",
            "x-spreadspace-unit": "money"
          },
          "automobiles": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Automobiles.",
            "x-spreadspace-unit": "money"
          },
          "other_personal_property": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Other personal property.",
            "x-spreadspace-unit": "money"
          },
          "other_assets": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Other assets.",
            "x-spreadspace-unit": "money"
          },
          "total_assets": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total assets as printed.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "The asset lines of SBA Form 413, page 1."
      },
      "PersonalFinancialStatementReportData_PfsCashAccount": {
        "required": [
          "holder",
          "institution",
          "balance",
          "ownership_pct",
          "owner_value"
        ],
        "type": "object",
        "properties": {
          "holder": {
            "type": [
              "string",
              "null"
            ],
            "description": "The person or entity the account belongs to."
          },
          "institution": {
            "type": [
              "string",
              "null"
            ],
            "description": "The bank."
          },
          "balance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The account balance.",
            "x-spreadspace-unit": "money"
          },
          "ownership_pct": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "The filer's ownership share of the account, as printed."
          },
          "owner_value": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The filer's share of the balance, as printed.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One bank account row of a cash schedule on a workbook statement."
      },
      "PersonalFinancialStatementReportData_PfsContingent": {
        "required": [
          "as_endorser_or_co_maker",
          "legal_claims_judgments",
          "provision_federal_income_tax",
          "other_special_debt"
        ],
        "type": "object",
        "properties": {
          "as_endorser_or_co_maker": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "As endorser or co-maker.",
            "x-spreadspace-unit": "money"
          },
          "legal_claims_judgments": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Legal claims and judgments.",
            "x-spreadspace-unit": "money"
          },
          "provision_federal_income_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Provision for federal income tax.",
            "x-spreadspace-unit": "money"
          },
          "other_special_debt": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Other special debt.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "The contingent liabilities block of SBA Form 413."
      },
      "PersonalFinancialStatementReportData_PfsDebtItem": {
        "required": [
          "creditor",
          "monthly_payment",
          "secured_by",
          "balance",
          "note"
        ],
        "type": "object",
        "properties": {
          "creditor": {
            "type": [
              "string",
              "null"
            ],
            "description": "The creditor."
          },
          "monthly_payment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Monthly payment.",
            "x-spreadspace-unit": "money"
          },
          "secured_by": {
            "type": [
              "string",
              "null"
            ],
            "description": "What secures the debt."
          },
          "balance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The balance owed.",
            "x-spreadspace-unit": "money"
          },
          "note": {
            "type": [
              "string",
              "null"
            ],
            "description": "A note printed on the row."
          }
        },
        "additionalProperties": false,
        "description": "One row of a notes payable or debt schedule on a workbook statement."
      },
      "PersonalFinancialStatementReportData_PfsDescriptions": {
        "required": [
          "other_income",
          "other_property_assets",
          "unpaid_taxes",
          "other_liabilities",
          "life_insurance_held"
        ],
        "type": "object",
        "properties": {
          "other_income": {
            "type": [
              "string",
              "null"
            ],
            "description": "Section 1, description of other income."
          },
          "other_property_assets": {
            "type": [
              "string",
              "null"
            ],
            "description": "Section 5, other personal property and other assets."
          },
          "unpaid_taxes": {
            "type": [
              "string",
              "null"
            ],
            "description": "Section 6, unpaid taxes."
          },
          "other_liabilities": {
            "type": [
              "string",
              "null"
            ],
            "description": "Section 7, other liabilities."
          },
          "life_insurance_held": {
            "type": [
              "string",
              "null"
            ],
            "description": "Section 8, life insurance held."
          }
        },
        "additionalProperties": false,
        "description": "The free text sections of SBA Form 413."
      },
      "PersonalFinancialStatementReportData_PfsDisclosure": {
        "required": [
          "question",
          "answer",
          "details"
        ],
        "type": "object",
        "properties": {
          "question": {
            "type": [
              "string",
              "null"
            ],
            "description": "The question as printed."
          },
          "answer": {
            "type": [
              "string",
              "null"
            ],
            "description": "The answer as marked, yes or no; null when neither was."
          },
          "details": {
            "type": [
              "string",
              "null"
            ],
            "description": "The filer's explanation, when one was given."
          }
        },
        "additionalProperties": false,
        "description": "One yes or no question from a statement's questionnaire."
      },
      "PersonalFinancialStatementReportData_PfsEntity": {
        "required": [
          "name",
          "ein",
          "state",
          "entity_type",
          "purpose",
          "capacity",
          "ownership_pct",
          "through",
          "projects",
          "address"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The entity's name."
          },
          "ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "Employer identification number, masked to the last four digits."
          },
          "state": {
            "type": [
              "string",
              "null"
            ],
            "description": "State of formation."
          },
          "entity_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "Legal form of the entity."
          },
          "purpose": {
            "type": [
              "string",
              "null"
            ],
            "description": "The entity's purpose or business."
          },
          "capacity": {
            "type": [
              "string",
              "null"
            ],
            "description": "The filer's role in the entity."
          },
          "ownership_pct": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "The filer's ownership share, as printed."
          },
          "through": {
            "type": [
              "string",
              "null"
            ],
            "description": "The trust or parent entity the interest is held through, when printed."
          },
          "projects": {
            "type": [
              "string",
              "null"
            ],
            "description": "Projects the entity holds, as printed."
          },
          "address": {
            "type": [
              "string",
              "null"
            ],
            "description": "The entity's address."
          }
        },
        "additionalProperties": false,
        "description": "One row of an entities schedule on a workbook statement."
      },
      "PersonalFinancialStatementReportData_PfsIncome": {
        "required": [
          "salary",
          "net_investment_income",
          "real_estate_income",
          "other_income",
          "total_income"
        ],
        "type": "object",
        "properties": {
          "salary": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Salary.",
            "x-spreadspace-unit": "money"
          },
          "net_investment_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Net investment income.",
            "x-spreadspace-unit": "money"
          },
          "real_estate_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Real estate income.",
            "x-spreadspace-unit": "money"
          },
          "other_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Other income.",
            "x-spreadspace-unit": "money"
          },
          "total_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The four income lines added together; the form prints no total line.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Section 1 of SBA Form 413, source of income."
      },
      "PersonalFinancialStatementReportData_PfsInstallment": {
        "required": [
          "balance",
          "monthly_payment"
        ],
        "type": "object",
        "properties": {
          "balance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The balance owed.",
            "x-spreadspace-unit": "money"
          },
          "monthly_payment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The monthly payment.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "An installment account line: the balance and the monthly payment."
      },
      "PersonalFinancialStatementReportData_PfsLiabilities": {
        "required": [
          "accounts_payable",
          "notes_payable_banks_other",
          "installment_auto",
          "installment_other",
          "loans_against_life_insurance",
          "mortgages_on_real_estate",
          "unpaid_taxes",
          "other_liabilities",
          "total_liabilities",
          "net_worth",
          "total_liabilities_and_net_worth"
        ],
        "type": "object",
        "properties": {
          "accounts_payable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Accounts payable.",
            "x-spreadspace-unit": "money"
          },
          "notes_payable_banks_other": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Notes payable to banks and others.",
            "x-spreadspace-unit": "money"
          },
          "installment_auto": {
            "description": "Installment account, auto.",
            "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsInstallment"
          },
          "installment_other": {
            "description": "Installment account, other.",
            "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsInstallment"
          },
          "loans_against_life_insurance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Loans against life insurance.",
            "x-spreadspace-unit": "money"
          },
          "mortgages_on_real_estate": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Mortgages on real estate.",
            "x-spreadspace-unit": "money"
          },
          "unpaid_taxes": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Unpaid taxes.",
            "x-spreadspace-unit": "money"
          },
          "other_liabilities": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Other liabilities.",
            "x-spreadspace-unit": "money"
          },
          "total_liabilities": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total liabilities as printed.",
            "x-spreadspace-unit": "money"
          },
          "net_worth": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Net worth as printed.",
            "x-spreadspace-unit": "money"
          },
          "total_liabilities_and_net_worth": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total liabilities and net worth as printed.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "The liability lines, totals and net worth of SBA Form 413, page 1."
      },
      "PersonalFinancialStatementReportData_PfsLiabilityBucket": {
        "required": [
          "category",
          "label",
          "on_balance_sheet",
          "items",
          "subtotal_balance",
          "subtotal_monthly",
          "subtotal_source_key",
          "subtotal_monthly_source_key",
          "subtotal_is_derived",
          "subtotal_monthly_is_derived"
        ],
        "type": "object",
        "properties": {
          "category": {
            "type": "string",
            "description": "The category's identifier."
          },
          "label": {
            "type": "string",
            "description": "The category's name."
          },
          "on_balance_sheet": {
            "type": "boolean",
            "description": "False for contingent and guaranteed debt, which sits off the balance sheet."
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsLiabilityScheduleItem"
            },
            "description": "The debt lines in the category."
          },
          "subtotal_balance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Balance subtotal: the printed footing when the form prints one, else the lines added together.",
            "x-spreadspace-unit": "money"
          },
          "subtotal_monthly": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Monthly payment subtotal, when the lines carry payments.",
            "x-spreadspace-unit": "money"
          },
          "subtotal_source_key": {
            "type": [
              "string",
              "null"
            ],
            "description": "Address of the printed footing within the statement, when the statement prints the balance subtotal."
          },
          "subtotal_monthly_source_key": {
            "type": [
              "string",
              "null"
            ],
            "description": "Address of the printed footing within the statement, when the statement prints the monthly subtotal."
          },
          "subtotal_is_derived": {
            "type": "boolean",
            "description": "True when the balance subtotal is the lines added together rather than a printed footing."
          },
          "subtotal_monthly_is_derived": {
            "type": "boolean",
            "description": "True when the monthly subtotal is the lines added together rather than a printed footing."
          }
        },
        "additionalProperties": false,
        "description": "One lender category of the liability schedule, its lines and its subtotals."
      },
      "PersonalFinancialStatementReportData_PfsLiabilityReconcile": {
        "required": [
          "schedule",
          "summary",
          "detail_sum",
          "delta"
        ],
        "type": "object",
        "properties": {
          "schedule": {
            "type": [
              "string",
              "null"
            ],
            "description": "The schedule number, or the summary line's label."
          },
          "summary": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The summary line's printed figure.",
            "x-spreadspace-unit": "money"
          },
          "detail_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The schedule's rows added together.",
            "x-spreadspace-unit": "money"
          },
          "delta": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The difference between the two.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "A detail schedule whose rows do not add up to the summary line they support."
      },
      "PersonalFinancialStatementReportData_PfsLiabilitySchedule": {
        "required": [
          "buckets",
          "total_balance",
          "total_monthly",
          "total_source_key",
          "total_is_derived",
          "total_monthly_is_derived",
          "contingent_total",
          "reconciliation"
        ],
        "type": "object",
        "properties": {
          "buckets": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsLiabilityBucket"
            },
            "description": "The non-empty categories, in a fixed order."
          },
          "total_balance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total balance across the categories on the balance sheet: the printed total liabilities when it agrees with the lines, else the lines added together.",
            "x-spreadspace-unit": "money"
          },
          "total_monthly": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total monthly payments across the categories.",
            "x-spreadspace-unit": "money"
          },
          "total_source_key": {
            "type": [
              "string",
              "null"
            ],
            "description": "Address of the printed total within the statement, when the statement prints it."
          },
          "total_is_derived": {
            "type": "boolean",
            "description": "True when the total balance is the lines added together rather than a printed total."
          },
          "total_monthly_is_derived": {
            "type": "boolean",
            "description": "True when the monthly total is the lines added together; no statement prints one."
          },
          "contingent_total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total of contingent and guaranteed debt, kept apart from the balance sheet total.",
            "x-spreadspace-unit": "money"
          },
          "reconciliation": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsLiabilityReconcile"
            },
            "description": "Schedules whose rows do not add up to their summary line."
          }
        },
        "additionalProperties": false,
        "description": "Every captured debt grouped into six lender categories."
      },
      "PersonalFinancialStatementReportData_PfsLiabilityScheduleItem": {
        "required": [
          "label",
          "creditor",
          "balance",
          "monthly_payment",
          "secured_by",
          "category",
          "source_key",
          "monthly_source_key"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": [
              "string",
              "null"
            ],
            "description": "The line's printed label."
          },
          "creditor": {
            "type": [
              "string",
              "null"
            ],
            "description": "The creditor, when printed."
          },
          "balance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The balance owed.",
            "x-spreadspace-unit": "money"
          },
          "monthly_payment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The monthly payment, when printed.",
            "x-spreadspace-unit": "money"
          },
          "secured_by": {
            "type": [
              "string",
              "null"
            ],
            "description": "What secures the debt, when printed."
          },
          "category": {
            "type": "string",
            "description": "The lender category the line falls in."
          },
          "source_key": {
            "type": [
              "string",
              "null"
            ],
            "description": "Address of the printed balance within the statement, when the statement prints it."
          },
          "monthly_source_key": {
            "type": [
              "string",
              "null"
            ],
            "description": "Address of the printed payment within the statement, when the statement prints it."
          }
        },
        "additionalProperties": false,
        "description": "One debt line of the liability schedule."
      },
      "PersonalFinancialStatementReportData_PfsLineItem": {
        "required": [
          "label",
          "value",
          "column",
          "group"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": [
              "string",
              "null"
            ],
            "description": "The line's printed label."
          },
          "value": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The line's printed figure.",
            "x-spreadspace-unit": "money"
          },
          "column": {
            "type": [
              "string",
              "null"
            ],
            "description": "The column the figure sits in: asset or liability."
          },
          "group": {
            "type": [
              "string",
              "null"
            ],
            "description": "The section header above the line, when the sheet has one."
          }
        },
        "additionalProperties": false,
        "description": "One captured line of a freeform statement."
      },
      "PersonalFinancialStatementReportData_PfsNotePayable": {
        "required": [
          "noteholder",
          "original_balance",
          "current_balance",
          "payment_amount",
          "payment_frequency",
          "collateral_or_endorsement"
        ],
        "type": "object",
        "properties": {
          "noteholder": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name and address of the noteholder."
          },
          "original_balance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Original balance.",
            "x-spreadspace-unit": "money"
          },
          "current_balance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Current balance.",
            "x-spreadspace-unit": "money"
          },
          "payment_amount": {
            "type": [
              "string",
              "null"
            ],
            "description": "The payment amount as printed: a dollar figure or a term such as deferred."
          },
          "payment_frequency": {
            "type": [
              "string",
              "null"
            ],
            "description": "Payment frequency, as printed."
          },
          "collateral_or_endorsement": {
            "type": [
              "string",
              "null"
            ],
            "description": "How secured or endorsed, and the type of collateral."
          }
        },
        "additionalProperties": false,
        "description": "Section 2 of SBA Form 413, one note payable row."
      },
      "PersonalFinancialStatementReportData_PfsRealEstate": {
        "required": [
          "label",
          "property_type",
          "address",
          "date_purchased",
          "original_cost",
          "present_market_value",
          "mortgage_holder",
          "mortgage_account_number",
          "mortgage_balance",
          "monthly_payment",
          "yearly_payment",
          "payment_amount",
          "mortgage_status"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": [
              "string",
              "null"
            ],
            "description": "A, B or C: the property's column on the form."
          },
          "property_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "Type of real estate."
          },
          "address": {
            "type": [
              "string",
              "null"
            ],
            "description": "The property's address."
          },
          "date_purchased": {
            "type": [
              "string",
              "null"
            ],
            "description": "Date purchased: `YYYY-MM-DD`, `YYYY-MM` or `YYYY` when the printed date reads as one, else the text as printed.",
            "x-spreadspace-format": "printed"
          },
          "original_cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Original cost.",
            "x-spreadspace-unit": "money"
          },
          "present_market_value": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Present market value.",
            "x-spreadspace-unit": "money"
          },
          "mortgage_holder": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name and address of the mortgage holder."
          },
          "mortgage_account_number": {
            "type": [
              "string",
              "null"
            ],
            "description": "Mortgage account number, as printed."
          },
          "mortgage_balance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Mortgage balance.",
            "x-spreadspace-unit": "money"
          },
          "monthly_payment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The monthly figure of the payment per month or year cell.",
            "x-spreadspace-unit": "money"
          },
          "yearly_payment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The yearly figure of the payment per month or year cell.",
            "x-spreadspace-unit": "money"
          },
          "payment_amount": {
            "type": [
              "string",
              "null"
            ],
            "description": "The payment per month or year cell as printed."
          },
          "mortgage_status": {
            "type": [
              "string",
              "null"
            ],
            "description": "Status of the mortgage, as printed."
          }
        },
        "additionalProperties": false,
        "description": "Section 4 of SBA Form 413, one property."
      },
      "PersonalFinancialStatementReportData_PfsRealEstateHolding": {
        "required": [
          "asset",
          "entity",
          "rents",
          "ownership_pct",
          "fmv",
          "loan",
          "owner_value",
          "owner_loan",
          "monthly_payment",
          "note"
        ],
        "type": "object",
        "properties": {
          "asset": {
            "type": [
              "string",
              "null"
            ],
            "description": "The property or project."
          },
          "entity": {
            "type": [
              "string",
              "null"
            ],
            "description": "The entity that holds it."
          },
          "rents": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Rents, as printed.",
            "x-spreadspace-unit": "money"
          },
          "ownership_pct": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "The filer's ownership share, as printed."
          },
          "fmv": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Fair market value.",
            "x-spreadspace-unit": "money"
          },
          "loan": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Loan balance against the property.",
            "x-spreadspace-unit": "money"
          },
          "owner_value": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The filer's share of the value, as printed.",
            "x-spreadspace-unit": "money"
          },
          "owner_loan": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The filer's share of the loan, as printed.",
            "x-spreadspace-unit": "money"
          },
          "monthly_payment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The loan's monthly payment, when printed.",
            "x-spreadspace-unit": "money"
          },
          "note": {
            "type": [
              "string",
              "null"
            ],
            "description": "A note printed on the row."
          }
        },
        "additionalProperties": false,
        "description": "One row of a real estate or projects schedule on a workbook statement."
      },
      "PersonalFinancialStatementReportData_PfsSchedule": {
        "required": [
          "number",
          "title",
          "columns",
          "rows"
        ],
        "type": "object",
        "properties": {
          "number": {
            "type": [
              "string",
              "null"
            ],
            "description": "The schedule's number or letter."
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The balance sheet line the schedule supports."
          },
          "columns": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The schedule's column headers, label column excluded."
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PersonalFinancialStatementReportData_PfsScheduleRow"
            },
            "description": "The schedule's rows."
          }
        },
        "additionalProperties": false,
        "description": "A supporting schedule printed on the statement sheet."
      },
      "PersonalFinancialStatementReportData_PfsScheduleRow": {
        "required": [
          "label",
          "cells"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": [
              "string",
              "null"
            ],
            "description": "The row's label, its leftmost cell."
          },
          "cells": {
            "type": "array",
            "items": {
              "type": [
                "string",
                "null"
              ]
            },
            "description": "The row's cells in column order, as printed; null where a cell is blank."
          }
        },
        "additionalProperties": false,
        "description": "One row of a supporting schedule."
      },
      "PersonalFinancialStatementReportData_PfsSignal": {
        "required": [
          "severity",
          "code",
          "detail"
        ],
        "type": "object",
        "properties": {
          "severity": {
            "enum": [
              "info",
              "warn"
            ],
            "type": "string",
            "description": "How much weight the note carries: info or warn."
          },
          "code": {
            "type": "string",
            "description": "The note's identifier."
          },
          "detail": {
            "type": "string",
            "description": "The note in words."
          }
        },
        "additionalProperties": false,
        "description": "A note about the statement's own arithmetic or its reporting date."
      },
      "PersonalFinancialStatementReportData_PfsStock": {
        "required": [
          "shares",
          "security_name",
          "cost",
          "market_value",
          "quotation_date",
          "total_value"
        ],
        "type": "object",
        "properties": {
          "shares": {
            "type": [
              "string",
              "null"
            ],
            "description": "Number of shares, as printed."
          },
          "security_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of the security."
          },
          "cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Cost.",
            "x-spreadspace-unit": "money"
          },
          "market_value": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Market value per share or bond, as printed.",
            "x-spreadspace-unit": "money"
          },
          "quotation_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "Date of the quotation: `YYYY-MM-DD`, `YYYY-MM` or `YYYY` when the printed date reads as one, else the text as printed.",
            "x-spreadspace-format": "printed"
          },
          "total_value": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total value.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Section 3 of SBA Form 413, one security row."
      },
      "PresignedUrlBatchRequest": {
        "required": [
          "files"
        ],
        "type": "object",
        "properties": {
          "files": {
            "maxItems": 100,
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PresignedUrlRequest"
            }
          }
        },
        "description": "Body for `POST /api/documents/presigned-urls-batch`. Each entry has the\nsame shape as the single-file presign body, so one call can sign an entire\nupload batch. Capped at 100 files; an over-cap body is rejected with 400."
      },
      "PresignedUrlBatchResponse": {
        "required": [
          "results"
        ],
        "type": "object",
        "properties": {
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PresignedUrlBatchResult"
            }
          }
        },
        "description": "Response from `POST /api/documents/presigned-urls-batch`. Always 200 on\nthe request itself; the results are positionally aligned with the request's\n`files` (same length and order), and each one carries its own success\nor failure."
      },
      "PresignedUrlBatchResult": {
        "type": "object",
        "properties": {
          "job_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "upload_url": {
            "type": [
              "string",
              "null"
            ]
          },
          "expires_in_seconds": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "error": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "description": "One entry in a PresignedUrlBatchResponse. On success it\ncarries the same fields the single-file presign response returns and no\n`error`. On failure (validation, access, or a duplicate of a file\nalready uploaded) it carries only `error` and no upload URL."
      },
      "PresignedUrlRequest": {
        "required": [
          "file_name",
          "content_type",
          "loan_id"
        ],
        "type": "object",
        "properties": {
          "file_name": {
            "maxLength": 255,
            "type": "string"
          },
          "content_type": {
            "maxLength": 100,
            "type": "string"
          },
          "file_size": {
            "maximum": 262144000,
            "minimum": 1,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "description": "Optional file size in bytes. When supplied it is validated against the\n250 MB upload cap.",
            "format": "int64"
          },
          "borrower_id": {
            "maxLength": 24,
            "type": [
              "string",
              "null"
            ],
            "description": "Optional consistency check. When supplied it must be the loan's owning borrower; a mismatch is rejected with 400 `borrower_loan_mismatch`. Omit it and the loan's borrower is used."
          },
          "loan_id": {
            "maxLength": 24,
            "type": "string",
            "description": "The loan the file belongs to. Required."
          },
          "content_hash": {
            "maxLength": 64,
            "pattern": "^[a-fA-F0-9]{64}$",
            "type": [
              "string",
              "null"
            ],
            "description": "SHA-256 hex digest of the file, computed client-side. Used for within-loan\nduplicate detection."
          }
        }
      },
      "PresignedUrlResponse": {
        "required": [
          "job_id",
          "upload_url",
          "expires_in_seconds"
        ],
        "type": "object",
        "properties": {
          "job_id": {
            "type": "string"
          },
          "upload_url": {
            "type": "string"
          },
          "expires_in_seconds": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          }
        }
      },
      "ProfitLossStatementReportData": {
        "title": "Profit and Loss Statement",
        "required": [
          "entity",
          "title",
          "period",
          "period_source",
          "periods",
          "billing_years",
          "columns",
          "lines"
        ],
        "type": "object",
        "properties": {
          "entity": {
            "type": [
              "string",
              "null"
            ],
            "description": "The reporting entity's name as printed."
          },
          "entity_source": {
            "type": "string",
            "description": "What names the entity when the file's text does not: the page image (`page_image`); absent when the file's text names it."
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The statement's printed title."
          },
          "period": {
            "type": [
              "string",
              "null"
            ],
            "description": "The reporting period as printed in the heading."
          },
          "period_source": {
            "type": [
              "string",
              "null"
            ],
            "description": "Which part of the document states the reporting period: the printed heading (`printed`), the date the statement was printed on (`print_stamp`), a year the heading prints alone (`year_only`, the period being that year's end), the page image (`page_image`), the file's name (`filename`) or the file's own creation date (`file_metadata`); null when none of these dates the statement."
          },
          "periods": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProfitLossStatementReportData_ProfitLossPeriod"
            },
            "description": "The statement's figure columns, one entry per column."
          },
          "billing_years": {
            "type": "integer",
            "description": "Number of distinct fiscal years the columns cover."
          },
          "columns": {
            "type": "integer",
            "description": "Number of figure columns."
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProfitLossStatementReportData_ProfitLossLine"
            },
            "description": "The printed lines in order."
          },
          "canonical": {
            "description": "The printed lines mapped onto standard line names.",
            "$ref": "#/components/schemas/ProfitLossStatementReportData_CanonicalAnnotation"
          },
          "cpa_engagement": {
            "maximum": 3,
            "minimum": 0,
            "type": "integer",
            "description": "The accountant's level of assurance: 0 unaudited, 1 compiled, 2 reviewed, 3 audited."
          },
          "cpa_engagement_label": {
            "type": "string",
            "description": "The assurance level in words."
          },
          "signals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProfitLossStatementReportData_StatementSignal"
            },
            "description": "Notes about the statement's reporting period, when any."
          },
          "packet": {
            "description": "Where the statement sat in the financial statement packet it arrived in, when it arrived in one.",
            "$ref": "#/components/schemas/ProfitLossStatementReportData_PacketProvenance"
          },
          "summary": {
            "description": "The statement's headline figures, on the single-document read.",
            "x-spreadspace-present-when": "On the single-document read, when at least one summary row matches a printed line; not on the list or the untyped reads.",
            "$ref": "#/components/schemas/ProfitLossStatementReportData_StatementSummary"
          }
        },
        "additionalProperties": false,
        "description": "A profit and loss statement: the printed lines with their figures per period column. Figures are strings of the printed amount in whole dollars.",
        "x-spreadspace-family": "profit_loss_statement",
        "x-spreadspace-document-categories": [
          "profit_and_loss",
          "pl_statement",
          "pl_statement_platform",
          "income_statement",
          "profit_and_loss_single",
          "profit_and_loss_dual",
          "profit_and_loss_multi"
        ]
      },
      "ProfitLossStatementReportDataListItem": {
        "required": [
          "extracted_document_id",
          "document_category",
          "report_data"
        ],
        "type": "object",
        "properties": {
          "extracted_document_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "Identifier of the extracted document."
          },
          "document_category": {
            "type": "string",
            "description": "The document category the extraction is stored under."
          },
          "report_data": {
            "description": "The extracted object, in the family's shape.",
            "$ref": "#/components/schemas/ProfitLossStatementReportData"
          }
        },
        "additionalProperties": false,
        "description": "One row of the Profit and Loss Statement list: the document's identity and its extracted object."
      },
      "ProfitLossStatementReportDataListResponse": {
        "required": [
          "borrower_id",
          "statements"
        ],
        "type": "object",
        "properties": {
          "borrower_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "The borrower the documents belong to."
          },
          "statements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProfitLossStatementReportDataListItem"
            },
            "description": "One row per document."
          }
        },
        "additionalProperties": false,
        "description": "Every usable Profit and Loss Statement document on the borrower's file, one row per document."
      },
      "ProfitLossStatementReportData_CanonicalAnnotation": {
        "required": [
          "schema_version",
          "statement",
          "rows",
          "blocks",
          "gates",
          "entity_signal"
        ],
        "type": "object",
        "properties": {
          "schema_version": {
            "type": [
              "string",
              "null"
            ],
            "description": "Version of the standard line vocabulary the names come from."
          },
          "statement": {
            "type": "string",
            "description": "Which statement vocabulary applies: balance_sheet, income_statement or cash_flow."
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProfitLossStatementReportData_CanonicalRow"
            },
            "description": "One entry per printed line, in print order."
          },
          "blocks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProfitLossStatementReportData_CanonicalBlock"
            },
            "description": "One entry per printed subtotal and the lines that foot into it."
          },
          "gates": {
            "description": "Summary verdicts over the whole statement.",
            "$ref": "#/components/schemas/ProfitLossStatementReportData_CanonicalGates"
          },
          "entity_signal": {
            "type": [
              "string",
              "null"
            ],
            "description": "A note about the entity the statement belongs to, when the line names carry one."
          }
        },
        "additionalProperties": false,
        "description": "The statement's printed lines mapped onto standard line names, with the footing of each printed subtotal."
      },
      "ProfitLossStatementReportData_CanonicalBlock": {
        "required": [
          "id",
          "parent_concept_id",
          "footing"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Address of the subtotal's printed line."
          },
          "parent_concept_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The standard name of the subtotal, when it corresponds to one."
          },
          "footing": {
            "type": "string",
            "description": "Whether the lines above the subtotal add up to it: pass, fail or not_applicable."
          }
        },
        "additionalProperties": false,
        "description": "A printed subtotal and whether its lines foot into it."
      },
      "ProfitLossStatementReportData_CanonicalGates": {
        "required": [
          "identity",
          "classified_footing",
          "blocks_failed"
        ],
        "type": "object",
        "properties": {
          "identity": {
            "type": "string",
            "description": "Whether total assets equal total liabilities plus equity on every column: pass, fail or not_applicable."
          },
          "classified_footing": {
            "type": "string",
            "description": "Whether the current and noncurrent subtotals foot: pass, fail or not_applicable."
          },
          "blocks_failed": {
            "type": "integer",
            "description": "Number of printed subtotals whose lines do not add up to them."
          }
        },
        "additionalProperties": false,
        "description": "Verdicts over the whole statement."
      },
      "ProfitLossStatementReportData_CanonicalRow": {
        "required": [
          "key",
          "raw_label",
          "concept_id",
          "method",
          "block",
          "parent_concept_id"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Address of the printed line within the statement."
          },
          "raw_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "The line's label as printed."
          },
          "concept_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The standard line name the printed label corresponds to, or null when it corresponds to none."
          },
          "method": {
            "enum": [
              "exact",
              "fuzzy",
              "structural",
              "reconciled"
            ],
            "type": "string",
            "description": "How closely the printed label matches the standard name: exact, fuzzy, structural, or reconciled when it matches none."
          },
          "block": {
            "type": [
              "string",
              "null"
            ],
            "description": "The subtotal block the line belongs to, when it belongs to one."
          },
          "parent_concept_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The standard name of the subtotal the line foots into, when it foots into one."
          }
        },
        "additionalProperties": false,
        "description": "One printed line and the standard line name it corresponds to."
      },
      "ProfitLossStatementReportData_PacketProvenance": {
        "required": [
          "section_index",
          "pages",
          "letter_date",
          "letter_page"
        ],
        "type": "object",
        "properties": {
          "section_index": {
            "type": "integer",
            "description": "Position of the statement among the packet's statements, counting from zero."
          },
          "pages": {
            "maxItems": 2,
            "minItems": 2,
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "First and last page of the statement within the packet, counting from one."
          },
          "letter_date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Date of the accountant's letter that accompanied the packet, when the letter printed one.",
            "x-spreadspace-format": "date"
          },
          "letter_page": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Page of the packet the accountant's letter is on, when the packet carries one."
          }
        },
        "additionalProperties": false,
        "description": "Where a statement sat in the financial statement packet it arrived in, when it arrived in one."
      },
      "ProfitLossStatementReportData_ProfitLossLine": {
        "required": [
          "label",
          "depth",
          "values"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "The line's label as printed."
          },
          "depth": {
            "type": "integer",
            "description": "Indentation level of the line, counting from zero."
          },
          "values": {
            "type": "array",
            "items": {
              "pattern": "^-?\\d+\\.\\d{2}$",
              "type": [
                "string",
                "null"
              ],
              "x-spreadspace-unit": "money"
            },
            "description": "The line's figure per column; null where the column is blank."
          }
        },
        "additionalProperties": false,
        "description": "One printed line."
      },
      "ProfitLossStatementReportData_ProfitLossPeriod": {
        "required": [
          "label",
          "coverage"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": [
              "string",
              "null"
            ],
            "description": "The column header as printed."
          },
          "coverage": {
            "type": [
              "string",
              "null"
            ],
            "description": "The span of time the column covers."
          },
          "start": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "First day of the period, when the header states one.",
            "x-spreadspace-format": "date"
          },
          "end": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Last day of the period, when the header states one.",
            "x-spreadspace-format": "date"
          },
          "rollup": {
            "type": "boolean",
            "description": "True when the column totals the other columns."
          },
          "consolidating_columns": {
            "type": "integer",
            "description": "On a consolidating statement, the number of entity columns the total spans."
          }
        },
        "additionalProperties": false,
        "description": "One figure column."
      },
      "ProfitLossStatementReportData_StatementSignal": {
        "required": [
          "severity",
          "code",
          "detail"
        ],
        "type": "object",
        "properties": {
          "severity": {
            "enum": [
              "info",
              "warn"
            ],
            "type": "string",
            "description": "How much weight the note carries: info or warn."
          },
          "code": {
            "enum": [
              "coverage_unreadable",
              "no_reporting_period",
              "year_from_file_metadata",
              "year_from_filename",
              "year_from_page_image",
              "year_matches_print_stamp"
            ],
            "type": "string",
            "description": "The note's identifier."
          },
          "detail": {
            "type": "string",
            "description": "The note in words."
          }
        },
        "additionalProperties": false,
        "description": "A note about the statement's reporting period."
      },
      "ProfitLossStatementReportData_StatementSummary": {
        "required": [
          "title",
          "sections"
        ],
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "The period the rows cover, as a heading."
          },
          "sections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProfitLossStatementReportData_StatementSummarySection"
            },
            "description": "The row blocks, in display order."
          }
        },
        "additionalProperties": false,
        "description": "The statement's headline figures: one block of rows per section, titled by the period the rows cover."
      },
      "ProfitLossStatementReportData_StatementSummaryRow": {
        "required": [
          "key",
          "label",
          "value"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The row's identifier, for example revenue, cogs or net_profit."
          },
          "label": {
            "type": "string",
            "description": "The row's wording as displayed."
          },
          "value": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The figure in dollars, or null when the printed line carries no figure.",
            "x-spreadspace-unit": "money"
          },
          "aggregated": {
            "type": "boolean",
            "description": "True when the figure combines more than one printed line rather than reading a single printed cell."
          },
          "emphasis": {
            "type": "boolean",
            "description": "True on a section total or a bottom line."
          },
          "depth": {
            "minimum": 0,
            "type": "integer",
            "description": "Indentation of the row beneath the row above it, counting from zero."
          },
          "pinned": {
            "type": "boolean",
            "description": "True on a row that stays in view when its section is collapsed."
          }
        },
        "additionalProperties": false,
        "description": "One headline figure and the printed line it names."
      },
      "ProfitLossStatementReportData_StatementSummarySection": {
        "required": [
          "key",
          "heading",
          "rows"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The block's identifier, for example assets, liabilities or pl."
          },
          "heading": {
            "type": [
              "string",
              "null"
            ],
            "description": "The block's heading, or null when the block has none."
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ProfitLossStatementReportData_StatementSummaryRow"
            },
            "description": "The rows of the block, in display order."
          }
        },
        "additionalProperties": false,
        "description": "A block of headline rows under one heading."
      },
      "ProgressCounts": {
        "required": [
          "completed",
          "total"
        ],
        "type": "object",
        "properties": {
          "completed": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          },
          "total": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          }
        },
        "description": "How much of the work is finished: `completed` out of\n    `total`. Both are zero until the totals are known."
      },
      "QueryExtractionsBulkRequest": {
        "required": [
          "document_ids"
        ],
        "type": "object",
        "properties": {
          "document_ids": {
            "maxItems": 200,
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "1 to 200 document ids (24-character ids)."
          },
          "loan_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "category": {
            "type": [
              "string",
              "null"
            ]
          },
          "section": {
            "type": [
              "string",
              "null"
            ]
          },
          "year": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "description": "Four-digit fiscal year, 2000 up to next year.",
            "format": "int32"
          },
          "search": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "ReplayWebhookDeliveryResponse": {
        "required": [
          "delivery_id",
          "scheduled_at"
        ],
        "type": "object",
        "properties": {
          "delivery_id": {
            "type": "string",
            "format": "uuid"
          },
          "scheduled_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "ReportData": {
        "title": "Report Data",
        "type": "object",
        "anyOf": [
          {
            "$ref": "#/components/schemas/TaxReturnReportData"
          },
          {
            "$ref": "#/components/schemas/PersonalFinancialStatementReportData"
          },
          {
            "$ref": "#/components/schemas/BalanceSheetReportData"
          },
          {
            "$ref": "#/components/schemas/ProfitLossStatementReportData"
          },
          {
            "$ref": "#/components/schemas/CashFlowStatementReportData"
          },
          {
            "$ref": "#/components/schemas/DebtScheduleReportData"
          },
          {
            "$ref": "#/components/schemas/BankStatementReportData"
          },
          {
            "$ref": "#/components/schemas/ArAgingReportData"
          },
          {
            "$ref": "#/components/schemas/ApAgingReportData"
          },
          {
            "$ref": "#/components/schemas/BankStatementAccountReportData"
          },
          {
            "type": "object",
            "description": "A category with no published family schema (for example a W-2 or a business plan) returns the extracted object without a published shape."
          }
        ],
        "description": "The extracted object stored for a document, in the shape of its family: a tax return, a personal financial statement, a balance sheet, a profit and loss statement, a cash flow statement, a debt schedule, a bank statement, or an accounts receivable or payable aging. A category with no published family schema returns the extracted object without a published shape.",
        "x-spreadspace-family": "report_data"
      },
      "RotateWebhookEndpointResponse": {
        "required": [
          "signing_secret",
          "signing_secret_prefix",
          "rotated_at",
          "previous_secret_revokes_at"
        ],
        "type": "object",
        "properties": {
          "signing_secret": {
            "type": "string"
          },
          "signing_secret_prefix": {
            "type": "string"
          },
          "rotated_at": {
            "type": "string",
            "format": "date-time"
          },
          "previous_secret_revokes_at": {
            "type": "string",
            "description": "When the previous signing secret leaves its grace window and stops\nsigning (24h after the rotation by default). Customers should rotate\ntheir stored secret before this timestamp.",
            "format": "date-time"
          }
        }
      },
      "SandboxResetResponse": {
        "required": [
          "reset",
          "sandbox_tenant_present",
          "reseeded",
          "external_purge_errors"
        ],
        "type": "object",
        "properties": {
          "reset": {
            "type": "boolean",
            "description": "True when the reset ran."
          },
          "sandbox_tenant_present": {
            "type": "boolean",
            "description": "True when the workspace had a test sandbox to reset."
          },
          "reseeded": {
            "type": "boolean",
            "description": "True when the sample documents were reseeded."
          },
          "external_purge_errors": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "description": "How many stored artifacts could not be purged. 0 is a clean reset; a non-zero count means some old processing artifacts survived and the next reset retries them.",
            "format": "int32"
          }
        },
        "description": "Outcome of a test-sandbox reset."
      },
      "SetFinEbitdaAddbacksRequest": {
        "required": [
          "selections"
        ],
        "type": "object",
        "properties": {
          "selections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/FinEbitdaAddbackDto"
            }
          }
        },
        "description": "Replace one company scope's whole company-reported add-back\n    selection set on the loan. The scope comes from the `entityKey` query\n    parameter (absent = the whole-loan scope), and other scopes are\n    untouched."
      },
      "SpreadAttributeSnapshotResponse": {
        "required": [
          "snapshot_id",
          "version",
          "status",
          "created_at",
          "payload",
          "manifest"
        ],
        "type": "object",
        "properties": {
          "snapshot_id": {
            "type": "string"
          },
          "version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "description": "Per-loan version number, counting up across every status.",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "description": "`final` (what an analyst approved at finalize),\n    `machine` (the same loan built from the documents alone, with no\n    analyst input) or `draft` (the latest autosave)."
          },
          "spread_board_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The saved spread these values were taken from, when one is\n    known."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "finalized_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "When the analyst finalized. Set on `final` snapshots\n    only.",
            "format": "date-time"
          },
          "finalized_by": {
            "type": [
              "string",
              "null"
            ],
            "description": "Display name of the analyst who finalized the spread\n    (`final` and `machine` snapshots); null on drafts and for\n    callers who may not see names."
          },
          "finalized_by_external_user_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The `external_user_id` your embed session named for the analyst who\nfinalized. It is your own identifier for that user, not a person's name,\nso it is returned to every caller and a backend can join it to its own user\ntable. Null on drafts, and null when the finalize happened in the\nSpreadSpace workspace or under an embed session that named no user."
          },
          "payload": {
            "description": "The figures, in the `attributes.v1` payload schema:\n    the fiscal periods, the named attributes and ratios keyed over them,\n    and the analyst inputs that shaped them. Stored opaque and returned as\n    stored; the name-by-name catalog is on the Spreads page in the API\n    docs. An API key receives values only, with source-provenance geometry\n    stripped at every depth.",
            "$ref": "#/components/schemas/JsonElement"
          },
          "manifest": {
            "description": "What the payload was built from: the documents it drew on, a\n    count-level summary of the analyst inputs, the entity scope, and when\n    it was built. Stored opaque, documented alongside the payload on the\n    Spreads page, and stripped of source-provenance geometry for an API key\n    like the payload is.",
            "$ref": "#/components/schemas/JsonElement"
          }
        },
        "description": "One snapshot of a loan's attribute values, with its payload and\n    manifest."
      },
      "SpreadAttributeSnapshotSummaryResponse": {
        "required": [
          "snapshot_id",
          "version",
          "status",
          "created_at"
        ],
        "type": "object",
        "properties": {
          "snapshot_id": {
            "type": "string"
          },
          "version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "description": "Per-loan version number, counting up across every status.",
            "format": "int32"
          },
          "status": {
            "type": "string",
            "description": "`final` (what an analyst approved at finalize),\n    `machine` (the same loan built from the documents alone, with no\n    analyst input) or `draft` (an autosave)."
          },
          "spread_board_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The saved spread these values were taken from, when one is\n    known."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "finalized_at": {
            "type": [
              "string",
              "null"
            ],
            "description": "When the analyst finalized. Set on `final` snapshots\n    only.",
            "format": "date-time"
          },
          "finalized_by": {
            "type": [
              "string",
              "null"
            ],
            "description": "Display name of the analyst who finalized the spread\n    (`final` and `machine` snapshots); null on drafts and for\n    callers who may not see names."
          },
          "finalized_by_external_user_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The `external_user_id` your embed session named for the analyst who\nfinalized. It is your own identifier for that user, not a person's name,\nso it is returned to every caller and a backend can join it to its own user\ntable. Null on drafts, and null when the finalize happened in the\nSpreadSpace workspace or under an embed session that named no user."
          }
        },
        "description": "Versions-list row: the snapshot's identity and timing, never its\n    figures. Fetch one by id for the payload and manifest."
      },
      "SpreadAttributeVersionsResponse": {
        "required": [
          "loan_id",
          "snapshots"
        ],
        "type": "object",
        "properties": {
          "loan_id": {
            "type": "string"
          },
          "snapshots": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/SpreadAttributeSnapshotSummaryResponse"
            }
          }
        },
        "description": "The loan's snapshot history, newest first, at most 200 entries and\n    not paginated."
      },
      "SpreadAttributesResponse": {
        "required": [
          "loan_id",
          "snapshot"
        ],
        "type": "object",
        "properties": {
          "loan_id": {
            "type": "string"
          },
          "snapshot": {
            "oneOf": [
              {
                "type": "null"
              },
              {
                "$ref": "#/components/schemas/SpreadAttributeSnapshotResponse"
              }
            ]
          }
        },
        "description": "The latest-snapshot envelope: `snapshot` is null when the\n    loan has none of the requested status yet, which is the normal answer for a\n    loan nobody has finalized, not an error. The envelope never changes\n    shape."
      },
      "SpreadFinalizedEvent": {
        "required": [
          "id",
          "type",
          "created",
          "tenant_id",
          "livemode",
          "data"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^evt_[0-9a-f]{24}$",
            "type": "string",
            "description": "Event id: `evt_` plus 24 lowercase hex characters. Also sent as the `SpreadSpace-Event-Id` header. Stable across retries and replays, so dedupe on it.",
            "example": "evt_4b8c1d2e3f405162738495a6"
          },
          "type": {
            "enum": [
              "spread.finalized"
            ],
            "type": "string",
            "description": "Always this event type on this body."
          },
          "created": {
            "type": "integer",
            "description": "Seconds since the Unix epoch at which the event was created server-side. Seconds, not milliseconds. Deliveries are not ordered; reconcile on this.",
            "format": "int64",
            "example": 1700000000
          },
          "tenant_id": {
            "type": "string",
            "description": "The workspace the event belongs to. Reject a delivery whose tenant does not match the endpoint you registered."
          },
          "livemode": {
            "type": "boolean",
            "description": "`true` for live activity, `false` for test mode (an `ss_test_` key or the sandbox simulator). Branch on it to route test deliveries to a staging handler."
          },
          "data": {
            "$ref": "#/components/schemas/SpreadFinalizedPayload"
          }
        },
        "description": "Body of a `spread.finalized` delivery."
      },
      "SpreadFinalizedPayload": {
        "required": [
          "loan_id",
          "borrower_id",
          "spread_board_id",
          "snapshot_id",
          "machine_snapshot_id",
          "version",
          "finalized_at"
        ],
        "type": "object",
        "properties": {
          "loan_id": {
            "type": "string",
            "description": "The loan whose spread was finalized."
          },
          "borrower_id": {
            "type": "string",
            "description": "The borrower that owns the loan."
          },
          "spread_board_id": {
            "type": "string",
            "description": "The saved spread board that was finalized."
          },
          "snapshot_id": {
            "type": "string",
            "description": "The `final` snapshot this finalize created."
          },
          "machine_snapshot_id": {
            "type": "string",
            "description": "The `machine` snapshot created with it: the same loan built from the documents alone, with no analyst input."
          },
          "version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "description": "The final snapshot's per-loan version number.",
            "format": "int32"
          },
          "finalized_at": {
            "type": "string",
            "description": "Server-side wall-clock time of the finalize.",
            "format": "date-time"
          }
        },
        "description": "The `data` object on a `spread.finalized` delivery, sent once per\nfinalize: an analyst pressed Finalize on a saved spread board, the server\nminted the loan's `machine` snapshot (documents only) and then its\n`final` snapshot (the frozen working values), and locked the board.\n\nA pointer, not a payload: ids and the version only, no figures and no names.\nThe frozen values are served by the authenticated\n`GET /api/loans/{loan_id}/attributes` (latest final) or\n`GET /api/loans/{loan_id}/attributes/{snapshot_id}`, where the caller's\nown scope and plan apply."
      },
      "SpreadReopenedEvent": {
        "required": [
          "id",
          "type",
          "created",
          "tenant_id",
          "livemode",
          "data"
        ],
        "type": "object",
        "properties": {
          "id": {
            "pattern": "^evt_[0-9a-f]{24}$",
            "type": "string",
            "description": "Event id: `evt_` plus 24 lowercase hex characters. Also sent as the `SpreadSpace-Event-Id` header. Stable across retries and replays, so dedupe on it.",
            "example": "evt_4b8c1d2e3f405162738495a6"
          },
          "type": {
            "enum": [
              "spread.reopened"
            ],
            "type": "string",
            "description": "Always this event type on this body."
          },
          "created": {
            "type": "integer",
            "description": "Seconds since the Unix epoch at which the event was created server-side. Seconds, not milliseconds. Deliveries are not ordered; reconcile on this.",
            "format": "int64",
            "example": 1700000000
          },
          "tenant_id": {
            "type": "string",
            "description": "The workspace the event belongs to. Reject a delivery whose tenant does not match the endpoint you registered."
          },
          "livemode": {
            "type": "boolean",
            "description": "`true` for live activity, `false` for test mode (an `ss_test_` key or the sandbox simulator). Branch on it to route test deliveries to a staging handler."
          },
          "data": {
            "$ref": "#/components/schemas/SpreadReopenedPayload"
          }
        },
        "description": "Body of a `spread.reopened` delivery."
      },
      "SpreadReopenedPayload": {
        "required": [
          "loan_id",
          "borrower_id",
          "spread_board_id",
          "snapshot_id",
          "version",
          "reopened_at"
        ],
        "type": "object",
        "properties": {
          "loan_id": {
            "type": "string",
            "description": "The loan whose spread was reopened."
          },
          "borrower_id": {
            "type": "string",
            "description": "The borrower that owns the loan."
          },
          "spread_board_id": {
            "type": "string",
            "description": "The saved spread board that was reopened."
          },
          "snapshot_id": {
            "type": "string",
            "description": "The `final` snapshot that was in force when the board was reopened. Kept and unchanged; the next finalize mints a new version alongside it."
          },
          "version": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "description": "That snapshot's per-loan version number.",
            "format": "int32"
          },
          "reopened_at": {
            "type": "string",
            "description": "Server-side wall-clock time of the reopen.",
            "format": "date-time"
          }
        },
        "description": "The `data` object on a `spread.reopened` delivery, sent once per\nreopen: an analyst reopened a finalized spread to edit it. The board is\nunlocked and the `final` snapshot it pointed at is kept unchanged, but\nthe figures are under revision until the next `spread.finalized`, so a\nreceiver holding a copy should mark it stale.\n\nA pointer, not a payload: ids and the version only, no figures and no\nnames."
      },
      "TaxReturnReportData": {
        "title": "Tax Return",
        "type": "object",
        "oneOf": [
          {
            "$ref": "#/components/schemas/TaxReturnReportData_TaxReturn1065"
          },
          {
            "$ref": "#/components/schemas/TaxReturnReportData_TaxReturn1120"
          },
          {
            "$ref": "#/components/schemas/TaxReturnReportData_TaxReturn1120S"
          },
          {
            "$ref": "#/components/schemas/TaxReturnReportData_TaxReturn1040"
          },
          {
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleK1Partner"
          },
          {
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleK1Shareholder"
          }
        ],
        "description": "An extracted federal tax return: Form 1065, Form 1120, Form 1120-S, Form 1040, or a Schedule K-1 filed on its own. The form value names the branch. Returns for tax years 2020 through 2026 are accepted. One key set serves every accepted year: a key reads the same line on each year's form, and a line a year's form does not print is null. Money is a string of the printed figure.",
        "discriminator": {
          "propertyName": "form",
          "mapping": {
            "1065": "#/components/schemas/TaxReturnReportData_TaxReturn1065",
            "1120": "#/components/schemas/TaxReturnReportData_TaxReturn1120",
            "1120S": "#/components/schemas/TaxReturnReportData_TaxReturn1120S",
            "1040": "#/components/schemas/TaxReturnReportData_TaxReturn1040",
            "1065-K1": "#/components/schemas/TaxReturnReportData_ScheduleK1Partner",
            "1120-S-K1": "#/components/schemas/TaxReturnReportData_ScheduleK1Shareholder"
          }
        },
        "x-spreadspace-discriminator": {
          "propertyName": "form"
        },
        "x-spreadspace-family": "tax_return",
        "x-spreadspace-document-categories": [
          "1065",
          "form_1065",
          "tax_partnership_1065",
          "tax_return_business",
          "1120s",
          "form_1120s",
          "tax_scorp_1120s",
          "1120",
          "form_1120",
          "tax_ccorp_1120",
          "1040",
          "form_1040",
          "tax_return_personal",
          "1040sr",
          "form_1040_sr",
          "1065_schedule_k1",
          "schedule_k1_1065",
          "1120s_schedule_k1",
          "schedule_k1_1120s",
          "k1_standalone",
          "k1",
          "schedule_k1",
          "k_1_standalone",
          "standalone_k1"
        ]
      },
      "TaxReturnReportDataListItem": {
        "required": [
          "extracted_document_id",
          "document_category",
          "report_data"
        ],
        "type": "object",
        "properties": {
          "extracted_document_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "Identifier of the extracted document."
          },
          "document_category": {
            "type": "string",
            "description": "The document category the extraction is stored under."
          },
          "report_data": {
            "description": "The extracted object, in the family's shape.",
            "$ref": "#/components/schemas/TaxReturnReportData"
          }
        },
        "additionalProperties": false,
        "description": "One row of the Tax Return list: the document's identity and its extracted object."
      },
      "TaxReturnReportDataListResponse": {
        "required": [
          "borrower_id",
          "returns"
        ],
        "type": "object",
        "properties": {
          "borrower_id": {
            "pattern": "^[0-9a-f]{24}$",
            "type": "string",
            "description": "The borrower the documents belong to."
          },
          "returns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportDataListItem"
            },
            "description": "One row per document."
          }
        },
        "additionalProperties": false,
        "description": "Every usable Tax Return document on the borrower's file, one row per document."
      },
      "TaxReturnReportData_AffiliatedEntity": {
        "required": [
          "name",
          "tin_last4",
          "tin_kind",
          "entity_type",
          "country",
          "pct_owned",
          "qsub_date",
          "relationship"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of the entity."
          },
          "tin_last4": {
            "type": [
              "string",
              "null"
            ],
            "description": "The entity's taxpayer identification number, last four digits only."
          },
          "tin_kind": {
            "type": [
              "string",
              "null"
            ],
            "description": "Whether the identification number is an EIN or an SSN."
          },
          "entity_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "Type of entity as printed: corporation, partnership, individual, trust, and so on."
          },
          "country": {
            "type": [
              "string",
              "null"
            ],
            "description": "Country of organization or citizenship, when printed."
          },
          "pct_owned": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Percentage owned, as printed."
          },
          "qsub_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "Date of the qualified subchapter S subsidiary election, when printed.",
            "x-spreadspace-format": "printed"
          },
          "relationship": {
            "type": [
              "string",
              "null"
            ],
            "description": "Whether the entity is an owner of the filer or a subsidiary of it."
          }
        },
        "additionalProperties": false,
        "description": "One entity listed on a corporate return's ownership schedules."
      },
      "TaxReturnReportData_AmortizationRow": {
        "required": [
          "description",
          "date_begins",
          "amortizable_amount",
          "code_section",
          "period_or_pct",
          "amortization_this_year"
        ],
        "type": "object",
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (a), description of costs."
          },
          "date_begins": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (b), date amortization begins, as printed.",
            "x-spreadspace-format": "printed"
          },
          "amortizable_amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (c), amortizable amount.",
            "x-spreadspace-unit": "money"
          },
          "code_section": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (d), code section, as printed."
          },
          "period_or_pct": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (e), amortization period or percentage, as printed."
          },
          "amortization_this_year": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (f), amortization for this year.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One row of Form 4562, Part VI line 42, amortization of costs that begin during the year."
      },
      "TaxReturnReportData_AmortizationScheduleRow": {
        "required": [
          "description",
          "date_began",
          "amort_amount",
          "code_section",
          "life_or_rate",
          "accum_amort",
          "amort_this_year"
        ],
        "type": "object",
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Description of the costs."
          },
          "date_began": {
            "type": [
              "string",
              "null"
            ],
            "description": "Date the amortization began, as printed.",
            "x-spreadspace-format": "printed"
          },
          "amort_amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Amortizable amount.",
            "x-spreadspace-unit": "money"
          },
          "code_section": {
            "type": [
              "string",
              "null"
            ],
            "description": "Code section."
          },
          "life_or_rate": {
            "type": [
              "string",
              "null"
            ],
            "description": "Amortization period or percentage, as printed."
          },
          "accum_amort": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Accumulated amortization.",
            "x-spreadspace-unit": "money"
          },
          "amort_this_year": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Amortization for this year.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One row of a Form 4562 Part VI amortization statement, in the form's own columns."
      },
      "TaxReturnReportData_AnalysisOfNetIncome": {
        "required": [
          "line_1_net_income_loss",
          "line_2a_corporate",
          "line_2a_individual_active",
          "line_2a_individual_passive",
          "line_2a_partnership",
          "line_2a_exempt_org",
          "line_2a_nominee_other",
          "line_2b_corporate",
          "line_2b_individual_active",
          "line_2b_individual_passive",
          "line_2b_partnership",
          "line_2b_exempt_org",
          "line_2b_nominee_other"
        ],
        "type": "object",
        "properties": {
          "line_1_net_income_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, net income (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_2a_corporate": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2a, general partners: corporate.",
            "x-spreadspace-unit": "money"
          },
          "line_2a_individual_active": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2a, general partners: individual (active).",
            "x-spreadspace-unit": "money"
          },
          "line_2a_individual_passive": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2a, general partners: individual (passive).",
            "x-spreadspace-unit": "money"
          },
          "line_2a_partnership": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2a, general partners: partnership.",
            "x-spreadspace-unit": "money"
          },
          "line_2a_exempt_org": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2a, general partners: exempt organization.",
            "x-spreadspace-unit": "money"
          },
          "line_2a_nominee_other": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2a, general partners: nominee or other.",
            "x-spreadspace-unit": "money"
          },
          "line_2b_corporate": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2b, limited partners: corporate.",
            "x-spreadspace-unit": "money"
          },
          "line_2b_individual_active": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2b, limited partners: individual (active).",
            "x-spreadspace-unit": "money"
          },
          "line_2b_individual_passive": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2b, limited partners: individual (passive).",
            "x-spreadspace-unit": "money"
          },
          "line_2b_partnership": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2b, limited partners: partnership.",
            "x-spreadspace-unit": "money"
          },
          "line_2b_exempt_org": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2b, limited partners: exempt organization.",
            "x-spreadspace-unit": "money"
          },
          "line_2b_nominee_other": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2b, limited partners: nominee or other.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Analysis of net income (loss) per return, Form 1065 page 5: net income and its split by partner type."
      },
      "TaxReturnReportData_BalanceSheetLine": {
        "required": [
          "beginning",
          "ending",
          "net_beginning",
          "net_ending"
        ],
        "type": "object",
        "properties": {
          "beginning": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Beginning of tax year, column (a) or the printed gross figure.",
            "x-spreadspace-unit": "money"
          },
          "ending": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "End of tax year, column (c) or the printed gross figure.",
            "x-spreadspace-unit": "money"
          },
          "net_beginning": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Beginning of tax year net of the contra line, column (b), where the line prints one.",
            "x-spreadspace-unit": "money"
          },
          "net_ending": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "End of tax year net of the contra line, column (d), where the line prints one.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One line of Schedule L: the beginning and end of year amounts, and the net amounts where the line prints a contra column."
      },
      "TaxReturnReportData_CapitalGainsLine": {
        "required": [
          "proceeds",
          "cost_basis",
          "adjustments",
          "gain_loss"
        ],
        "type": "object",
        "properties": {
          "proceeds": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (d), proceeds (sales price).",
            "x-spreadspace-unit": "money"
          },
          "cost_basis": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (e), cost or other basis.",
            "x-spreadspace-unit": "money"
          },
          "adjustments": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (g), adjustments to gain or loss.",
            "x-spreadspace-unit": "money"
          },
          "gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (h), gain or loss.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One line of Schedule D with its four columns."
      },
      "TaxReturnReportData_ConsolidatedGroupMember": {
        "required": [
          "name",
          "ein_last4"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The member's name."
          },
          "ein_last4": {
            "type": [
              "string",
              "null"
            ],
            "description": "The member's employer identification number, last four digits only."
          }
        },
        "additionalProperties": false,
        "description": "One member of a consolidated group."
      },
      "TaxReturnReportData_ConsolidatedReturnStatements": {
        "required": [
          "statements",
          "members"
        ],
        "type": "object",
        "properties": {
          "statements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ConsolidatedStatement"
            },
            "description": "One entry per consolidating statement."
          },
          "members": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ConsolidatedGroupMember"
            },
            "description": "The members of the consolidated group, as the statements name them."
          }
        },
        "additionalProperties": false,
        "description": "The consolidating statements attached to a consolidated Form 1120: each statement's columns by member and its rows."
      },
      "TaxReturnReportData_ConsolidatedStatement": {
        "required": [
          "kind",
          "title",
          "columns",
          "rows",
          "form_code"
        ],
        "type": "object",
        "properties": {
          "kind": {
            "enum": [
              "income_deductions",
              "beginning_balance_sheet",
              "ending_balance_sheet_m2",
              "schedule_m1"
            ],
            "type": "string",
            "description": "Which schedule the statement consolidates: income_deductions, beginning_balance_sheet, ending_balance_sheet_m2 or schedule_m1."
          },
          "title": {
            "type": "string",
            "description": "The statement's printed title."
          },
          "columns": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ConsolidatedStatementColumn"
            },
            "description": "The statement's columns, in print order."
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ConsolidatedStatementRow"
            },
            "description": "The statement's rows, in print order."
          },
          "form_code": {
            "type": [
              "string",
              "null"
            ],
            "description": "The form or schedule the statement consolidates, as printed."
          }
        },
        "additionalProperties": false,
        "description": "One consolidating statement: a schedule of the return spread across the group's members."
      },
      "TaxReturnReportData_ConsolidatedStatementColumn": {
        "required": [
          "key",
          "role",
          "label",
          "ein_last4"
        ],
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "The key the column's figures carry on each row."
          },
          "role": {
            "enum": [
              "consolidated",
              "adjustments",
              "eliminations",
              "combined",
              "member"
            ],
            "type": "string",
            "description": "What the column holds: consolidated, adjustments, eliminations, combined, or member for one group member."
          },
          "label": {
            "type": "string",
            "description": "The column header as printed."
          },
          "ein_last4": {
            "type": [
              "string",
              "null"
            ],
            "description": "For a member column, the member's employer identification number, last four digits only."
          }
        },
        "additionalProperties": false,
        "description": "One column of a consolidating statement."
      },
      "TaxReturnReportData_ConsolidatedStatementRow": {
        "required": [
          "label",
          "canonical_key",
          "section",
          "indent",
          "is_section",
          "is_total",
          "stmt_ref",
          "values",
          "foots"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "The row's label as printed."
          },
          "canonical_key": {
            "type": [
              "string",
              "null"
            ],
            "description": "The return line the row corresponds to, when it corresponds to one."
          },
          "section": {
            "type": [
              "string",
              "null"
            ],
            "description": "The section heading the row sits under, when any."
          },
          "indent": {
            "type": "integer",
            "description": "Indentation level of the row, counting from zero."
          },
          "is_section": {
            "type": "boolean",
            "description": "True when the row is a section heading."
          },
          "is_total": {
            "type": "boolean",
            "description": "True when the row is a printed total."
          },
          "stmt_ref": {
            "type": [
              "string",
              "null"
            ],
            "description": "The statement number the row refers to, when it prints one."
          },
          "values": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?\\d+\\.\\d{2}$",
              "type": "string",
              "x-spreadspace-unit": "money"
            },
            "description": "The row's figure per column, keyed by column key."
          },
          "foots": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "For a total row, whether the columns above add up to it; null when not a total."
          }
        },
        "additionalProperties": false,
        "description": "One row of a consolidating statement."
      },
      "TaxReturnReportData_DepreciationRegister": {
        "required": [
          "book",
          "engine",
          "tax_year",
          "form_codes",
          "variants",
          "pages",
          "rows",
          "verification",
          "n_assets"
        ],
        "type": "object",
        "properties": {
          "book": {
            "type": "string",
            "description": "The book the register keeps, for example federal, state or alternative minimum tax."
          },
          "engine": {
            "type": "string",
            "description": "The tax software family whose register layout the pages follow."
          },
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year printed on the register."
          },
          "activity_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The business or activity the register is for, when the packet prints one per activity."
          },
          "activity_form": {
            "type": [
              "string",
              "null"
            ],
            "description": "The form the activity is reported on, when the register names it."
          },
          "activity_index": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The activity's number, when the register numbers them."
          },
          "form_codes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The form codes printed on the register's pages."
          },
          "variants": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The page layouts the register was printed in."
          },
          "pages": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_DepreciationRegisterPage"
            },
            "description": "The pages the register occupies."
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_DepreciationRegisterRow"
            },
            "description": "The register's rows in print order: assets and printed totals."
          },
          "verification": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_DepreciationRegisterCheck"
            },
            "description": "Each printed total checked against the rows above it."
          },
          "n_assets": {
            "type": "integer",
            "description": "Number of asset rows in the register."
          }
        },
        "additionalProperties": false,
        "description": "One printed depreciation or amortization register: its assets, its pages, and its printed totals."
      },
      "TaxReturnReportData_DepreciationRegisterCheck": {
        "required": [
          "page",
          "label",
          "column",
          "printed",
          "computed",
          "tie",
          "delta"
        ],
        "type": "object",
        "properties": {
          "page": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Page of the uploaded file the total is printed on, counting from one."
          },
          "label": {
            "type": "string",
            "description": "The total's printed label."
          },
          "column": {
            "type": "string",
            "description": "The column the total is for."
          },
          "printed": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The figure as printed.",
            "x-spreadspace-unit": "money"
          },
          "computed": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The figure the rows add up to.",
            "x-spreadspace-unit": "money"
          },
          "tie": {
            "enum": [
              "section",
              "cumulative",
              "stream",
              "stream_cumulative",
              "statement",
              "period",
              "activity",
              "empty",
              "suffix",
              "prefix",
              "off"
            ],
            "type": "string",
            "description": "Which rows the printed figure agrees with: the section above it, the cumulative run, an empty section, a suffix or prefix of the run, a period, an activity, or off when it agrees with none."
          },
          "delta": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The difference between the rows and the printed figure when they disagree, else 0.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "A printed total compared with the rows it covers."
      },
      "TaxReturnReportData_DepreciationRegisterPage": {
        "required": [
          "page",
          "width",
          "height",
          "rotated",
          "variant"
        ],
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "description": "Page of the uploaded file, counting from one."
          },
          "width": {
            "type": "number",
            "description": "Page width in points."
          },
          "height": {
            "type": "number",
            "description": "Page height in points."
          },
          "rotated": {
            "type": "boolean",
            "description": "Whether the page is printed in landscape."
          },
          "variant": {
            "type": "string",
            "description": "The page layout."
          }
        },
        "additionalProperties": false,
        "description": "One page of a register."
      },
      "TaxReturnReportData_DepreciationRegisterRow": {
        "type": "object",
        "properties": {
          "asset_no": {
            "type": [
              "string",
              "null"
            ],
            "description": "Asset number."
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Description of the asset."
          },
          "date_acquired": {
            "type": [
              "string",
              "null"
            ],
            "description": "Date acquired, as printed.",
            "x-spreadspace-format": "printed"
          },
          "method": {
            "type": [
              "string",
              "null"
            ],
            "description": "Depreciation method, as printed."
          },
          "life": {
            "type": [
              "string",
              "null"
            ],
            "description": "Recovery period or life, as printed."
          },
          "convention": {
            "type": [
              "string",
              "null"
            ],
            "description": "Convention, as printed."
          },
          "line_no": {
            "type": [
              "string",
              "null"
            ],
            "description": "The form line the asset is reported on."
          },
          "unadjusted_cost_or_basis": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Unadjusted cost or basis.",
            "x-spreadspace-unit": "money"
          },
          "bus_pct_excl": {
            "type": [
              "string",
              "null"
            ],
            "description": "Business use percentage or exclusion, as printed."
          },
          "section_179_expense": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Section 179 expense.",
            "x-spreadspace-unit": "money"
          },
          "reduction_in_basis": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Reduction in basis.",
            "x-spreadspace-unit": "money"
          },
          "basis_for_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Basis for depreciation.",
            "x-spreadspace-unit": "money"
          },
          "beginning_accumulated_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Accumulated depreciation at the beginning of the year.",
            "x-spreadspace-unit": "money"
          },
          "current_sec_179_expense": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Current-year section 179 expense.",
            "x-spreadspace-unit": "money"
          },
          "current_year_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Current-year deduction.",
            "x-spreadspace-unit": "money"
          },
          "ending_accumulated_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Accumulated depreciation at the end of the year.",
            "x-spreadspace-unit": "money"
          },
          "disposed": {
            "type": "boolean",
            "description": "Whether the asset was disposed of during the year."
          },
          "row_kind": {
            "type": "string",
            "description": "What the row is: an asset, a printed total or subtotal, a heading, or a memo line."
          },
          "page": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Page of the uploaded file the row is printed on, counting from one."
          },
          "grouping": {
            "type": [
              "string",
              "null"
            ],
            "description": "The section heading the row is printed under."
          },
          "date_placed_in_service": {
            "type": [
              "string",
              "null"
            ],
            "description": "Date placed in service, as printed.",
            "x-spreadspace-format": "printed"
          },
          "cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Cost.",
            "x-spreadspace-unit": "money"
          },
          "basis_adjustment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Basis adjustment.",
            "x-spreadspace-unit": "money"
          },
          "business_pct": {
            "type": [
              "string",
              "null"
            ],
            "description": "Business use percentage, as printed."
          },
          "section_179": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Section 179 expense.",
            "x-spreadspace-unit": "money"
          },
          "section_179_period": {
            "type": [
              "string",
              "null"
            ],
            "description": "Whether the section 179 expense is current-year or prior-year, as printed."
          },
          "bonus_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Bonus depreciation.",
            "x-spreadspace-unit": "money"
          },
          "bonus_depreciation_period": {
            "type": [
              "string",
              "null"
            ],
            "description": "Whether the bonus depreciation is current-year or prior-year, as printed."
          },
          "depreciable_basis": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Depreciable basis.",
            "x-spreadspace-unit": "money"
          },
          "rate": {
            "type": [
              "string",
              "null"
            ],
            "description": "Rate, as printed."
          },
          "prior_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Prior depreciation.",
            "x-spreadspace-unit": "money"
          },
          "current_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Current-year depreciation.",
            "x-spreadspace-unit": "money"
          },
          "accumulated_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Accumulated depreciation.",
            "x-spreadspace-unit": "money"
          },
          "amt_current": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Current-year alternative minimum tax depreciation.",
            "x-spreadspace-unit": "money"
          },
          "ubia": {
            "type": "boolean",
            "description": "Whether the asset is marked as qualified property for the qualified business income deduction."
          },
          "asset_description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Description of the asset."
          },
          "code": {
            "type": [
              "string",
              "null"
            ],
            "description": "The code printed on the row."
          },
          "date_in_service": {
            "type": [
              "string",
              "null"
            ],
            "description": "Date placed in service, as printed.",
            "x-spreadspace-format": "printed"
          },
          "cost_net_of_land": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Cost net of land.",
            "x-spreadspace-unit": "money"
          },
          "land": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Land.",
            "x-spreadspace-unit": "money"
          },
          "bus_use_pct": {
            "type": [
              "string",
              "null"
            ],
            "description": "Business use percentage, as printed."
          },
          "special_depreciation_allowance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Special depreciation allowance.",
            "x-spreadspace-unit": "money"
          },
          "method_convention": {
            "type": [
              "string",
              "null"
            ],
            "description": "Method and convention, as printed."
          },
          "sold": {
            "type": "boolean",
            "description": "Whether the asset was sold during the year."
          },
          "section": {
            "type": [
              "string",
              "null"
            ],
            "description": "The register section the row is printed in, for example depreciation or amortization."
          },
          "section_179_reduction_in_basis": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Section 179 reduction in basis.",
            "x-spreadspace-unit": "money"
          },
          "basis_reduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Basis reduction.",
            "x-spreadspace-unit": "money"
          },
          "acrs_class": {
            "type": [
              "string",
              "null"
            ],
            "description": "ACRS class, as printed."
          },
          "macrs_class": {
            "type": [
              "string",
              "null"
            ],
            "description": "MACRS class, as printed."
          },
          "current_year_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Current-year depreciation.",
            "x-spreadspace-unit": "money"
          },
          "cost_or_basis": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Cost or basis.",
            "x-spreadspace-unit": "money"
          },
          "beginning_accumulated_amortization": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Accumulated amortization at the beginning of the year.",
            "x-spreadspace-unit": "money"
          },
          "ending_accumulated_amortization": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Accumulated amortization at the end of the year.",
            "x-spreadspace-unit": "money"
          },
          "current_year_amortization": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Current-year amortization.",
            "x-spreadspace-unit": "money"
          },
          "table": {
            "type": "string",
            "description": "The table the row is printed in."
          },
          "retired": {
            "type": "boolean",
            "description": "Whether the asset was retired during the year."
          },
          "date_sold": {
            "type": [
              "string",
              "null"
            ],
            "description": "Date sold, as printed.",
            "x-spreadspace-format": "printed"
          },
          "bus_pct": {
            "type": [
              "string",
              "null"
            ],
            "description": "Business use percentage, as printed."
          },
          "current_179_bonus": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Current-year section 179 expense and bonus depreciation.",
            "x-spreadspace-unit": "money"
          },
          "prior_179_bonus_sp_depr": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Prior-year section 179 expense, bonus and special depreciation.",
            "x-spreadspace-unit": "money"
          },
          "prior_declining_balance_depr": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Prior-year declining balance depreciation.",
            "x-spreadspace-unit": "money"
          },
          "salvage_or_basis_reduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Salvage value or basis reduction.",
            "x-spreadspace-unit": "money"
          },
          "current_179_sda": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Current-year section 179 expense and special depreciation allowance.",
            "x-spreadspace-unit": "money"
          },
          "prior_179_sda_depr": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Prior-year section 179 expense, special depreciation allowance and depreciation.",
            "x-spreadspace-unit": "money"
          },
          "form_context": {
            "type": [
              "string",
              "null"
            ],
            "description": "The form the row is reported on, as printed."
          },
          "variant": {
            "type": [
              "string",
              "null"
            ],
            "description": "The page layout the row was printed in."
          },
          "section_179_elected": {
            "type": "boolean",
            "description": "Whether the section 179 election is marked for the asset."
          },
          "bonus_elected": {
            "type": "boolean",
            "description": "Whether the bonus depreciation election is marked for the asset."
          },
          "tax_cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Cost for tax purposes.",
            "x-spreadspace-unit": "money"
          },
          "tax_section_179_expense": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Section 179 expense for tax purposes.",
            "x-spreadspace-unit": "money"
          },
          "current_bonus": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Current-year bonus depreciation.",
            "x-spreadspace-unit": "money"
          },
          "prior_bonus": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Prior-year bonus depreciation.",
            "x-spreadspace-unit": "money"
          },
          "tax_basis_for_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Basis for depreciation for tax purposes.",
            "x-spreadspace-unit": "money"
          },
          "item_no": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item number."
          },
          "asset_code": {
            "type": [
              "string",
              "null"
            ],
            "description": "Asset code, as printed."
          },
          "business_use_pct": {
            "type": [
              "string",
              "null"
            ],
            "description": "Business use percentage, as printed."
          },
          "cost_or_other_basis": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Cost or other basis.",
            "x-spreadspace-unit": "money"
          },
          "section_179_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Section 179 deduction.",
            "x-spreadspace-unit": "money"
          },
          "credit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Credit.",
            "x-spreadspace-unit": "money"
          },
          "special_allowance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Special depreciation allowance.",
            "x-spreadspace-unit": "money"
          },
          "salvage_value": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Salvage value.",
            "x-spreadspace-unit": "money"
          },
          "recovery_basis": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Recovery basis.",
            "x-spreadspace-unit": "money"
          },
          "recovery_period": {
            "type": [
              "string",
              "null"
            ],
            "description": "Recovery period, as printed."
          },
          "convention_code": {
            "type": [
              "string",
              "null"
            ],
            "description": "Convention code, as printed."
          },
          "prior_deprec_179_bonus": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Prior depreciation, section 179 expense and bonus depreciation.",
            "x-spreadspace-unit": "money"
          },
          "current_deprec": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Current-year depreciation.",
            "x-spreadspace-unit": "money"
          },
          "accumulated_deprec": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Accumulated depreciation.",
            "x-spreadspace-unit": "money"
          },
          "depreciation_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Depreciation deduction.",
            "x-spreadspace-unit": "money"
          },
          "elected_section_179_cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Elected section 179 cost.",
            "x-spreadspace-unit": "money"
          },
          "business_miles": {
            "type": [
              "string",
              "null"
            ],
            "description": "Business miles driven, as printed."
          },
          "commuting_miles": {
            "type": [
              "string",
              "null"
            ],
            "description": "Commuting miles driven, as printed."
          },
          "personal_miles": {
            "type": [
              "string",
              "null"
            ],
            "description": "Other personal miles driven, as printed."
          },
          "total_miles": {
            "type": [
              "string",
              "null"
            ],
            "description": "Total miles driven, as printed."
          },
          "personal_use_off_duty_yes": {
            "type": [
              "string",
              "null"
            ],
            "description": "The yes mark for personal use during off-duty hours, as printed."
          },
          "personal_use_off_duty_no": {
            "type": [
              "string",
              "null"
            ],
            "description": "The no mark for personal use during off-duty hours, as printed."
          },
          "owner_over_5_pct_yes": {
            "type": [
              "string",
              "null"
            ],
            "description": "The yes mark for use by a more than 5 percent owner, as printed."
          },
          "owner_over_5_pct_no": {
            "type": [
              "string",
              "null"
            ],
            "description": "The no mark for use by a more than 5 percent owner, as printed."
          },
          "another_vehicle_available_yes": {
            "type": [
              "string",
              "null"
            ],
            "description": "The yes mark for another vehicle available for personal use, as printed."
          },
          "another_vehicle_available_no": {
            "type": [
              "string",
              "null"
            ],
            "description": "The no mark for another vehicle available for personal use, as printed."
          },
          "marker": {
            "type": [
              "string",
              "null"
            ],
            "description": "A marker printed beside the row."
          },
          "flag_anomalies": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Cells printed on the row that do not read as the column expects, keyed by column."
          }
        },
        "additionalProperties": false,
        "description": "One row of a register: an asset, a printed total, or a heading. Each register layout prints its own columns, so a row carries only the keys its layout prints."
      },
      "TaxReturnReportData_DepreciationReports": {
        "required": [
          "version",
          "registers"
        ],
        "type": "object",
        "properties": {
          "version": {
            "type": "integer",
            "description": "Version of this object's shape."
          },
          "registers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_DepreciationRegister"
            },
            "description": "One entry per printed register."
          }
        },
        "additionalProperties": false,
        "description": "The depreciation and amortization registers printed in the packet."
      },
      "TaxReturnReportData_EntityHeader": {
        "required": [
          "tax_year",
          "entity_name",
          "ein",
          "address_street",
          "address_city",
          "address_state",
          "address_zip",
          "date_started",
          "total_assets",
          "principal_activity",
          "principal_product",
          "business_code",
          "accounting_method",
          "num_k1s",
          "flag_initial_return",
          "flag_final_return",
          "flag_amended",
          "flag_name_change",
          "flag_address_change",
          "flag_technical_termination",
          "flag_schedule_m3",
          "flag_aggregated_activities",
          "flag_grouped_activities"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the return is for."
          },
          "entity_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of partnership."
          },
          "ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "Employer identification number, masked to the last four digits."
          },
          "address_street": {
            "type": [
              "string",
              "null"
            ],
            "description": "Street address."
          },
          "address_city": {
            "type": [
              "string",
              "null"
            ],
            "description": "City or town."
          },
          "address_state": {
            "type": [
              "string",
              "null"
            ],
            "description": "State."
          },
          "address_zip": {
            "type": [
              "string",
              "null"
            ],
            "description": "ZIP code."
          },
          "date_started": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item E, date business started, as printed (month, day, year).",
            "x-spreadspace-format": "printed"
          },
          "total_assets": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Item F, total assets.",
            "x-spreadspace-unit": "money"
          },
          "principal_activity": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item A, principal business activity."
          },
          "principal_product": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item B, principal product or service."
          },
          "business_code": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item C, business code number."
          },
          "accounting_method": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item H, accounting method: cash, accrual or other."
          },
          "num_k1s": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Item I, number of Schedules K-1 attached."
          },
          "flag_initial_return": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item G box 1, initial return."
          },
          "flag_final_return": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item G box 2, final return."
          },
          "flag_amended": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item G box 5, amended return."
          },
          "flag_name_change": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item G box 3, name change."
          },
          "flag_address_change": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item G box 4, address change."
          },
          "flag_technical_termination": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item G box 6, technical termination, on returns that still print the box."
          },
          "flag_schedule_m3": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item J, Schedule M-3 attached."
          },
          "flag_aggregated_activities": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item K, aggregated activities for section 465 at-risk purposes."
          },
          "flag_grouped_activities": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item K, grouped activities for section 469 passive activity purposes."
          }
        },
        "additionalProperties": false,
        "description": "The entity block at the top of Form 1065, page 1."
      },
      "TaxReturnReportData_Form1040": {
        "required": [
          "header",
          "income",
          "adjustments",
          "deductions",
          "tax_credits",
          "payments",
          "refund_owed",
          "preparer",
          "filing_metadata"
        ],
        "type": "object",
        "properties": {
          "header": {
            "description": "The name, filing status and address block at the top of page 1.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1040Header"
          },
          "income": {
            "description": "Page 1, income, lines 1a through 9.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1040Income"
          },
          "adjustments": {
            "description": "Page 1, adjustments to income, lines 10 and 11.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1040Adjustments"
          },
          "deductions": {
            "description": "Page 1, deductions, lines 12 through 15.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1040Deductions"
          },
          "tax_credits": {
            "description": "Page 2, tax and credits, lines 16 through 24.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1040TaxCredits"
          },
          "payments": {
            "description": "Page 2, payments, lines 25a through 33.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1040Payments"
          },
          "refund_owed": {
            "description": "Page 2, refund or amount owed, lines 34 through 38.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1040RefundOwed"
          },
          "preparer": {
            "description": "The paid preparer block at the foot of page 2.",
            "$ref": "#/components/schemas/TaxReturnReportData_Preparer"
          },
          "filing_metadata": {
            "description": "The signature dates and their relation to the extended due date.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1040FilingMetadata"
          },
          "two_year_comparison": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_TwoYearComparison"
              },
              {
                "type": "null"
              }
            ],
            "description": "The preparer's comparison worksheet (two or three printed years), when the return carries one."
          },
          "schedule_1": {
            "description": "Schedule 1, additional income and adjustments to income, when attached.",
            "$ref": "#/components/schemas/TaxReturnReportData_Schedule1"
          },
          "schedule_2": {
            "description": "Schedule 2, additional taxes, when attached.",
            "$ref": "#/components/schemas/TaxReturnReportData_Schedule2"
          },
          "schedule_3": {
            "description": "Schedule 3, additional credits and payments, when attached.",
            "$ref": "#/components/schemas/TaxReturnReportData_Schedule3"
          },
          "schedule_a": {
            "description": "Schedule A, itemized deductions, when attached.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleA"
          },
          "schedule_b": {
            "description": "Schedule B, interest and ordinary dividends, when attached.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleB"
          },
          "schedule_c": {
            "description": "Schedule C, profit or loss from business, when attached; the first of schedules_c when several are.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleC"
          },
          "schedules_c": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ScheduleC"
            },
            "description": "Every Schedule C attached, one per business."
          },
          "schedule_d": {
            "description": "Schedule D, capital gains and losses, when attached.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleD"
          },
          "schedule_e": {
            "description": "Schedule E, supplemental income and loss, when attached.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleE"
          },
          "schedule_f": {
            "description": "Schedule F, profit or loss from farming, when attached.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleF"
          },
          "schedules_f": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ScheduleF"
            },
            "description": "Every Schedule F on the return, one per farm activity; the first is schedule_f."
          },
          "schedule_se": {
            "description": "Schedule SE, self-employment tax, when attached.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleSE"
          },
          "form_8995": {
            "description": "Form 8995, qualified business income deduction, when attached.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form8995"
          },
          "form_8582": {
            "description": "Form 8582, passive activity loss limitations, when attached.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form8582"
          },
          "form_8949": {
            "description": "Form 8949, sales and other dispositions of capital assets, when attached.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form8949"
          },
          "form_8958": {
            "description": "Form 8958, allocation of tax amounts between certain individuals in community property states, when attached.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form8958"
          },
          "form_8960": {
            "description": "Form 8960, net investment income tax, when attached.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form8960"
          },
          "form_461": {
            "description": "Form 461, limitation on business losses, when attached.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form461"
          },
          "form_6198": {
            "description": "Form 6198, at-risk limitations, when attached; the first of forms_6198 when several are.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form6198"
          },
          "forms_6198": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Form6198"
            },
            "description": "Every Form 6198 attached, one per activity."
          },
          "form_7203": {
            "description": "Form 7203, S corporation shareholder stock and debt basis limitations, when attached; the first of forms_7203 when several are.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form7203"
          },
          "forms_7203": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Form7203"
            },
            "description": "Every Form 7203 attached, one per corporation."
          },
          "forms_4562": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Form4562"
            },
            "description": "Every Form 4562 attached, one per activity."
          },
          "form_4797": {
            "description": "Form 4797, sales of business property, when attached.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form4797"
          },
          "form_8990": {
            "description": "Form 8990, limitation on business interest expense, when attached.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form8990"
          }
        },
        "additionalProperties": false,
        "description": "Form 1040, U.S. Individual Income Tax Return, with the schedules and forms attached to it. A schedule the return does not include is absent."
      },
      "TaxReturnReportData_Form1040Adjustments": {
        "required": [
          "line_10_adjustments",
          "line_11_agi"
        ],
        "type": "object",
        "properties": {
          "line_10_adjustments": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, adjustments to income from Schedule 1, line 26.",
            "x-spreadspace-unit": "money"
          },
          "line_11_agi": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, adjusted gross income: line 9 less line 10.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 1040, page 1, adjustments to income, lines 10 and 11."
      },
      "TaxReturnReportData_Form1040Deductions": {
        "required": [
          "line_12_standard_or_itemized",
          "line_13_qbi",
          "line_14_sum_12_13",
          "line_15_taxable_income"
        ],
        "type": "object",
        "properties": {
          "line_12_standard_or_itemized": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, standard deduction or itemized deductions (Schedule A).",
            "x-spreadspace-unit": "money"
          },
          "line_13_qbi": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, qualified business income deduction (Form 8995 or 8995-A).",
            "x-spreadspace-unit": "money"
          },
          "line_14_sum_12_13": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, lines 12 and 13 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_15_taxable_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, taxable income: line 11 less line 14.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 1040, page 1, deductions, lines 12 through 15."
      },
      "TaxReturnReportData_Form1040FilingMetadata": {
        "required": [
          "taxpayer_signature_date",
          "spouse_signature_date",
          "preparer_signature_date",
          "latest_signature_date",
          "filed_after_extended_due_date",
          "days_after_extended_due_date"
        ],
        "type": "object",
        "properties": {
          "taxpayer_signature_date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Date beside the taxpayer's signature.",
            "x-spreadspace-format": "date"
          },
          "spouse_signature_date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Date beside the spouse's signature.",
            "x-spreadspace-format": "date"
          },
          "preparer_signature_date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Date beside the preparer's signature.",
            "x-spreadspace-format": "date"
          },
          "latest_signature_date": {
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The latest of the signature dates.",
            "x-spreadspace-format": "date"
          },
          "filed_after_extended_due_date": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "True when the latest signature date falls after the extended due date for the tax year."
          },
          "days_after_extended_due_date": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Days between the extended due date and the latest signature date, when the return was signed after it."
          }
        },
        "additionalProperties": false,
        "description": "The signature dates on Form 1040 and their relation to the extended due date."
      },
      "TaxReturnReportData_Form1040Header": {
        "required": [
          "tax_year",
          "filing_status",
          "taxpayer_first_name",
          "taxpayer_last_name",
          "taxpayer_ssn",
          "spouse_first_name",
          "spouse_last_name",
          "spouse_ssn",
          "address_street",
          "address_apt",
          "address_city",
          "address_state",
          "address_zip",
          "dependents_count"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the return is for."
          },
          "filing_status": {
            "type": [
              "string",
              "null"
            ],
            "description": "Filing status as marked: single, mfj (married filing jointly), mfs (married filing separately), hoh (head of household) or qss (qualifying surviving spouse)."
          },
          "taxpayer_first_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Taxpayer's first name and middle initial."
          },
          "taxpayer_last_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Taxpayer's last name."
          },
          "taxpayer_ssn": {
            "type": [
              "string",
              "null"
            ],
            "description": "Taxpayer's Social Security number, masked to the last four digits."
          },
          "spouse_first_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Spouse's first name and middle initial, on a joint return."
          },
          "spouse_last_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Spouse's last name, on a joint return."
          },
          "spouse_ssn": {
            "type": [
              "string",
              "null"
            ],
            "description": "Spouse's Social Security number, masked to the last four digits."
          },
          "address_street": {
            "type": [
              "string",
              "null"
            ],
            "description": "Home address, street."
          },
          "address_apt": {
            "type": [
              "string",
              "null"
            ],
            "description": "Apartment number."
          },
          "address_city": {
            "type": [
              "string",
              "null"
            ],
            "description": "City, town or post office."
          },
          "address_state": {
            "type": [
              "string",
              "null"
            ],
            "description": "State."
          },
          "address_zip": {
            "type": [
              "string",
              "null"
            ],
            "description": "ZIP code."
          },
          "dependents_count": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Number of dependents listed."
          }
        },
        "additionalProperties": false,
        "description": "The name, filing status and address block at the top of Form 1040, page 1."
      },
      "TaxReturnReportData_Form1040Income": {
        "required": [
          "line_1a_wages",
          "line_1b_household_employee",
          "line_1c_tip_income_unreported",
          "line_1d_medicaid_waiver",
          "line_1e_dependent_care_benefits",
          "line_1f_adoption_benefits",
          "line_1g_wages_form_8919",
          "line_1h_other_earned_income",
          "line_1z_total",
          "line_2a_tax_exempt_interest",
          "line_2b_taxable_interest",
          "line_3a_qualified_dividends",
          "line_3b_ordinary_dividends",
          "line_4a_ira_distributions",
          "line_4b_ira_taxable",
          "line_5a_pensions",
          "line_5b_pensions_taxable",
          "line_6a_social_security",
          "line_6b_social_security_taxable",
          "line_6c_lump_sum_election",
          "line_7_capital_gain_loss",
          "line_8_additional_income",
          "line_9_total_income"
        ],
        "type": "object",
        "properties": {
          "line_1a_wages": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1a, total amount from Form(s) W-2, box 1.",
            "x-spreadspace-unit": "money"
          },
          "line_1b_household_employee": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1b, household employee wages not reported on Form(s) W-2.",
            "x-spreadspace-unit": "money"
          },
          "line_1c_tip_income_unreported": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1c, tip income not reported on line 1a.",
            "x-spreadspace-unit": "money"
          },
          "line_1d_medicaid_waiver": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1d, Medicaid waiver payments not reported on Form(s) W-2.",
            "x-spreadspace-unit": "money"
          },
          "line_1e_dependent_care_benefits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1e, taxable dependent care benefits from Form 2441.",
            "x-spreadspace-unit": "money"
          },
          "line_1f_adoption_benefits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1f, employer-provided adoption benefits from Form 8839.",
            "x-spreadspace-unit": "money"
          },
          "line_1g_wages_form_8919": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1g, wages from Form 8919.",
            "x-spreadspace-unit": "money"
          },
          "line_1h_other_earned_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1h, other earned income.",
            "x-spreadspace-unit": "money"
          },
          "line_1z_total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1z, lines 1a through 1h added together.",
            "x-spreadspace-unit": "money"
          },
          "line_2a_tax_exempt_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2a, tax-exempt interest.",
            "x-spreadspace-unit": "money"
          },
          "line_2b_taxable_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2b, taxable interest.",
            "x-spreadspace-unit": "money"
          },
          "line_3a_qualified_dividends": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3a, qualified dividends.",
            "x-spreadspace-unit": "money"
          },
          "line_3b_ordinary_dividends": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3b, ordinary dividends.",
            "x-spreadspace-unit": "money"
          },
          "line_4a_ira_distributions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4a, IRA distributions.",
            "x-spreadspace-unit": "money"
          },
          "line_4b_ira_taxable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4b, IRA distributions, taxable amount.",
            "x-spreadspace-unit": "money"
          },
          "line_5a_pensions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5a, pensions and annuities.",
            "x-spreadspace-unit": "money"
          },
          "line_5b_pensions_taxable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5b, pensions and annuities, taxable amount.",
            "x-spreadspace-unit": "money"
          },
          "line_6a_social_security": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6a, Social Security benefits.",
            "x-spreadspace-unit": "money"
          },
          "line_6b_social_security_taxable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6b, Social Security benefits, taxable amount.",
            "x-spreadspace-unit": "money"
          },
          "line_6c_lump_sum_election": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 6c, the lump-sum election box, yes or no as marked."
          },
          "line_7_capital_gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, capital gain or (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_8_additional_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, additional income from Schedule 1, line 10.",
            "x-spreadspace-unit": "money"
          },
          "line_9_total_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, total income: lines 1z, 2b, 3b, 4b, 5b, 6b, 7 and 8 added together.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 1040, page 1, income, lines 1a through 9."
      },
      "TaxReturnReportData_Form1040Payments": {
        "required": [
          "line_25a_withheld_w2",
          "line_25b_withheld_1099",
          "line_25c_other_withholding",
          "line_25d_total_withholding",
          "line_26_estimated_tax_payments",
          "line_27_eitc",
          "line_28_additional_ctc",
          "line_29_american_opportunity",
          "line_31_sch3_line15",
          "line_32_sum_27_31",
          "line_33_total_payments"
        ],
        "type": "object",
        "properties": {
          "line_25a_withheld_w2": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 25a, federal income tax withheld from Form(s) W-2.",
            "x-spreadspace-unit": "money"
          },
          "line_25b_withheld_1099": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 25b, federal income tax withheld from Form(s) 1099.",
            "x-spreadspace-unit": "money"
          },
          "line_25c_other_withholding": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 25c, federal income tax withheld from other forms.",
            "x-spreadspace-unit": "money"
          },
          "line_25d_total_withholding": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 25d, lines 25a through 25c added together.",
            "x-spreadspace-unit": "money"
          },
          "line_26_estimated_tax_payments": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 26, estimated tax payments and amount applied from the prior year return.",
            "x-spreadspace-unit": "money"
          },
          "line_27_eitc": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 27, earned income credit.",
            "x-spreadspace-unit": "money"
          },
          "line_28_additional_ctc": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 28, additional child tax credit from Schedule 8812.",
            "x-spreadspace-unit": "money"
          },
          "line_29_american_opportunity": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 29, American opportunity credit from Form 8863, line 8.",
            "x-spreadspace-unit": "money"
          },
          "line_31_sch3_line15": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 31, amount from Schedule 3, line 15.",
            "x-spreadspace-unit": "money"
          },
          "line_32_sum_27_31": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 32, total other payments and refundable credits: lines 27 through 31 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_33_total_payments": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 33, total payments: lines 25d, 26 and 32 added together.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 1040, page 2, payments, lines 25a through 33."
      },
      "TaxReturnReportData_Form1040RefundOwed": {
        "required": [
          "line_34_overpayment",
          "line_35a_refund_amount",
          "line_36_applied_to_next_year",
          "line_37_amount_owed",
          "line_38_estimated_tax_penalty"
        ],
        "type": "object",
        "properties": {
          "line_34_overpayment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 34, the amount overpaid: line 33 less line 24.",
            "x-spreadspace-unit": "money"
          },
          "line_35a_refund_amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 35a, amount of line 34 to be refunded.",
            "x-spreadspace-unit": "money"
          },
          "line_36_applied_to_next_year": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 36, amount of line 34 applied to next year's estimated tax.",
            "x-spreadspace-unit": "money"
          },
          "line_37_amount_owed": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 37, amount owed: line 24 less line 33.",
            "x-spreadspace-unit": "money"
          },
          "line_38_estimated_tax_penalty": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 38, estimated tax penalty.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 1040, page 2, refund or amount owed, lines 34 through 38."
      },
      "TaxReturnReportData_Form1040TaxCredits": {
        "required": [
          "line_16_tax",
          "line_17_sch2_line3",
          "line_18_sum_16_17",
          "line_19_child_tax_credit",
          "line_20_sch3_line8",
          "line_21_sum_19_20",
          "line_22_subtract_21_from_18",
          "line_23_other_taxes",
          "line_24_total_tax"
        ],
        "type": "object",
        "properties": {
          "line_16_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, tax.",
            "x-spreadspace-unit": "money"
          },
          "line_17_sch2_line3": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, amount from Schedule 2, line 3.",
            "x-spreadspace-unit": "money"
          },
          "line_18_sum_16_17": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18, lines 16 and 17 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_19_child_tax_credit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19, child tax credit or credit for other dependents.",
            "x-spreadspace-unit": "money"
          },
          "line_20_sch3_line8": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 20, amount from Schedule 3, line 8.",
            "x-spreadspace-unit": "money"
          },
          "line_21_sum_19_20": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 21, lines 19 and 20 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_22_subtract_21_from_18": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 22, line 18 less line 21.",
            "x-spreadspace-unit": "money"
          },
          "line_23_other_taxes": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 23, other taxes, including self-employment tax, from Schedule 2, line 21.",
            "x-spreadspace-unit": "money"
          },
          "line_24_total_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 24, total tax: lines 22 and 23 added together.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 1040, page 2, tax and credits, lines 16 through 24."
      },
      "TaxReturnReportData_Form1065": {
        "required": [
          "header",
          "income",
          "deductions",
          "tax_payments",
          "schedule_b",
          "schedule_k",
          "schedule_l",
          "schedule_m1",
          "schedule_m2",
          "form_1125a",
          "form_4562",
          "form_schedule_d",
          "form_4797",
          "form_schedule_m3",
          "form_8990",
          "form_8825"
        ],
        "type": "object",
        "properties": {
          "header": {
            "description": "The entity block at the top of page 1.",
            "$ref": "#/components/schemas/TaxReturnReportData_EntityHeader"
          },
          "income": {
            "description": "Page 1, income, lines 1a through 8.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1065Income"
          },
          "deductions": {
            "description": "Page 1, deductions, lines 9 through 22.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1065Deductions"
          },
          "tax_payments": {
            "description": "Page 1, tax and payments, lines 23 through 29.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1065TaxPayments"
          },
          "schedule_b": {
            "description": "Schedule B, other information.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1065ScheduleB"
          },
          "schedule_k": {
            "description": "Schedule K, partners' distributive share items.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1065ScheduleK"
          },
          "schedule_l": {
            "description": "Schedule L, balance sheets per books.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleLPartnership"
          },
          "schedule_m1": {
            "description": "Schedule M-1, reconciliation of income per books with income per return.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleM1Partnership"
          },
          "schedule_m2": {
            "description": "Schedule M-2, analysis of partners' capital accounts.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleM2Partnership"
          },
          "analysis_of_net_income": {
            "description": "Analysis of net income (loss) per return, on page 5.",
            "$ref": "#/components/schemas/TaxReturnReportData_AnalysisOfNetIncome"
          },
          "form_1125a": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form1125A"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 1125-A, cost of goods sold, when attached."
          },
          "form_4562": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form4562"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 4562, depreciation and amortization, when attached; the first of forms_4562 when several are."
          },
          "forms_4562": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Form4562"
            },
            "description": "Every Form 4562 attached, one per activity."
          },
          "form_schedule_d": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_FormScheduleD"
              },
              {
                "type": "null"
              }
            ],
            "description": "Schedule D, capital gains and losses, when attached."
          },
          "form_4797": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form4797"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 4797, sales of business property, when attached."
          },
          "schedule_f": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_ScheduleF"
              },
              {
                "type": "null"
              }
            ],
            "description": "Schedule F, profit or loss from farming, when the return attaches one."
          },
          "schedules_f": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ScheduleF"
            },
            "description": "Every Schedule F the return attaches, one per farm activity; the first is schedule_f."
          },
          "form_schedule_m3": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_FormScheduleM3"
              },
              {
                "type": "null"
              }
            ],
            "description": "Schedule M-3, net income reconciliation for large partnerships, when attached."
          },
          "form_8990": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form8990"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 8990, limitation on business interest expense, when attached."
          },
          "form_8949": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form8949"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 8949, sales and other dispositions of capital assets, when attached."
          },
          "form_8825": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form8825"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 8825, rental real estate income and expenses, when attached."
          },
          "two_year_comparison": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_TwoYearComparison"
              },
              {
                "type": "null"
              }
            ],
            "description": "The preparer's comparison worksheet (two or three printed years), when the return carries one."
          }
        },
        "additionalProperties": false,
        "description": "Form 1065, U.S. Return of Partnership Income, with the schedules and attached forms the return carries. A schedule the return does not include is null."
      },
      "TaxReturnReportData_Form1065Deductions": {
        "required": [
          "line_9_salaries_wages",
          "line_10_guaranteed_payments",
          "line_11_repairs",
          "line_12_bad_debts",
          "line_13_rent",
          "line_14_taxes_licenses",
          "line_15_interest",
          "line_16a_depreciation",
          "line_16b_depreciation_elsewhere",
          "line_16c_net_depreciation",
          "line_17_depletion",
          "line_18_retirement",
          "line_19_employee_benefits",
          "line_20_other_deductions",
          "line_21_total_deductions",
          "line_22_ordinary_business_income"
        ],
        "type": "object",
        "properties": {
          "line_9_salaries_wages": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, salaries and wages other than to partners, less employment credits.",
            "x-spreadspace-unit": "money"
          },
          "line_10_guaranteed_payments": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, guaranteed payments to partners.",
            "x-spreadspace-unit": "money"
          },
          "line_11_repairs": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, repairs and maintenance.",
            "x-spreadspace-unit": "money"
          },
          "line_12_bad_debts": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, bad debts.",
            "x-spreadspace-unit": "money"
          },
          "line_13_rent": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, rent.",
            "x-spreadspace-unit": "money"
          },
          "line_14_taxes_licenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, taxes and licenses.",
            "x-spreadspace-unit": "money"
          },
          "line_15_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, interest.",
            "x-spreadspace-unit": "money"
          },
          "line_16a_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16a, depreciation.",
            "x-spreadspace-unit": "money"
          },
          "line_16b_depreciation_elsewhere": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16b, depreciation reported on Form 1125-A and elsewhere on the return.",
            "x-spreadspace-unit": "money"
          },
          "line_16c_net_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16c, depreciation deducted here: line 16a less line 16b.",
            "x-spreadspace-unit": "money"
          },
          "line_17_depletion": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, depletion, other than oil and gas.",
            "x-spreadspace-unit": "money"
          },
          "line_18_retirement": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18, retirement plans and similar.",
            "x-spreadspace-unit": "money"
          },
          "line_19_employee_benefits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19, employee benefit programs.",
            "x-spreadspace-unit": "money"
          },
          "line_20_energy_efficient_buildings": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Energy efficient commercial buildings deduction (Form 7205), on returns that print the line.",
            "x-spreadspace-unit": "money"
          },
          "line_20_other_deductions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Other deductions, the line before total deductions.",
            "x-spreadspace-unit": "money"
          },
          "line_21_total_deductions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total deductions.",
            "x-spreadspace-unit": "money"
          },
          "line_22_ordinary_business_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Ordinary business income (loss): total income (loss) less total deductions.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 1065, page 1, deductions, lines 9 through 22."
      },
      "TaxReturnReportData_Form1065Income": {
        "required": [
          "line_1a_gross_receipts",
          "line_1b_returns_allowances",
          "line_1c_net",
          "line_2_cogs",
          "line_3_gross_profit",
          "line_4_other_partnerships_income",
          "line_5_net_farm",
          "line_6_net_gain_4797",
          "line_7_other_income",
          "line_8_total_income"
        ],
        "type": "object",
        "properties": {
          "line_1a_gross_receipts": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1a, gross receipts or sales.",
            "x-spreadspace-unit": "money"
          },
          "line_1b_returns_allowances": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1b, returns and allowances.",
            "x-spreadspace-unit": "money"
          },
          "line_1c_net": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1c, balance: line 1a less line 1b.",
            "x-spreadspace-unit": "money"
          },
          "line_2_cogs": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, cost of goods sold (Form 1125-A).",
            "x-spreadspace-unit": "money"
          },
          "line_3_gross_profit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, gross profit: line 1c less line 2.",
            "x-spreadspace-unit": "money"
          },
          "line_4_other_partnerships_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, ordinary income (loss) from other partnerships, estates and trusts.",
            "x-spreadspace-unit": "money"
          },
          "line_5_net_farm": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, net farm profit (loss) (Schedule F).",
            "x-spreadspace-unit": "money"
          },
          "line_6_net_gain_4797": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, net gain (loss) from Form 4797, Part II, line 17.",
            "x-spreadspace-unit": "money"
          },
          "line_7_other_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, other income (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_8_total_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, total income (loss): lines 3 through 7 combined.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 1065, page 1, income, lines 1a through 8."
      },
      "TaxReturnReportData_Form1065K1": {
        "required": [
          "tax_year",
          "partner_info",
          "line_1_ordinary_business_income",
          "line_4a_guaranteed_payments_services",
          "line_4c_total_guaranteed_payments",
          "line_14_self_employment",
          "line_19_distributions",
          "line_20_other_information"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the schedule is for."
          },
          "is_amended": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Amended K-1 box."
          },
          "is_final": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Final K-1 box."
          },
          "partner_info": {
            "description": "Parts I and II, information about the partnership and the partner.",
            "$ref": "#/components/schemas/TaxReturnReportData_K1PartnerInfo"
          },
          "line_1_ordinary_business_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 1, ordinary business income (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_2_net_rental_real_estate": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 2, net rental real estate income (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_3_other_net_rental": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 3, other net rental income (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_4a_guaranteed_payments_services": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 4a, guaranteed payments for services.",
            "x-spreadspace-unit": "money"
          },
          "line_4b_guaranteed_payments_capital": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 4b, guaranteed payments for capital.",
            "x-spreadspace-unit": "money"
          },
          "line_4c_total_guaranteed_payments": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 4c, total guaranteed payments.",
            "x-spreadspace-unit": "money"
          },
          "line_5_interest_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 5, interest income.",
            "x-spreadspace-unit": "money"
          },
          "line_6a_ordinary_dividends": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 6a, ordinary dividends.",
            "x-spreadspace-unit": "money"
          },
          "line_6b_qualified_dividends": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 6b, qualified dividends.",
            "x-spreadspace-unit": "money"
          },
          "line_6c_dividend_equivalents": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 6c, dividend equivalents.",
            "x-spreadspace-unit": "money"
          },
          "line_7_royalties": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 7, royalties.",
            "x-spreadspace-unit": "money"
          },
          "line_8_short_term_capital_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 8, net short-term capital gain (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_9a_long_term_capital_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 9a, net long-term capital gain (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_9b_collectibles_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 9b, collectibles (28 percent) gain (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_9c_unrecap_1250_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 9c, unrecaptured section 1250 gain.",
            "x-spreadspace-unit": "money"
          },
          "line_10_section_1231_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 10, net section 1231 gain (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_11_other_income": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_K1CodedEntry"
            },
            "description": "Box 11, other income (loss), one entry per code printed."
          },
          "line_12_section_179_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 12, section 179 deduction.",
            "x-spreadspace-unit": "money"
          },
          "line_13_other_deductions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_K1CodedEntry"
            },
            "description": "Box 13, other deductions, one entry per code printed."
          },
          "line_14_self_employment": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_K1CodedEntry"
            },
            "description": "Box 14, self-employment earnings (loss), one entry per code printed."
          },
          "line_15_credits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_K1CodedEntry"
            },
            "description": "Box 15, credits, one entry per code printed."
          },
          "line_16_foreign_transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_K1CodedEntry"
            },
            "description": "Box 16, foreign transactions, one entry per code printed, on schedules that print the box with codes."
          },
          "line_17_amt_items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_K1CodedEntry"
            },
            "description": "Box 17, alternative minimum tax items, one entry per code printed."
          },
          "line_18_tax_exempt_income": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_K1CodedEntry"
            },
            "description": "Box 18, tax-exempt income and nondeductible expenses, one entry per code printed."
          },
          "line_19_distributions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_K1CodedEntry"
            },
            "description": "Box 19, distributions, one entry per code printed."
          },
          "line_20_other_information": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_K1CodedEntry"
            },
            "description": "Box 20, other information, one entry per code printed."
          },
          "line_21_foreign_taxes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_K1CodedEntry"
            },
            "description": "Box 21, foreign taxes paid or accrued, one entry per code printed."
          },
          "line_22_more_than_one_at_risk_activity": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Box 22, more than one activity for at-risk purposes, yes or no as marked."
          },
          "line_23_more_than_one_passive_activity": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Box 23, more than one activity for passive activity purposes, yes or no as marked."
          }
        },
        "additionalProperties": false,
        "description": "Schedule K-1 (Form 1065), partner's share of income, deductions, credits and other items. Boxes that take code letters carry one entry per printed code."
      },
      "TaxReturnReportData_Form1065ScheduleB": {
        "required": [
          "entity_type",
          "flag_partner_disregarded_entity",
          "flag_partner_partnership",
          "flag_partner_trust",
          "flag_partner_scorp",
          "flag_individual_owns_50pct",
          "flag_entity_owns_50pct",
          "flag_schedule_m3_required",
          "flag_publicly_traded",
          "flag_aggregated",
          "flag_corp_partnership_trust_owns_50pct",
          "flag_individual_estate_owns_50pct",
          "flag_partnership_owns_corp_20pct",
          "flag_partnership_owns_partnership_20pct",
          "flag_consistency_requirement",
          "flag_basis_adjustment_754",
          "flag_cancellation_of_debt",
          "flag_filed_form_8918",
          "flag_foreign_account",
          "flag_distributions_property",
          "flag_tax_shelter_activity",
          "flag_like_kind_exchange",
          "flag_aggregating_469",
          "flag_section_754",
          "flag_foreign_disregarded_entity",
          "flag_received_property_contributions",
          "flag_disregarded_entity_owners",
          "flag_partnership_audit",
          "designated_pr_info",
          "flag_aggregated_activities",
          "flag_imputed_underpayment",
          "flag_loss_limitation_704d",
          "flag_schedule_m3_required_22",
          "flag_foreign_partnership_reporting",
          "flag_partner_adjustments_743b",
          "flag_bonus_depreciation_election",
          "flag_like_kind_exchange_disclosed",
          "flag_centralized_audit_optout",
          "flag_other_reportable_transactions"
        ],
        "type": "object",
        "properties": {
          "entity_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "Question 1, the type of entity filing the return, as marked."
          },
          "flag_partner_disregarded_entity": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 2a, a partner was a disregarded entity, partnership, trust, S corporation, estate or nominee."
          },
          "flag_partner_partnership": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 2a, a partner was a partnership."
          },
          "flag_partner_trust": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 2a, a partner was a trust."
          },
          "flag_partner_scorp": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 2a, a partner was an S corporation."
          },
          "flag_individual_owns_50pct": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 2b, an individual or estate owned fifty percent or more of the partnership."
          },
          "flag_entity_owns_50pct": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 2a, an entity owned fifty percent or more of the partnership."
          },
          "flag_schedule_m3_required": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 4, the partnership does not have to complete Schedules L, M-1 and M-2."
          },
          "flag_publicly_traded": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 5, the partnership is a publicly traded partnership."
          },
          "flag_aggregated": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 12, the partnership aggregated activities for section 465 or 469 purposes."
          },
          "flag_corp_partnership_trust_owns_50pct": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 2a, a corporation, partnership or trust owned fifty percent or more of the partnership."
          },
          "flag_individual_estate_owns_50pct": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 2b, an individual or estate owned fifty percent or more of the partnership."
          },
          "flag_partnership_owns_corp_20pct": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 3a, the partnership owned twenty percent or more of a corporation."
          },
          "flag_partnership_owns_partnership_20pct": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 3b, the partnership owned twenty percent or more of another partnership or trust."
          },
          "flag_consistency_requirement": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 4, the partnership meets the conditions to skip Schedules L, M-1 and M-2."
          },
          "flag_basis_adjustment_754": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 10, a section 754 election or a basis adjustment under section 743(b) or 734(b)."
          },
          "flag_cancellation_of_debt": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 6, cancellation of debt income during the year."
          },
          "flag_filed_form_8918": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 7, the partnership filed or is required to file Form 8918."
          },
          "flag_foreign_account": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 8, an interest in or signature authority over a foreign financial account."
          },
          "flag_distributions_property": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 12, distribution of property other than cash during the year."
          },
          "flag_tax_shelter_activity": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 7, the partnership is a tax shelter or engaged in a reportable transaction."
          },
          "flag_like_kind_exchange": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 13, a like-kind exchange or distribution of tenancy-in-common property during the year."
          },
          "flag_aggregating_469": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 12, activities grouped for section 469 purposes."
          },
          "flag_section_754": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 10a, a section 754 election is in effect."
          },
          "flag_foreign_disregarded_entity": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 9, the partnership received a distribution from, or was the grantor of, a foreign trust."
          },
          "flag_received_property_contributions": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 11, property contributions with built-in gain or loss, or section 704(c) reporting."
          },
          "flag_disregarded_entity_owners": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 14, the partnership owned a disregarded entity."
          },
          "flag_partnership_audit": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 25, the partnership is electing out of the centralized partnership audit regime."
          },
          "designated_pr_info": {
            "type": [
              "string",
              "null"
            ],
            "description": "The designated partnership representative's name and contact details, as printed."
          },
          "flag_aggregated_activities": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 12, aggregated activities for section 465 at-risk purposes."
          },
          "flag_imputed_underpayment": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 26, the partnership is required to file Form 8985 or pays an imputed underpayment."
          },
          "flag_loss_limitation_704d": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 27, section 704(d) loss limitations apply to a partner."
          },
          "flag_schedule_m3_required_22": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 22, the partnership is required to file Schedule M-3."
          },
          "flag_foreign_partnership_reporting": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 16, the partnership has foreign partners or files Forms 8804 and 8805."
          },
          "flag_partner_adjustments_743b": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 10b, the partnership made a section 743(b) adjustment during the year."
          },
          "flag_bonus_depreciation_election": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 23, the partnership elected out of bonus depreciation."
          },
          "flag_like_kind_exchange_disclosed": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 13, a like-kind exchange was disclosed on Form 8824."
          },
          "flag_centralized_audit_optout": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 25, election out of the centralized partnership audit regime under section 6221(b)."
          },
          "flag_other_reportable_transactions": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 7, other reportable transactions disclosed on Form 8886."
          }
        },
        "additionalProperties": false,
        "description": "Schedule B of Form 1065, other information: the yes or no questions, as answered."
      },
      "TaxReturnReportData_Form1065ScheduleK": {
        "required": [
          "line_1_ordinary_business_income",
          "line_2_net_rental_real_estate",
          "line_3a_other_rental_gross",
          "line_3b_other_rental_expenses",
          "line_3c_other_rental_net",
          "line_4a_guaranteed_services",
          "line_4b_guaranteed_capital",
          "line_4c_guaranteed_total",
          "line_5_interest_income",
          "line_6a_ordinary_dividends",
          "line_6b_qualified_dividends",
          "line_6c_dividend_equivalents",
          "line_7_royalties",
          "line_8_net_short_term_gain",
          "line_9a_net_long_term_gain",
          "line_9b_collectibles",
          "line_9c_unrecaptured_1250",
          "line_10_net_sec1231",
          "line_11_other_income",
          "line_12_sec179",
          "line_13a_contributions",
          "line_13b_investment_interest",
          "line_13c_sec59e",
          "line_13d_other_deductions",
          "line_14a_se_earnings",
          "line_14b_gross_farming",
          "line_14c_gross_nonfarm",
          "line_15_credits",
          "line_15a_low_income_housing_42j5",
          "line_15b_low_income_housing_other",
          "line_15c_qualified_rehab",
          "line_15d_other_rental_re_credits",
          "line_15e_other_rental_credits",
          "line_15f_other_credits",
          "line_16_k3_attached",
          "line_17_amt",
          "line_17a_post_1986_depreciation",
          "line_17b_adjusted_gain_loss",
          "line_17c_depletion",
          "line_17d_oil_gas_gross_income",
          "line_17e_oil_gas_deductions",
          "line_17f_other_amt",
          "line_18a_tax_exempt_interest",
          "line_18b_other_tax_exempt",
          "line_18c_nondeductible",
          "line_19a_distributions_cash",
          "line_19b_distributions_property",
          "line_20_other_info",
          "line_20b_investment_expenses",
          "line_20c_other_items",
          "line_20z_qbi",
          "line_21_foreign_taxes"
        ],
        "type": "object",
        "properties": {
          "line_1_ordinary_business_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, ordinary business income (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_2_net_rental_real_estate": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, net rental real estate income (loss) (Form 8825).",
            "x-spreadspace-unit": "money"
          },
          "line_3a_other_rental_gross": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3a, other gross rental income (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_3b_other_rental_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3b, expenses from other rental activities.",
            "x-spreadspace-unit": "money"
          },
          "line_3c_other_rental_net": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3c, other net rental income (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_4a_guaranteed_services": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4a, guaranteed payments for services.",
            "x-spreadspace-unit": "money"
          },
          "line_4b_guaranteed_capital": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4b, guaranteed payments for capital.",
            "x-spreadspace-unit": "money"
          },
          "line_4c_guaranteed_total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4c, total guaranteed payments.",
            "x-spreadspace-unit": "money"
          },
          "line_5_interest_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, interest income.",
            "x-spreadspace-unit": "money"
          },
          "line_6a_ordinary_dividends": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6a, ordinary dividends.",
            "x-spreadspace-unit": "money"
          },
          "line_6b_qualified_dividends": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6b, qualified dividends.",
            "x-spreadspace-unit": "money"
          },
          "line_6c_dividend_equivalents": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6c, dividend equivalents.",
            "x-spreadspace-unit": "money"
          },
          "line_7_royalties": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, royalties.",
            "x-spreadspace-unit": "money"
          },
          "line_8_net_short_term_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, net short-term capital gain (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_9a_net_long_term_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9a, net long-term capital gain (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_9b_collectibles": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9b, collectibles (28 percent) gain (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_9c_unrecaptured_1250": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9c, unrecaptured section 1250 gain.",
            "x-spreadspace-unit": "money"
          },
          "line_10_net_sec1231": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, net section 1231 gain (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_11_other_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, other income (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_12_sec179": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, section 179 deduction.",
            "x-spreadspace-unit": "money"
          },
          "line_13a_contributions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13a, contributions.",
            "x-spreadspace-unit": "money"
          },
          "line_13b_investment_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13b, investment interest expense.",
            "x-spreadspace-unit": "money"
          },
          "line_13c_sec59e": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13c, section 59(e)(2) expenditures.",
            "x-spreadspace-unit": "money"
          },
          "line_13d_other_deductions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13d, other deductions.",
            "x-spreadspace-unit": "money"
          },
          "line_14a_se_earnings": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14a, net earnings (loss) from self-employment.",
            "x-spreadspace-unit": "money"
          },
          "line_14b_gross_farming": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14b, gross farming or fishing income.",
            "x-spreadspace-unit": "money"
          },
          "line_14c_gross_nonfarm": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14c, gross nonfarm income.",
            "x-spreadspace-unit": "money"
          },
          "line_15_credits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, credits, when the return prints a total for the line.",
            "x-spreadspace-unit": "money"
          },
          "line_15a_low_income_housing_42j5": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15a, low-income housing credit (section 42(j)(5)).",
            "x-spreadspace-unit": "money"
          },
          "line_15b_low_income_housing_other": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15b, low-income housing credit (other).",
            "x-spreadspace-unit": "money"
          },
          "line_15c_qualified_rehab": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15c, qualified rehabilitation expenditures (rental real estate).",
            "x-spreadspace-unit": "money"
          },
          "line_15d_other_rental_re_credits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15d, other rental real estate credits.",
            "x-spreadspace-unit": "money"
          },
          "line_15e_other_rental_credits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15e, other rental credits.",
            "x-spreadspace-unit": "money"
          },
          "line_15f_other_credits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15f, other credits.",
            "x-spreadspace-unit": "money"
          },
          "line_16_k3_attached": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 16, Schedules K-2 and K-3 attached, yes or no as marked."
          },
          "line_17_amt": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, alternative minimum tax items, when the return prints a total for the line.",
            "x-spreadspace-unit": "money"
          },
          "line_17a_post_1986_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17a, post-1986 depreciation adjustment.",
            "x-spreadspace-unit": "money"
          },
          "line_17b_adjusted_gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17b, adjusted gain or loss.",
            "x-spreadspace-unit": "money"
          },
          "line_17c_depletion": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17c, depletion, other than oil and gas.",
            "x-spreadspace-unit": "money"
          },
          "line_17d_oil_gas_gross_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17d, oil, gas and geothermal properties, gross income.",
            "x-spreadspace-unit": "money"
          },
          "line_17e_oil_gas_deductions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17e, oil, gas and geothermal properties, deductions.",
            "x-spreadspace-unit": "money"
          },
          "line_17f_other_amt": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17f, other alternative minimum tax items.",
            "x-spreadspace-unit": "money"
          },
          "line_18a_tax_exempt_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18a, tax-exempt interest income.",
            "x-spreadspace-unit": "money"
          },
          "line_18b_other_tax_exempt": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18b, other tax-exempt income.",
            "x-spreadspace-unit": "money"
          },
          "line_18c_nondeductible": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18c, nondeductible expenses.",
            "x-spreadspace-unit": "money"
          },
          "line_19a_distributions_cash": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19a, distributions of cash and marketable securities.",
            "x-spreadspace-unit": "money"
          },
          "line_19b_distributions_property": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19b, distributions of other property.",
            "x-spreadspace-unit": "money"
          },
          "line_20_other_info": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 20, other information, when the return prints a total for the line.",
            "x-spreadspace-unit": "money"
          },
          "line_20b_investment_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 20b, investment expenses.",
            "x-spreadspace-unit": "money"
          },
          "line_20c_other_items": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 20c, other items and amounts.",
            "x-spreadspace-unit": "money"
          },
          "line_20z_qbi": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 20, code Z, qualified business income.",
            "x-spreadspace-unit": "money"
          },
          "line_21_foreign_taxes": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 21, total foreign taxes paid or accrued.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule K of Form 1065, partners' distributive share items, lines 1 through 21."
      },
      "TaxReturnReportData_Form1065TaxPayments": {
        "required": [
          "line_23_interest_lookback",
          "line_24_bba_audit_adjustment",
          "line_25_other_taxes",
          "line_26_total_balance_due",
          "line_27_payments",
          "line_28_amount_owed",
          "line_29_overpayment"
        ],
        "type": "object",
        "properties": {
          "line_23_interest_lookback": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Interest due under the look-back method.",
            "x-spreadspace-unit": "money"
          },
          "line_24_bba_audit_adjustment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "BBA AAR imputed underpayment.",
            "x-spreadspace-unit": "money"
          },
          "line_25_other_taxes": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Other taxes.",
            "x-spreadspace-unit": "money"
          },
          "line_26_total_balance_due": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total balance due.",
            "x-spreadspace-unit": "money"
          },
          "line_27_payments": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Payment.",
            "x-spreadspace-unit": "money"
          },
          "line_28_amount_owed": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Amount owed.",
            "x-spreadspace-unit": "money"
          },
          "line_29_overpayment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Overpayment.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 1065, page 1, tax and payments, lines 23 through 29."
      },
      "TaxReturnReportData_Form1120": {
        "required": [
          "header",
          "income",
          "deductions",
          "tax_payments",
          "schedule_j",
          "schedule_k",
          "schedule_l",
          "schedule_m1",
          "schedule_m2",
          "form_1125a",
          "form_1125e",
          "form_4562",
          "form_schedule_d",
          "form_4797",
          "form_schedule_m3",
          "form_8990"
        ],
        "type": "object",
        "properties": {
          "header": {
            "description": "The entity block at the top of page 1.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120Header"
          },
          "income": {
            "description": "Page 1, income, lines 1a through 11.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120Income"
          },
          "deductions": {
            "description": "Page 1, deductions, lines 12 through 30.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120Deductions"
          },
          "tax_payments": {
            "description": "Page 1, tax, refundable credits and payments, lines 31 through 37.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120TaxPayments"
          },
          "schedule_j": {
            "description": "Schedule J, tax computation and payment.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120ScheduleJ"
          },
          "schedule_k": {
            "description": "Schedule K, other information.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120ScheduleK"
          },
          "schedule_l": {
            "description": "Schedule L, balance sheets per books.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleLCorp"
          },
          "schedule_m1": {
            "description": "Schedule M-1, reconciliation of income per books with income per return.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120ScheduleM1"
          },
          "schedule_m2": {
            "description": "Schedule M-2, analysis of unappropriated retained earnings per books.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120ScheduleM2"
          },
          "form_1125a": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form1125A"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 1125-A, cost of goods sold, when attached."
          },
          "form_1125e": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form1125E"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 1125-E, compensation of officers, when attached."
          },
          "form_4562": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form4562"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 4562, depreciation and amortization, when attached; the first of forms_4562 when several are."
          },
          "forms_4562": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Form4562"
            },
            "description": "Every Form 4562 attached, one per activity."
          },
          "form_schedule_d": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_FormScheduleD"
              },
              {
                "type": "null"
              }
            ],
            "description": "Schedule D, capital gains and losses, when attached."
          },
          "form_4797": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form4797"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 4797, sales of business property, when attached."
          },
          "schedule_f": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_ScheduleF"
              },
              {
                "type": "null"
              }
            ],
            "description": "Schedule F, profit or loss from farming, when the return attaches one."
          },
          "schedules_f": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ScheduleF"
            },
            "description": "Every Schedule F the return attaches, one per farm activity; the first is schedule_f."
          },
          "form_schedule_m3": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_FormScheduleM3"
              },
              {
                "type": "null"
              }
            ],
            "description": "Schedule M-3, net income reconciliation for large corporations, when attached."
          },
          "form_8990": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form8990"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 8990, limitation on business interest expense, when attached."
          },
          "form_8949": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form8949"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 8949, sales and other dispositions of capital assets, when attached."
          },
          "affiliated_entities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_AffiliatedEntity"
            },
            "description": "Entities listed on the ownership schedules (Schedule G, Form 851), one entry per entity."
          },
          "two_year_comparison": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_TwoYearComparison"
              },
              {
                "type": "null"
              }
            ],
            "description": "The preparer's comparison worksheet (two or three printed years), when the return carries one."
          },
          "consolidated_statements": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_ConsolidatedReturnStatements"
              },
              {
                "type": "null"
              }
            ],
            "description": "The consolidating statements of a consolidated return, when the return carries them."
          }
        },
        "additionalProperties": false,
        "description": "Form 1120, U.S. Corporation Income Tax Return, with the schedules and attached forms the return carries. A schedule the return does not include is null."
      },
      "TaxReturnReportData_Form1120Deductions": {
        "required": [
          "line_12_officer_compensation",
          "line_13_salaries_wages",
          "line_14_repairs",
          "line_15_bad_debts",
          "line_16_rents",
          "line_17_taxes_licenses",
          "line_18_interest",
          "line_19_charitable",
          "line_20_depreciation",
          "line_21_depletion",
          "line_22_advertising",
          "line_23_pension",
          "line_24_employee_benefits",
          "line_25_reserved",
          "line_25_energy_efficient_buildings",
          "line_26_other_deductions",
          "line_27_total_deductions",
          "line_28_taxable_before_nol",
          "line_29a_nol_deduction",
          "line_29b_special_deductions",
          "line_29c_total",
          "line_30_taxable_income"
        ],
        "type": "object",
        "properties": {
          "line_12_officer_compensation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, compensation of officers (Form 1125-E).",
            "x-spreadspace-unit": "money"
          },
          "line_13_salaries_wages": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, salaries and wages, less employment credits.",
            "x-spreadspace-unit": "money"
          },
          "line_14_repairs": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, repairs and maintenance.",
            "x-spreadspace-unit": "money"
          },
          "line_15_bad_debts": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, bad debts.",
            "x-spreadspace-unit": "money"
          },
          "line_16_rents": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, rents.",
            "x-spreadspace-unit": "money"
          },
          "line_17_taxes_licenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, taxes and licenses.",
            "x-spreadspace-unit": "money"
          },
          "line_18_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18, interest.",
            "x-spreadspace-unit": "money"
          },
          "line_19_charitable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19, charitable contributions.",
            "x-spreadspace-unit": "money"
          },
          "line_20_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 20, depreciation from Form 4562 not claimed on Form 1125-A or elsewhere on the return.",
            "x-spreadspace-unit": "money"
          },
          "line_21_depletion": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 21, depletion.",
            "x-spreadspace-unit": "money"
          },
          "line_22_advertising": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 22, advertising.",
            "x-spreadspace-unit": "money"
          },
          "line_23_pension": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 23, pension, profit-sharing and similar plans.",
            "x-spreadspace-unit": "money"
          },
          "line_24_employee_benefits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 24, employee benefit programs.",
            "x-spreadspace-unit": "money"
          },
          "line_25_reserved": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 25, reserved for future use, on returns that print it so.",
            "x-spreadspace-unit": "money"
          },
          "line_25_energy_efficient_buildings": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 25, energy efficient commercial buildings deduction (Form 7205), on returns that print the line.",
            "x-spreadspace-unit": "money"
          },
          "line_26_other_deductions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 26, other deductions.",
            "x-spreadspace-unit": "money"
          },
          "line_27_total_deductions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 27, total deductions: lines 12 through 26 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_28_taxable_before_nol": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 28, taxable income before net operating loss deduction and special deductions: line 11 less line 27.",
            "x-spreadspace-unit": "money"
          },
          "line_29a_nol_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 29a, net operating loss deduction.",
            "x-spreadspace-unit": "money"
          },
          "line_29b_special_deductions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 29b, special deductions (Schedule C).",
            "x-spreadspace-unit": "money"
          },
          "line_29c_total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 29c, lines 29a and 29b added together.",
            "x-spreadspace-unit": "money"
          },
          "line_30_taxable_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 30, taxable income: line 28 less line 29c.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 1120, page 1, deductions, lines 12 through 30."
      },
      "TaxReturnReportData_Form1120Header": {
        "required": [
          "tax_year",
          "entity_name",
          "ein",
          "address_street",
          "address_city",
          "address_state",
          "address_zip",
          "date_incorporated",
          "total_assets",
          "flag_consolidated",
          "flag_life_nonlife_consolidated",
          "flag_personal_holding",
          "flag_personal_service",
          "flag_schedule_m3",
          "flag_initial_return",
          "flag_final_return",
          "flag_amended",
          "flag_name_change",
          "flag_address_change"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the return is for."
          },
          "entity_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of corporation."
          },
          "ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "Employer identification number, masked to the last four digits."
          },
          "address_street": {
            "type": [
              "string",
              "null"
            ],
            "description": "Street address."
          },
          "address_city": {
            "type": [
              "string",
              "null"
            ],
            "description": "City or town."
          },
          "address_state": {
            "type": [
              "string",
              "null"
            ],
            "description": "State."
          },
          "address_zip": {
            "type": [
              "string",
              "null"
            ],
            "description": "ZIP code."
          },
          "date_incorporated": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item C, date incorporated, as printed (month, day, year).",
            "x-spreadspace-format": "printed"
          },
          "total_assets": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Item D, total assets.",
            "x-spreadspace-unit": "money"
          },
          "flag_consolidated": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item A box 1a, consolidated return."
          },
          "flag_life_nonlife_consolidated": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item A box 1b, life and nonlife consolidated return."
          },
          "flag_personal_holding": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item A box 2, personal holding company."
          },
          "flag_personal_service": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item A box 3, personal service corporation."
          },
          "flag_schedule_m3": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item A box 4, Schedule M-3 attached."
          },
          "flag_initial_return": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item E box 1, initial return."
          },
          "flag_final_return": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item E box 2, final return."
          },
          "flag_amended": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item E box 4, amended return."
          },
          "flag_name_change": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item E box 3, name change."
          },
          "flag_address_change": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item E box 3, address change."
          }
        },
        "additionalProperties": false,
        "description": "The entity block at the top of Form 1120, page 1."
      },
      "TaxReturnReportData_Form1120Income": {
        "required": [
          "line_1a_gross_receipts",
          "line_1b_returns_allowances",
          "line_1c_net",
          "line_2_cogs",
          "line_3_gross_profit",
          "line_4_dividends",
          "line_5_interest",
          "line_6_gross_rents",
          "line_7_gross_royalties",
          "line_8_capital_gain_net",
          "line_9_net_gain_4797",
          "line_10_other_income",
          "line_11_total_income"
        ],
        "type": "object",
        "properties": {
          "line_1a_gross_receipts": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1a, gross receipts or sales.",
            "x-spreadspace-unit": "money"
          },
          "line_1b_returns_allowances": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1b, returns and allowances.",
            "x-spreadspace-unit": "money"
          },
          "line_1c_net": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1c, balance: line 1a less line 1b.",
            "x-spreadspace-unit": "money"
          },
          "line_2_cogs": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, cost of goods sold (Form 1125-A).",
            "x-spreadspace-unit": "money"
          },
          "line_3_gross_profit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, gross profit: line 1c less line 2.",
            "x-spreadspace-unit": "money"
          },
          "line_4_dividends": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, dividends and inclusions (Schedule C).",
            "x-spreadspace-unit": "money"
          },
          "line_5_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, interest.",
            "x-spreadspace-unit": "money"
          },
          "line_6_gross_rents": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, gross rents.",
            "x-spreadspace-unit": "money"
          },
          "line_7_gross_royalties": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, gross royalties.",
            "x-spreadspace-unit": "money"
          },
          "line_8_capital_gain_net": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, capital gain net income (Schedule D).",
            "x-spreadspace-unit": "money"
          },
          "line_9_net_gain_4797": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, net gain or (loss) from Form 4797, Part II, line 17.",
            "x-spreadspace-unit": "money"
          },
          "line_10_other_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, other income.",
            "x-spreadspace-unit": "money"
          },
          "line_11_total_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, total income: lines 3 through 10 added together.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 1120, page 1, income, lines 1a through 11."
      },
      "TaxReturnReportData_Form1120S": {
        "required": [
          "header",
          "income",
          "deductions",
          "tax_payments",
          "schedule_b",
          "schedule_k",
          "schedule_l",
          "schedule_m1",
          "schedule_m2",
          "form_1125a",
          "form_1125e",
          "form_4562",
          "form_schedule_d",
          "form_4797",
          "form_schedule_m3",
          "form_8990",
          "form_8825",
          "affiliated_entities"
        ],
        "type": "object",
        "properties": {
          "header": {
            "description": "The entity block at the top of page 1.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120sHeader"
          },
          "income": {
            "description": "Page 1, income, lines 1a through 6.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120sIncome"
          },
          "deductions": {
            "description": "Page 1, deductions, lines 7 through 22.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120sDeductions"
          },
          "tax_payments": {
            "description": "Page 1, tax and payments, lines 22a through 27.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120sTaxPayments"
          },
          "schedule_b": {
            "description": "Schedule B, other information.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120sScheduleB"
          },
          "schedule_k": {
            "description": "Schedule K, shareholders' pro rata share items.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120sScheduleK"
          },
          "schedule_l": {
            "description": "Schedule L, balance sheets per books.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleLCorp"
          },
          "schedule_m1": {
            "description": "Schedule M-1, reconciliation of income per books with income per return.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120sScheduleM1"
          },
          "schedule_m2": {
            "description": "Schedule M-2, analysis of the accumulated adjustments account and the other equity accounts.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120sScheduleM2"
          },
          "form_1125a": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form1125A"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 1125-A, cost of goods sold, when attached."
          },
          "form_1125e": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form1125E"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 1125-E, compensation of officers, when attached."
          },
          "form_4562": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form4562"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 4562, depreciation and amortization, when attached; the first of forms_4562 when several are."
          },
          "forms_4562": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Form4562"
            },
            "description": "Every Form 4562 attached, one per activity."
          },
          "form_schedule_d": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_FormScheduleD"
              },
              {
                "type": "null"
              }
            ],
            "description": "Schedule D, capital gains and losses and built-in gains, when attached."
          },
          "form_4797": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form4797"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 4797, sales of business property, when attached."
          },
          "schedule_f": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_ScheduleF"
              },
              {
                "type": "null"
              }
            ],
            "description": "Schedule F, profit or loss from farming, when the return attaches one."
          },
          "schedules_f": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ScheduleF"
            },
            "description": "Every Schedule F the return attaches, one per farm activity; the first is schedule_f."
          },
          "form_schedule_m3": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_FormScheduleM3"
              },
              {
                "type": "null"
              }
            ],
            "description": "Schedule M-3, net income reconciliation for large S corporations, when attached."
          },
          "form_8990": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form8990"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 8990, limitation on business interest expense, when attached."
          },
          "form_8949": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form8949"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 8949, sales and other dispositions of capital assets, when attached."
          },
          "form_8825": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form8825"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 8825, rental real estate income and expenses, when attached."
          },
          "affiliated_entities": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_AffiliatedEntity"
            },
            "description": "Entities listed on the ownership schedules, one entry per entity."
          },
          "two_year_comparison": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_TwoYearComparison"
              },
              {
                "type": "null"
              }
            ],
            "description": "The preparer's comparison worksheet (two or three printed years), when the return carries one."
          }
        },
        "additionalProperties": false,
        "description": "Form 1120-S, U.S. Income Tax Return for an S Corporation, with the schedules and attached forms the return carries. A schedule the return does not include is null."
      },
      "TaxReturnReportData_Form1120SK1": {
        "required": [
          "tax_year",
          "shareholder_info",
          "line_1_ordinary_business_income",
          "line_16_basis_items"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the schedule is for."
          },
          "is_amended": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Amended K-1 box."
          },
          "is_final": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Final K-1 box."
          },
          "shareholder_info": {
            "description": "Parts I and II, information about the corporation and the shareholder.",
            "$ref": "#/components/schemas/TaxReturnReportData_K1ShareholderInfo"
          },
          "line_1_ordinary_business_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 1, ordinary business income (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_2_net_rental_real_estate": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 2, net rental real estate income (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_3_other_net_rental": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 3, other net rental income (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_4_interest_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 4, interest income.",
            "x-spreadspace-unit": "money"
          },
          "line_5a_ordinary_dividends": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 5a, ordinary dividends.",
            "x-spreadspace-unit": "money"
          },
          "line_5b_qualified_dividends": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 5b, qualified dividends.",
            "x-spreadspace-unit": "money"
          },
          "line_6_royalties": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 6, royalties.",
            "x-spreadspace-unit": "money"
          },
          "line_7_short_term_capital_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 7, net short-term capital gain (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_8a_long_term_capital_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 8a, net long-term capital gain (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_8b_collectibles_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 8b, collectibles (28 percent) gain (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_8c_unrecap_1250_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 8c, unrecaptured section 1250 gain.",
            "x-spreadspace-unit": "money"
          },
          "line_9_section_1231_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 9, net section 1231 gain (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_10_other_income": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_K1CodedEntry"
            },
            "description": "Box 10, other income (loss), one entry per code printed."
          },
          "line_11_section_179_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Box 11, section 179 deduction.",
            "x-spreadspace-unit": "money"
          },
          "line_12_other_deductions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_K1CodedEntry"
            },
            "description": "Box 12, other deductions, one entry per code printed."
          },
          "line_13_credits": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_K1CodedEntry"
            },
            "description": "Box 13, credits, one entry per code printed."
          },
          "line_14_foreign_transactions": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_K1CodedEntry"
            },
            "description": "Box 14, foreign transactions, one entry per code printed, on schedules that print the box with codes."
          },
          "line_15_amt_items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_K1CodedEntry"
            },
            "description": "Box 15, alternative minimum tax items, one entry per code printed."
          },
          "line_16_basis_items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_K1CodedEntry"
            },
            "description": "Box 16, items affecting shareholder basis, one entry per code printed."
          },
          "line_17_other_information": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_K1CodedEntry"
            },
            "description": "Box 17, other information, one entry per code printed."
          },
          "line_18_more_than_one_at_risk_activity": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Box 18, more than one activity for at-risk purposes, yes or no as marked."
          },
          "line_19_more_than_one_passive_activity": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Box 19, more than one activity for passive activity purposes, yes or no as marked."
          }
        },
        "additionalProperties": false,
        "description": "Schedule K-1 (Form 1120-S), shareholder's share of income, deductions, credits and other items. Boxes that take code letters carry one entry per printed code."
      },
      "TaxReturnReportData_Form1120ScheduleJ": {
        "required": [
          "line_1_1120w_used",
          "line_2_income_tax",
          "line_3_base_erosion",
          "line_4_sum_2_3",
          "line_5a_foreign_tax_credit",
          "line_5b_credit_8834",
          "line_5c_general_business_credit",
          "line_5d_prior_year_min_tax",
          "line_5e_other",
          "line_6_total_credits",
          "line_7_subtract_6_from_4",
          "line_8_personal_holding_tax",
          "line_9a_recapture_investment",
          "line_9b_recapture_lihtc",
          "line_9c_interest_installment",
          "line_9d_other",
          "line_9d_interest_453a",
          "line_9e_interest_460",
          "line_9f_other_recapture",
          "line_9g_total_recaptures",
          "line_10_total_tax",
          "line_13_prior_year_overpayment",
          "line_14_estimated_payments",
          "line_15_refund_4466",
          "line_16_combine_13_15",
          "line_17_form_7004",
          "line_18_withholding",
          "line_19_total_payments",
          "line_20a_form_2439",
          "line_20b_form_4136",
          "line_20d_other_refundable",
          "line_21_total_refundable_credits",
          "line_23_total_payments_credits"
        ],
        "type": "object",
        "properties": {
          "line_1_1120w_used": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 1, the controlled group box, yes or no as marked."
          },
          "line_1a_income_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1a, income tax on the controlled group's share, when printed.",
            "x-spreadspace-unit": "money"
          },
          "line_2_income_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, income tax.",
            "x-spreadspace-unit": "money"
          },
          "line_3_base_erosion": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, base erosion minimum tax amount (Form 8991).",
            "x-spreadspace-unit": "money"
          },
          "line_4_sum_2_3": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, lines 2 and 3 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_5a_foreign_tax_credit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5a, foreign tax credit (Form 1118).",
            "x-spreadspace-unit": "money"
          },
          "line_5b_credit_8834": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5b, credit from Form 8834.",
            "x-spreadspace-unit": "money"
          },
          "line_5c_general_business_credit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5c, general business credit (Form 3800).",
            "x-spreadspace-unit": "money"
          },
          "line_5d_prior_year_min_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5d, credit for prior year minimum tax (Form 8827).",
            "x-spreadspace-unit": "money"
          },
          "line_5e_other": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5e, bond credits and other credits.",
            "x-spreadspace-unit": "money"
          },
          "line_6_total_credits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, total credits: lines 5a through 5e added together.",
            "x-spreadspace-unit": "money"
          },
          "line_7_subtract_6_from_4": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, line 4 less line 6.",
            "x-spreadspace-unit": "money"
          },
          "line_8_personal_holding_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, personal holding company tax (Schedule PH).",
            "x-spreadspace-unit": "money"
          },
          "line_9a_recapture_investment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9a, recapture of investment credit (Form 4255).",
            "x-spreadspace-unit": "money"
          },
          "line_9b_recapture_lihtc": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9b, recapture of low-income housing credit (Form 8611).",
            "x-spreadspace-unit": "money"
          },
          "line_9c_interest_installment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9c, interest due under the look-back method on completed long-term contracts (Form 8697).",
            "x-spreadspace-unit": "money"
          },
          "line_9d_other": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9d, interest due under the look-back method on the income forecast method (Form 8866), on returns that print it there.",
            "x-spreadspace-unit": "money"
          },
          "line_9d_interest_453a": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9f, interest or tax due under section 453A(c) or section 453(l), as the return numbers it.",
            "x-spreadspace-unit": "money"
          },
          "line_9e_interest_460": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9e, alternative tax on qualifying shipping activities (Form 8902) or other section 460 interest, as the return numbers it.",
            "x-spreadspace-unit": "money"
          },
          "line_9f_other_recapture": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9f or 9g, other taxes and recaptures, as the return numbers it.",
            "x-spreadspace-unit": "money"
          },
          "line_9g_total_recaptures": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, total of the line 9 entries.",
            "x-spreadspace-unit": "money"
          },
          "line_11a_total_tax_before_deferred": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total tax before deferred amounts, on returns that print the line.",
            "x-spreadspace-unit": "money"
          },
          "line_10_total_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, total tax: lines 7, 8 and 10 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_13_prior_year_overpayment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Prior year overpayment credited to the current year.",
            "x-spreadspace-unit": "money"
          },
          "line_14_estimated_payments": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Current year estimated tax payments.",
            "x-spreadspace-unit": "money"
          },
          "line_15_refund_4466": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Refund applied for on Form 4466.",
            "x-spreadspace-unit": "money"
          },
          "line_16_combine_13_15": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The prior year overpayment and estimated payments less the Form 4466 refund.",
            "x-spreadspace-unit": "money"
          },
          "line_17_form_7004": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Tax deposited with Form 7004.",
            "x-spreadspace-unit": "money"
          },
          "line_18_withholding": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Withholding.",
            "x-spreadspace-unit": "money"
          },
          "line_19_total_payments": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total payments.",
            "x-spreadspace-unit": "money"
          },
          "line_20a_form_2439": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Refundable credit from Form 2439.",
            "x-spreadspace-unit": "money"
          },
          "line_20b_form_4136": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Refundable credit from Form 4136.",
            "x-spreadspace-unit": "money"
          },
          "line_20d_other_refundable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Other refundable credits.",
            "x-spreadspace-unit": "money"
          },
          "line_21_total_refundable_credits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total refundable credits.",
            "x-spreadspace-unit": "money"
          },
          "line_23_total_payments_credits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total payments and credits.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule J of Form 1120, tax computation and payment."
      },
      "TaxReturnReportData_Form1120ScheduleK": {
        "required": [
          "accounting_method",
          "business_activity_code",
          "flag_consolidated_subsidiaries",
          "flag_25pct_foreign_owned",
          "flag_163j_limitation",
          "flag_280e",
          "business_activity_text",
          "product_service_text",
          "flag_4a_foreign_or_domestic_owns_voting",
          "flag_4b_individual_estate_owns_voting",
          "flag_5a_owns_20pct_corp",
          "flag_5b_owns_20pct_partnership_trust",
          "flag_6_dividends_excess_ep",
          "flag_8_oid_debt_issued",
          "line_9_tax_exempt_interest",
          "num_shareholders",
          "flag_11_nol_forego_carryback",
          "line_12_nol_carryover",
          "flag_13_total_receipts_under_250k",
          "flag_14_schedule_utp_required",
          "flag_15a_made_1099_payments",
          "flag_15b_filed_1099",
          "flag_16_ownership_change_80pct",
          "flag_17_disposed_65pct_assets",
          "flag_18_351_transfer",
          "flag_19_1042_1042s_payments",
          "flag_20_cooperative_basis",
          "flag_21_267a_interest_royalty",
          "flag_22_receipts_500m_beat",
          "flag_24_448c_excess_interest",
          "flag_25_qof_form_8996",
          "flag_26_7874_inversion",
          "flag_27_digital_asset_transaction",
          "flag_28_controlled_group_member",
          "flag_29a_camt_applicable_prior_year",
          "flag_29b_camt_applicable_current_year",
          "flag_29c_camt_safe_harbor",
          "flag_30a_7208_covered_corp",
          "flag_30b_7208_foreign_corp",
          "flag_30c_7208_surrogate",
          "flag_31_consolidated_1b_subch_k"
        ],
        "type": "object",
        "properties": {
          "accounting_method": {
            "type": [
              "string",
              "null"
            ],
            "description": "Question 1, accounting method: cash, accrual or other."
          },
          "business_activity_code": {
            "type": [
              "string",
              "null"
            ],
            "description": "Question 2a, business activity code number."
          },
          "flag_consolidated_subsidiaries": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 3, the corporation is a subsidiary in an affiliated or controlled group."
          },
          "flag_25pct_foreign_owned": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 7, a foreign person owned twenty-five percent or more of the voting stock."
          },
          "flag_163j_limitation": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 24, the corporation is subject to the section 163(j) business interest limitation."
          },
          "flag_280e": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 27, the corporation had expenses disallowed under section 280E."
          },
          "business_activity_text": {
            "type": [
              "string",
              "null"
            ],
            "description": "Question 2b, business activity."
          },
          "product_service_text": {
            "type": [
              "string",
              "null"
            ],
            "description": "Question 2c, product or service."
          },
          "flag_4a_foreign_or_domestic_owns_voting": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 4a, a foreign or domestic entity owned fifty percent or more of the voting stock."
          },
          "flag_4b_individual_estate_owns_voting": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 4b, an individual or estate owned fifty percent or more of the voting stock."
          },
          "flag_5a_owns_20pct_corp": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 5a, the corporation owned twenty percent or more of a corporation."
          },
          "flag_5b_owns_20pct_partnership_trust": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 5b, the corporation owned twenty percent or more of a partnership or trust."
          },
          "flag_6_dividends_excess_ep": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 6, dividends paid in excess of current and accumulated earnings and profits."
          },
          "flag_8_oid_debt_issued": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 8, publicly offered debt instruments with original issue discount were issued."
          },
          "line_9_tax_exempt_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Question 9, tax-exempt interest received or accrued during the tax year.",
            "x-spreadspace-unit": "money"
          },
          "num_shareholders": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Question 10, number of shareholders at year end, when 100 or fewer."
          },
          "flag_11_nol_forego_carryback": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 11, election to forego the carryback of a net operating loss."
          },
          "line_12_nol_carryover": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Question 12, net operating loss carryover from prior tax years available.",
            "x-spreadspace-unit": "money"
          },
          "flag_13_total_receipts_under_250k": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 13, total receipts and total assets were both under 250,000 dollars, so Schedules L, M-1 and M-2 are not required."
          },
          "flag_14_schedule_utp_required": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 14, Schedule UTP is required."
          },
          "flag_15a_made_1099_payments": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 15a, payments made that would require Forms 1099."
          },
          "flag_15b_filed_1099": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 15b, the required Forms 1099 were or will be filed."
          },
          "flag_16_ownership_change_80pct": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 16, an ownership change of eighty percent or more during the year."
          },
          "flag_17_disposed_65pct_assets": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 17, disposal of sixty-five percent or more of assets in a taxable, non-taxable or tax deferred transaction."
          },
          "flag_18_351_transfer": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 18, property received in a section 351 transfer with a fair market value over one million dollars."
          },
          "flag_19_1042_1042s_payments": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 19, payments requiring Forms 1042 and 1042-S."
          },
          "flag_20_cooperative_basis": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 20, the corporation operated on a cooperative basis."
          },
          "flag_21_267a_interest_royalty": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 21, interest or royalty deductions disallowed under section 267A."
          },
          "flag_22_receipts_500m_beat": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 22, gross receipts of 500 million dollars or more in the prior three years, so Form 8991 may be required."
          },
          "flag_24_448c_excess_interest": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 24, the corporation meets the gross receipts test of section 448(c) for the interest limitation."
          },
          "flag_25_qof_form_8996": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 25, the corporation is a qualified opportunity fund attaching Form 8996."
          },
          "flag_26_7874_inversion": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 26, a section 7874 inversion transaction."
          },
          "flag_27_digital_asset_transaction": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 27, the corporation received, sold, exchanged or otherwise disposed of a digital asset."
          },
          "flag_28_controlled_group_member": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 28, the corporation is a member of a controlled group."
          },
          "flag_29a_camt_applicable_prior_year": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 29a, the corporation was an applicable corporation for the corporate alternative minimum tax in the prior year."
          },
          "flag_29b_camt_applicable_current_year": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 29b, the corporation is an applicable corporation for the corporate alternative minimum tax in the current year."
          },
          "flag_29c_camt_safe_harbor": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 29c, the corporation met the safe harbor for the corporate alternative minimum tax."
          },
          "flag_30a_7208_covered_corp": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 30a, the corporation is a covered corporation under section 7208."
          },
          "flag_30b_7208_foreign_corp": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 30b, the corporation is a foreign corporation subject to section 7208."
          },
          "flag_30c_7208_surrogate": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 30c, the corporation is a surrogate foreign corporation under section 7208."
          },
          "flag_31_consolidated_1b_subch_k": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 31, an affiliated group member is a partner in a partnership under subchapter K."
          }
        },
        "additionalProperties": false,
        "description": "Schedule K of Form 1120, other information: the yes or no questions, as answered."
      },
      "TaxReturnReportData_Form1120ScheduleM1": {
        "required": [
          "line_1_net_income_books",
          "line_2_federal_income_tax",
          "line_3_excess_cap_losses",
          "line_4_income_return_not_books",
          "line_5a_depreciation",
          "line_5b_charitable",
          "line_5c_travel_entertainment",
          "line_5d_other",
          "line_5_expenses_books_not_return",
          "line_6_sum_1_5",
          "line_7a_tax_exempt",
          "line_7b_other_books_not_return",
          "line_8a_depreciation",
          "line_8b_charitable",
          "line_8c_other",
          "line_9_sum_7_8",
          "line_10_income_line_28"
        ],
        "type": "object",
        "properties": {
          "line_1_net_income_books": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, net income (loss) per books.",
            "x-spreadspace-unit": "money"
          },
          "line_2_federal_income_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, federal income tax per books.",
            "x-spreadspace-unit": "money"
          },
          "line_3_excess_cap_losses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, excess of capital losses over capital gains.",
            "x-spreadspace-unit": "money"
          },
          "line_4_income_return_not_books": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, income subject to tax not recorded on books this year.",
            "x-spreadspace-unit": "money"
          },
          "line_5a_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5a, depreciation recorded on books this year not deducted on the return.",
            "x-spreadspace-unit": "money"
          },
          "line_5b_charitable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5b, charitable contributions recorded on books this year not deducted on the return.",
            "x-spreadspace-unit": "money"
          },
          "line_5c_travel_entertainment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5c, travel and entertainment recorded on books this year not deducted on the return.",
            "x-spreadspace-unit": "money"
          },
          "line_5d_other": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5d, other expenses recorded on books this year not deducted on the return.",
            "x-spreadspace-unit": "money"
          },
          "line_5_expenses_books_not_return": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, expenses recorded on books this year not deducted on the return, total.",
            "x-spreadspace-unit": "money"
          },
          "line_6_sum_1_5": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, lines 1 through 5 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_7a_tax_exempt": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7a, tax-exempt interest recorded on books this year not included on the return.",
            "x-spreadspace-unit": "money"
          },
          "line_7b_other_books_not_return": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7b, other income recorded on books this year not included on the return.",
            "x-spreadspace-unit": "money"
          },
          "line_7_income_books_not_return": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, income recorded on books this year not included on the return, total.",
            "x-spreadspace-unit": "money"
          },
          "line_8a_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8a, depreciation deducted on the return not charged against book income this year.",
            "x-spreadspace-unit": "money"
          },
          "line_8b_charitable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8b, charitable contributions deducted on the return not charged against book income this year.",
            "x-spreadspace-unit": "money"
          },
          "line_8c_other": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8c, other deductions on the return not charged against book income this year.",
            "x-spreadspace-unit": "money"
          },
          "line_8_deductions_return_not_books": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, deductions on the return not charged against book income this year, total.",
            "x-spreadspace-unit": "money"
          },
          "line_9_sum_7_8": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, lines 7 and 8 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_10_income_line_28": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, income (page 1, line 28): line 6 less line 9.",
            "x-spreadspace-unit": "money"
          },
          "writeins": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ScheduleM1WriteIn"
            },
            "description": "Reasons the preparer wrote on an itemize line of Schedule M-1 in place of an attached statement, one entry per reason."
          }
        },
        "additionalProperties": false,
        "description": "Schedule M-1 of Form 1120, reconciliation of income per books with income per return, lines 1 through 10."
      },
      "TaxReturnReportData_Form1120ScheduleM2": {
        "required": [
          "line_1_balance_beginning",
          "line_2_net_income_books",
          "line_3_other_increases",
          "line_4_sum_1_3",
          "line_5a_cash_dividends",
          "line_5b_stock_dividends",
          "line_5c_property_dividends",
          "line_6_other_decreases",
          "line_7_sum_5_6",
          "line_8_balance_end"
        ],
        "type": "object",
        "properties": {
          "line_1_balance_beginning": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, balance at beginning of year.",
            "x-spreadspace-unit": "money"
          },
          "line_2_net_income_books": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, net income (loss) per books.",
            "x-spreadspace-unit": "money"
          },
          "line_3_other_increases": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, other increases.",
            "x-spreadspace-unit": "money"
          },
          "line_4_sum_1_3": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, lines 1 through 3 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_5a_cash_dividends": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5a, distributions, cash.",
            "x-spreadspace-unit": "money"
          },
          "line_5b_stock_dividends": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5b, distributions, stock.",
            "x-spreadspace-unit": "money"
          },
          "line_5c_property_dividends": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5c, distributions, property.",
            "x-spreadspace-unit": "money"
          },
          "line_6_other_decreases": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, other decreases.",
            "x-spreadspace-unit": "money"
          },
          "line_7_sum_5_6": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, lines 5 and 6 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_8_balance_end": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, balance at end of year: line 4 less line 7.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule M-2 of Form 1120, analysis of unappropriated retained earnings per books, lines 1 through 8."
      },
      "TaxReturnReportData_Form1120TaxPayments": {
        "required": [
          "line_31_total_tax",
          "line_32_reserved",
          "line_33_total_payments_credits",
          "line_34_estimated_tax_penalty",
          "line_35_amount_owed",
          "line_36_overpayment",
          "line_37_refund"
        ],
        "type": "object",
        "properties": {
          "line_31_total_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 31, total tax (Schedule J, Part I).",
            "x-spreadspace-unit": "money"
          },
          "line_32_reserved": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 32, reserved for future use, on returns that print it so.",
            "x-spreadspace-unit": "money"
          },
          "line_33_total_payments_credits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 33, total payments and credits (Schedule J).",
            "x-spreadspace-unit": "money"
          },
          "line_34_estimated_tax_penalty": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 34, estimated tax penalty.",
            "x-spreadspace-unit": "money"
          },
          "line_35_amount_owed": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 35, amount owed.",
            "x-spreadspace-unit": "money"
          },
          "line_36_overpayment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 36, overpayment.",
            "x-spreadspace-unit": "money"
          },
          "line_37_refund": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 37, amount of the overpayment refunded.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 1120, page 1, tax, refundable credits and payments, lines 31 through 37."
      },
      "TaxReturnReportData_Form1120sDeductions": {
        "required": [
          "line_7_officer_compensation",
          "line_8_salaries_wages",
          "line_9_repairs",
          "line_10_bad_debts",
          "line_11_rents",
          "line_12_taxes_licenses",
          "line_13_interest",
          "line_14_depreciation",
          "line_15_depletion",
          "line_16_advertising",
          "line_17_pension",
          "line_18_employee_benefits",
          "line_19_energy_efficient_buildings",
          "line_20_other_deductions",
          "line_21_total_deductions",
          "line_22_ordinary_business_income"
        ],
        "type": "object",
        "properties": {
          "line_7_officer_compensation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, compensation of officers (Form 1125-E).",
            "x-spreadspace-unit": "money"
          },
          "line_8_salaries_wages": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, salaries and wages, less employment credits.",
            "x-spreadspace-unit": "money"
          },
          "line_9_repairs": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, repairs and maintenance.",
            "x-spreadspace-unit": "money"
          },
          "line_10_bad_debts": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, bad debts.",
            "x-spreadspace-unit": "money"
          },
          "line_11_rents": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, rents.",
            "x-spreadspace-unit": "money"
          },
          "line_12_taxes_licenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, taxes and licenses.",
            "x-spreadspace-unit": "money"
          },
          "line_13_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, interest.",
            "x-spreadspace-unit": "money"
          },
          "line_14_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, depreciation not claimed on Form 1125-A or elsewhere on the return.",
            "x-spreadspace-unit": "money"
          },
          "line_15_depletion": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, depletion, other than oil and gas.",
            "x-spreadspace-unit": "money"
          },
          "line_16_advertising": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, advertising.",
            "x-spreadspace-unit": "money"
          },
          "line_17_pension": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, pension, profit-sharing and similar plans.",
            "x-spreadspace-unit": "money"
          },
          "line_18_employee_benefits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18, employee benefit programs.",
            "x-spreadspace-unit": "money"
          },
          "line_19_energy_efficient_buildings": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19, energy efficient commercial buildings deduction (Form 7205), on returns that print the line.",
            "x-spreadspace-unit": "money"
          },
          "line_20_other_deductions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Other deductions, the line before total deductions.",
            "x-spreadspace-unit": "money"
          },
          "line_21_total_deductions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total deductions.",
            "x-spreadspace-unit": "money"
          },
          "line_22_ordinary_business_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Ordinary business income (loss): total income (loss) less total deductions.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 1120-S, page 1, deductions, lines 7 through 22."
      },
      "TaxReturnReportData_Form1120sHeader": {
        "required": [
          "tax_year",
          "entity_name",
          "ein",
          "address_street",
          "address_city",
          "address_state",
          "address_zip",
          "date_incorporated",
          "s_election_effective_date",
          "total_assets",
          "num_shareholders",
          "business_activity",
          "product_service",
          "business_code",
          "accounting_method",
          "flag_initial_return",
          "flag_final_return",
          "flag_amended",
          "flag_name_change",
          "flag_address_change",
          "flag_s_election_termination",
          "flag_qsub_election_termination",
          "flag_schedule_m3_attached",
          "flag_aggregated_activities",
          "flag_grouped_activities"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the return is for."
          },
          "entity_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of corporation."
          },
          "ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "Employer identification number, masked to the last four digits."
          },
          "address_street": {
            "type": [
              "string",
              "null"
            ],
            "description": "Street address."
          },
          "address_city": {
            "type": [
              "string",
              "null"
            ],
            "description": "City or town."
          },
          "address_state": {
            "type": [
              "string",
              "null"
            ],
            "description": "State."
          },
          "address_zip": {
            "type": [
              "string",
              "null"
            ],
            "description": "ZIP code."
          },
          "date_incorporated": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item E, date incorporated, as printed (month, day, year).",
            "x-spreadspace-format": "printed"
          },
          "s_election_effective_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item A, S election effective date, as printed.",
            "x-spreadspace-format": "printed"
          },
          "total_assets": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Item F, total assets.",
            "x-spreadspace-unit": "money"
          },
          "num_shareholders": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Item I, number of shareholders during the tax year."
          },
          "business_activity": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item B, business activity."
          },
          "product_service": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item B, product or service."
          },
          "business_code": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item B, business activity code number."
          },
          "accounting_method": {
            "type": [
              "string",
              "null"
            ],
            "description": "Accounting method as marked on Schedule B: cash, accrual or other."
          },
          "flag_initial_return": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item H box 1, initial return."
          },
          "flag_final_return": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item H box 2, final return."
          },
          "flag_amended": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item H box 5, amended return."
          },
          "flag_name_change": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item H box 3, name change."
          },
          "flag_address_change": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item H box 4, address change."
          },
          "flag_s_election_termination": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item H box 6, S election termination."
          },
          "flag_qsub_election_termination": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item H box 7, qualified subchapter S subsidiary election termination, on returns that print the box."
          },
          "flag_schedule_m3_attached": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item C, Schedule M-3 attached."
          },
          "flag_aggregated_activities": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item J, aggregated activities for section 465 at-risk purposes."
          },
          "flag_grouped_activities": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item J, grouped activities for section 469 passive activity purposes."
          }
        },
        "additionalProperties": false,
        "description": "The entity block at the top of Form 1120-S, page 1."
      },
      "TaxReturnReportData_Form1120sIncome": {
        "required": [
          "line_1a_gross_receipts",
          "line_1b_returns_allowances",
          "line_1c_net",
          "line_2_cogs",
          "line_3_gross_profit",
          "line_4_net_gain_4797",
          "line_5_other_income",
          "line_6_total_income"
        ],
        "type": "object",
        "properties": {
          "line_1a_gross_receipts": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1a, gross receipts or sales.",
            "x-spreadspace-unit": "money"
          },
          "line_1b_returns_allowances": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1b, returns and allowances.",
            "x-spreadspace-unit": "money"
          },
          "line_1c_net": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1c, balance: line 1a less line 1b.",
            "x-spreadspace-unit": "money"
          },
          "line_2_cogs": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, cost of goods sold (Form 1125-A).",
            "x-spreadspace-unit": "money"
          },
          "line_3_gross_profit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, gross profit: line 1c less line 2.",
            "x-spreadspace-unit": "money"
          },
          "line_4_net_gain_4797": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, net gain (loss) from Form 4797, Part II, line 17.",
            "x-spreadspace-unit": "money"
          },
          "line_5_other_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, other income (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_6_total_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, total income (loss): lines 3 through 5 added together.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 1120-S, page 1, income, lines 1a through 6."
      },
      "TaxReturnReportData_Form1120sScheduleB": {
        "required": [
          "accounting_method",
          "business_activity",
          "product_service",
          "flag_shareholder_disregarded",
          "flag_shareholder_trust",
          "flag_shareholder_estate",
          "flag_owns_other_entity",
          "flag_owns_other_partnership",
          "flag_outstanding_restricted_stock",
          "flag_outstanding_stock_options",
          "flag_reportable_transaction",
          "flag_debt_instruments",
          "flag_163j",
          "flag_163j_limitation",
          "flag_under_250k_threshold",
          "flag_cancellation_of_debt",
          "flag_qsub_election_terminated",
          "flag_payments_requiring_1099",
          "flag_filed_required_1099",
          "flag_qualified_opportunity_fund",
          "flag_digital_assets"
        ],
        "type": "object",
        "properties": {
          "accounting_method": {
            "type": [
              "string",
              "null"
            ],
            "description": "Question 1, accounting method: cash, accrual or other."
          },
          "business_activity": {
            "type": [
              "string",
              "null"
            ],
            "description": "Question 2a, business activity."
          },
          "product_service": {
            "type": [
              "string",
              "null"
            ],
            "description": "Question 2b, product or service."
          },
          "flag_shareholder_disregarded": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 3, a shareholder was a disregarded entity, trust, estate or nominee."
          },
          "flag_shareholder_trust": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 3, a shareholder was a trust."
          },
          "flag_shareholder_estate": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 3, a shareholder was an estate."
          },
          "flag_owns_other_entity": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 4a, the corporation owned twenty percent or more of a corporation."
          },
          "flag_owns_other_partnership": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 4b, the corporation owned twenty percent or more of a partnership or trust."
          },
          "flag_outstanding_restricted_stock": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 5a, restricted stock outstanding at year end."
          },
          "flag_outstanding_stock_options": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 5b, stock options, warrants or similar instruments outstanding at year end."
          },
          "flag_reportable_transaction": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 6, the corporation filed or is required to file Form 8918."
          },
          "flag_debt_instruments": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 7, the corporation issued publicly offered debt instruments with original issue discount."
          },
          "flag_163j": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 10, section 163(j) applies and Form 8990 is attached."
          },
          "flag_163j_limitation": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 10, the corporation is subject to the section 163(j) business interest limitation."
          },
          "flag_under_250k_threshold": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 11, total receipts and total assets were both under 250,000 dollars, so Schedules L and M-1 are not required."
          },
          "flag_cancellation_of_debt": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 12, cancellation of debt income during the year."
          },
          "flag_qsub_election_terminated": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 13, a qualified subchapter S subsidiary election was terminated or revoked."
          },
          "flag_payments_requiring_1099": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 14a, payments made that would require Forms 1099."
          },
          "flag_filed_required_1099": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 14b, the required Forms 1099 were or will be filed."
          },
          "flag_qualified_opportunity_fund": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 15, the corporation is a qualified opportunity fund."
          },
          "flag_digital_assets": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Question 16, the corporation received, sold, exchanged or otherwise disposed of a digital asset."
          }
        },
        "additionalProperties": false,
        "description": "Schedule B of Form 1120-S, other information: the yes or no questions, as answered."
      },
      "TaxReturnReportData_Form1120sScheduleK": {
        "required": [
          "line_1_ordinary_business_income",
          "line_2_net_rental_real_estate",
          "line_3a_other_rental_gross",
          "line_3b_other_rental_expenses",
          "line_3c_other_rental_net",
          "line_4_interest_income",
          "line_5a_ordinary_dividends",
          "line_5b_qualified_dividends",
          "line_6_royalties",
          "line_7_net_short_term_gain",
          "line_8a_net_long_term_gain",
          "line_8b_collectibles",
          "line_8c_unrecaptured_1250",
          "line_9_net_sec1231",
          "line_10_other_income",
          "line_11_sec179",
          "line_12a_contributions",
          "line_12b_investment_interest",
          "line_12c_sec59e",
          "line_12d_other_deductions",
          "line_13_credits",
          "line_13a_low_income_housing_42j5",
          "line_13b_low_income_housing_other",
          "line_13c_qualified_rehabilitation",
          "line_13d_other_rental_real_estate",
          "line_13e_other_rental",
          "line_13f_other_credit_details",
          "line_13g_other_credits",
          "line_14_k3_attached",
          "line_15_amt",
          "line_15a_post_1986_depr_adj",
          "line_15b_adjusted_gain_loss",
          "line_15c_depletion",
          "line_15d_oil_gas_geothermal_income",
          "line_15e_oil_gas_geothermal_deductions",
          "line_15f_other_amt",
          "line_16a_tax_exempt_interest",
          "line_16b_other_tax_exempt",
          "line_16c_nondeductible",
          "line_16d_distributions",
          "line_16e_shareholder_loan_repayment",
          "line_17_other_info",
          "line_17v_qbi",
          "line_17a_investment_income",
          "line_17b_investment_expenses",
          "line_17c_aep_dividends",
          "line_17d_other_items",
          "line_18_reconciliation"
        ],
        "type": "object",
        "properties": {
          "line_1_ordinary_business_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, ordinary business income (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_2_net_rental_real_estate": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, net rental real estate income (loss) (Form 8825).",
            "x-spreadspace-unit": "money"
          },
          "line_3a_other_rental_gross": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3a, other gross rental income (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_3b_other_rental_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3b, expenses from other rental activities.",
            "x-spreadspace-unit": "money"
          },
          "line_3c_other_rental_net": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3c, other net rental income (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_4_interest_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, interest income.",
            "x-spreadspace-unit": "money"
          },
          "line_5a_ordinary_dividends": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5a, ordinary dividends.",
            "x-spreadspace-unit": "money"
          },
          "line_5b_qualified_dividends": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5b, qualified dividends.",
            "x-spreadspace-unit": "money"
          },
          "line_6_royalties": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, royalties.",
            "x-spreadspace-unit": "money"
          },
          "line_7_net_short_term_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, net short-term capital gain (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_8a_net_long_term_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8a, net long-term capital gain (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_8b_collectibles": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8b, collectibles (28 percent) gain (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_8c_unrecaptured_1250": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8c, unrecaptured section 1250 gain.",
            "x-spreadspace-unit": "money"
          },
          "line_9_net_sec1231": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, net section 1231 gain (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_10_other_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, other income (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_11_sec179": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, section 179 deduction.",
            "x-spreadspace-unit": "money"
          },
          "line_12a_contributions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12a, charitable contributions.",
            "x-spreadspace-unit": "money"
          },
          "line_12b_investment_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12b, investment interest expense.",
            "x-spreadspace-unit": "money"
          },
          "line_12c_sec59e": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12c, section 59(e)(2) expenditures.",
            "x-spreadspace-unit": "money"
          },
          "line_12d_other_deductions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12d, other deductions.",
            "x-spreadspace-unit": "money"
          },
          "line_13_credits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, credits, when the return prints a total for the line.",
            "x-spreadspace-unit": "money"
          },
          "line_13a_low_income_housing_42j5": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13a, low-income housing credit (section 42(j)(5)).",
            "x-spreadspace-unit": "money"
          },
          "line_13b_low_income_housing_other": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13b, low-income housing credit (other).",
            "x-spreadspace-unit": "money"
          },
          "line_13c_qualified_rehabilitation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13c, qualified rehabilitation expenditures (rental real estate).",
            "x-spreadspace-unit": "money"
          },
          "line_13d_other_rental_real_estate": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13d, other rental real estate credits.",
            "x-spreadspace-unit": "money"
          },
          "line_13e_other_rental": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13e, other rental credits.",
            "x-spreadspace-unit": "money"
          },
          "line_13f_other_credit_details": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13f, biofuel producer credit or other credit detail, as the return numbers it.",
            "x-spreadspace-unit": "money"
          },
          "line_13g_other_credits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13g, other credits.",
            "x-spreadspace-unit": "money"
          },
          "line_14_k3_attached": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 14, Schedules K-2 and K-3 attached, yes or no as marked."
          },
          "line_15_amt": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, alternative minimum tax items, when the return prints a total for the line.",
            "x-spreadspace-unit": "money"
          },
          "line_15a_post_1986_depr_adj": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15a, post-1986 depreciation adjustment.",
            "x-spreadspace-unit": "money"
          },
          "line_15b_adjusted_gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15b, adjusted gain or loss.",
            "x-spreadspace-unit": "money"
          },
          "line_15c_depletion": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15c, depletion, other than oil and gas.",
            "x-spreadspace-unit": "money"
          },
          "line_15d_oil_gas_geothermal_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15d, oil, gas and geothermal properties, gross income.",
            "x-spreadspace-unit": "money"
          },
          "line_15e_oil_gas_geothermal_deductions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15e, oil, gas and geothermal properties, deductions.",
            "x-spreadspace-unit": "money"
          },
          "line_15f_other_amt": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15f, other alternative minimum tax items.",
            "x-spreadspace-unit": "money"
          },
          "line_16a_tax_exempt_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16a, tax-exempt interest income.",
            "x-spreadspace-unit": "money"
          },
          "line_16b_other_tax_exempt": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16b, other tax-exempt income.",
            "x-spreadspace-unit": "money"
          },
          "line_16c_nondeductible": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16c, nondeductible expenses.",
            "x-spreadspace-unit": "money"
          },
          "line_16d_distributions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16d, distributions, other than dividends reported on line 17c.",
            "x-spreadspace-unit": "money"
          },
          "line_16e_shareholder_loan_repayment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16e, repayment of loans from shareholders.",
            "x-spreadspace-unit": "money"
          },
          "line_17_other_info": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, other information, when the return prints a total for the line.",
            "x-spreadspace-unit": "money"
          },
          "line_17v_qbi": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, code V, qualified business income.",
            "x-spreadspace-unit": "money"
          },
          "line_17a_investment_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17a, investment income.",
            "x-spreadspace-unit": "money"
          },
          "line_17b_investment_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17b, investment expenses.",
            "x-spreadspace-unit": "money"
          },
          "line_17c_aep_dividends": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17c, dividend distributions paid from accumulated earnings and profits.",
            "x-spreadspace-unit": "money"
          },
          "line_17d_other_items": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17d, other items and amounts.",
            "x-spreadspace-unit": "money"
          },
          "line_18_reconciliation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18, income (loss) reconciliation.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule K of Form 1120-S, shareholders' pro rata share items, lines 1 through 18."
      },
      "TaxReturnReportData_Form1120sScheduleM1": {
        "required": [
          "line_1_net_income_books",
          "line_2_income_k_not_books",
          "line_3a_depreciation",
          "line_3b_travel_entertainment",
          "line_3c_other",
          "line_3_expenses_books_not_k",
          "line_4_sum_1_3",
          "line_5_income_books_not_k",
          "line_5a_tax_exempt",
          "line_6a_depreciation",
          "line_6b_other",
          "line_7_sum_5_6",
          "line_8_income_line_18"
        ],
        "type": "object",
        "properties": {
          "line_1_net_income_books": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, net income (loss) per books.",
            "x-spreadspace-unit": "money"
          },
          "line_2_income_k_not_books": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, income included on Schedule K not recorded on books this year.",
            "x-spreadspace-unit": "money"
          },
          "line_3a_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3a, depreciation recorded on books this year not included on Schedule K.",
            "x-spreadspace-unit": "money"
          },
          "line_3b_travel_entertainment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3b, travel and entertainment recorded on books this year not included on Schedule K.",
            "x-spreadspace-unit": "money"
          },
          "line_3c_other": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3c, other expenses recorded on books this year not included on Schedule K.",
            "x-spreadspace-unit": "money"
          },
          "line_3_expenses_books_not_k": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, expenses recorded on books this year not included on Schedule K, total.",
            "x-spreadspace-unit": "money"
          },
          "line_4_sum_1_3": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, lines 1 through 3 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_5_income_books_not_k": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, income recorded on books this year not included on Schedule K, total.",
            "x-spreadspace-unit": "money"
          },
          "line_5a_tax_exempt": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5a, tax-exempt interest recorded on books this year not included on Schedule K.",
            "x-spreadspace-unit": "money"
          },
          "line_6_deductions_k_not_books": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, deductions included on Schedule K not charged against book income this year, total.",
            "x-spreadspace-unit": "money"
          },
          "line_6a_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6a, depreciation included on Schedule K not charged against book income this year.",
            "x-spreadspace-unit": "money"
          },
          "line_6b_other": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6b, other deductions included on Schedule K not charged against book income this year.",
            "x-spreadspace-unit": "money"
          },
          "line_7_sum_5_6": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, lines 5 and 6 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_8_income_line_18": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, income (loss) (Schedule K, line 18): line 4 less line 7.",
            "x-spreadspace-unit": "money"
          },
          "writeins": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ScheduleM1WriteIn"
            },
            "description": "Reasons the preparer wrote on an itemize line of Schedule M-1 in place of an attached statement, one entry per reason."
          }
        },
        "additionalProperties": false,
        "description": "Schedule M-1 of Form 1120-S, reconciliation of income per books with income per return, lines 1 through 8."
      },
      "TaxReturnReportData_Form1120sScheduleM2": {
        "required": [
          "column_a_aaa",
          "column_b_ptei",
          "column_c_aep",
          "column_d_oaa"
        ],
        "type": "object",
        "properties": {
          "column_a_aaa": {
            "description": "Column (a), accumulated adjustments account.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleM2Column"
          },
          "column_b_ptei": {
            "description": "Column (b), shareholders' undistributed taxable income previously taxed.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleM2Column"
          },
          "column_c_aep": {
            "description": "Column (c), accumulated earnings and profits.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleM2Column"
          },
          "column_d_oaa": {
            "description": "Column (d), other adjustments account.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleM2Column"
          }
        },
        "additionalProperties": false,
        "description": "Schedule M-2 of Form 1120-S, one column per equity account."
      },
      "TaxReturnReportData_Form1120sTaxPayments": {
        "required": [
          "line_22a_excess_passive_income_tax",
          "line_22b_lifo_recapture_tax",
          "line_22c_sum_22",
          "line_23a_estimated_tax_payments",
          "line_23b_tax_deposited_7004",
          "line_23c_federal_fuels_credit",
          "line_23d_refundable_credits",
          "line_23e_sum_23",
          "line_24_estimated_tax_penalty",
          "line_25_amount_owed",
          "line_26_overpayment",
          "line_27_refund"
        ],
        "type": "object",
        "properties": {
          "line_22a_excess_passive_income_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 22a, excess net passive income or LIFO recapture tax.",
            "x-spreadspace-unit": "money"
          },
          "line_22b_lifo_recapture_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 22b, tax from Schedule D (Form 1120-S).",
            "x-spreadspace-unit": "money"
          },
          "line_22c_sum_22": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 22c, lines 22a and 22b added together.",
            "x-spreadspace-unit": "money"
          },
          "line_23a_estimated_tax_payments": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 23a, estimated tax payments and prior year overpayment credited.",
            "x-spreadspace-unit": "money"
          },
          "line_23b_tax_deposited_7004": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 23b, tax deposited with Form 7004.",
            "x-spreadspace-unit": "money"
          },
          "line_23c_federal_fuels_credit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 23c, credit for federal tax paid on fuels (Form 4136).",
            "x-spreadspace-unit": "money"
          },
          "line_23d_refundable_credits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 23d, other refundable credits.",
            "x-spreadspace-unit": "money"
          },
          "line_23e_sum_23": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 23e, lines 23a through 23d added together.",
            "x-spreadspace-unit": "money"
          },
          "line_24_estimated_tax_penalty": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 24, estimated tax penalty.",
            "x-spreadspace-unit": "money"
          },
          "line_25_amount_owed": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 25, amount owed.",
            "x-spreadspace-unit": "money"
          },
          "line_26_overpayment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 26, overpayment.",
            "x-spreadspace-unit": "money"
          },
          "line_27_refund": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 27, amount of the overpayment refunded.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 1120-S, page 1, tax and payments, lines 22a through 27."
      },
      "TaxReturnReportData_Form1125A": {
        "required": [
          "tax_year",
          "parent_form",
          "line_2_purchases",
          "line_3_cost_of_labor",
          "line_5_other_costs",
          "line_6_total",
          "line_8_cogs"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the form is for."
          },
          "parent_form": {
            "type": [
              "string",
              "null"
            ],
            "description": "The return the form is attached to: 1065, 1120 or 1120S."
          },
          "entity_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name as shown on the return."
          },
          "ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "Employer identification number, masked to the last four digits."
          },
          "line_1_inventory_beginning": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, inventory at beginning of year.",
            "x-spreadspace-unit": "money"
          },
          "line_2_purchases": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, purchases.",
            "x-spreadspace-unit": "money"
          },
          "line_3_cost_of_labor": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, cost of labor.",
            "x-spreadspace-unit": "money"
          },
          "line_4_additional_263a_costs": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, additional section 263A costs.",
            "x-spreadspace-unit": "money"
          },
          "line_5_other_costs": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, other costs.",
            "x-spreadspace-unit": "money"
          },
          "line_6_total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, lines 1 through 5 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_7_inventory_ending": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, inventory at end of year.",
            "x-spreadspace-unit": "money"
          },
          "line_8_cogs": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, cost of goods sold: line 6 less line 7.",
            "x-spreadspace-unit": "money"
          },
          "line_9a_method": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9a, method used to value closing inventory: cost, lower of cost or market, or other, as marked."
          },
          "line_9b_lifo": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "The LIFO inventory method box on line 9, yes or no as marked."
          },
          "line_9c_simplified_production": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "The simplified production method box on line 9, yes or no as marked."
          },
          "line_9d_unicap_263a": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "The section 263A (uniform capitalization) rules apply box on line 9, yes or no as marked."
          },
          "line_9e_inventory_method_change": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "The change in determining quantities, costs or valuations box on line 9, yes or no as marked."
          },
          "line_9f_lifo_percentage": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "The percentage or amount of closing inventory computed under LIFO on line 9, as printed."
          }
        },
        "additionalProperties": false,
        "description": "Form 1125-A, cost of goods sold, lines 1 through 9f."
      },
      "TaxReturnReportData_Form1125E": {
        "required": [
          "tax_year",
          "parent_form",
          "entity_name",
          "ein",
          "officers",
          "line_2_total_compensation",
          "line_3_compensation_elsewhere",
          "line_4_amount_to_page_1"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the form is for."
          },
          "parent_form": {
            "type": [
              "string",
              "null"
            ],
            "description": "The return the form is attached to: 1120 or 1120S."
          },
          "entity_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name as shown on the return."
          },
          "ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "Employer identification number, masked to the last four digits."
          },
          "officers": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_OfficerCompensationRow"
            },
            "description": "Line 1, one entry per officer listed."
          },
          "line_2_total_compensation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, total compensation of officers.",
            "x-spreadspace-unit": "money"
          },
          "line_3_compensation_elsewhere": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, compensation of officers claimed on Form 1125-A or elsewhere on the return.",
            "x-spreadspace-unit": "money"
          },
          "line_4_amount_to_page_1": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, line 2 less line 3, the amount carried to page 1 of the return.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 1125-E, compensation of officers."
      },
      "TaxReturnReportData_Form4562": {
        "required": [
          "tax_year",
          "parent_form",
          "line_17_macrs_prior_year",
          "line_22_total"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the form is for."
          },
          "parent_form": {
            "type": [
              "string",
              "null"
            ],
            "description": "The return the form is attached to."
          },
          "entity_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name as shown on the return."
          },
          "ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "Identifying number, masked to the last four digits."
          },
          "business_or_activity": {
            "type": [
              "string",
              "null"
            ],
            "description": "Business or activity to which the form relates, as printed."
          },
          "state_stamp": {
            "type": [
              "string",
              "null"
            ],
            "description": "Two letter state code stamped above the form title, as printed. Present only on a state version print of the form."
          },
          "line_1_maximum_amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, maximum amount for the section 179 election.",
            "x-spreadspace-unit": "money"
          },
          "line_2_total_cost_179": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, total cost of section 179 property placed in service.",
            "x-spreadspace-unit": "money"
          },
          "line_3_threshold": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, threshold cost of section 179 property before reduction in limitation.",
            "x-spreadspace-unit": "money"
          },
          "line_4_reduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, reduction in limitation: line 2 less line 3, when positive.",
            "x-spreadspace-unit": "money"
          },
          "line_5_dollar_limitation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, dollar limitation for the tax year: line 1 less line 4.",
            "x-spreadspace-unit": "money"
          },
          "line_6_section_179_property": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Section179PropertyRow"
            },
            "description": "Line 6, section 179 property, one entry per printed row."
          },
          "line_7_listed_property_179": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, listed property, the amount from line 29.",
            "x-spreadspace-unit": "money"
          },
          "line_8_total_elected_cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, total elected cost of section 179 property: column (c) of lines 6 and 7 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_9_tentative_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, tentative deduction: the smaller of line 5 or line 8.",
            "x-spreadspace-unit": "money"
          },
          "line_10_carryover_from_prior": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, carryover of disallowed deduction from the prior year.",
            "x-spreadspace-unit": "money"
          },
          "line_11_business_income_limit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, business income limitation.",
            "x-spreadspace-unit": "money"
          },
          "line_12_section_179_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, section 179 expense deduction: lines 9 and 10 added together, no more than line 11.",
            "x-spreadspace-unit": "money"
          },
          "line_13_carryover_to_next": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, carryover of disallowed deduction to the next year.",
            "x-spreadspace-unit": "money"
          },
          "line_14_special_depr_allowance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, special depreciation allowance for qualified property placed in service during the tax year.",
            "x-spreadspace-unit": "money"
          },
          "line_15_section_168f1": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, property subject to the section 168(f)(1) election.",
            "x-spreadspace-unit": "money"
          },
          "line_16_other_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, other depreciation, including ACRS.",
            "x-spreadspace-unit": "money"
          },
          "line_17_macrs_prior_year": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, MACRS deductions for assets placed in service in tax years beginning before this year.",
            "x-spreadspace-unit": "money"
          },
          "line_18_general_asset_accounts": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 18, the election to group assets placed in service this year into general asset accounts, yes or no as marked."
          },
          "macrs_classes_current_gds": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_MacrsClassRow"
            },
            "description": "Part III section B, assets placed in service this year under the general depreciation system, one entry per class line (19a through 19i)."
          },
          "macrs_classes_current_ads": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_MacrsClassRow"
            },
            "description": "Part III section C, assets placed in service this year under the alternative depreciation system, one entry per class line (20a through 20d)."
          },
          "line_21_listed_property": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 21, listed property, the amount from line 28.",
            "x-spreadspace-unit": "money"
          },
          "line_22_total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 22, total: lines 12, 14 through 17, 19 and 20 in column (g), and 21 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_23_section_263a": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 23, portion of the basis of assets placed in service this year attributable to section 263A costs.",
            "x-spreadspace-unit": "money"
          },
          "line_24a_evidence_supports_business": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 24a, evidence exists to support the business or investment use claimed, yes or no as marked."
          },
          "line_24b_written_evidence": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 24b, the evidence is written, yes or no as marked."
          },
          "line_25_listed_special_depr": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 25, special depreciation allowance for qualified listed property placed in service during the tax year.",
            "x-spreadspace-unit": "money"
          },
          "listed_property_over_50pct": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ListedPropertyRow"
            },
            "description": "Part V line 26, listed property used more than fifty percent in a qualified business use, one entry per row."
          },
          "listed_property_under_50pct": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ListedPropertyRow"
            },
            "description": "Part V line 27, listed property used fifty percent or less in a qualified business use, one entry per row."
          },
          "line_28_listed_total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 28, column (h) of lines 25 through 27 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_29_listed_179": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 29, column (i) of line 26 added together.",
            "x-spreadspace-unit": "money"
          },
          "vehicles": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_VehicleUseRow"
            },
            "description": "Part V section B, information on use of vehicles, one entry per vehicle column."
          },
          "line_37_written_policy_no_personal": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 37, a written policy prohibits all personal use of vehicles, yes or no as marked."
          },
          "line_38_written_policy_except_commuting": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 38, a written policy prohibits personal use of vehicles except commuting, yes or no as marked."
          },
          "line_39_treat_all_personal": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 39, all use of vehicles by employees is treated as personal use, yes or no as marked."
          },
          "line_40_provide_5plus_vehicles": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 40, more than five vehicles are provided to employees and their use is recorded, yes or no as marked."
          },
          "line_41_demonstration_use": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 41, the requirements concerning qualified automobile demonstration use are met, yes or no as marked."
          },
          "line_42_amortization_current_year": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_AmortizationRow"
            },
            "description": "Line 42, amortization of costs that begin during the tax year, one entry per printed row."
          },
          "line_43_amortization_prior_year": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 43, amortization of costs that began before the tax year.",
            "x-spreadspace-unit": "money"
          },
          "line_44_total_amortization": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 44, total amortization: column (f) of line 42 and line 43 added together.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 4562, depreciation and amortization, for one business or activity."
      },
      "TaxReturnReportData_Form461": {
        "required": [
          "tax_year",
          "amt_copy",
          "line_2_schedule_1_line_3",
          "line_3_form_1040_line_7",
          "line_4_schedule_1_line_4",
          "line_5_schedule_1_line_5",
          "line_6_schedule_1_line_6",
          "line_8_other_trade_business_income",
          "line_9_combined_lines_1_8",
          "line_10_nonbusiness_income_gains",
          "line_11_nonbusiness_losses_deductions",
          "line_12_line_10_minus_11",
          "line_13_line_12_sign_flipped",
          "line_14_lines_9_and_13",
          "line_15_threshold_amount",
          "line_16_excess_business_loss"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the form is for."
          },
          "amt_copy": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "True when this is the alternative minimum tax copy of the form."
          },
          "line_2_schedule_1_line_3": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, amount from Schedule 1, line 3.",
            "x-spreadspace-unit": "money"
          },
          "line_3_form_1040_line_7": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, amount from Form 1040, line 7.",
            "x-spreadspace-unit": "money"
          },
          "line_4_schedule_1_line_4": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, amount from Schedule 1, line 4.",
            "x-spreadspace-unit": "money"
          },
          "line_5_schedule_1_line_5": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, amount from Schedule 1, line 5.",
            "x-spreadspace-unit": "money"
          },
          "line_6_schedule_1_line_6": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, amount from Schedule 1, line 6.",
            "x-spreadspace-unit": "money"
          },
          "line_8_other_trade_business_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, other trade or business income, gain or loss not reported on lines 1 through 7.",
            "x-spreadspace-unit": "money"
          },
          "line_9_combined_lines_1_8": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, lines 1 through 8 combined.",
            "x-spreadspace-unit": "money"
          },
          "line_10_nonbusiness_income_gains": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, income or gain not attributable to a trade or business.",
            "x-spreadspace-unit": "money"
          },
          "line_11_nonbusiness_losses_deductions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, losses or deductions not attributable to a trade or business.",
            "x-spreadspace-unit": "money"
          },
          "line_12_line_10_minus_11": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, line 10 less line 11.",
            "x-spreadspace-unit": "money"
          },
          "line_13_line_12_sign_flipped": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, line 12 with its sign reversed.",
            "x-spreadspace-unit": "money"
          },
          "line_14_lines_9_and_13": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, lines 9 and 13 combined.",
            "x-spreadspace-unit": "money"
          },
          "line_15_threshold_amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, the threshold amount for the tax year.",
            "x-spreadspace-unit": "money"
          },
          "line_16_excess_business_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, excess business loss.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 461, limitation on business losses."
      },
      "TaxReturnReportData_Form4797": {
        "required": [
          "tax_year",
          "parent_form",
          "entity_name",
          "ein",
          "line_1a_gross_proceeds",
          "line_1b_total_gain_partial",
          "line_1c_total_loss_partial",
          "part_i_property_rows",
          "line_3_gain_from_4684",
          "line_4_section_1231_installment",
          "line_5_section_1231_likekind",
          "line_6_gain_from_part_iii",
          "line_7_combine_2_to_6",
          "line_8_nonrecaptured_1231_losses",
          "line_9_subtract_8_from_7",
          "part_ii_property_rows",
          "line_11_loss_from_line_7",
          "line_12_gain_from_7_or_8",
          "line_13_gain_from_31",
          "line_14_4684_net",
          "line_15_ordinary_gain_installment",
          "line_16_ordinary_gain_likekind",
          "line_17_combine_10_to_16",
          "part_iii_properties",
          "line_30_total_gains_all",
          "line_31_recapture_sum",
          "line_32_subtract_31_from_30",
          "line_33a_section_179",
          "line_33b_section_280f",
          "line_34a_recomputed_depr_179",
          "line_34b_recomputed_depr_280f",
          "line_35a_recapture_179",
          "line_35b_recapture_280f"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the form is for."
          },
          "parent_form": {
            "type": [
              "string",
              "null"
            ],
            "description": "The return the form is attached to."
          },
          "entity_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name as shown on the return."
          },
          "ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "Identifying number, masked to the last four digits."
          },
          "line_1a_gross_proceeds": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1a, gross proceeds from sales or exchanges reported on Forms 1099-B or 1099-S.",
            "x-spreadspace-unit": "money"
          },
          "line_1b_total_gain_partial": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1b, total gain from partial dispositions of MACRS assets, on forms that print the line.",
            "x-spreadspace-unit": "money"
          },
          "line_1c_total_loss_partial": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1c, total loss from partial dispositions of MACRS assets, on forms that print the line.",
            "x-spreadspace-unit": "money"
          },
          "part_i_property_rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_PropertySaleRow"
            },
            "description": "Part I line 2, one entry per property sold or exchanged."
          },
          "line_3_gain_from_4684": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, gain from Form 4684, line 39.",
            "x-spreadspace-unit": "money"
          },
          "line_4_section_1231_installment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, section 1231 gain from installment sales (Form 6252).",
            "x-spreadspace-unit": "money"
          },
          "line_5_section_1231_likekind": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, section 1231 gain or (loss) from like-kind exchanges (Form 8824).",
            "x-spreadspace-unit": "money"
          },
          "line_6_gain_from_part_iii": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, gain from line 32, other than casualty or theft gain.",
            "x-spreadspace-unit": "money"
          },
          "line_7_combine_2_to_6": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, lines 2 through 6 combined in column (g).",
            "x-spreadspace-unit": "money"
          },
          "line_8_nonrecaptured_1231_losses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, nonrecaptured net section 1231 losses from prior years.",
            "x-spreadspace-unit": "money"
          },
          "line_9_subtract_8_from_7": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, line 7 less line 8.",
            "x-spreadspace-unit": "money"
          },
          "part_ii_property_rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_PropertySaleRow"
            },
            "description": "Part II line 10, one entry per property."
          },
          "line_11_loss_from_line_7": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, the loss on line 7, when any.",
            "x-spreadspace-unit": "money"
          },
          "line_12_gain_from_7_or_8": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, the gain on line 7, or the amount from line 8 when applicable.",
            "x-spreadspace-unit": "money"
          },
          "line_13_gain_from_31": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, gain from line 31.",
            "x-spreadspace-unit": "money"
          },
          "line_14_4684_net": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, net gain or (loss) from Form 4684, lines 31 and 38a.",
            "x-spreadspace-unit": "money"
          },
          "line_15_ordinary_gain_installment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, ordinary gain from installment sales (Form 6252).",
            "x-spreadspace-unit": "money"
          },
          "line_16_ordinary_gain_likekind": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, ordinary gain or (loss) from like-kind exchanges (Form 8824).",
            "x-spreadspace-unit": "money"
          },
          "line_17_combine_10_to_16": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, lines 10 through 16 combined.",
            "x-spreadspace-unit": "money"
          },
          "part_iii_properties": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_PartIIIPropertyColumn"
            },
            "description": "Part III, one entry per property column (A through D)."
          },
          "line_30_total_gains_all": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 30, total gains for all properties: line 24 across the property columns.",
            "x-spreadspace-unit": "money"
          },
          "line_31_recapture_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 31, lines 25b, 26g, 27c, 28b and 29b across the property columns added together.",
            "x-spreadspace-unit": "money"
          },
          "line_32_subtract_31_from_30": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 32, line 30 less line 31.",
            "x-spreadspace-unit": "money"
          },
          "line_33a_section_179": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 33, column (a), section 179 expense deduction or depreciation allowable in prior years.",
            "x-spreadspace-unit": "money"
          },
          "line_33b_section_280f": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 33, column (b), section 280F(b)(2) depreciation allowable in prior years.",
            "x-spreadspace-unit": "money"
          },
          "line_34a_recomputed_depr_179": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 34, column (a), recomputed depreciation under section 179.",
            "x-spreadspace-unit": "money"
          },
          "line_34b_recomputed_depr_280f": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 34, column (b), recomputed depreciation under section 280F(b)(2).",
            "x-spreadspace-unit": "money"
          },
          "line_35a_recapture_179": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 35, column (a), recapture amount: line 33 less line 34.",
            "x-spreadspace-unit": "money"
          },
          "line_35b_recapture_280f": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 35, column (b), recapture amount: line 33 less line 34.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 4797, sales of business property."
      },
      "TaxReturnReportData_Form6198": {
        "required": [
          "tax_year",
          "amt_copy",
          "activity_name",
          "activity_ein_last4",
          "line_1_ordinary_income_loss",
          "line_2a_schedule_d_gain_loss",
          "line_2b_form_4797_gain_loss",
          "line_2c_other_form_gain_loss",
          "line_3_other_income_gains",
          "line_4_other_deductions_losses",
          "line_5_current_year_profit_loss",
          "line_6_adjusted_basis_beginning",
          "line_7_increases",
          "line_8_lines_6_plus_7",
          "line_9_decreases",
          "line_10a_line_8_minus_9",
          "line_10b_amount_at_risk_simplified",
          "line_11_investment_at_effective_date",
          "line_12_increases_at_effective_date",
          "line_13_lines_11_plus_12",
          "line_14_decreases_at_effective_date",
          "line_15_amount_at_risk_prior_year",
          "line_16_increases_since",
          "line_17_lines_15_plus_16",
          "line_18_decreases_since",
          "line_19a_line_17_minus_18",
          "line_19b_amount_at_risk_detailed",
          "line_20_amount_at_risk",
          "line_21_deductible_loss"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the form is for."
          },
          "amt_copy": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "True when this is the alternative minimum tax copy of the form."
          },
          "activity_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Description of activity, as printed."
          },
          "activity_ein_last4": {
            "type": [
              "string",
              "null"
            ],
            "description": "The activity's identifying number, last four digits only."
          },
          "line_1_ordinary_income_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, ordinary income (loss) from the activity.",
            "x-spreadspace-unit": "money"
          },
          "line_2a_schedule_d_gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2a, gain (loss) from the sale or other disposition of assets used in the activity, from Schedule D.",
            "x-spreadspace-unit": "money"
          },
          "line_2b_form_4797_gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2b, gain (loss) from the sale or other disposition of assets used in the activity, from Form 4797.",
            "x-spreadspace-unit": "money"
          },
          "line_2c_other_form_gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2c, gain (loss) from the sale or other disposition of assets used in the activity, from other forms or schedules.",
            "x-spreadspace-unit": "money"
          },
          "line_3_other_income_gains": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, other income and gains from the activity.",
            "x-spreadspace-unit": "money"
          },
          "line_4_other_deductions_losses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, other deductions and losses from the activity.",
            "x-spreadspace-unit": "money"
          },
          "line_5_current_year_profit_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, current year profit (loss) from the activity: lines 1 through 4 combined.",
            "x-spreadspace-unit": "money"
          },
          "line_6_adjusted_basis_beginning": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, adjusted basis in the activity at the beginning of the tax year.",
            "x-spreadspace-unit": "money"
          },
          "line_7_increases": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, increases for the tax year.",
            "x-spreadspace-unit": "money"
          },
          "line_8_lines_6_plus_7": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, lines 6 and 7 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_9_decreases": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, decreases for the tax year.",
            "x-spreadspace-unit": "money"
          },
          "line_10a_line_8_minus_9": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10a, line 8 less line 9.",
            "x-spreadspace-unit": "money"
          },
          "line_10b_amount_at_risk_simplified": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10b, amount at risk under the simplified computation.",
            "x-spreadspace-unit": "money"
          },
          "line_11_investment_at_effective_date": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, investment in the activity at the effective date.",
            "x-spreadspace-unit": "money"
          },
          "line_12_increases_at_effective_date": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, increases at the effective date.",
            "x-spreadspace-unit": "money"
          },
          "line_13_lines_11_plus_12": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, lines 11 and 12 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_14_decreases_at_effective_date": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, decreases at the effective date.",
            "x-spreadspace-unit": "money"
          },
          "line_15_amount_at_risk_prior_year": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, amount at risk at the end of the prior year.",
            "x-spreadspace-unit": "money"
          },
          "line_16_increases_since": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, increases since the effective date or the end of the prior year.",
            "x-spreadspace-unit": "money"
          },
          "line_17_lines_15_plus_16": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, lines 15 and 16 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_18_decreases_since": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18, decreases since the effective date or the end of the prior year.",
            "x-spreadspace-unit": "money"
          },
          "line_19a_line_17_minus_18": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19a, line 17 less line 18.",
            "x-spreadspace-unit": "money"
          },
          "line_19b_amount_at_risk_detailed": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19b, amount at risk under the detailed computation.",
            "x-spreadspace-unit": "money"
          },
          "line_20_amount_at_risk": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 20, amount at risk: the larger of line 10b or line 19b.",
            "x-spreadspace-unit": "money"
          },
          "line_21_deductible_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 21, deductible loss: the smaller of the line 5 loss or line 20.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 6198, at-risk limitations, for one activity."
      },
      "TaxReturnReportData_Form7203": {
        "required": [
          "tax_year",
          "amt_copy",
          "corporation_name",
          "corporation_ein_last4",
          "line_1_stock_basis_beginning",
          "line_2_capital_contributions",
          "line_3a_ordinary_business_income",
          "line_3b_net_rental_real_estate_income",
          "line_3c_other_net_rental_income",
          "line_3d_interest_income",
          "line_3e_ordinary_dividends",
          "line_3f_royalties",
          "line_3g_net_capital_gains",
          "line_3h_net_section_1231_gain",
          "line_3i_other_income",
          "line_3j_excess_depletion",
          "line_3k_tax_exempt_income",
          "line_3l_recapture_business_credits",
          "line_3m_other_increases",
          "line_4_total_increases",
          "line_5_stock_basis_before_distributions",
          "line_6_distributions",
          "line_7_stock_basis_after_distributions",
          "line_8a_nondeductible_expenses",
          "line_8b_oil_gas_depletion",
          "line_8c_business_credits",
          "line_9_total_8a_8c",
          "line_10_stock_basis_before_losses",
          "line_11_allowable_loss_deduction_items",
          "line_12_debt_basis_restoration",
          "line_13_other_decreases",
          "line_14_total_decreases",
          "line_15_stock_basis_ending",
          "debt_lines",
          "loss_items"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the form is for."
          },
          "amt_copy": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "True when this is the alternative minimum tax copy of the form."
          },
          "corporation_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of S corporation."
          },
          "corporation_ein_last4": {
            "type": [
              "string",
              "null"
            ],
            "description": "The corporation's employer identification number, last four digits only."
          },
          "line_1_stock_basis_beginning": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, stock basis at the beginning of the corporation's tax year.",
            "x-spreadspace-unit": "money"
          },
          "line_2_capital_contributions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, basis from capital contributions made or additional stock acquired during the tax year.",
            "x-spreadspace-unit": "money"
          },
          "line_3a_ordinary_business_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3a, ordinary business income.",
            "x-spreadspace-unit": "money"
          },
          "line_3b_net_rental_real_estate_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3b, net rental real estate income.",
            "x-spreadspace-unit": "money"
          },
          "line_3c_other_net_rental_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3c, other net rental income.",
            "x-spreadspace-unit": "money"
          },
          "line_3d_interest_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3d, interest income.",
            "x-spreadspace-unit": "money"
          },
          "line_3e_ordinary_dividends": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3e, ordinary dividends.",
            "x-spreadspace-unit": "money"
          },
          "line_3f_royalties": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3f, royalties.",
            "x-spreadspace-unit": "money"
          },
          "line_3g_net_capital_gains": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3g, net capital gains.",
            "x-spreadspace-unit": "money"
          },
          "line_3h_net_section_1231_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3h, net section 1231 gain.",
            "x-spreadspace-unit": "money"
          },
          "line_3i_other_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3i, other income.",
            "x-spreadspace-unit": "money"
          },
          "line_3j_excess_depletion": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3j, excess depletion adjustment.",
            "x-spreadspace-unit": "money"
          },
          "line_3k_tax_exempt_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3k, tax-exempt income.",
            "x-spreadspace-unit": "money"
          },
          "line_3l_recapture_business_credits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3l, recapture of business credits.",
            "x-spreadspace-unit": "money"
          },
          "line_3m_other_increases": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3m, other items that increase stock basis.",
            "x-spreadspace-unit": "money"
          },
          "line_4_total_increases": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, lines 3a through 3m added together.",
            "x-spreadspace-unit": "money"
          },
          "line_5_stock_basis_before_distributions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, stock basis before distributions: lines 1, 2 and 4 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_6_distributions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, distributions, excluding dividend distributions.",
            "x-spreadspace-unit": "money"
          },
          "line_7_stock_basis_after_distributions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, stock basis after distributions: line 5 less line 6.",
            "x-spreadspace-unit": "money"
          },
          "line_8a_nondeductible_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8a, nondeductible expenses.",
            "x-spreadspace-unit": "money"
          },
          "line_8b_oil_gas_depletion": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8b, depletion for oil and gas.",
            "x-spreadspace-unit": "money"
          },
          "line_8c_business_credits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8c, business credits under sections 50(c)(1) and (5).",
            "x-spreadspace-unit": "money"
          },
          "line_9_total_8a_8c": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, lines 8a through 8c added together.",
            "x-spreadspace-unit": "money"
          },
          "line_10_stock_basis_before_losses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, stock basis before loss and deduction items: line 7 less line 9.",
            "x-spreadspace-unit": "money"
          },
          "line_11_allowable_loss_deduction_items": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, allowable loss and deduction items.",
            "x-spreadspace-unit": "money"
          },
          "line_12_debt_basis_restoration": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, debt basis restoration.",
            "x-spreadspace-unit": "money"
          },
          "line_13_other_decreases": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, other items that decrease stock basis.",
            "x-spreadspace-unit": "money"
          },
          "line_14_total_decreases": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, lines 11 through 13 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_15_stock_basis_ending": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, stock basis at the end of the corporation's tax year: line 10 less line 14.",
            "x-spreadspace-unit": "money"
          },
          "debt_lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Form7203DebtLine"
            },
            "description": "Part II, shareholder debt basis, one entry per line."
          },
          "loss_items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Form7203LossItem"
            },
            "description": "Part III, shareholder allowable loss and deduction items, one entry per line."
          }
        },
        "additionalProperties": false,
        "description": "Form 7203, S corporation shareholder stock and debt basis limitations, for one corporation."
      },
      "TaxReturnReportData_Form7203DebtLine": {
        "required": [
          "line",
          "label",
          "debt_1",
          "debt_2",
          "debt_3",
          "total"
        ],
        "type": "object",
        "properties": {
          "line": {
            "type": "string",
            "description": "The line number, as printed."
          },
          "label": {
            "type": "string",
            "description": "The line's label as printed."
          },
          "debt_1": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Debt 1 column.",
            "x-spreadspace-unit": "money"
          },
          "debt_2": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Debt 2 column.",
            "x-spreadspace-unit": "money"
          },
          "debt_3": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Debt 3 column.",
            "x-spreadspace-unit": "money"
          },
          "total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total column.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One line of Form 7203, Part II, with a column per debt."
      },
      "TaxReturnReportData_Form7203LossItem": {
        "required": [
          "line",
          "label",
          "current_year",
          "carryover_prior",
          "allowable_stock",
          "allowable_debt",
          "carryover_next",
          "is_total"
        ],
        "type": "object",
        "properties": {
          "line": {
            "type": "string",
            "description": "The line number, as printed."
          },
          "label": {
            "type": "string",
            "description": "The line's label as printed."
          },
          "current_year": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (a), current year losses and deductions.",
            "x-spreadspace-unit": "money"
          },
          "carryover_prior": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (b), carryover amounts from the prior year.",
            "x-spreadspace-unit": "money"
          },
          "allowable_stock": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (c), allowable loss from stock basis.",
            "x-spreadspace-unit": "money"
          },
          "allowable_debt": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (d), allowable loss from debt basis.",
            "x-spreadspace-unit": "money"
          },
          "carryover_next": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (e), carryover amounts to the next year.",
            "x-spreadspace-unit": "money"
          },
          "is_total": {
            "type": "boolean",
            "description": "True when the line is the printed total."
          }
        },
        "additionalProperties": false,
        "description": "One line of Form 7203, Part III."
      },
      "TaxReturnReportData_Form8582": {
        "required": [
          "tax_year",
          "amt_copy",
          "line_1a_rental_net_income",
          "line_1b_rental_net_loss",
          "line_1c_rental_prior_unallowed_losses",
          "line_1d_rental_combined",
          "line_2a_other_net_income",
          "line_2b_other_net_loss",
          "line_2c_other_prior_unallowed_losses",
          "line_2d_other_combined",
          "line_3_combined_loss",
          "line_4_smaller_of_1d_or_3",
          "line_5_special_allowance_cap",
          "line_6_modified_agi",
          "line_7_line_5_minus_line_6",
          "line_8_half_of_line_7",
          "line_9_smaller_of_4_or_8",
          "line_10_income_lines_1a_2a",
          "line_11_total_losses_allowed",
          "parts",
          "statements"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the form is for."
          },
          "amt_copy": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "True when this is the alternative minimum tax copy of the form."
          },
          "line_1a_rental_net_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1a, rental real estate activities with active participation: activities with net income.",
            "x-spreadspace-unit": "money"
          },
          "line_1b_rental_net_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1b, rental real estate activities with active participation: activities with net loss.",
            "x-spreadspace-unit": "money"
          },
          "line_1c_rental_prior_unallowed_losses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1c, rental real estate activities with active participation: prior years' unallowed losses.",
            "x-spreadspace-unit": "money"
          },
          "line_1d_rental_combined": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1d, lines 1a, 1b and 1c combined.",
            "x-spreadspace-unit": "money"
          },
          "line_2a_other_net_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2a, all other passive activities: activities with net income.",
            "x-spreadspace-unit": "money"
          },
          "line_2b_other_net_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2b, all other passive activities: activities with net loss.",
            "x-spreadspace-unit": "money"
          },
          "line_2c_other_prior_unallowed_losses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2c, all other passive activities: prior years' unallowed losses.",
            "x-spreadspace-unit": "money"
          },
          "line_2d_other_combined": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2d, lines 2a, 2b and 2c combined.",
            "x-spreadspace-unit": "money"
          },
          "line_3_combined_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, lines 1d and 2d combined.",
            "x-spreadspace-unit": "money"
          },
          "line_4_smaller_of_1d_or_3": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, the smaller of the loss on line 1d or the loss on line 3.",
            "x-spreadspace-unit": "money"
          },
          "line_5_special_allowance_cap": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, the special allowance ceiling for the filing status.",
            "x-spreadspace-unit": "money"
          },
          "line_6_modified_agi": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, modified adjusted gross income.",
            "x-spreadspace-unit": "money"
          },
          "line_7_line_5_minus_line_6": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, line 5 less line 6.",
            "x-spreadspace-unit": "money"
          },
          "line_8_half_of_line_7": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, half of line 7.",
            "x-spreadspace-unit": "money"
          },
          "line_9_smaller_of_4_or_8": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, the smaller of line 4 or line 8.",
            "x-spreadspace-unit": "money"
          },
          "line_10_income_lines_1a_2a": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, the income on lines 1a and 2a added together.",
            "x-spreadspace-unit": "money"
          },
          "line_11_total_losses_allowed": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, total losses allowed from all passive activities.",
            "x-spreadspace-unit": "money"
          },
          "parts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Form8582Part"
            },
            "description": "The form's worksheet parts (V through IX) as printed, one entry per part."
          },
          "statements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Form8582Statement"
            },
            "description": "Statements attached to the form, one entry per statement."
          }
        },
        "additionalProperties": false,
        "description": "Form 8582, passive activity loss limitations, with its worksheets and attached statements."
      },
      "TaxReturnReportData_Form8582Part": {
        "required": [
          "part",
          "page",
          "columns",
          "rows",
          "from_statement"
        ],
        "type": "object",
        "properties": {
          "part": {
            "type": [
              "string",
              "null"
            ],
            "description": "The part's roman numeral, as printed."
          },
          "page": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Page of the return the part is on, counting from one."
          },
          "columns": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The part's column headers, in print order."
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Form8582PartRow"
            },
            "description": "The part's rows, in print order."
          },
          "from_statement": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Number of the attached statement that carries the rows, when the part refers to one."
          }
        },
        "additionalProperties": false,
        "description": "One worksheet part of Form 8582."
      },
      "TaxReturnReportData_Form8582PartRow": {
        "required": [
          "name",
          "form_line_ref",
          "is_total",
          "cells"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of activity, as printed."
          },
          "form_line_ref": {
            "type": [
              "string",
              "null"
            ],
            "description": "The form or schedule the activity is reported on, as printed."
          },
          "is_total": {
            "type": "boolean",
            "description": "True when the row is a printed total."
          },
          "cells": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?\\d+\\.\\d{2}$",
              "type": "string",
              "x-spreadspace-unit": "money"
            },
            "description": "The row's figures keyed by column letter."
          }
        },
        "additionalProperties": false,
        "description": "One row of a Form 8582 worksheet part or statement."
      },
      "TaxReturnReportData_Form8582Statement": {
        "required": [
          "number",
          "page",
          "title",
          "part",
          "amt",
          "columns",
          "column_labels",
          "header_lines",
          "rows"
        ],
        "type": "object",
        "properties": {
          "number": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The statement's number, as printed."
          },
          "page": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Page of the return the statement is on, counting from one."
          },
          "title": {
            "type": [
              "string",
              "null"
            ],
            "description": "The statement's title."
          },
          "subtitle": {
            "type": [
              "string",
              "null"
            ],
            "description": "The statement's subtitle, when it prints one."
          },
          "part": {
            "type": [
              "string",
              "null"
            ],
            "description": "The worksheet part the statement supports, as printed."
          },
          "amt": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "True when the statement belongs to the alternative minimum tax copy."
          },
          "columns": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The statement's column letters, in print order."
          },
          "column_labels": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "The statement's column headers, keyed by column letter."
          },
          "header_lines": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The heading lines printed above the rows."
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Form8582PartRow"
            },
            "description": "The statement's rows, in print order."
          }
        },
        "additionalProperties": false,
        "description": "One statement attached to Form 8582."
      },
      "TaxReturnReportData_Form8825": {
        "required": [
          "tax_year",
          "parent_form",
          "entity_name",
          "ein",
          "properties",
          "line_18a_total_gross_rents",
          "line_18b_total_expenses",
          "line_19_net_gain_4797",
          "line_20a_net_income_partnerships",
          "line_21_net_rental_real_estate"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the form is for."
          },
          "parent_form": {
            "type": [
              "string",
              "null"
            ],
            "description": "The return the form is attached to: 1065 or 1120S."
          },
          "entity_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name as shown on the return."
          },
          "ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "Employer identification number, masked to the last four digits."
          },
          "properties": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Form8825Property"
            },
            "description": "Line 1, one entry per property (columns A through H)."
          },
          "line_18a_total_gross_rents": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18a, gross rents from line 2 across all properties.",
            "x-spreadspace-unit": "money"
          },
          "line_18b_total_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18b, total expenses from line 16 across all properties.",
            "x-spreadspace-unit": "money"
          },
          "line_19_net_gain_4797": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19, net gain (loss) from Form 4797, Part II, line 17, from the disposition of rental real estate property.",
            "x-spreadspace-unit": "money"
          },
          "line_20a_net_income_partnerships": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 20a, net income (loss) from rental real estate activities from partnerships, estates and trusts.",
            "x-spreadspace-unit": "money"
          },
          "line_21_net_rental_real_estate": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 21, net rental real estate income (loss): lines 18a through 20a combined.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 8825, rental real estate income and expenses of a partnership or an S corporation."
      },
      "TaxReturnReportData_Form8825Property": {
        "required": [
          "label",
          "physical_address",
          "type_code",
          "fair_rental_days",
          "personal_use_days",
          "line_2_gross_rents",
          "line_2b_other_income",
          "line_2c_total_income",
          "line_3_advertising",
          "line_4_auto_travel",
          "line_5_cleaning_maintenance",
          "line_6_commissions",
          "line_7_insurance",
          "line_8_legal_professional",
          "line_9_interest",
          "line_10_repairs",
          "line_11_taxes",
          "line_12_utilities",
          "line_13_wages_salaries",
          "line_14_depreciation",
          "line_15_other",
          "line_16_total_expenses",
          "line_17_income_loss"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": [
              "string",
              "null"
            ],
            "description": "The property's column letter, A through H."
          },
          "physical_address": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, physical address of the property."
          },
          "type_code": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Line 1, type of property code (1 through 8)."
          },
          "fair_rental_days": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Line 1, fair rental days."
          },
          "personal_use_days": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Line 1, personal use days."
          },
          "line_2_gross_rents": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, gross rents.",
            "x-spreadspace-unit": "money"
          },
          "line_2b_other_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Other income printed beneath gross rents, on layouts that add the line.",
            "x-spreadspace-unit": "money"
          },
          "line_2c_total_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Total income printed beneath gross rents, on layouts that add the line.",
            "x-spreadspace-unit": "money"
          },
          "line_3_advertising": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, advertising.",
            "x-spreadspace-unit": "money"
          },
          "line_4_auto_travel": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, auto and travel.",
            "x-spreadspace-unit": "money"
          },
          "line_5_cleaning_maintenance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, cleaning and maintenance.",
            "x-spreadspace-unit": "money"
          },
          "line_6_commissions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, commissions.",
            "x-spreadspace-unit": "money"
          },
          "line_7_insurance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, insurance.",
            "x-spreadspace-unit": "money"
          },
          "line_8_legal_professional": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, legal and other professional fees.",
            "x-spreadspace-unit": "money"
          },
          "line_9_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, interest.",
            "x-spreadspace-unit": "money"
          },
          "line_10_repairs": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, repairs.",
            "x-spreadspace-unit": "money"
          },
          "line_11_taxes": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, taxes.",
            "x-spreadspace-unit": "money"
          },
          "line_12_utilities": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, utilities.",
            "x-spreadspace-unit": "money"
          },
          "line_13_wages_salaries": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, wages and salaries.",
            "x-spreadspace-unit": "money"
          },
          "line_14_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, depreciation.",
            "x-spreadspace-unit": "money"
          },
          "line_15_other": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, other.",
            "x-spreadspace-unit": "money"
          },
          "line_16_total_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, total expenses: lines 3 through 15 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_17_income_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, income (loss): line 2 less line 16.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One property column of Form 8825, lines 1 through 17."
      },
      "TaxReturnReportData_Form8916A": {
        "required": [
          "tax_year",
          "parent_form",
          "part_i_cogs_lines",
          "part_ii_interest_income_lines",
          "part_iii_interest_expense_lines"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the form is for."
          },
          "parent_form": {
            "type": [
              "string",
              "null"
            ],
            "description": "The return the form is attached to."
          },
          "part_i_cogs_lines": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/TaxReturnReportData_M3FourColumnLine"
            },
            "description": "Part I, cost of goods sold, keyed by line number."
          },
          "part_ii_interest_income_lines": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/TaxReturnReportData_M3FourColumnLine"
            },
            "description": "Part II, interest income, keyed by line number."
          },
          "part_iii_interest_expense_lines": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/TaxReturnReportData_M3FourColumnLine"
            },
            "description": "Part III, interest expense, keyed by line number."
          }
        },
        "additionalProperties": false,
        "description": "Form 8916-A, supplemental attachment to Schedule M-3."
      },
      "TaxReturnReportData_Form8949": {
        "required": [
          "tax_year",
          "vendor",
          "sections"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the form is for."
          },
          "vendor": {
            "type": [
              "string",
              "null"
            ],
            "description": "The tax software that printed the form, when its footer names one."
          },
          "sections": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Form8949Section"
            },
            "description": "One entry per part and box combination the form carries."
          }
        },
        "additionalProperties": false,
        "description": "Form 8949, sales and other dispositions of capital assets, grouped by part and box."
      },
      "TaxReturnReportData_Form8949Row": {
        "required": [
          "description",
          "date_acquired",
          "date_sold",
          "proceeds",
          "cost_basis",
          "codes",
          "adjustment",
          "gain_loss",
          "is_total",
          "is_pointer",
          "is_aggregate"
        ],
        "type": "object",
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (a), description of property."
          },
          "date_acquired": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (b), date acquired, as printed.",
            "x-spreadspace-format": "printed"
          },
          "date_sold": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (c), date sold or disposed of, as printed.",
            "x-spreadspace-format": "printed"
          },
          "proceeds": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (d), proceeds (sales price).",
            "x-spreadspace-unit": "money"
          },
          "cost_basis": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (e), cost or other basis.",
            "x-spreadspace-unit": "money"
          },
          "codes": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (f), code(s) from the instructions, as printed."
          },
          "adjustment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (g), amount of adjustment.",
            "x-spreadspace-unit": "money"
          },
          "gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (h), gain or loss.",
            "x-spreadspace-unit": "money"
          },
          "is_total": {
            "type": "boolean",
            "description": "True when the row is the section's totals row."
          },
          "is_pointer": {
            "type": "boolean",
            "description": "True when the row refers to an attached statement instead of listing a transaction."
          },
          "is_aggregate": {
            "type": "boolean",
            "description": "True when the row aggregates several transactions on one line."
          }
        },
        "additionalProperties": false,
        "description": "One row of Form 8949, line 1 or line 2."
      },
      "TaxReturnReportData_Form8949Section": {
        "required": [
          "part",
          "box",
          "page",
          "rows",
          "totals",
          "from_statement_page",
          "statement_title"
        ],
        "type": "object",
        "properties": {
          "part": {
            "type": [
              "string",
              "null"
            ],
            "description": "Part I (short-term) or Part II (long-term)."
          },
          "box": {
            "type": [
              "string",
              "null"
            ],
            "description": "The box checked for the section: A through F."
          },
          "page": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Page of the return the section is on, counting from one."
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Form8949Row"
            },
            "description": "The section's rows, in print order."
          },
          "totals": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form8949Row"
              },
              {
                "type": "null"
              }
            ],
            "description": "The section's printed totals row, when it prints one."
          },
          "from_statement_page": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Page of the attached statement that carries the rows, when the section refers to a statement."
          },
          "statement_title": {
            "type": [
              "string",
              "null"
            ],
            "description": "Title of the attached statement, when the section refers to one."
          }
        },
        "additionalProperties": false,
        "description": "One part and box of Form 8949 with its rows and totals."
      },
      "TaxReturnReportData_Form8958": {
        "required": [
          "tax_year",
          "amt_copy",
          "lines"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the form is for."
          },
          "amt_copy": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "True when this is the alternative minimum tax copy of the form."
          },
          "lines": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Form8958Line"
            },
            "description": "The form's numbered lines, one entry per line."
          }
        },
        "additionalProperties": false,
        "description": "Form 8958, allocation of tax amounts between certain individuals in community property states."
      },
      "TaxReturnReportData_Form8958Line": {
        "required": [
          "line",
          "label",
          "rows"
        ],
        "type": "object",
        "properties": {
          "line": {
            "type": "string",
            "description": "The line number, as printed."
          },
          "label": {
            "type": "string",
            "description": "The line's label as printed."
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Form8958Row"
            },
            "description": "The line's rows, one per source listed."
          }
        },
        "additionalProperties": false,
        "description": "One numbered line of Form 8958 with its rows."
      },
      "TaxReturnReportData_Form8958Row": {
        "required": [
          "description",
          "statement_number",
          "total_amount",
          "allocated_b",
          "allocated_c"
        ],
        "type": "object",
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "The source or payer, as printed."
          },
          "statement_number": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Number of the attached statement the row refers to, when it refers to one."
          },
          "total_amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (a), total amount.",
            "x-spreadspace-unit": "money"
          },
          "allocated_b": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (b), allocated to spouse, registered domestic partner or same-sex spouse.",
            "x-spreadspace-unit": "money"
          },
          "allocated_c": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (c), allocated to the other individual.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One row of a Form 8958 line."
      },
      "TaxReturnReportData_Form8960": {
        "required": [
          "tax_year",
          "amt_copy",
          "line_1_taxable_interest",
          "line_2_ordinary_dividends",
          "line_3_annuities",
          "line_4a_rental_royalty_partnership",
          "line_4b_non_1411_adjustment",
          "line_4c_combined_4a_4b",
          "line_5a_net_gain_loss_disposition",
          "line_5b_non_nii_disposition",
          "line_5c_partnership_scorp_adjustment",
          "line_5d_combined_5a_5c",
          "line_6_cfc_pfic_adjustments",
          "line_7_other_modifications",
          "line_8_total_investment_income",
          "line_9a_investment_interest_expense",
          "line_9b_state_local_foreign_tax",
          "line_9c_misc_investment_expenses",
          "line_9d_total_9a_9c",
          "line_10_additional_modifications",
          "line_11_total_deductions_modifications",
          "line_12_net_investment_income",
          "line_13_modified_agi",
          "line_14_threshold",
          "line_15_line_13_minus_14",
          "line_16_smaller_of_12_or_15",
          "line_17_nii_tax_individuals",
          "line_18a_nii_estates_trusts",
          "line_18b_distribution_deductions",
          "line_18c_undistributed_nii",
          "line_19a_agi_estates_trusts",
          "line_19b_highest_bracket",
          "line_19c_line_19a_minus_19b",
          "line_20_smaller_of_18c_or_19c",
          "line_21_nii_tax_estates_trusts"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the form is for."
          },
          "amt_copy": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "True when this is the alternative minimum tax copy of the form."
          },
          "line_1_taxable_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, taxable interest.",
            "x-spreadspace-unit": "money"
          },
          "line_2_ordinary_dividends": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, ordinary dividends.",
            "x-spreadspace-unit": "money"
          },
          "line_3_annuities": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, annuities.",
            "x-spreadspace-unit": "money"
          },
          "line_4a_rental_royalty_partnership": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4a, rental real estate, royalties, partnerships, S corporations, trusts and similar.",
            "x-spreadspace-unit": "money"
          },
          "line_4b_non_1411_adjustment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Form 8960 line 4b as printed.",
            "x-spreadspace-unit": "money"
          },
          "line_4c_combined_4a_4b": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4c, lines 4a and 4b combined.",
            "x-spreadspace-unit": "money"
          },
          "line_5a_net_gain_loss_disposition": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5a, net gain or loss from disposition of property.",
            "x-spreadspace-unit": "money"
          },
          "line_5b_non_nii_disposition": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5b, net gain or loss from disposition of property not subject to net investment income tax.",
            "x-spreadspace-unit": "money"
          },
          "line_5c_partnership_scorp_adjustment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5c, adjustment from disposition of partnership interest or S corporation stock.",
            "x-spreadspace-unit": "money"
          },
          "line_5d_combined_5a_5c": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5d, lines 5a through 5c combined.",
            "x-spreadspace-unit": "money"
          },
          "line_6_cfc_pfic_adjustments": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, adjustments to investment income for certain controlled foreign corporations and passive foreign investment companies.",
            "x-spreadspace-unit": "money"
          },
          "line_7_other_modifications": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, other modifications to investment income.",
            "x-spreadspace-unit": "money"
          },
          "line_8_total_investment_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, total investment income: lines 1, 2, 3, 4c, 5d, 6 and 7 combined.",
            "x-spreadspace-unit": "money"
          },
          "line_9a_investment_interest_expense": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9a, investment interest expenses.",
            "x-spreadspace-unit": "money"
          },
          "line_9b_state_local_foreign_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9b, state, local and foreign income tax.",
            "x-spreadspace-unit": "money"
          },
          "line_9c_misc_investment_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9c, miscellaneous investment expenses.",
            "x-spreadspace-unit": "money"
          },
          "line_9d_total_9a_9c": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9d, lines 9a through 9c added together.",
            "x-spreadspace-unit": "money"
          },
          "line_10_additional_modifications": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, additional modifications.",
            "x-spreadspace-unit": "money"
          },
          "line_11_total_deductions_modifications": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, total deductions and modifications: lines 9d and 10 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_12_net_investment_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, net investment income: line 8 less line 11.",
            "x-spreadspace-unit": "money"
          },
          "line_13_modified_agi": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, modified adjusted gross income.",
            "x-spreadspace-unit": "money"
          },
          "line_14_threshold": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, the threshold for the filing status.",
            "x-spreadspace-unit": "money"
          },
          "line_15_line_13_minus_14": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, line 13 less line 14.",
            "x-spreadspace-unit": "money"
          },
          "line_16_smaller_of_12_or_15": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, the smaller of line 12 or line 15.",
            "x-spreadspace-unit": "money"
          },
          "line_17_nii_tax_individuals": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, net investment income tax for individuals: 3.8 percent of line 16.",
            "x-spreadspace-unit": "money"
          },
          "line_18a_nii_estates_trusts": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18a, net investment income of an estate or trust.",
            "x-spreadspace-unit": "money"
          },
          "line_18b_distribution_deductions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18b, deductions for distributions of net investment income and deductions under section 642(c).",
            "x-spreadspace-unit": "money"
          },
          "line_18c_undistributed_nii": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18c, undistributed net investment income: line 18a less line 18b.",
            "x-spreadspace-unit": "money"
          },
          "line_19a_agi_estates_trusts": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19a, adjusted gross income of the estate or trust.",
            "x-spreadspace-unit": "money"
          },
          "line_19b_highest_bracket": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19b, the dollar amount at which the highest tax bracket for estates and trusts begins.",
            "x-spreadspace-unit": "money"
          },
          "line_19c_line_19a_minus_19b": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19c, line 19a less line 19b.",
            "x-spreadspace-unit": "money"
          },
          "line_20_smaller_of_18c_or_19c": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 20, the smaller of line 18c or line 19c.",
            "x-spreadspace-unit": "money"
          },
          "line_21_nii_tax_estates_trusts": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 21, net investment income tax for estates and trusts: 3.8 percent of line 20.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 8960, net investment income tax, Parts I through III."
      },
      "TaxReturnReportData_Form8990": {
        "required": [
          "tax_year",
          "parent_form",
          "entity_name",
          "ein",
          "line_1_current_year_interest_expense",
          "line_2_disallowed_carryforwards",
          "line_3_partner_excess_treated",
          "line_4_floor_plan_interest",
          "line_5_total_business_interest_expense",
          "line_6_tentative_taxable_income",
          "line_7_loss_deduction_not_allocable",
          "line_8_business_interest_expense_not_passthrough",
          "line_9_net_operating_loss_deduction",
          "line_10_qbi_deduction",
          "line_11_reserved",
          "line_11_dad_addback_may2020",
          "line_12_loss_deduction_items_passthrough",
          "line_13_other_additions",
          "line_14_partner_excess_taxable_income",
          "line_15_s_corp_excess_taxable_income",
          "line_16_total_additions",
          "line_17_income_gain_not_allocable",
          "line_18_business_interest_income_not_passthrough",
          "line_19_income_gain_items_passthrough",
          "line_20_other_reductions",
          "line_21_total_reductions",
          "line_22_adjusted_taxable_income",
          "line_23_current_year_business_interest_income",
          "line_24_excess_business_interest_income_passthrough",
          "line_25_total_business_interest_income",
          "line_26_ati_times_applicable_percentage",
          "line_27_business_interest_income_line25",
          "line_28_floor_plan_financing_line4",
          "line_29_total_limitation",
          "line_30_allowable_business_interest_deduction",
          "line_31_disallowed_business_interest_expense",
          "line_32_excess_business_interest_expense",
          "line_33_excess_taxable_income_subtract",
          "line_34_excess_taxable_income_subtract_26",
          "line_35_excess_taxable_income_ratio",
          "line_36_excess_taxable_income",
          "line_37_excess_business_interest_income",
          "line_38_scorp_excess_taxable_income_subtract",
          "line_39_scorp_excess_taxable_income_subtract_26",
          "line_40_scorp_excess_taxable_income_ratio",
          "line_41_scorp_excess_taxable_income",
          "line_42_scorp_excess_business_interest_income"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the form is for."
          },
          "parent_form": {
            "type": [
              "string",
              "null"
            ],
            "description": "The return the form is attached to."
          },
          "entity_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name as shown on the return."
          },
          "ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "Identifying number, masked to the last four digits."
          },
          "line_1_current_year_interest_expense": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, current year business interest expense, not including floor plan financing interest expense.",
            "x-spreadspace-unit": "money"
          },
          "line_2_disallowed_carryforwards": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, disallowed business interest expense carryforwards from prior years.",
            "x-spreadspace-unit": "money"
          },
          "line_3_partner_excess_treated": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, partner's excess business interest expense treated as paid or accrued in the current year.",
            "x-spreadspace-unit": "money"
          },
          "line_4_floor_plan_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, floor plan financing interest expense.",
            "x-spreadspace-unit": "money"
          },
          "line_5_total_business_interest_expense": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, total business interest expense: lines 1 through 4 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_6_tentative_taxable_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, tentative taxable income.",
            "x-spreadspace-unit": "money"
          },
          "line_7_loss_deduction_not_allocable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, any item of loss or deduction not properly allocable to a trade or business.",
            "x-spreadspace-unit": "money"
          },
          "line_8_business_interest_expense_not_passthrough": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, any business interest expense not from a pass-through entity.",
            "x-spreadspace-unit": "money"
          },
          "line_9_net_operating_loss_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, amount of any net operating loss deduction.",
            "x-spreadspace-unit": "money"
          },
          "line_10_qbi_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, amount of any qualified business income deduction.",
            "x-spreadspace-unit": "money"
          },
          "line_11_reserved": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, reserved for future use, on forms that print it so.",
            "x-spreadspace-unit": "money"
          },
          "line_11_dad_addback_may2020": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, deduction allowable for depreciation, amortization or depletion, on forms that print the line.",
            "x-spreadspace-unit": "money"
          },
          "line_12_loss_deduction_items_passthrough": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, amount of any loss or deduction items from a pass-through entity.",
            "x-spreadspace-unit": "money"
          },
          "line_13_other_additions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, other additions.",
            "x-spreadspace-unit": "money"
          },
          "line_14_partner_excess_taxable_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, total current year partner's excess taxable income.",
            "x-spreadspace-unit": "money"
          },
          "line_15_s_corp_excess_taxable_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, total current year S corporation shareholder's excess taxable income.",
            "x-spreadspace-unit": "money"
          },
          "line_16_total_additions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, total additions: lines 7 through 15 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_17_income_gain_not_allocable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, any item of income or gain not properly allocable to a trade or business.",
            "x-spreadspace-unit": "money"
          },
          "line_18_business_interest_income_not_passthrough": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18, any business interest income not from a pass-through entity.",
            "x-spreadspace-unit": "money"
          },
          "line_19_income_gain_items_passthrough": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19, amount of any income or gain items from a pass-through entity.",
            "x-spreadspace-unit": "money"
          },
          "line_20_other_reductions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 20, other reductions.",
            "x-spreadspace-unit": "money"
          },
          "line_21_total_reductions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 21, total reductions: lines 17 through 20 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_22_adjusted_taxable_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 22, adjusted taxable income: line 6 plus line 16 less line 21.",
            "x-spreadspace-unit": "money"
          },
          "line_23_current_year_business_interest_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 23, current year business interest income.",
            "x-spreadspace-unit": "money"
          },
          "line_24_excess_business_interest_income_passthrough": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 24, excess business interest income from pass-through entities.",
            "x-spreadspace-unit": "money"
          },
          "line_25_total_business_interest_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 25, total business interest income: lines 23 and 24 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_26_ati_times_applicable_percentage": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Form 8990 line 26 as printed.",
            "x-spreadspace-unit": "money"
          },
          "line_27_business_interest_income_line25": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 27, business interest income, from line 25.",
            "x-spreadspace-unit": "money"
          },
          "line_28_floor_plan_financing_line4": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 28, floor plan financing interest expense, from line 4.",
            "x-spreadspace-unit": "money"
          },
          "line_29_total_limitation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 29, total: lines 26 through 28 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_30_allowable_business_interest_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 30, allowable business interest expense: the smaller of line 5 or line 29.",
            "x-spreadspace-unit": "money"
          },
          "line_31_disallowed_business_interest_expense": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 31, disallowed business interest expense: line 5 less line 30.",
            "x-spreadspace-unit": "money"
          },
          "line_32_excess_business_interest_expense": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 32, excess business interest expense of the partnership.",
            "x-spreadspace-unit": "money"
          },
          "line_33_excess_taxable_income_subtract": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 33, the partnership's excess taxable income computation, first step, as printed.",
            "x-spreadspace-unit": "money"
          },
          "line_34_excess_taxable_income_subtract_26": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 34, the partnership's excess taxable income computation, second step, as printed.",
            "x-spreadspace-unit": "money"
          },
          "line_35_excess_taxable_income_ratio": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 35, the partnership's excess taxable income ratio, as printed."
          },
          "line_36_excess_taxable_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 36, excess taxable income of the partnership.",
            "x-spreadspace-unit": "money"
          },
          "line_37_excess_business_interest_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 37, excess business interest income of the partnership.",
            "x-spreadspace-unit": "money"
          },
          "line_38_scorp_excess_taxable_income_subtract": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 38, the S corporation's excess taxable income computation, first step, as printed.",
            "x-spreadspace-unit": "money"
          },
          "line_39_scorp_excess_taxable_income_subtract_26": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 39, the S corporation's excess taxable income computation, second step, as printed.",
            "x-spreadspace-unit": "money"
          },
          "line_40_scorp_excess_taxable_income_ratio": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 40, the S corporation's excess taxable income ratio, as printed."
          },
          "line_41_scorp_excess_taxable_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 41, excess taxable income of the S corporation.",
            "x-spreadspace-unit": "money"
          },
          "line_42_scorp_excess_business_interest_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 42, excess business interest income of the S corporation.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 8990, limitation on business interest expense under section 163(j), Parts I through IV."
      },
      "TaxReturnReportData_Form8995": {
        "required": [
          "tax_year",
          "businesses",
          "line_2_total_qbi",
          "line_3_qbi_carryforward_prior_year",
          "line_4_total_qbi",
          "line_5_qbi_component",
          "line_6_reit_ptp_income",
          "line_7_reit_ptp_carryforward_prior_year",
          "line_8_total_reit_ptp_income",
          "line_9_reit_ptp_component",
          "line_10_qbi_before_limit",
          "line_11_taxable_income_before_qbi",
          "line_12_net_capital_gain",
          "line_13_income_minus_capgain",
          "line_14_income_limitation",
          "line_15_qbi_deduction",
          "line_16_qbi_loss_carryforward",
          "line_17_reit_ptp_loss_carryforward"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the form is for."
          },
          "businesses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_Form8995Business"
            },
            "description": "Line 1, one entry per trade, business or aggregation."
          },
          "line_2_total_qbi": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, total qualified business income or (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_3_qbi_carryforward_prior_year": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, qualified business net (loss) carryforward from the prior year.",
            "x-spreadspace-unit": "money"
          },
          "line_4_total_qbi": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, total qualified business income: lines 2 and 3 combined, zero when negative.",
            "x-spreadspace-unit": "money"
          },
          "line_5_qbi_component": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, qualified business income component: 20 percent of line 4.",
            "x-spreadspace-unit": "money"
          },
          "line_6_reit_ptp_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, qualified REIT dividends and publicly traded partnership income or (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_7_reit_ptp_carryforward_prior_year": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, qualified REIT dividends and publicly traded partnership (loss) carryforward from the prior year.",
            "x-spreadspace-unit": "money"
          },
          "line_8_total_reit_ptp_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, total qualified REIT dividends and publicly traded partnership income: lines 6 and 7 combined, zero when negative.",
            "x-spreadspace-unit": "money"
          },
          "line_9_reit_ptp_component": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, REIT and publicly traded partnership component: 20 percent of line 8.",
            "x-spreadspace-unit": "money"
          },
          "line_10_qbi_before_limit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, qualified business income deduction before the income limitation: lines 5 and 9 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_11_taxable_income_before_qbi": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, taxable income before the qualified business income deduction.",
            "x-spreadspace-unit": "money"
          },
          "line_12_net_capital_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, net capital gain.",
            "x-spreadspace-unit": "money"
          },
          "line_13_income_minus_capgain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, line 11 less line 12.",
            "x-spreadspace-unit": "money"
          },
          "line_14_income_limitation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, income limitation: 20 percent of line 13.",
            "x-spreadspace-unit": "money"
          },
          "line_15_qbi_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, qualified business income deduction: the smaller of line 10 or line 14.",
            "x-spreadspace-unit": "money"
          },
          "line_16_qbi_loss_carryforward": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, total qualified business (loss) carryforward.",
            "x-spreadspace-unit": "money"
          },
          "line_17_reit_ptp_loss_carryforward": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, total qualified REIT dividends and publicly traded partnership (loss) carryforward.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Form 8995, qualified business income deduction simplified computation."
      },
      "TaxReturnReportData_Form8995Business": {
        "required": [
          "name",
          "tin_last4",
          "qualified_business_income"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (a), trade, business or aggregation name."
          },
          "tin_last4": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (b), taxpayer identification number, last four digits only."
          },
          "qualified_business_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (c), qualified business income or (loss).",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One row of Form 8995, line 1."
      },
      "TaxReturnReportData_FormScheduleD": {
        "required": [
          "tax_year",
          "parent_form",
          "line_1a_short_term_basis_reported",
          "line_1b_short_term_basis_reported_with_adj",
          "line_2_short_term_no_basis",
          "line_3_short_term_not_on_1099b",
          "line_4_short_term_installment",
          "line_5_short_term_like_kind",
          "line_6_short_term_passthrough",
          "line_7_net_short_term",
          "line_8a_long_term_basis_reported",
          "line_8b_long_term_basis_reported_with_adj",
          "line_9_long_term_no_basis",
          "line_10_long_term_not_on_1099b",
          "line_11_long_term_other_forms",
          "line_12_long_term_passthrough",
          "line_13_capital_gain_distributions",
          "line_14_long_term_loss_carryover",
          "line_15_net_long_term",
          "line_16_total_net_gain_loss",
          "line_17_net_capital_gain_1120_only",
          "line_18_total_1120_only",
          "bigt_recognized_built_in_gains",
          "bigt_recognized_built_in_losses",
          "bigt_net_built_in_gain",
          "bigt_taxable_income_limitation",
          "bigt_tax",
          "bigt_tax_on_short_term_gain",
          "bigt_tax_on_long_term_gain"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the schedule is for."
          },
          "parent_form": {
            "type": [
              "string",
              "null"
            ],
            "description": "The return the schedule is attached to: 1065, 1120 or 1120S."
          },
          "line_1a_short_term_basis_reported": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_CapitalGainsLine"
              },
              {
                "type": "null"
              }
            ],
            "description": "Line 1a, short-term transactions reported on Form 1099-B with basis reported and no adjustments."
          },
          "line_1b_short_term_basis_reported_with_adj": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_CapitalGainsLine"
              },
              {
                "type": "null"
              }
            ],
            "description": "Line 1b, short-term transactions from Form 8949 with box A checked."
          },
          "line_2_short_term_no_basis": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_CapitalGainsLine"
              },
              {
                "type": "null"
              }
            ],
            "description": "Line 2, short-term transactions from Form 8949 with box B checked."
          },
          "line_3_short_term_not_on_1099b": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_CapitalGainsLine"
              },
              {
                "type": "null"
              }
            ],
            "description": "Line 3, short-term transactions from Form 8949 with box C checked."
          },
          "line_4_short_term_installment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, short-term capital gain from installment sales (Form 6252).",
            "x-spreadspace-unit": "money"
          },
          "line_5_short_term_like_kind": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, short-term capital gain or (loss) from like-kind exchanges (Form 8824).",
            "x-spreadspace-unit": "money"
          },
          "line_6_short_term_passthrough": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, short-term capital gain or (loss) from pass-through entities (Schedule K-1).",
            "x-spreadspace-unit": "money"
          },
          "line_7_net_short_term": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, net short-term capital gain or (loss): lines 1a through 6 combined.",
            "x-spreadspace-unit": "money"
          },
          "line_8a_long_term_basis_reported": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_CapitalGainsLine"
              },
              {
                "type": "null"
              }
            ],
            "description": "Line 8a, long-term transactions reported on Form 1099-B with basis reported and no adjustments."
          },
          "line_8b_long_term_basis_reported_with_adj": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_CapitalGainsLine"
              },
              {
                "type": "null"
              }
            ],
            "description": "Line 8b, long-term transactions from Form 8949 with box D checked."
          },
          "line_9_long_term_no_basis": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_CapitalGainsLine"
              },
              {
                "type": "null"
              }
            ],
            "description": "Line 9, long-term transactions from Form 8949 with box E checked."
          },
          "line_10_long_term_not_on_1099b": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_CapitalGainsLine"
              },
              {
                "type": "null"
              }
            ],
            "description": "Line 10, long-term transactions from Form 8949 with box F checked."
          },
          "line_11_long_term_other_forms": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, long-term capital gain or (loss) from other forms (Forms 4797, 6252 and 8824).",
            "x-spreadspace-unit": "money"
          },
          "line_12_long_term_passthrough": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, long-term capital gain or (loss) from pass-through entities (Schedule K-1).",
            "x-spreadspace-unit": "money"
          },
          "line_13_capital_gain_distributions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, capital gain distributions.",
            "x-spreadspace-unit": "money"
          },
          "line_14_long_term_loss_carryover": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, long-term capital loss carryover.",
            "x-spreadspace-unit": "money"
          },
          "line_15_net_long_term": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, net long-term capital gain or (loss): lines 8a through 14 combined.",
            "x-spreadspace-unit": "money"
          },
          "line_16_total_net_gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, net capital gain or (loss): lines 7 and 15 combined, or the excess of net short-term gain over net long-term loss on Form 1120.",
            "x-spreadspace-unit": "money"
          },
          "line_17_net_capital_gain_1120_only": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, net capital gain: the excess of net long-term capital gain over net short-term capital loss, on Form 1120.",
            "x-spreadspace-unit": "money"
          },
          "line_18_total_1120_only": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18, lines 16 and 17 added together, on Form 1120.",
            "x-spreadspace-unit": "money"
          },
          "bigt_recognized_built_in_gains": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Part III line 16, recognized built-in gains, on the Form 1120-S version.",
            "x-spreadspace-unit": "money"
          },
          "bigt_recognized_built_in_losses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Part III line 17, recognized built-in losses, on the Form 1120-S version.",
            "x-spreadspace-unit": "money"
          },
          "bigt_net_built_in_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Part III line 18, net recognized built-in gain, on the Form 1120-S version.",
            "x-spreadspace-unit": "money"
          },
          "bigt_taxable_income_limitation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Part III line 19, taxable income limitation, on the Form 1120-S version.",
            "x-spreadspace-unit": "money"
          },
          "bigt_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Part III line 23, built-in gains tax, on the Form 1120-S version.",
            "x-spreadspace-unit": "money"
          },
          "bigt_tax_on_short_term_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The built-in gains tax on short-term gain, on the Form 1120-S version.",
            "x-spreadspace-unit": "money"
          },
          "bigt_tax_on_long_term_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The built-in gains tax on long-term gain, on the Form 1120-S version.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule D of Form 1065, Form 1120 or Form 1120-S, capital gains and losses, with the built-in gains tax part of the Form 1120-S version."
      },
      "TaxReturnReportData_FormScheduleM3": {
        "required": [
          "tax_year",
          "parent_form",
          "line_1a_filed_10k",
          "line_1b_consolidated_ni_from_10k",
          "line_2_worldwide_consolidated_ni",
          "line_3a_certified_audited",
          "line_3b_period_begin",
          "line_3b_period_end",
          "line_4a_worldwide_ni_per_statement",
          "line_4b_accounting_standard",
          "line_5a_foreign_nonincl_income",
          "line_5b_foreign_nonincl_loss",
          "line_6a_us_nonincl_income",
          "line_6b_us_nonincl_loss",
          "line_7a_other_includible_foreign_de",
          "line_7b_other_includible_us_de",
          "line_7c_other_includible_entities",
          "line_8_eliminations_adjustment",
          "line_9_period_to_tax_year_adjustment",
          "line_10_other_adjustments",
          "line_11_net_income_includible",
          "line_12a_total_assets_per_l",
          "line_12b_total_liabilities_per_l",
          "part_ii_lines",
          "part_iii_lines",
          "form_8916a"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the schedule is for."
          },
          "parent_form": {
            "type": [
              "string",
              "null"
            ],
            "description": "The return the schedule is attached to: 1065, 1120 or 1120S."
          },
          "m3_rev_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The revision year printed on the schedule."
          },
          "m3_pages": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "integer"
            },
            "description": "Pages of the return the schedule is on, counting from one."
          },
          "line_1a_filed_10k": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 1a, the corporation filed SEC Form 10-K, yes or no as marked."
          },
          "line_1b_certified_audited": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 1b, the corporation prepared a certified audited non-tax-basis income statement, yes or no as marked."
          },
          "line_1c_income_statement_prepared": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 1c, the corporation prepared a non-tax-basis income statement, yes or no as marked."
          },
          "line_1b_consolidated_ni_from_10k": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Consolidated net income from the Form 10-K, on schedules that print it beside line 1.",
            "x-spreadspace-unit": "money"
          },
          "line_2_worldwide_consolidated_ni": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Worldwide consolidated net income (loss) from the income statement, on schedules that print it on line 2.",
            "x-spreadspace-unit": "money"
          },
          "line_3a_certified_audited": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 3a, the income statement was restated for the period on line 2, yes or no as marked."
          },
          "line_3b_period_begin": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, the income statement period beginning date, as printed."
          },
          "line_3b_period_end": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, the income statement period ending date, as printed.",
            "x-spreadspace-format": "printed"
          },
          "line_4a_worldwide_ni_per_statement": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4a, worldwide consolidated net income (loss) from the income statement.",
            "x-spreadspace-unit": "money"
          },
          "line_4b_accounting_standard": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4b, the accounting standard used for line 4a, as marked."
          },
          "line_5a_foreign_nonincl_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5a, net income from nonincludible foreign entities.",
            "x-spreadspace-unit": "money"
          },
          "line_5b_foreign_nonincl_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5b, net loss from nonincludible foreign entities.",
            "x-spreadspace-unit": "money"
          },
          "line_6a_us_nonincl_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6a, net income from nonincludible U.S. entities.",
            "x-spreadspace-unit": "money"
          },
          "line_6b_us_nonincl_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6b, net loss from nonincludible U.S. entities.",
            "x-spreadspace-unit": "money"
          },
          "line_7a_other_includible_foreign_de": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7a, net income (loss) of other includible foreign disregarded entities.",
            "x-spreadspace-unit": "money"
          },
          "line_7b_other_includible_us_de": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7b, net income (loss) of other includible U.S. disregarded entities.",
            "x-spreadspace-unit": "money"
          },
          "line_7c_other_includible_entities": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7c, net income (loss) of other includible entities.",
            "x-spreadspace-unit": "money"
          },
          "line_8_eliminations_adjustment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, adjustment to eliminations of transactions between includible and nonincludible entities.",
            "x-spreadspace-unit": "money"
          },
          "line_9_period_to_tax_year_adjustment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, adjustment to reconcile the income statement period to the tax year.",
            "x-spreadspace-unit": "money"
          },
          "line_10_other_adjustments": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, other adjustments to reconcile to the amount on line 11.",
            "x-spreadspace-unit": "money"
          },
          "line_11_net_income_includible": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, net income (loss) per income statement of includible entities: lines 4 through 10 combined.",
            "x-spreadspace-unit": "money"
          },
          "line_12a_total_assets_per_l": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12a, total assets of the included entities per Schedule L.",
            "x-spreadspace-unit": "money"
          },
          "line_12b_total_liabilities_per_l": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12b, total liabilities of the included entities per Schedule L.",
            "x-spreadspace-unit": "money"
          },
          "voluntary_filer": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "True when the schedule is marked as filed voluntarily."
          },
          "header_boxes": {
            "type": [
              "object",
              "null"
            ],
            "additionalProperties": {
              "type": "boolean"
            },
            "description": "The boxes checked in the schedule's heading, keyed by their printed label."
          },
          "part_ii_lines": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/TaxReturnReportData_M3FourColumnLine"
            },
            "description": "Part II, reconciliation of income (loss) items, keyed by line number."
          },
          "part_iii_lines": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/TaxReturnReportData_M3FourColumnLine"
            },
            "description": "Part III, reconciliation of expense and deduction items, keyed by line number."
          },
          "form_8916a": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_Form8916A"
              },
              {
                "type": "null"
              }
            ],
            "description": "Form 8916-A, supplemental attachment to Schedule M-3, when attached."
          }
        },
        "additionalProperties": false,
        "description": "Schedule M-3, net income (loss) reconciliation, Parts I through III, with Form 8916-A when attached."
      },
      "TaxReturnReportData_K1AtRiskRow": {
        "required": [
          "liability_class",
          "at_risk",
          "not_at_risk"
        ],
        "type": "object",
        "properties": {
          "liability_class": {
            "type": "string",
            "description": "The liability class: recourse, qualified_nonrecourse or nonrecourse."
          },
          "at_risk": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The at-risk amount.",
            "x-spreadspace-unit": "money"
          },
          "not_at_risk": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The not-at-risk amount.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One liability class of the at-risk analysis printed under a Schedule K-1 box 20 statement."
      },
      "TaxReturnReportData_K1CapitalAccount": {
        "required": [
          "beginning_balance",
          "capital_contributed",
          "current_year_increase_decrease",
          "other_increase_decrease",
          "withdrawals_distributions",
          "ending_balance"
        ],
        "type": "object",
        "properties": {
          "beginning_balance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Beginning capital account.",
            "x-spreadspace-unit": "money"
          },
          "capital_contributed": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Capital contributed during the year.",
            "x-spreadspace-unit": "money"
          },
          "current_year_increase_decrease": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Current year net income (loss).",
            "x-spreadspace-unit": "money"
          },
          "other_increase_decrease": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Other increase (decrease).",
            "x-spreadspace-unit": "money"
          },
          "withdrawals_distributions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Withdrawals and distributions.",
            "x-spreadspace-unit": "money"
          },
          "ending_balance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Ending capital account.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Item L of Schedule K-1 (Form 1065), partner's capital account analysis."
      },
      "TaxReturnReportData_K1CodedEntry": {
        "required": [
          "code",
          "amount",
          "is_stmt"
        ],
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "The code letter or letters as printed, with a trailing asterisk when the form prints one."
          },
          "amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The amount beside the code; null when the row prints `STMT` instead of a figure.",
            "x-spreadspace-unit": "money"
          },
          "is_stmt": {
            "type": "boolean",
            "description": "True when the row prints `STMT`, meaning the figure is on an attached statement."
          },
          "text_value": {
            "type": [
              "string",
              "null"
            ],
            "description": "The row's printed value when it is text rather than an amount, such as a country name."
          },
          "has_stmt_marker": {
            "type": "boolean",
            "description": "True when the row prints an asterisk or `STMT` marker referring to an attached statement."
          }
        },
        "additionalProperties": false,
        "description": "One printed row of a Schedule K-1 box that takes code letters: the code and its amount."
      },
      "TaxReturnReportData_K1OwnershipPercents": {
        "required": [
          "profit_beginning",
          "profit_ending",
          "loss_beginning",
          "loss_ending",
          "capital_beginning",
          "capital_ending"
        ],
        "type": "object",
        "properties": {
          "profit_beginning": {
            "type": [
              "string",
              "null"
            ],
            "description": "Profit share at the beginning of the year, as printed."
          },
          "profit_ending": {
            "type": [
              "string",
              "null"
            ],
            "description": "Profit share at the end of the year, as printed."
          },
          "loss_beginning": {
            "type": [
              "string",
              "null"
            ],
            "description": "Loss share at the beginning of the year, as printed."
          },
          "loss_ending": {
            "type": [
              "string",
              "null"
            ],
            "description": "Loss share at the end of the year, as printed."
          },
          "capital_beginning": {
            "type": [
              "string",
              "null"
            ],
            "description": "Capital share at the beginning of the year, as printed."
          },
          "capital_ending": {
            "type": [
              "string",
              "null"
            ],
            "description": "Capital share at the end of the year, as printed."
          }
        },
        "additionalProperties": false,
        "description": "Item J of Schedule K-1 (Form 1065), partner's share of profit, loss and capital, as printed."
      },
      "TaxReturnReportData_K1PartnerInfo": {
        "required": [
          "partnership_ein",
          "partnership_name",
          "partnership_address",
          "partner_id",
          "partner_id_kind",
          "partner_name",
          "partner_address",
          "is_general_partner",
          "is_limited_partner",
          "is_domestic",
          "entity_type",
          "ownership_percents",
          "capital_account"
        ],
        "type": "object",
        "properties": {
          "partnership_ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item A, partnership's employer identification number, masked to the last four digits."
          },
          "partnership_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item B, partnership's name."
          },
          "partnership_address": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item B, partnership's address."
          },
          "irs_center": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item C, IRS center where the partnership filed its return."
          },
          "is_publicly_traded": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item D, publicly traded partnership box."
          },
          "partner_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item E, partner's identifying number, masked to the last four digits."
          },
          "partner_id_kind": {
            "type": [
              "string",
              "null"
            ],
            "description": "Whether item E is an SSN or an EIN."
          },
          "partner_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item F, partner's name."
          },
          "partner_address": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item F, partner's address."
          },
          "is_general_partner": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item G, general partner or LLC member-manager box."
          },
          "is_limited_partner": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item G, limited partner or other LLC member box."
          },
          "is_domestic": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item H1, domestic partner box."
          },
          "is_foreign": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item H1, foreign partner box."
          },
          "entity_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item I1, what type of entity the partner is, as printed."
          },
          "is_disregarded_entity": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item H2, the partner is a disregarded entity box."
          },
          "de_owner_tin": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item H2, the disregarded entity owner's taxpayer identification number, masked to the last four digits."
          },
          "is_retirement_plan": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Item I2, the partner is a retirement plan box."
          },
          "ownership_percents": {
            "description": "Item J, partner's share of profit, loss and capital at the beginning and end of the year.",
            "$ref": "#/components/schemas/TaxReturnReportData_K1OwnershipPercents"
          },
          "share_of_liabilities": {
            "description": "Item K1, partner's share of liabilities at the beginning and end of the year.",
            "$ref": "#/components/schemas/TaxReturnReportData_K1ShareOfLiabilities"
          },
          "capital_account": {
            "description": "Item L, partner's capital account analysis.",
            "$ref": "#/components/schemas/TaxReturnReportData_K1CapitalAccount"
          }
        },
        "additionalProperties": false,
        "description": "Parts I and II of Schedule K-1 (Form 1065): the partnership and the partner."
      },
      "TaxReturnReportData_K1ShareOfLiabilities": {
        "required": [
          "nonrecourse_beginning",
          "nonrecourse_ending",
          "qualified_nonrecourse_beginning",
          "qualified_nonrecourse_ending",
          "recourse_beginning",
          "recourse_ending"
        ],
        "type": "object",
        "properties": {
          "nonrecourse_beginning": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Nonrecourse liabilities at the beginning of the year.",
            "x-spreadspace-unit": "money"
          },
          "nonrecourse_ending": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Nonrecourse liabilities at the end of the year.",
            "x-spreadspace-unit": "money"
          },
          "qualified_nonrecourse_beginning": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Qualified nonrecourse financing at the beginning of the year.",
            "x-spreadspace-unit": "money"
          },
          "qualified_nonrecourse_ending": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Qualified nonrecourse financing at the end of the year.",
            "x-spreadspace-unit": "money"
          },
          "recourse_beginning": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Recourse liabilities at the beginning of the year.",
            "x-spreadspace-unit": "money"
          },
          "recourse_ending": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Recourse liabilities at the end of the year.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Item K1 of Schedule K-1 (Form 1065), partner's share of liabilities."
      },
      "TaxReturnReportData_K1ShareholderInfo": {
        "required": [
          "corporation_ein",
          "corporation_name",
          "corporation_address",
          "shareholder_id",
          "shareholder_id_kind",
          "shareholder_name",
          "shareholder_address",
          "stock_ownership_percent"
        ],
        "type": "object",
        "properties": {
          "corporation_ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item A, corporation's employer identification number, masked to the last four digits."
          },
          "corporation_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item B, corporation's name."
          },
          "corporation_address": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item B, corporation's address."
          },
          "irs_center": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item C, IRS center where the corporation filed its return."
          },
          "shareholder_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item E, shareholder's identifying number, masked to the last four digits."
          },
          "shareholder_id_kind": {
            "type": [
              "string",
              "null"
            ],
            "description": "Whether item E is an SSN or an EIN."
          },
          "shareholder_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item F, shareholder's name."
          },
          "shareholder_address": {
            "type": [
              "string",
              "null"
            ],
            "description": "Item F, shareholder's address."
          },
          "stock_ownership_percent": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Item G, current year allocation percentage, as printed (50 for fifty percent)."
          },
          "corporation_total_shares_beginning": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Item D, corporation's total number of shares at the beginning of the year."
          },
          "corporation_total_shares_ending": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Item D, corporation's total number of shares at the end of the year."
          },
          "shareholder_shares_beginning": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Item H, shareholder's number of shares at the beginning of the year."
          },
          "shareholder_shares_ending": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Item H, shareholder's number of shares at the end of the year."
          },
          "loans_from_shareholder_beginning": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Item I, loans from shareholder at the beginning of the year.",
            "x-spreadspace-unit": "money"
          },
          "loans_from_shareholder_ending": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Item I, loans from shareholder at the end of the year.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Parts I and II of Schedule K-1 (Form 1120-S): the corporation and the shareholder."
      },
      "TaxReturnReportData_ListedPropertyRow": {
        "required": [
          "type_description",
          "date_placed_in_service",
          "business_use_pct",
          "cost_basis",
          "basis_for_depreciation",
          "recovery_period",
          "method_convention",
          "depreciation_deduction",
          "elected_179_cost"
        ],
        "type": "object",
        "properties": {
          "type_description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (a), type of property."
          },
          "date_placed_in_service": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (b), date placed in service, as printed.",
            "x-spreadspace-format": "printed"
          },
          "business_use_pct": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (c), business or investment use percentage, as printed."
          },
          "cost_basis": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (d), cost or other basis.",
            "x-spreadspace-unit": "money"
          },
          "basis_for_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (e), basis for depreciation.",
            "x-spreadspace-unit": "money"
          },
          "recovery_period": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (f), recovery period, as printed."
          },
          "method_convention": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (g), method and convention, as printed."
          },
          "depreciation_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (h), depreciation deduction.",
            "x-spreadspace-unit": "money"
          },
          "elected_179_cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (i), elected section 179 cost.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One row of Form 4562, Part V section A (line 26 or 27)."
      },
      "TaxReturnReportData_ListedPropertyScheduleRow": {
        "required": [
          "type_description",
          "date_placed_in_service",
          "business_use_pct",
          "cost_basis",
          "basis_for_depreciation",
          "recovery_period",
          "method_convention",
          "depreciation_deduction",
          "elected_179_cost"
        ],
        "type": "object",
        "properties": {
          "type_description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Type of property."
          },
          "date_placed_in_service": {
            "type": [
              "string",
              "null"
            ],
            "description": "Date placed in service, as printed.",
            "x-spreadspace-format": "printed"
          },
          "business_use_pct": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Business or investment use percentage."
          },
          "cost_basis": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Cost or other basis.",
            "x-spreadspace-unit": "money"
          },
          "basis_for_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Basis for depreciation.",
            "x-spreadspace-unit": "money"
          },
          "recovery_period": {
            "type": [
              "string",
              "null"
            ],
            "description": "Recovery period, as printed."
          },
          "method_convention": {
            "type": [
              "string",
              "null"
            ],
            "description": "Method and convention, as printed."
          },
          "depreciation_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Depreciation deduction.",
            "x-spreadspace-unit": "money"
          },
          "elected_179_cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Elected section 179 cost.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One asset row of a Form 4562 Part V listed property statement, in the form's own columns."
      },
      "TaxReturnReportData_M3FourColumnLine": {
        "required": [
          "income_per_statement",
          "temporary_difference",
          "permanent_difference",
          "income_per_tax_return",
          "stmt_ref"
        ],
        "type": "object",
        "properties": {
          "income_per_statement": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (a), income (loss) or expense per income statement.",
            "x-spreadspace-unit": "money"
          },
          "temporary_difference": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (b), temporary difference.",
            "x-spreadspace-unit": "money"
          },
          "permanent_difference": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (c), permanent difference.",
            "x-spreadspace-unit": "money"
          },
          "income_per_tax_return": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (d), income (loss) or deduction per tax return.",
            "x-spreadspace-unit": "money"
          },
          "stmt_ref": {
            "type": [
              "string",
              "null"
            ],
            "description": "The statement number the line refers to, when it prints one."
          }
        },
        "additionalProperties": false,
        "description": "One line of Schedule M-3 Part II or III, or of Form 8916-A, with its four columns."
      },
      "TaxReturnReportData_MacrsClassRow": {
        "required": [
          "classification",
          "placed_in_service",
          "basis_for_depreciation",
          "recovery_period",
          "convention",
          "method",
          "depreciation_deduction"
        ],
        "type": "object",
        "properties": {
          "classification": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (a), classification of property, as printed."
          },
          "placed_in_service": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (b), month and year placed in service, as printed."
          },
          "basis_for_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (c), basis for depreciation.",
            "x-spreadspace-unit": "money"
          },
          "recovery_period": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (d), recovery period, as printed."
          },
          "convention": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (e), convention, as printed."
          },
          "method": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (f), method, as printed."
          },
          "depreciation_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (g), depreciation deduction.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One class line of Form 4562, Part III (lines 19a through 20d)."
      },
      "TaxReturnReportData_MacrsScheduleRow": {
        "required": [
          "date_placed_in_service",
          "cost",
          "basis_for_depreciation",
          "recovery_period",
          "convention",
          "method",
          "depreciation_deduction"
        ],
        "type": "object",
        "properties": {
          "date_placed_in_service": {
            "type": [
              "string",
              "null"
            ],
            "description": "Date placed in service, as printed.",
            "x-spreadspace-format": "printed"
          },
          "cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Cost or other basis.",
            "x-spreadspace-unit": "money"
          },
          "basis_for_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Basis for depreciation.",
            "x-spreadspace-unit": "money"
          },
          "recovery_period": {
            "type": [
              "string",
              "null"
            ],
            "description": "Recovery period, as printed."
          },
          "convention": {
            "type": [
              "string",
              "null"
            ],
            "description": "Convention, as printed."
          },
          "method": {
            "type": [
              "string",
              "null"
            ],
            "description": "Method, as printed."
          },
          "depreciation_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Depreciation deduction.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One asset row of a Form 4562 Part III MACRS depreciation statement, in the form's own columns."
      },
      "TaxReturnReportData_NolCarryforwardRow": {
        "required": [
          "tax_year",
          "loss_sustained",
          "loss_previously_applied",
          "loss_remaining",
          "available_this_year",
          "is_total"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "string",
              "null"
            ],
            "description": "The year the loss arose, as printed."
          },
          "loss_sustained": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Loss sustained in that year.",
            "x-spreadspace-unit": "money"
          },
          "loss_previously_applied": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Loss previously applied.",
            "x-spreadspace-unit": "money"
          },
          "loss_remaining": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Loss remaining.",
            "x-spreadspace-unit": "money"
          },
          "available_this_year": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Loss available this year.",
            "x-spreadspace-unit": "money"
          },
          "is_total": {
            "type": "boolean",
            "description": "Whether the row is the closing total line."
          }
        },
        "additionalProperties": false,
        "description": "One year of a net operating loss carryforward schedule."
      },
      "TaxReturnReportData_OfficerCompensationRow": {
        "required": [
          "name",
          "ssn_last4",
          "percent_time_devoted",
          "percent_stock_common",
          "percent_stock_preferred",
          "compensation"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (a), name of officer."
          },
          "ssn_last4": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (b), Social Security number, last four digits only."
          },
          "percent_time_devoted": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (c), percent of time devoted to business, as printed."
          },
          "percent_stock_common": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (d), percent of common stock owned, as printed."
          },
          "percent_stock_preferred": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (e), percent of preferred stock owned, as printed."
          },
          "compensation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (f), amount of compensation.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One officer on line 1 of Form 1125-E."
      },
      "TaxReturnReportData_PartIIIPropertyColumn": {
        "required": [
          "column_letter",
          "description",
          "date_acquired",
          "date_sold",
          "line_20_gross_sales",
          "line_21_cost_basis",
          "line_22_depreciation",
          "line_23_adjusted_basis",
          "line_24_total_gain",
          "line_25a_depreciation_from_22",
          "line_25b_smaller_24_or_25a",
          "line_26a_additional_depr_post_1975",
          "line_26b_applicable_pct_times",
          "line_26c_subtract_26a_from_24",
          "line_26d_additional_depr_1969_1975",
          "line_26e_smaller_26c_or_26d",
          "line_26f_section_291_amount",
          "line_26g_sum",
          "line_27a_soil_water_clearing",
          "line_27b_applicable_pct",
          "line_27c_smaller_24_or_27b",
          "line_28a_idc_etc",
          "line_28b_smaller_24_or_28a",
          "line_29a_section_126_payments",
          "line_29b_smaller_24_or_29a"
        ],
        "type": "object",
        "properties": {
          "column_letter": {
            "type": [
              "string",
              "null"
            ],
            "description": "The property's column letter, A through D."
          },
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19, description of the property."
          },
          "date_acquired": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19, date acquired, as printed.",
            "x-spreadspace-format": "printed"
          },
          "date_sold": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19, date sold, as printed.",
            "x-spreadspace-format": "printed"
          },
          "line_20_gross_sales": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 20, gross sales price.",
            "x-spreadspace-unit": "money"
          },
          "line_21_cost_basis": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 21, cost or other basis plus expense of sale.",
            "x-spreadspace-unit": "money"
          },
          "line_22_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 22, depreciation or depletion allowed or allowable.",
            "x-spreadspace-unit": "money"
          },
          "line_23_adjusted_basis": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 23, adjusted basis: line 21 less line 22.",
            "x-spreadspace-unit": "money"
          },
          "line_24_total_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 24, total gain: line 20 less line 23.",
            "x-spreadspace-unit": "money"
          },
          "line_25a_depreciation_from_22": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 25a, depreciation allowed or allowable from line 22 (section 1245 property).",
            "x-spreadspace-unit": "money"
          },
          "line_25b_smaller_24_or_25a": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 25b, the smaller of line 24 or line 25a.",
            "x-spreadspace-unit": "money"
          },
          "line_26a_additional_depr_post_1975": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 26a, additional depreciation after 1975 (section 1250 property).",
            "x-spreadspace-unit": "money"
          },
          "line_26b_applicable_pct_times": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Form 4797 Part III line 26b as printed for the property column.",
            "x-spreadspace-unit": "money"
          },
          "line_26c_subtract_26a_from_24": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 26c, line 24 less line 26a.",
            "x-spreadspace-unit": "money"
          },
          "line_26d_additional_depr_1969_1975": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 26d, additional depreciation after 1969 and before 1976.",
            "x-spreadspace-unit": "money"
          },
          "line_26e_smaller_26c_or_26d": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 26e, the smaller of line 26c or line 26d.",
            "x-spreadspace-unit": "money"
          },
          "line_26f_section_291_amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 26f, section 291 amount (corporations only).",
            "x-spreadspace-unit": "money"
          },
          "line_26g_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 26g, lines 26b, 26e and 26f added together.",
            "x-spreadspace-unit": "money"
          },
          "line_27a_soil_water_clearing": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 27a, soil, water and land clearing expenses (section 1252 property).",
            "x-spreadspace-unit": "money"
          },
          "line_27b_applicable_pct": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Form 4797 Part III line 27b as printed for the property column.",
            "x-spreadspace-unit": "money"
          },
          "line_27c_smaller_24_or_27b": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 27c, the smaller of line 24 or line 27b.",
            "x-spreadspace-unit": "money"
          },
          "line_28a_idc_etc": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 28a, intangible drilling and development costs, mine development and exploration costs, and depletion (section 1254 property).",
            "x-spreadspace-unit": "money"
          },
          "line_28b_smaller_24_or_28a": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 28b, the smaller of line 24 or line 28a.",
            "x-spreadspace-unit": "money"
          },
          "line_29a_section_126_payments": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 29a, applicable percentage of payments excluded from income under section 126 (section 1255 property).",
            "x-spreadspace-unit": "money"
          },
          "line_29b_smaller_24_or_29a": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 29b, the smaller of line 24 or line 29a.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One property column of Form 4797, Part III (lines 19 through 29)."
      },
      "TaxReturnReportData_PassThroughRow": {
        "required": [
          "name",
          "kind",
          "ein",
          "foreign",
          "basis_required",
          "not_at_risk",
          "ptp",
          "passive_loss",
          "passive_income",
          "nonpassive_loss",
          "section_179",
          "nonpassive_income"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of the partnership or S corporation."
          },
          "kind": {
            "type": [
              "string",
              "null"
            ],
            "description": "P for a partnership, S for an S corporation."
          },
          "ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "Employer identification number, last four digits only."
          },
          "foreign": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the entity is a foreign partnership."
          },
          "basis_required": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether a basis computation is required."
          },
          "not_at_risk": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether any amount is not at risk."
          },
          "ptp": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the entity is a publicly traded partnership, when the statement prints that column."
          },
          "passive_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Passive loss allowed.",
            "x-spreadspace-unit": "money"
          },
          "passive_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Passive income.",
            "x-spreadspace-unit": "money"
          },
          "nonpassive_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Nonpassive loss.",
            "x-spreadspace-unit": "money"
          },
          "section_179": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Section 179 expense deduction.",
            "x-spreadspace-unit": "money"
          },
          "nonpassive_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Nonpassive income.",
            "x-spreadspace-unit": "money"
          },
          "is_total": {
            "type": "boolean",
            "description": "Whether the row is the printed totals line."
          }
        },
        "additionalProperties": false,
        "description": "One partnership or S corporation row of a Schedule E Part II statement."
      },
      "TaxReturnReportData_PassiveActivityRow": {
        "required": [
          "name",
          "form_line_ref",
          "is_total",
          "cells"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of the activity, or the caption of a prose line."
          },
          "form_line_ref": {
            "type": [
              "string",
              "null"
            ],
            "description": "The form or schedule and line the activity is reported on, as printed."
          },
          "is_total": {
            "type": "boolean",
            "description": "Whether the row is a printed totals line."
          },
          "cells": {
            "type": "object",
            "additionalProperties": {
              "pattern": "^-?\\d+\\.\\d{2}$",
              "type": "string",
              "x-spreadspace-unit": "money"
            },
            "description": "The row's figures keyed by the printed column letter."
          }
        },
        "additionalProperties": false,
        "description": "One activity row of a Form 8582 activity table."
      },
      "TaxReturnReportData_Preparer": {
        "required": [
          "self_prepared",
          "name",
          "firm",
          "ptin"
        ],
        "type": "object",
        "properties": {
          "self_prepared": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "True when the return is marked self-prepared."
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Preparer's name."
          },
          "firm": {
            "type": [
              "string",
              "null"
            ],
            "description": "Firm's name."
          },
          "ptin": {
            "type": [
              "string",
              "null"
            ],
            "description": "Preparer tax identification number."
          }
        },
        "additionalProperties": false,
        "description": "The paid preparer block at the foot of Form 1040, page 2."
      },
      "TaxReturnReportData_PropertyDispositionRow": {
        "required": [
          "description",
          "date_acquired",
          "date_sold",
          "gross_sales_price",
          "depreciation_allowed",
          "cost_basis",
          "gain_loss"
        ],
        "type": "object",
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Description of the property."
          },
          "date_acquired": {
            "type": [
              "string",
              "null"
            ],
            "description": "Date acquired, as printed.",
            "x-spreadspace-format": "printed"
          },
          "date_sold": {
            "type": [
              "string",
              "null"
            ],
            "description": "Date sold, as printed.",
            "x-spreadspace-format": "printed"
          },
          "gross_sales_price": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Gross sales price.",
            "x-spreadspace-unit": "money"
          },
          "depreciation_allowed": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Depreciation allowed or allowable since acquisition.",
            "x-spreadspace-unit": "money"
          },
          "cost_basis": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Cost or other basis, plus improvements and expense of sale.",
            "x-spreadspace-unit": "money"
          },
          "gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Gain or loss.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One property row of a Form 4797 disposition statement, in the form's own columns."
      },
      "TaxReturnReportData_PropertySaleRow": {
        "required": [
          "description",
          "date_acquired",
          "date_sold",
          "gross_sales_price",
          "depreciation_allowed",
          "cost_basis",
          "gain_loss"
        ],
        "type": "object",
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (a), description of property."
          },
          "date_acquired": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (b), date acquired, as printed.",
            "x-spreadspace-format": "printed"
          },
          "date_sold": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (c), date sold, as printed.",
            "x-spreadspace-format": "printed"
          },
          "gross_sales_price": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (d), gross sales price.",
            "x-spreadspace-unit": "money"
          },
          "depreciation_allowed": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (e), depreciation allowed or allowable since acquisition.",
            "x-spreadspace-unit": "money"
          },
          "cost_basis": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (f), cost or other basis, plus improvements and expense of sale.",
            "x-spreadspace-unit": "money"
          },
          "gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (g), gain or loss.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One property row of Form 4797, Part I line 2 or Part II line 10."
      },
      "TaxReturnReportData_Schedule1": {
        "required": [
          "tax_year",
          "taxpayer_name",
          "taxpayer_ssn",
          "line_1_state_local_refunds",
          "line_2a_alimony_received",
          "line_2b_divorce_date",
          "line_3_business_income_sch_c",
          "line_4_other_gains_4797",
          "line_5_rental_real_estate_sch_e",
          "line_6_farm_income_sch_f",
          "line_7_unemployment",
          "other_income",
          "line_9_total_other_income",
          "line_10_total_additional_income",
          "adjustments"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the schedule is for."
          },
          "taxpayer_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name(s) shown on Form 1040."
          },
          "taxpayer_ssn": {
            "type": [
              "string",
              "null"
            ],
            "description": "Social Security number, masked to the last four digits."
          },
          "line_1_state_local_refunds": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, taxable refunds, credits or offsets of state and local income taxes.",
            "x-spreadspace-unit": "money"
          },
          "line_2a_alimony_received": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2a, alimony received.",
            "x-spreadspace-unit": "money"
          },
          "line_2b_divorce_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2b, date of original divorce or separation agreement, as printed.",
            "x-spreadspace-format": "printed"
          },
          "line_3_business_income_sch_c": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, business income or (loss) (Schedule C).",
            "x-spreadspace-unit": "money"
          },
          "line_4_other_gains_4797": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, other gains or (losses) (Form 4797).",
            "x-spreadspace-unit": "money"
          },
          "line_5_rental_real_estate_sch_e": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, rental real estate, royalties, partnerships, S corporations, trusts and similar (Schedule E).",
            "x-spreadspace-unit": "money"
          },
          "line_6_farm_income_sch_f": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, farm income or (loss) (Schedule F).",
            "x-spreadspace-unit": "money"
          },
          "line_7_unemployment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, unemployment compensation.",
            "x-spreadspace-unit": "money"
          },
          "other_income": {
            "description": "Line 8, other income, lines 8a through 8z.",
            "$ref": "#/components/schemas/TaxReturnReportData_Schedule1OtherIncome"
          },
          "line_9_total_other_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, total other income: lines 8a through 8z added together.",
            "x-spreadspace-unit": "money"
          },
          "line_10_total_additional_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, lines 1 through 7 and 9 combined.",
            "x-spreadspace-unit": "money"
          },
          "adjustments": {
            "description": "Part II, adjustments to income, lines 11 through 26.",
            "$ref": "#/components/schemas/TaxReturnReportData_Schedule1Adjustments"
          }
        },
        "additionalProperties": false,
        "description": "Schedule 1 (Form 1040), additional income and adjustments to income."
      },
      "TaxReturnReportData_Schedule1Adjustments": {
        "required": [
          "line_11_educator_expenses",
          "line_12_certain_business_expenses",
          "line_13_hsa_deduction",
          "line_14_moving_expenses_armed_forces",
          "line_15_se_tax_deduction_half",
          "line_16_se_retirement_plans",
          "line_17_se_health_insurance",
          "line_18_early_withdrawal_penalty",
          "line_19a_alimony_paid",
          "line_19b_divorce_date",
          "line_20_ira_deduction",
          "line_21_student_loan_interest",
          "line_22_reserved",
          "line_23_archer_msa",
          "line_24_other_adjustments_total",
          "line_25_sum_24_sub",
          "line_26_total_adjustments"
        ],
        "type": "object",
        "properties": {
          "line_11_educator_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, educator expenses.",
            "x-spreadspace-unit": "money"
          },
          "line_12_certain_business_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, certain business expenses of reservists, performing artists and fee-basis government officials (Form 2106).",
            "x-spreadspace-unit": "money"
          },
          "line_13_hsa_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, health savings account deduction (Form 8889).",
            "x-spreadspace-unit": "money"
          },
          "line_14_moving_expenses_armed_forces": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, moving expenses for members of the Armed Forces (Form 3903).",
            "x-spreadspace-unit": "money"
          },
          "line_15_se_tax_deduction_half": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, deductible part of self-employment tax (Schedule SE).",
            "x-spreadspace-unit": "money"
          },
          "line_16_se_retirement_plans": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, self-employed SEP, SIMPLE and qualified plans.",
            "x-spreadspace-unit": "money"
          },
          "line_17_se_health_insurance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, self-employed health insurance deduction.",
            "x-spreadspace-unit": "money"
          },
          "line_18_early_withdrawal_penalty": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18, penalty on early withdrawal of savings.",
            "x-spreadspace-unit": "money"
          },
          "line_19a_alimony_paid": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19a, alimony paid.",
            "x-spreadspace-unit": "money"
          },
          "line_19b_divorce_date": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19b, date of original divorce or separation agreement, as printed.",
            "x-spreadspace-format": "printed"
          },
          "line_20_ira_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 20, IRA deduction.",
            "x-spreadspace-unit": "money"
          },
          "line_21_student_loan_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 21, student loan interest deduction.",
            "x-spreadspace-unit": "money"
          },
          "line_22_reserved": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 22, reserved for future use, on schedules that print it so.",
            "x-spreadspace-unit": "money"
          },
          "line_23_archer_msa": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 23, Archer MSA deduction.",
            "x-spreadspace-unit": "money"
          },
          "line_24_other_adjustments_total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 24z or the line 24 total, other adjustments, as the schedule prints it.",
            "x-spreadspace-unit": "money"
          },
          "line_25_sum_24_sub": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 25, total other adjustments: lines 24a through 24z added together.",
            "x-spreadspace-unit": "money"
          },
          "line_26_total_adjustments": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 26, total adjustments to income: lines 11 through 23 and 25 added together.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule 1 (Form 1040), Part II, adjustments to income, lines 11 through 26."
      },
      "TaxReturnReportData_Schedule1OtherIncome": {
        "required": [
          "line_8a_nol",
          "line_8b_gambling",
          "line_8c_cancellation_of_debt",
          "line_8d_foreign_earned_income_exclusion",
          "line_8e_income_form_8853",
          "line_8f_income_form_8889",
          "line_8g_alaska_permanent_fund",
          "line_8h_jury_duty",
          "line_8i_prizes_awards",
          "line_8j_activity_not_for_profit",
          "line_8k_stock_options",
          "line_8l_rental_personal_property",
          "line_8m_olympic_medals",
          "line_8n_section_951a_inclusion",
          "line_8o_section_951a_a_inclusion",
          "line_8p_section_461l_excess_business_loss",
          "line_8q_able_distributions",
          "line_8r_scholarship_fellowship",
          "line_8s_medicaid_waiver",
          "line_8t_pension_nonqualified_457",
          "line_8u_wages_incarcerated",
          "line_8v_digital_assets_ordinary",
          "line_8z_other"
        ],
        "type": "object",
        "properties": {
          "line_8a_nol": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8a, net operating loss.",
            "x-spreadspace-unit": "money"
          },
          "line_8b_gambling": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8b, gambling.",
            "x-spreadspace-unit": "money"
          },
          "line_8c_cancellation_of_debt": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8c, cancellation of debt.",
            "x-spreadspace-unit": "money"
          },
          "line_8d_foreign_earned_income_exclusion": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8d, foreign earned income exclusion from Form 2555.",
            "x-spreadspace-unit": "money"
          },
          "line_8e_income_form_8853": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8e, income from Form 8853.",
            "x-spreadspace-unit": "money"
          },
          "line_8f_income_form_8889": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8f, income from Form 8889.",
            "x-spreadspace-unit": "money"
          },
          "line_8g_alaska_permanent_fund": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8g, Alaska Permanent Fund dividends.",
            "x-spreadspace-unit": "money"
          },
          "line_8h_jury_duty": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8h, jury duty pay.",
            "x-spreadspace-unit": "money"
          },
          "line_8i_prizes_awards": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8i, prizes and awards.",
            "x-spreadspace-unit": "money"
          },
          "line_8j_activity_not_for_profit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8j, activity not engaged in for profit income.",
            "x-spreadspace-unit": "money"
          },
          "line_8k_stock_options": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8k, stock options.",
            "x-spreadspace-unit": "money"
          },
          "line_8l_rental_personal_property": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8l, income from the rental of personal property engaged in for profit but not as a business.",
            "x-spreadspace-unit": "money"
          },
          "line_8m_olympic_medals": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8m, Olympic and Paralympic medals and USOC prize money.",
            "x-spreadspace-unit": "money"
          },
          "line_8n_section_951a_inclusion": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8n, section 951(a) inclusion.",
            "x-spreadspace-unit": "money"
          },
          "line_8o_section_951a_a_inclusion": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8o, section 951A(a) inclusion.",
            "x-spreadspace-unit": "money"
          },
          "line_8p_section_461l_excess_business_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8p, section 461(l) excess business loss adjustment.",
            "x-spreadspace-unit": "money"
          },
          "line_8q_able_distributions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8q, taxable distributions from an ABLE account.",
            "x-spreadspace-unit": "money"
          },
          "line_8r_scholarship_fellowship": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8r, scholarship and fellowship grants not reported on Form W-2.",
            "x-spreadspace-unit": "money"
          },
          "line_8s_medicaid_waiver": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8s, nontaxable Medicaid waiver payments included on line 1a or 1d, entered as a negative amount.",
            "x-spreadspace-unit": "money"
          },
          "line_8t_pension_nonqualified_457": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8t, pension or annuity from a nonqualified deferred compensation plan or a nongovernmental section 457 plan.",
            "x-spreadspace-unit": "money"
          },
          "line_8u_wages_incarcerated": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8u, wages earned while incarcerated.",
            "x-spreadspace-unit": "money"
          },
          "line_8v_digital_assets_ordinary": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8v, digital assets received as ordinary income not reported elsewhere.",
            "x-spreadspace-unit": "money"
          },
          "line_8z_other": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8z, other income.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule 1 (Form 1040), line 8, other income, lines 8a through 8z."
      },
      "TaxReturnReportData_Schedule2": {
        "required": [
          "tax_year",
          "taxpayer_name",
          "taxpayer_ssn",
          "line_1a_excess_aptc_repayment",
          "line_1b_clean_vehicle_repayment_new",
          "line_1c_clean_vehicle_repayment_used",
          "line_1d_recapture_net_epe",
          "line_1e_excessive_payments_ep",
          "line_1f_excessive_payments_20pct",
          "line_1y_other_additions",
          "line_1z_total_additions",
          "line_2_amt",
          "line_3_total",
          "line_4_se_tax",
          "line_5_ss_medicare_unreported_tips",
          "line_6_uncollected_ss_medicare_wages",
          "line_7_total_additional_ss_medicare",
          "line_8_additional_tax_ira",
          "line_9_household_employment",
          "line_10_homebuyer_repayment",
          "line_11_additional_medicare_tax",
          "line_12_net_investment_income_tax",
          "line_13_uncollected_ss_medicare_w2",
          "line_14_interest_453a",
          "line_15_interest_453l",
          "line_16_recapture_other_credits",
          "line_17_other_additional_taxes",
          "line_18_total",
          "line_19_recapture_net_epe",
          "line_20_section_965_deferred",
          "line_21_total_other_taxes"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the schedule is for."
          },
          "taxpayer_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name(s) shown on Form 1040."
          },
          "taxpayer_ssn": {
            "type": [
              "string",
              "null"
            ],
            "description": "Social Security number, masked to the last four digits."
          },
          "line_1a_excess_aptc_repayment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1a, excess advance premium tax credit repayment (Form 8962).",
            "x-spreadspace-unit": "money"
          },
          "line_1b_clean_vehicle_repayment_new": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1b, repayment of new clean vehicle credit transferred to a dealer.",
            "x-spreadspace-unit": "money"
          },
          "line_1c_clean_vehicle_repayment_used": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1c, repayment of previously owned clean vehicle credit transferred to a dealer.",
            "x-spreadspace-unit": "money"
          },
          "line_1d_recapture_net_epe": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1d, recapture of net elective payment election amount.",
            "x-spreadspace-unit": "money"
          },
          "line_1e_excessive_payments_ep": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1e, excessive payments (Form 4255).",
            "x-spreadspace-unit": "money"
          },
          "line_1f_excessive_payments_20pct": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1f, the 20 percent excessive payment amount (Form 4255).",
            "x-spreadspace-unit": "money"
          },
          "line_1y_other_additions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1y, other additions to tax.",
            "x-spreadspace-unit": "money"
          },
          "line_1z_total_additions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1z, lines 1a through 1y added together.",
            "x-spreadspace-unit": "money"
          },
          "line_2_amt": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, alternative minimum tax (Form 6251).",
            "x-spreadspace-unit": "money"
          },
          "line_3_total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, lines 1z and 2 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_4_se_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, self-employment tax (Schedule SE).",
            "x-spreadspace-unit": "money"
          },
          "line_5_ss_medicare_unreported_tips": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, Social Security and Medicare tax on unreported tip income (Form 4137).",
            "x-spreadspace-unit": "money"
          },
          "line_6_uncollected_ss_medicare_wages": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, uncollected Social Security and Medicare tax on wages (Form 8919).",
            "x-spreadspace-unit": "money"
          },
          "line_7_total_additional_ss_medicare": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, total additional Social Security and Medicare tax: lines 5 and 6 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_8_additional_tax_ira": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, additional tax on IRAs or other tax-favored accounts (Form 5329).",
            "x-spreadspace-unit": "money"
          },
          "line_9_household_employment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, household employment taxes (Schedule H).",
            "x-spreadspace-unit": "money"
          },
          "line_10_homebuyer_repayment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, repayment of first-time homebuyer credit (Form 5405).",
            "x-spreadspace-unit": "money"
          },
          "line_11_additional_medicare_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, additional Medicare tax (Form 8959).",
            "x-spreadspace-unit": "money"
          },
          "line_12_net_investment_income_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, net investment income tax (Form 8960).",
            "x-spreadspace-unit": "money"
          },
          "line_13_uncollected_ss_medicare_w2": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, uncollected Social Security and Medicare or RRTA tax on tips or group-term life insurance from Form W-2, box 12.",
            "x-spreadspace-unit": "money"
          },
          "line_14_interest_453a": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, interest on tax due on installment income from the sale of certain residential lots and timeshares.",
            "x-spreadspace-unit": "money"
          },
          "line_15_interest_453l": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, interest on the deferred tax on gain from certain installment sales with a sales price over 150,000 dollars.",
            "x-spreadspace-unit": "money"
          },
          "line_16_recapture_other_credits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, recapture of low-income housing credit (Form 8611).",
            "x-spreadspace-unit": "money"
          },
          "line_17_other_additional_taxes": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, other additional taxes, total of lines 17a through 17z.",
            "x-spreadspace-unit": "money"
          },
          "line_18_total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18, total additional taxes: lines 17a through 17z added together.",
            "x-spreadspace-unit": "money"
          },
          "line_19_recapture_net_epe": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19, recapture of net elective payment election amount, on schedules that print it here.",
            "x-spreadspace-unit": "money"
          },
          "line_20_section_965_deferred": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 20, section 965 net tax liability installment from Form 965-A.",
            "x-spreadspace-unit": "money"
          },
          "line_21_total_other_taxes": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 21, total other taxes: lines 4, 7 through 16 and 18 added together.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule 2 (Form 1040), additional taxes."
      },
      "TaxReturnReportData_Schedule3": {
        "required": [
          "tax_year",
          "taxpayer_name",
          "taxpayer_ssn",
          "line_1_foreign_tax_credit",
          "line_2_dependent_care_credit",
          "line_3_education_credits",
          "line_4_retirement_savings_credit",
          "line_5a_residential_clean_energy",
          "line_5b_energy_efficient_home",
          "line_6a_general_business_credit",
          "line_6b_prior_year_min_tax",
          "line_6c_adoption_credit",
          "line_6d_elderly_disabled",
          "line_6e_alt_motor_vehicle",
          "line_6f_clean_vehicle_credit",
          "line_6g_mortgage_interest_credit",
          "line_6h_dc_homebuyer_credit",
          "line_6i_qualified_ev_credit",
          "line_6j_alt_fuel_refueling_credit",
          "line_6k_tax_credit_bonds",
          "line_6l_form_8978_credit",
          "line_6m_prev_owned_clean_vehicle",
          "line_6_other_nonrefundable_credits",
          "line_7_total_nonrefundable",
          "line_8_total_nonrefundable_final",
          "line_9_net_premium_tax_credit",
          "line_10_extension_payment",
          "line_11_excess_ss_rrta",
          "line_12_federal_fuels_credit",
          "line_13_other_refundable_credits",
          "line_14_total",
          "line_15_total_refundable_final"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the schedule is for."
          },
          "taxpayer_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name(s) shown on Form 1040."
          },
          "taxpayer_ssn": {
            "type": [
              "string",
              "null"
            ],
            "description": "Social Security number, masked to the last four digits."
          },
          "line_1_foreign_tax_credit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, foreign tax credit (Form 1116).",
            "x-spreadspace-unit": "money"
          },
          "line_2_dependent_care_credit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, credit for child and dependent care expenses (Form 2441).",
            "x-spreadspace-unit": "money"
          },
          "line_3_education_credits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, education credits from Form 8863, line 19.",
            "x-spreadspace-unit": "money"
          },
          "line_4_retirement_savings_credit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, retirement savings contributions credit (Form 8880).",
            "x-spreadspace-unit": "money"
          },
          "line_5a_residential_clean_energy": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5a, residential clean energy credit (Form 5695).",
            "x-spreadspace-unit": "money"
          },
          "line_5b_energy_efficient_home": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5b, energy efficient home improvement credit (Form 5695).",
            "x-spreadspace-unit": "money"
          },
          "line_6a_general_business_credit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6a, general business credit (Form 3800).",
            "x-spreadspace-unit": "money"
          },
          "line_6b_prior_year_min_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6b, credit for prior year minimum tax (Form 8801).",
            "x-spreadspace-unit": "money"
          },
          "line_6c_adoption_credit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6c, adoption credit (Form 8839).",
            "x-spreadspace-unit": "money"
          },
          "line_6d_elderly_disabled": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6d, credit for the elderly or disabled (Schedule R).",
            "x-spreadspace-unit": "money"
          },
          "line_6e_alt_motor_vehicle": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6e, reserved for future use, formerly the alternative motor vehicle credit.",
            "x-spreadspace-unit": "money"
          },
          "line_6f_clean_vehicle_credit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6f, clean vehicle credit (Form 8936).",
            "x-spreadspace-unit": "money"
          },
          "line_6g_mortgage_interest_credit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6g, mortgage interest credit (Form 8396).",
            "x-spreadspace-unit": "money"
          },
          "line_6h_dc_homebuyer_credit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6h, District of Columbia first-time homebuyer credit (Form 8859).",
            "x-spreadspace-unit": "money"
          },
          "line_6i_qualified_ev_credit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6i, qualified electric vehicle credit (Form 8834).",
            "x-spreadspace-unit": "money"
          },
          "line_6j_alt_fuel_refueling_credit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6j, alternative fuel vehicle refueling property credit (Form 8911).",
            "x-spreadspace-unit": "money"
          },
          "line_6k_tax_credit_bonds": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6k, credit to holders of tax credit bonds (Form 8912).",
            "x-spreadspace-unit": "money"
          },
          "line_6l_form_8978_credit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6l, amount on Form 8978, line 14.",
            "x-spreadspace-unit": "money"
          },
          "line_6m_prev_owned_clean_vehicle": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6m, previously owned clean vehicle credit (Form 8936).",
            "x-spreadspace-unit": "money"
          },
          "line_6_other_nonrefundable_credits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6z, other nonrefundable credits.",
            "x-spreadspace-unit": "money"
          },
          "line_7_total_nonrefundable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, total other nonrefundable credits: lines 6a through 6z added together.",
            "x-spreadspace-unit": "money"
          },
          "line_8_total_nonrefundable_final": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, lines 1 through 5 and 7 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_9_net_premium_tax_credit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, net premium tax credit (Form 8962).",
            "x-spreadspace-unit": "money"
          },
          "line_10_extension_payment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, amount paid with request for extension to file.",
            "x-spreadspace-unit": "money"
          },
          "line_11_excess_ss_rrta": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, excess Social Security and tier 1 RRTA tax withheld.",
            "x-spreadspace-unit": "money"
          },
          "line_12_federal_fuels_credit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, credit for federal tax on fuels (Form 4136).",
            "x-spreadspace-unit": "money"
          },
          "line_13_other_refundable_credits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13z or the line 13 total, other payments or refundable credits, as the schedule prints it.",
            "x-spreadspace-unit": "money"
          },
          "line_14_total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, total other payments or refundable credits: lines 13a through 13z added together.",
            "x-spreadspace-unit": "money"
          },
          "line_15_total_refundable_final": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, lines 9 through 12 and 14 added together.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule 3 (Form 1040), additional credits and payments."
      },
      "TaxReturnReportData_ScheduleA": {
        "required": [
          "tax_year",
          "taxpayer_name",
          "taxpayer_ssn",
          "line_1_medical_dental_expenses",
          "line_2_agi",
          "line_3_agi_75pct",
          "line_4_medical_deduction",
          "line_5a_state_local_income_or_sales_tax",
          "flag_5a_sales_tax_elected",
          "line_5b_real_estate_taxes",
          "line_5c_personal_property_taxes",
          "line_5d_sum_5a_5c",
          "line_5e_smaller_sum_or_cap",
          "line_6_other_taxes",
          "line_7_sum_taxes",
          "line_8a_home_mortgage_interest_1098",
          "line_8b_home_mortgage_interest_not_1098",
          "line_8c_points_not_1098",
          "line_8d_mortgage_insurance_premiums",
          "line_8e_sum_interest",
          "line_9_investment_interest",
          "line_10_sum_interest",
          "line_11_gifts_cash_check",
          "line_12_gifts_noncash",
          "line_13_carryover",
          "line_14_sum_gifts",
          "line_15_casualty_theft",
          "line_16_other_itemized",
          "line_17_total_itemized",
          "line_18_elect_itemize"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the schedule is for."
          },
          "taxpayer_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name(s) shown on Form 1040."
          },
          "taxpayer_ssn": {
            "type": [
              "string",
              "null"
            ],
            "description": "Social Security number, masked to the last four digits."
          },
          "line_1_medical_dental_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, medical and dental expenses.",
            "x-spreadspace-unit": "money"
          },
          "line_2_agi": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, adjusted gross income from Form 1040, line 11.",
            "x-spreadspace-unit": "money"
          },
          "line_3_agi_75pct": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, 7.5 percent of line 2.",
            "x-spreadspace-unit": "money"
          },
          "line_4_medical_deduction": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, line 1 less line 3, when positive.",
            "x-spreadspace-unit": "money"
          },
          "line_5a_state_local_income_or_sales_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5a, state and local income taxes or general sales taxes.",
            "x-spreadspace-unit": "money"
          },
          "flag_5a_sales_tax_elected": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 5a, the box electing general sales taxes instead of income taxes."
          },
          "line_5b_real_estate_taxes": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5b, state and local real estate taxes.",
            "x-spreadspace-unit": "money"
          },
          "line_5c_personal_property_taxes": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5c, state and local personal property taxes.",
            "x-spreadspace-unit": "money"
          },
          "line_5d_sum_5a_5c": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5d, lines 5a through 5c added together.",
            "x-spreadspace-unit": "money"
          },
          "line_5e_smaller_sum_or_cap": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5e, the smaller of line 5d or the state and local tax cap.",
            "x-spreadspace-unit": "money"
          },
          "line_6_other_taxes": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, other taxes.",
            "x-spreadspace-unit": "money"
          },
          "line_7_sum_taxes": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, taxes you paid: lines 5e and 6 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_8a_home_mortgage_interest_1098": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8a, home mortgage interest and points reported on Form 1098.",
            "x-spreadspace-unit": "money"
          },
          "line_8b_home_mortgage_interest_not_1098": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8b, home mortgage interest not reported on Form 1098.",
            "x-spreadspace-unit": "money"
          },
          "line_8c_points_not_1098": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8c, points not reported on Form 1098.",
            "x-spreadspace-unit": "money"
          },
          "line_8d_mortgage_insurance_premiums": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8d, mortgage insurance premiums, on schedules that print the line.",
            "x-spreadspace-unit": "money"
          },
          "line_8e_sum_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8e, lines 8a through 8d added together.",
            "x-spreadspace-unit": "money"
          },
          "line_9_investment_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, investment interest (Form 4952).",
            "x-spreadspace-unit": "money"
          },
          "line_10_sum_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, interest you paid: lines 8e and 9 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_11_gifts_cash_check": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, gifts by cash or check.",
            "x-spreadspace-unit": "money"
          },
          "line_12_gifts_noncash": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, gifts other than by cash or check.",
            "x-spreadspace-unit": "money"
          },
          "line_13_carryover": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, carryover from the prior year.",
            "x-spreadspace-unit": "money"
          },
          "line_14_sum_gifts": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, gifts to charity: lines 11 through 13 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_15_casualty_theft": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, casualty and theft losses (Form 4684).",
            "x-spreadspace-unit": "money"
          },
          "line_16_other_itemized": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, other itemized deductions.",
            "x-spreadspace-unit": "money"
          },
          "line_17_total_itemized": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, total itemized deductions: lines 4, 7, 10, 14, 15 and 16 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_18_elect_itemize": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 18, the box electing to itemize although the standard deduction is larger, yes or no as marked."
          }
        },
        "additionalProperties": false,
        "description": "Schedule A (Form 1040), itemized deductions."
      },
      "TaxReturnReportData_ScheduleB": {
        "required": [
          "tax_year",
          "taxpayer_name",
          "taxpayer_ssn",
          "interest_items",
          "line_2_interest_subtotal",
          "line_3_excludable_savings_bond_interest",
          "line_4_taxable_interest_total",
          "dividend_items",
          "line_6_ordinary_dividends_total",
          "flag_7a_foreign_account",
          "flag_7a_fbar_required",
          "line_7b_foreign_country_names",
          "flag_8_foreign_trust"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the schedule is for."
          },
          "taxpayer_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name(s) shown on Form 1040."
          },
          "taxpayer_ssn": {
            "type": [
              "string",
              "null"
            ],
            "description": "Social Security number, masked to the last four digits."
          },
          "interest_items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ScheduleBInterestItem"
            },
            "description": "Part I line 1, one entry per payer."
          },
          "line_2_interest_subtotal": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, the line 1 amounts added together.",
            "x-spreadspace-unit": "money"
          },
          "line_3_excludable_savings_bond_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, excludable interest on series EE and I U.S. savings bonds (Form 8815).",
            "x-spreadspace-unit": "money"
          },
          "line_4_taxable_interest_total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, taxable interest: line 2 less line 3.",
            "x-spreadspace-unit": "money"
          },
          "dividend_items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ScheduleBDividendItem"
            },
            "description": "Part II line 5, one entry per payer."
          },
          "line_6_ordinary_dividends_total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, ordinary dividends: the line 5 amounts added together.",
            "x-spreadspace-unit": "money"
          },
          "flag_7a_foreign_account": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 7a, a financial interest in or signature authority over a foreign financial account."
          },
          "flag_7a_fbar_required": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 7a, required to file FinCEN Form 114."
          },
          "line_7b_foreign_country_names": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7b, name of the foreign country where the financial account is located, as printed."
          },
          "flag_8_foreign_trust": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 8, received a distribution from, or was the grantor of or transferor to, a foreign trust."
          }
        },
        "additionalProperties": false,
        "description": "Schedule B (Form 1040), interest and ordinary dividends."
      },
      "TaxReturnReportData_ScheduleBDividendItem": {
        "required": [
          "payer_name",
          "amount",
          "ownership_code"
        ],
        "type": "object",
        "properties": {
          "payer_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of payer, as printed."
          },
          "amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Amount of ordinary dividends.",
            "x-spreadspace-unit": "money"
          },
          "ownership_code": {
            "type": [
              "string",
              "null"
            ],
            "description": "The ownership code printed beside the row on a joint return, when any."
          }
        },
        "additionalProperties": false,
        "description": "One payer row of Schedule B, Part II line 5."
      },
      "TaxReturnReportData_ScheduleBInterestItem": {
        "required": [
          "payer_name",
          "amount",
          "ownership_code"
        ],
        "type": "object",
        "properties": {
          "payer_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of payer, as printed."
          },
          "amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Amount of interest.",
            "x-spreadspace-unit": "money"
          },
          "ownership_code": {
            "type": [
              "string",
              "null"
            ],
            "description": "The ownership code printed beside the row on a joint return, when any."
          }
        },
        "additionalProperties": false,
        "description": "One payer row of Schedule B, Part I line 1."
      },
      "TaxReturnReportData_ScheduleC": {
        "required": [
          "tax_year",
          "business_info",
          "income",
          "expenses",
          "cogs",
          "vehicle",
          "part_v_other_expenses",
          "line_48_total_other_expenses"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the schedule is for."
          },
          "business_info": {
            "description": "The heading: proprietor, business and the questions on lines A through J.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleCBusinessInfo"
          },
          "income": {
            "description": "Part I, income, lines 1 through 7.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleCIncome"
          },
          "expenses": {
            "description": "Part II, expenses, lines 8 through 32b.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleCExpenses"
          },
          "cogs": {
            "description": "Part III, cost of goods sold, lines 33 through 42.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleCCogs"
          },
          "vehicle": {
            "description": "Part IV, information on your vehicle, lines 43 through 47b.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleCVehicle"
          },
          "part_v_other_expenses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ScheduleCPartVItem"
            },
            "description": "Part V, other expenses, one entry per line listed."
          },
          "line_48_total_other_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 48, total other expenses: the Part V lines added together.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule C (Form 1040), profit or loss from business, for one business."
      },
      "TaxReturnReportData_ScheduleCBusinessInfo": {
        "required": [
          "proprietor_name",
          "ssn",
          "line_a_principal_business",
          "line_b_business_code",
          "line_c_business_name",
          "line_d_ein",
          "line_e_address",
          "line_f_accounting_method",
          "flag_g_material_participation",
          "flag_h_started_during_year",
          "flag_i_1099_required",
          "flag_j_1099_filed"
        ],
        "type": "object",
        "properties": {
          "proprietor_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of proprietor."
          },
          "ssn": {
            "type": [
              "string",
              "null"
            ],
            "description": "Social Security number, masked to the last four digits."
          },
          "line_a_principal_business": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line A, principal business or profession."
          },
          "line_b_business_code": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line B, business code."
          },
          "line_c_business_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line C, business name."
          },
          "line_d_ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line D, employer identification number, masked to the last four digits."
          },
          "line_e_address": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line E, business address."
          },
          "line_f_accounting_method": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line F, accounting method: cash, accrual or other."
          },
          "flag_g_material_participation": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line G, materially participated in the operation of the business."
          },
          "flag_h_started_during_year": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line H, started or acquired the business during the year."
          },
          "flag_i_1099_required": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line I, made payments that would require Forms 1099."
          },
          "flag_j_1099_filed": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line J, filed or will file the required Forms 1099."
          }
        },
        "additionalProperties": false,
        "description": "The heading of Schedule C: proprietor, business and the questions on lines A through J."
      },
      "TaxReturnReportData_ScheduleCCogs": {
        "required": [
          "line_33_valuation_method",
          "line_34_valuation_change",
          "line_35_inventory_beginning",
          "line_36_purchases",
          "line_37_cost_of_labor",
          "line_38_materials_supplies",
          "line_39_other_costs",
          "line_40_sum",
          "line_41_inventory_ending",
          "line_42_cogs"
        ],
        "type": "object",
        "properties": {
          "line_33_valuation_method": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line 33, method used to value closing inventory, as marked: cost, lower of cost or market, or other."
          },
          "line_34_valuation_change": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 34, a change in determining quantities, costs or valuations between opening and closing inventory, yes or no as marked."
          },
          "line_35_inventory_beginning": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 35, inventory at beginning of year.",
            "x-spreadspace-unit": "money"
          },
          "line_36_purchases": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 36, purchases less cost of items withdrawn for personal use.",
            "x-spreadspace-unit": "money"
          },
          "line_37_cost_of_labor": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 37, cost of labor.",
            "x-spreadspace-unit": "money"
          },
          "line_38_materials_supplies": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 38, materials and supplies.",
            "x-spreadspace-unit": "money"
          },
          "line_39_other_costs": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 39, other costs.",
            "x-spreadspace-unit": "money"
          },
          "line_40_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 40, lines 35 through 39 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_41_inventory_ending": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 41, inventory at end of year.",
            "x-spreadspace-unit": "money"
          },
          "line_42_cogs": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 42, cost of goods sold: line 40 less line 41.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule C, Part III, cost of goods sold, lines 33 through 42."
      },
      "TaxReturnReportData_ScheduleCExpenses": {
        "required": [
          "line_8_advertising",
          "line_9_car_truck",
          "line_10_commissions_fees",
          "line_11_contract_labor",
          "line_12_depletion",
          "line_13_depreciation",
          "line_14_employee_benefits",
          "line_15_insurance",
          "line_16a_mortgage_interest",
          "line_16b_other_interest",
          "line_17_legal_professional",
          "line_18_office_expense",
          "line_19_pension",
          "line_20a_rent_equipment",
          "line_20b_rent_other",
          "line_21_repairs",
          "line_22_supplies",
          "line_23_taxes_licenses",
          "line_24a_travel",
          "line_24b_meals",
          "line_25_utilities",
          "line_26_wages",
          "line_27a_other_expenses",
          "line_27b_energy_efficient_buildings",
          "line_28_total_expenses",
          "line_29_tentative_profit",
          "line_30_home_office_expense",
          "line_31_net_profit_loss",
          "line_32a_all_at_risk",
          "line_32b_some_not_at_risk"
        ],
        "type": "object",
        "properties": {
          "line_8_advertising": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, advertising.",
            "x-spreadspace-unit": "money"
          },
          "line_9_car_truck": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, car and truck expenses.",
            "x-spreadspace-unit": "money"
          },
          "line_10_commissions_fees": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, commissions and fees.",
            "x-spreadspace-unit": "money"
          },
          "line_11_contract_labor": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, contract labor.",
            "x-spreadspace-unit": "money"
          },
          "line_12_depletion": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, depletion.",
            "x-spreadspace-unit": "money"
          },
          "line_13_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, depreciation and section 179 expense deduction.",
            "x-spreadspace-unit": "money"
          },
          "line_14_employee_benefits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, employee benefit programs, other than on line 19.",
            "x-spreadspace-unit": "money"
          },
          "line_15_insurance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, insurance, other than health.",
            "x-spreadspace-unit": "money"
          },
          "line_16a_mortgage_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16a, interest, mortgage paid to banks and similar.",
            "x-spreadspace-unit": "money"
          },
          "line_16b_other_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16b, interest, other.",
            "x-spreadspace-unit": "money"
          },
          "line_17_legal_professional": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, legal and professional services.",
            "x-spreadspace-unit": "money"
          },
          "line_18_office_expense": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18, office expense.",
            "x-spreadspace-unit": "money"
          },
          "line_19_pension": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19, pension and profit-sharing plans.",
            "x-spreadspace-unit": "money"
          },
          "line_20a_rent_equipment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 20a, rent or lease of vehicles, machinery and equipment.",
            "x-spreadspace-unit": "money"
          },
          "line_20b_rent_other": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 20b, rent or lease of other business property.",
            "x-spreadspace-unit": "money"
          },
          "line_21_repairs": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 21, repairs and maintenance.",
            "x-spreadspace-unit": "money"
          },
          "line_22_supplies": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 22, supplies, not included in Part III.",
            "x-spreadspace-unit": "money"
          },
          "line_23_taxes_licenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 23, taxes and licenses.",
            "x-spreadspace-unit": "money"
          },
          "line_24a_travel": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 24a, travel.",
            "x-spreadspace-unit": "money"
          },
          "line_24b_meals": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 24b, deductible meals.",
            "x-spreadspace-unit": "money"
          },
          "line_25_utilities": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 25, utilities.",
            "x-spreadspace-unit": "money"
          },
          "line_26_wages": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 26, wages, less employment credits.",
            "x-spreadspace-unit": "money"
          },
          "line_27a_other_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 27a, other expenses, from line 48.",
            "x-spreadspace-unit": "money"
          },
          "line_27b_energy_efficient_buildings": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 27b, energy efficient commercial buildings deduction (Form 7205).",
            "x-spreadspace-unit": "money"
          },
          "line_28_total_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 28, total expenses before expenses for business use of home: lines 8 through 27b added together.",
            "x-spreadspace-unit": "money"
          },
          "line_29_tentative_profit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 29, tentative profit or (loss): line 7 less line 28.",
            "x-spreadspace-unit": "money"
          },
          "line_30_home_office_expense": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 30, expenses for business use of your home.",
            "x-spreadspace-unit": "money"
          },
          "line_31_net_profit_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 31, net profit or (loss): line 29 less line 30.",
            "x-spreadspace-unit": "money"
          },
          "line_32a_all_at_risk": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 32a, all investment is at risk, yes or no as marked."
          },
          "line_32b_some_not_at_risk": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 32b, some investment is not at risk, yes or no as marked."
          }
        },
        "additionalProperties": false,
        "description": "Schedule C, Part II, expenses, lines 8 through 32b."
      },
      "TaxReturnReportData_ScheduleCIncome": {
        "required": [
          "line_1_statutory_employee",
          "line_1_gross_receipts",
          "line_2_returns_allowances",
          "line_3_net",
          "line_4_cogs",
          "line_5_gross_profit",
          "line_6_other_income",
          "line_7_gross_income"
        ],
        "type": "object",
        "properties": {
          "line_1_statutory_employee": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 1, the statutory employee box, yes or no as marked."
          },
          "line_1_gross_receipts": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, gross receipts or sales.",
            "x-spreadspace-unit": "money"
          },
          "line_2_returns_allowances": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, returns and allowances.",
            "x-spreadspace-unit": "money"
          },
          "line_3_net": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, line 1 less line 2.",
            "x-spreadspace-unit": "money"
          },
          "line_4_cogs": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, cost of goods sold (line 42).",
            "x-spreadspace-unit": "money"
          },
          "line_5_gross_profit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, gross profit: line 3 less line 4.",
            "x-spreadspace-unit": "money"
          },
          "line_6_other_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, other income, including federal and state gasoline or fuel tax credit or refund.",
            "x-spreadspace-unit": "money"
          },
          "line_7_gross_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, gross income: lines 5 and 6 added together.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule C, Part I, income, lines 1 through 7."
      },
      "TaxReturnReportData_ScheduleCPartVItem": {
        "required": [
          "description",
          "amount"
        ],
        "type": "object",
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "The expense as described."
          },
          "amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The amount.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One line of Schedule C, Part V, other expenses."
      },
      "TaxReturnReportData_ScheduleCVehicle": {
        "required": [
          "line_43_date_placed_in_service",
          "line_44a_business_miles",
          "line_44b_commuting_miles",
          "line_44c_other_miles",
          "line_45_personal_use",
          "line_46_another_vehicle",
          "line_47a_evidence",
          "line_47b_evidence_written"
        ],
        "type": "object",
        "properties": {
          "line_43_date_placed_in_service": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line 43, date the vehicle was placed in service for business purposes, as printed.",
            "x-spreadspace-format": "printed"
          },
          "line_44a_business_miles": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 44a, business miles driven, as printed."
          },
          "line_44b_commuting_miles": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 44b, commuting miles driven, as printed."
          },
          "line_44c_other_miles": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 44c, other miles driven, as printed."
          },
          "line_45_personal_use": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 45, the vehicle was available for personal use during off-duty hours, yes or no as marked."
          },
          "line_46_another_vehicle": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 46, another vehicle was available for personal use, yes or no as marked."
          },
          "line_47a_evidence": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 47a, evidence to support the deduction exists, yes or no as marked."
          },
          "line_47b_evidence_written": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 47b, the evidence is written, yes or no as marked."
          }
        },
        "additionalProperties": false,
        "description": "Schedule C, Part IV, information on your vehicle, lines 43 through 47b."
      },
      "TaxReturnReportData_ScheduleD": {
        "required": [
          "tax_year",
          "taxpayer_name",
          "taxpayer_ssn",
          "disposed_qof",
          "short_term",
          "long_term",
          "summary"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the schedule is for."
          },
          "taxpayer_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name(s) shown on Form 1040."
          },
          "taxpayer_ssn": {
            "type": [
              "string",
              "null"
            ],
            "description": "Social Security number, masked to the last four digits."
          },
          "disposed_qof": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "The box for disposing of an investment in a qualified opportunity fund during the year."
          },
          "short_term": {
            "description": "Part I, short-term capital gains and losses, lines 1a through 7.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleDShortTerm"
          },
          "long_term": {
            "description": "Part II, long-term capital gains and losses, lines 8a through 15.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleDLongTerm"
          },
          "summary": {
            "description": "Part III, summary, lines 16 through 22.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleDSummary"
          }
        },
        "additionalProperties": false,
        "description": "Schedule D (Form 1040), capital gains and losses."
      },
      "TaxReturnReportData_ScheduleDLongTerm": {
        "required": [
          "line_8a_proceeds",
          "line_8a_cost",
          "line_8a_adjustment",
          "line_8a_gain_loss",
          "line_8b_proceeds",
          "line_8b_cost",
          "line_8b_adjustment",
          "line_8b_gain_loss",
          "line_9_box_e_proceeds",
          "line_9_box_e_cost",
          "line_9_box_e_adjustment",
          "line_9_box_e_gain_loss",
          "line_10_box_f_proceeds",
          "line_10_box_f_cost",
          "line_10_box_f_adjustment",
          "line_10_box_f_gain_loss",
          "line_11_gain_4797_2439_6252",
          "line_12_long_term_from_partnerships",
          "line_13_capital_gain_distributions",
          "line_14_long_term_loss_carryover",
          "line_15_net_long_term"
        ],
        "type": "object",
        "properties": {
          "line_8a_proceeds": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8a, long-term transactions reported on Form 1099-B with basis reported and no adjustments, column (d) proceeds.",
            "x-spreadspace-unit": "money"
          },
          "line_8a_cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8a, column (e) cost or other basis.",
            "x-spreadspace-unit": "money"
          },
          "line_8a_adjustment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8a, column (g) adjustments to gain or loss.",
            "x-spreadspace-unit": "money"
          },
          "line_8a_gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8a, column (h) gain or (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_8b_proceeds": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8b, long-term transactions from Form 8949 with box D checked, column (d) proceeds.",
            "x-spreadspace-unit": "money"
          },
          "line_8b_cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8b, column (e) cost or other basis.",
            "x-spreadspace-unit": "money"
          },
          "line_8b_adjustment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8b, column (g) adjustments to gain or loss.",
            "x-spreadspace-unit": "money"
          },
          "line_8b_gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8b, column (h) gain or (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_9_box_e_proceeds": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, long-term transactions from Form 8949 with box E checked, column (d) proceeds.",
            "x-spreadspace-unit": "money"
          },
          "line_9_box_e_cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, column (e) cost or other basis.",
            "x-spreadspace-unit": "money"
          },
          "line_9_box_e_adjustment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, column (g) adjustments to gain or loss.",
            "x-spreadspace-unit": "money"
          },
          "line_9_box_e_gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, column (h) gain or (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_10_box_f_proceeds": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, long-term transactions from Form 8949 with box F checked, column (d) proceeds.",
            "x-spreadspace-unit": "money"
          },
          "line_10_box_f_cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, column (e) cost or other basis.",
            "x-spreadspace-unit": "money"
          },
          "line_10_box_f_adjustment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, column (g) adjustments to gain or loss.",
            "x-spreadspace-unit": "money"
          },
          "line_10_box_f_gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, column (h) gain or (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_11_gain_4797_2439_6252": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, gain from Form 4797, Part I; long-term gain from Forms 2439 and 6252; and long-term gain or (loss) from Forms 4684, 6781 and 8824.",
            "x-spreadspace-unit": "money"
          },
          "line_12_long_term_from_partnerships": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, net long-term gain or (loss) from partnerships, S corporations, estates and trusts from Schedule(s) K-1.",
            "x-spreadspace-unit": "money"
          },
          "line_13_capital_gain_distributions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, capital gain distributions.",
            "x-spreadspace-unit": "money"
          },
          "line_14_long_term_loss_carryover": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, long-term capital loss carryover.",
            "x-spreadspace-unit": "money"
          },
          "line_15_net_long_term": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, net long-term capital gain or (loss): lines 8a through 14 combined in column (h).",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule D (Form 1040), Part II, long-term capital gains and losses, lines 8a through 15, with the four columns of each row."
      },
      "TaxReturnReportData_ScheduleDShortTerm": {
        "required": [
          "line_1a_proceeds",
          "line_1a_cost",
          "line_1a_adjustment",
          "line_1a_gain_loss",
          "line_1b_proceeds",
          "line_1b_cost",
          "line_1b_adjustment",
          "line_1b_gain_loss",
          "line_2_box_b_proceeds",
          "line_2_box_b_cost",
          "line_2_box_b_adjustment",
          "line_2_box_b_gain_loss",
          "line_3_box_c_proceeds",
          "line_3_box_c_cost",
          "line_3_box_c_adjustment",
          "line_3_box_c_gain_loss",
          "line_4_short_term_from_6252_etc",
          "line_5_short_term_from_partnerships",
          "line_6_short_term_loss_carryover",
          "line_7_net_short_term"
        ],
        "type": "object",
        "properties": {
          "line_1a_proceeds": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1a, short-term transactions reported on Form 1099-B with basis reported and no adjustments, column (d) proceeds.",
            "x-spreadspace-unit": "money"
          },
          "line_1a_cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1a, column (e) cost or other basis.",
            "x-spreadspace-unit": "money"
          },
          "line_1a_adjustment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1a, column (g) adjustments to gain or loss.",
            "x-spreadspace-unit": "money"
          },
          "line_1a_gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1a, column (h) gain or (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_1b_proceeds": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1b, short-term transactions from Form 8949 with box A checked, column (d) proceeds.",
            "x-spreadspace-unit": "money"
          },
          "line_1b_cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1b, column (e) cost or other basis.",
            "x-spreadspace-unit": "money"
          },
          "line_1b_adjustment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1b, column (g) adjustments to gain or loss.",
            "x-spreadspace-unit": "money"
          },
          "line_1b_gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1b, column (h) gain or (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_2_box_b_proceeds": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, short-term transactions from Form 8949 with box B checked, column (d) proceeds.",
            "x-spreadspace-unit": "money"
          },
          "line_2_box_b_cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, column (e) cost or other basis.",
            "x-spreadspace-unit": "money"
          },
          "line_2_box_b_adjustment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, column (g) adjustments to gain or loss.",
            "x-spreadspace-unit": "money"
          },
          "line_2_box_b_gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, column (h) gain or (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_3_box_c_proceeds": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, short-term transactions from Form 8949 with box C checked, column (d) proceeds.",
            "x-spreadspace-unit": "money"
          },
          "line_3_box_c_cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, column (e) cost or other basis.",
            "x-spreadspace-unit": "money"
          },
          "line_3_box_c_adjustment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, column (g) adjustments to gain or loss.",
            "x-spreadspace-unit": "money"
          },
          "line_3_box_c_gain_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, column (h) gain or (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_4_short_term_from_6252_etc": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, short-term gain from Form 6252 and short-term gain or (loss) from Forms 4684, 6781 and 8824.",
            "x-spreadspace-unit": "money"
          },
          "line_5_short_term_from_partnerships": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, net short-term gain or (loss) from partnerships, S corporations, estates and trusts from Schedule(s) K-1.",
            "x-spreadspace-unit": "money"
          },
          "line_6_short_term_loss_carryover": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, short-term capital loss carryover.",
            "x-spreadspace-unit": "money"
          },
          "line_7_net_short_term": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, net short-term capital gain or (loss): lines 1a through 6 combined in column (h).",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule D (Form 1040), Part I, short-term capital gains and losses, lines 1a through 7, with the four columns of each row."
      },
      "TaxReturnReportData_ScheduleDSummary": {
        "required": [
          "line_16_sum",
          "line_17_both_gains",
          "line_18_28_rate_gain",
          "line_19_unrecaptured_1250",
          "line_20_both_zero",
          "line_21_loss_smaller_of",
          "line_22_qualified_dividends"
        ],
        "type": "object",
        "properties": {
          "line_16_sum": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, lines 7 and 15 combined.",
            "x-spreadspace-unit": "money"
          },
          "line_17_both_gains": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 17, lines 15 and 16 are both gains, yes or no as marked."
          },
          "line_18_28_rate_gain": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18, 28 percent rate gain from the worksheet.",
            "x-spreadspace-unit": "money"
          },
          "line_19_unrecaptured_1250": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19, unrecaptured section 1250 gain from the worksheet.",
            "x-spreadspace-unit": "money"
          },
          "line_20_both_zero": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 20, lines 18 and 19 are both zero or blank, yes or no as marked."
          },
          "line_21_loss_smaller_of": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 21, the loss on line 16 or the allowable loss limit, whichever is smaller, entered as a negative amount.",
            "x-spreadspace-unit": "money"
          },
          "line_22_qualified_dividends": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 22, qualified dividends on Form 1040, line 3a, yes or no as marked."
          }
        },
        "additionalProperties": false,
        "description": "Schedule D (Form 1040), Part III, summary, lines 16 through 22."
      },
      "TaxReturnReportData_ScheduleE": {
        "required": [
          "tax_year",
          "taxpayer_name",
          "taxpayer_ssn",
          "properties",
          "line_23a_total_rents",
          "line_23b_total_royalties",
          "line_23c_total_mortgage_interest",
          "line_23d_total_depreciation",
          "line_23e_total_expenses",
          "line_24_income_total",
          "line_25_losses",
          "line_26_total_rental_royalty",
          "partnerships_scorps",
          "line_30_sum_passive_loss",
          "line_31_sum_passive_income",
          "line_32_total_partnership_scorp",
          "estates_trusts",
          "line_35_sum_deduction_loss",
          "line_36_sum_income",
          "line_37_total_estate_trust",
          "remics",
          "line_38_remic_total",
          "line_40_net_farm_rental",
          "line_41_total_income_loss",
          "line_42_recon_1099s",
          "line_43_recon_real_estate_pro"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the schedule is for."
          },
          "taxpayer_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name(s) shown on Form 1040."
          },
          "taxpayer_ssn": {
            "type": [
              "string",
              "null"
            ],
            "description": "Social Security number, masked to the last four digits."
          },
          "properties": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ScheduleEProperty"
            },
            "description": "Part I, one entry per rental or royalty property (columns A through C on each page)."
          },
          "line_23a_total_rents": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 23a, total of all amounts reported on line 3 for all rental properties.",
            "x-spreadspace-unit": "money"
          },
          "line_23b_total_royalties": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 23b, total of all amounts reported on line 4 for all royalty properties.",
            "x-spreadspace-unit": "money"
          },
          "line_23c_total_mortgage_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 23c, total of all amounts reported on line 12 for all properties.",
            "x-spreadspace-unit": "money"
          },
          "line_23d_total_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 23d, total of all amounts reported on line 18 for all properties.",
            "x-spreadspace-unit": "money"
          },
          "line_23e_total_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 23e, total of all amounts reported on line 20 for all properties.",
            "x-spreadspace-unit": "money"
          },
          "line_24_income_total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 24, income: the positive amounts on line 21 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_25_losses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 25, losses: royalty losses from line 21 and rental real estate losses from line 22 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_26_total_rental_royalty": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 26, total rental real estate and royalty income or (loss): lines 24 and 25 combined.",
            "x-spreadspace-unit": "money"
          },
          "partnerships_scorps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ScheduleEPassThrough"
            },
            "description": "Part II line 28, one entry per partnership or S corporation."
          },
          "line_30_sum_passive_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 30, the line 29a amounts (columns (h) and (k)) added together.",
            "x-spreadspace-unit": "money"
          },
          "line_31_sum_passive_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 31, the line 29b amounts (columns (g), (i) and (j)) added together.",
            "x-spreadspace-unit": "money"
          },
          "line_32_total_partnership_scorp": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 32, total partnership and S corporation income or (loss): lines 30 and 31 combined.",
            "x-spreadspace-unit": "money"
          },
          "estates_trusts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ScheduleEEstateTrust"
            },
            "description": "Part III line 33, one entry per estate or trust."
          },
          "line_35_sum_deduction_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 35, the line 34a amounts (columns (d) and (f)) added together.",
            "x-spreadspace-unit": "money"
          },
          "line_36_sum_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 36, the line 34b amounts (columns (c) and (e)) added together.",
            "x-spreadspace-unit": "money"
          },
          "line_37_total_estate_trust": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 37, total estate and trust income or (loss): lines 35 and 36 combined.",
            "x-spreadspace-unit": "money"
          },
          "remics": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ScheduleERemic"
            },
            "description": "Part IV line 38, one entry per real estate mortgage investment conduit."
          },
          "line_38_remic_total": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 38, the REMIC column (e) amounts added together.",
            "x-spreadspace-unit": "money"
          },
          "line_40_net_farm_rental": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 40, net farm rental income or (loss) from Form 4835.",
            "x-spreadspace-unit": "money"
          },
          "line_41_total_income_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 41, total income or (loss): lines 26, 32, 37, 39 and 40 combined.",
            "x-spreadspace-unit": "money"
          },
          "line_42_recon_1099s": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 42, reconciliation of farming and fishing income.",
            "x-spreadspace-unit": "money"
          },
          "line_43_recon_real_estate_pro": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 43, reconciliation for real estate professionals.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule E (Form 1040), supplemental income and loss, Parts I through V."
      },
      "TaxReturnReportData_ScheduleEEstateTrust": {
        "required": [
          "name",
          "ein",
          "c_passive_deduction_loss",
          "d_passive_income",
          "e_deduction_loss",
          "f_other_income"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (a), name."
          },
          "ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (b), employer identification number, masked to the last four digits."
          },
          "c_passive_deduction_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (c), passive deduction or loss allowed.",
            "x-spreadspace-unit": "money"
          },
          "d_passive_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (d), passive income.",
            "x-spreadspace-unit": "money"
          },
          "e_deduction_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (e), deduction or loss.",
            "x-spreadspace-unit": "money"
          },
          "f_other_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (f), other income.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One row of Schedule E, Part III line 33: an estate or trust."
      },
      "TaxReturnReportData_ScheduleEPassThrough": {
        "required": [
          "name",
          "kind",
          "foreign",
          "ein",
          "basis_required",
          "not_at_risk",
          "passive_loss",
          "passive_income",
          "nonpassive_loss",
          "section_179",
          "nonpassive_income"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (a), name."
          },
          "kind": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (b), P for partnership or S for S corporation, as printed."
          },
          "foreign": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Column (c), foreign partnership box."
          },
          "ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (d), employer identification number, masked to the last four digits."
          },
          "basis_required": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Column (e), basis computation required box."
          },
          "not_at_risk": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Column (f), some investment not at risk box."
          },
          "passive_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (g), passive loss allowed.",
            "x-spreadspace-unit": "money"
          },
          "passive_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (h), passive income.",
            "x-spreadspace-unit": "money"
          },
          "nonpassive_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (i), nonpassive loss allowed.",
            "x-spreadspace-unit": "money"
          },
          "section_179": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (j), section 179 expense deduction.",
            "x-spreadspace-unit": "money"
          },
          "nonpassive_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (k), nonpassive income.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One row of Schedule E, Part II line 28: a partnership or S corporation."
      },
      "TaxReturnReportData_ScheduleEProperty": {
        "required": [
          "line_1a_physical_address",
          "line_1b_type",
          "line_2_fair_rental_days",
          "line_2_personal_use_days",
          "line_2_qjv",
          "line_3_rents",
          "line_4_royalties",
          "line_5_advertising",
          "line_6_auto_travel",
          "line_7_cleaning_maintenance",
          "line_8_commissions",
          "line_9_insurance",
          "line_10_legal_professional",
          "line_11_management_fees",
          "line_12_mortgage_interest_banks",
          "line_13_other_interest",
          "line_14_repairs",
          "line_15_supplies",
          "line_16_taxes",
          "line_17_utilities",
          "line_18_depreciation_depletion",
          "line_19_other_expenses",
          "line_20_total_expenses",
          "line_21_income_loss",
          "line_22_deductible_loss_after_limit"
        ],
        "type": "object",
        "properties": {
          "line_1a_physical_address": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1a, physical address of the property, as printed."
          },
          "line_1b_type": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1b, type of property code (1 through 8), as printed."
          },
          "line_2_fair_rental_days": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Line 2, fair rental days."
          },
          "line_2_personal_use_days": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Line 2, personal use days."
          },
          "line_2_qjv": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 2, the qualified joint venture box, yes or no as marked."
          },
          "line_3_rents": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, rents received.",
            "x-spreadspace-unit": "money"
          },
          "line_4_royalties": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, royalties received.",
            "x-spreadspace-unit": "money"
          },
          "line_5_advertising": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, advertising.",
            "x-spreadspace-unit": "money"
          },
          "line_6_auto_travel": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, auto and travel.",
            "x-spreadspace-unit": "money"
          },
          "line_7_cleaning_maintenance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, cleaning and maintenance.",
            "x-spreadspace-unit": "money"
          },
          "line_8_commissions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, commissions.",
            "x-spreadspace-unit": "money"
          },
          "line_9_insurance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, insurance.",
            "x-spreadspace-unit": "money"
          },
          "line_10_legal_professional": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, legal and other professional fees.",
            "x-spreadspace-unit": "money"
          },
          "line_11_management_fees": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, management fees.",
            "x-spreadspace-unit": "money"
          },
          "line_12_mortgage_interest_banks": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, mortgage interest paid to banks and similar.",
            "x-spreadspace-unit": "money"
          },
          "line_13_other_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, other interest.",
            "x-spreadspace-unit": "money"
          },
          "line_14_repairs": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, repairs.",
            "x-spreadspace-unit": "money"
          },
          "line_15_supplies": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, supplies.",
            "x-spreadspace-unit": "money"
          },
          "line_16_taxes": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, taxes.",
            "x-spreadspace-unit": "money"
          },
          "line_17_utilities": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, utilities.",
            "x-spreadspace-unit": "money"
          },
          "line_18_depreciation_depletion": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18, depreciation expense or depletion.",
            "x-spreadspace-unit": "money"
          },
          "line_19_other_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19, other expenses.",
            "x-spreadspace-unit": "money"
          },
          "line_20_total_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 20, total expenses: lines 5 through 19 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_21_income_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 21, income or (loss): line 3 or 4 less line 20.",
            "x-spreadspace-unit": "money"
          },
          "line_22_deductible_loss_after_limit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 22, deductible rental real estate loss after limitation (Form 8582).",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One property column of Schedule E, Part I, lines 1a through 22."
      },
      "TaxReturnReportData_ScheduleERemic": {
        "required": [
          "name",
          "ein",
          "c_excess_inclusion",
          "d_taxable_income_loss",
          "e_income"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (a), name."
          },
          "ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (b), employer identification number, masked to the last four digits."
          },
          "c_excess_inclusion": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (c), excess inclusion.",
            "x-spreadspace-unit": "money"
          },
          "d_taxable_income_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (d), taxable income (net loss).",
            "x-spreadspace-unit": "money"
          },
          "e_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (e), income.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One row of Schedule E, Part IV line 38: a real estate mortgage investment conduit."
      },
      "TaxReturnReportData_ScheduleF": {
        "required": [
          "tax_year",
          "proprietor_name",
          "ssn",
          "principal_product",
          "business_code",
          "accounting_method",
          "material_participation",
          "ein",
          "income",
          "expenses",
          "other_expenses",
          "accrual_income"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the schedule is for."
          },
          "proprietor_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of proprietor."
          },
          "ssn": {
            "type": [
              "string",
              "null"
            ],
            "description": "Social Security number, masked to the last four digits."
          },
          "principal_product": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line A, principal crop or activity."
          },
          "business_code": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line B, principal agricultural activity code."
          },
          "accounting_method": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line C, accounting method: cash or accrual."
          },
          "material_participation": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line E, materially participated in the operation of the business."
          },
          "ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "Line D, employer identification number, masked to the last four digits."
          },
          "income": {
            "description": "Part I, farm income, cash method, lines 1a through 9.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleFIncomeCash"
          },
          "expenses": {
            "description": "Part II, farm expenses, lines 10 through 36.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleFExpenses"
          },
          "other_expenses": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ScheduleFOtherExpenseItem"
            },
            "description": "Line 32 write-in rows, 32a through 32f, each a description and an amount."
          },
          "accrual_income": {
            "description": "Part III, farm income, accrual method, lines 37 through 50.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleFIncomeAccrual"
          }
        },
        "additionalProperties": false,
        "description": "Schedule F (Form 1040), profit or loss from farming."
      },
      "TaxReturnReportData_ScheduleFExpenses": {
        "required": [
          "line_10_car_truck",
          "line_11_chemicals",
          "line_12_conservation",
          "line_13_custom_hire",
          "line_14_depreciation",
          "line_15_employee_benefits",
          "line_16_feed",
          "line_17_fertilizer_lime",
          "line_18_freight_trucking",
          "line_19_gasoline_fuel",
          "line_20_insurance",
          "line_21a_mortgage_interest",
          "line_21b_other_interest",
          "line_22_labor_hired",
          "line_23_pension",
          "line_24a_rent_equipment",
          "line_24b_rent_other",
          "line_25_repairs_maintenance",
          "line_26_seeds_plants",
          "line_27_storage_warehousing",
          "line_28_supplies",
          "line_29_taxes",
          "line_30_utilities",
          "line_31_veterinary",
          "line_32_other_expenses",
          "line_33_total_expenses",
          "line_34_net_farm_profit_loss",
          "line_35_all_at_risk",
          "line_36_some_not_at_risk"
        ],
        "type": "object",
        "properties": {
          "line_10_car_truck": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, car and truck expenses.",
            "x-spreadspace-unit": "money"
          },
          "line_11_chemicals": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, chemicals.",
            "x-spreadspace-unit": "money"
          },
          "line_12_conservation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, conservation expenses.",
            "x-spreadspace-unit": "money"
          },
          "line_13_custom_hire": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, custom hire (machine work).",
            "x-spreadspace-unit": "money"
          },
          "line_14_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, depreciation and section 179 expense.",
            "x-spreadspace-unit": "money"
          },
          "line_15_employee_benefits": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, employee benefit programs other than on line 23.",
            "x-spreadspace-unit": "money"
          },
          "line_16_feed": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, feed.",
            "x-spreadspace-unit": "money"
          },
          "line_17_fertilizer_lime": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, fertilizers and lime.",
            "x-spreadspace-unit": "money"
          },
          "line_18_freight_trucking": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 18, freight and trucking.",
            "x-spreadspace-unit": "money"
          },
          "line_19_gasoline_fuel": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 19, gasoline, fuel and oil.",
            "x-spreadspace-unit": "money"
          },
          "line_20_insurance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 20, insurance, other than health.",
            "x-spreadspace-unit": "money"
          },
          "line_21a_mortgage_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 21a, interest, mortgage paid to banks and similar.",
            "x-spreadspace-unit": "money"
          },
          "line_21b_other_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 21b, interest, other.",
            "x-spreadspace-unit": "money"
          },
          "line_22_labor_hired": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 22, labor hired, less employment credits.",
            "x-spreadspace-unit": "money"
          },
          "line_23_pension": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 23, pension and profit-sharing plans.",
            "x-spreadspace-unit": "money"
          },
          "line_24a_rent_equipment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 24a, rent or lease of vehicles, machinery and equipment.",
            "x-spreadspace-unit": "money"
          },
          "line_24b_rent_other": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 24b, rent or lease of other property, including land and animals.",
            "x-spreadspace-unit": "money"
          },
          "line_25_repairs_maintenance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 25, repairs and maintenance.",
            "x-spreadspace-unit": "money"
          },
          "line_26_seeds_plants": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 26, seeds and plants.",
            "x-spreadspace-unit": "money"
          },
          "line_27_storage_warehousing": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 27, storage and warehousing.",
            "x-spreadspace-unit": "money"
          },
          "line_28_supplies": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 28, supplies.",
            "x-spreadspace-unit": "money"
          },
          "line_29_taxes": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 29, taxes.",
            "x-spreadspace-unit": "money"
          },
          "line_30_utilities": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 30, utilities.",
            "x-spreadspace-unit": "money"
          },
          "line_31_veterinary": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 31, veterinary, breeding and medicine.",
            "x-spreadspace-unit": "money"
          },
          "line_32_other_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 32, other expenses, total of lines 32a through 32f.",
            "x-spreadspace-unit": "money"
          },
          "line_33_total_expenses": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 33, total expenses: lines 10 through 32f added together.",
            "x-spreadspace-unit": "money"
          },
          "line_34_net_farm_profit_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 34, net farm profit or (loss): line 9 less line 33.",
            "x-spreadspace-unit": "money"
          },
          "line_35_all_at_risk": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 36a on current forms, all investment is at risk, yes or no as marked."
          },
          "line_36_some_not_at_risk": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 36b on current forms, some investment is not at risk, yes or no as marked."
          }
        },
        "additionalProperties": false,
        "description": "Schedule F, Part II, farm expenses, lines 10 through 36."
      },
      "TaxReturnReportData_ScheduleFIncomeAccrual": {
        "required": [
          "line_37_sales_products",
          "line_38a_coop_distributions",
          "line_38b_coop_taxable",
          "line_39a_agricultural_payments",
          "line_39b_agricultural_taxable",
          "line_40a_ccc_loans_reported",
          "line_40b_ccc_loans_forfeited",
          "line_40c_ccc_taxable",
          "line_41_crop_insurance",
          "line_42_custom_hire",
          "line_43_other_income",
          "line_44_total_right_column",
          "line_45_inventory_beginning",
          "line_46_cost_purchased",
          "line_47_add_45_46",
          "line_48_inventory_ending",
          "line_49_cost_of_goods_sold",
          "line_50_gross_income"
        ],
        "type": "object",
        "properties": {
          "line_37_sales_products": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 37, sales of livestock, produce, grains and other products.",
            "x-spreadspace-unit": "money"
          },
          "line_38a_coop_distributions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 38a, cooperative distributions (Form(s) 1099-PATR).",
            "x-spreadspace-unit": "money"
          },
          "line_38b_coop_taxable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 38b, cooperative distributions, taxable amount.",
            "x-spreadspace-unit": "money"
          },
          "line_39a_agricultural_payments": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 39a, agricultural program payments.",
            "x-spreadspace-unit": "money"
          },
          "line_39b_agricultural_taxable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 39b, agricultural program payments, taxable amount.",
            "x-spreadspace-unit": "money"
          },
          "line_40a_ccc_loans_reported": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 40a, Commodity Credit Corporation loans reported under election.",
            "x-spreadspace-unit": "money"
          },
          "line_40b_ccc_loans_forfeited": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 40b, Commodity Credit Corporation loans forfeited.",
            "x-spreadspace-unit": "money"
          },
          "line_40c_ccc_taxable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 40c, Commodity Credit Corporation loans forfeited, taxable amount.",
            "x-spreadspace-unit": "money"
          },
          "line_41_crop_insurance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 41, crop insurance proceeds.",
            "x-spreadspace-unit": "money"
          },
          "line_42_custom_hire": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 42, custom hire (machine work) income.",
            "x-spreadspace-unit": "money"
          },
          "line_43_other_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 43, other income.",
            "x-spreadspace-unit": "money"
          },
          "line_44_total_right_column": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 44, lines 37, 38b, 39b, 40a, 40c, 41, 42 and 43 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_45_inventory_beginning": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 45, inventory of livestock, produce, grains and other products at beginning of year.",
            "x-spreadspace-unit": "money"
          },
          "line_46_cost_purchased": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 46, cost of livestock, produce, grains and other products purchased during the year.",
            "x-spreadspace-unit": "money"
          },
          "line_47_add_45_46": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 47, lines 45 and 46 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_48_inventory_ending": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 48, inventory of livestock, produce, grains and other products at end of year.",
            "x-spreadspace-unit": "money"
          },
          "line_49_cost_of_goods_sold": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 49, cost of livestock, produce, grains and other products sold: line 47 less line 48.",
            "x-spreadspace-unit": "money"
          },
          "line_50_gross_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 50, gross income: line 44 less line 49.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule F, Part III, farm income under the accrual method, lines 37 through 50."
      },
      "TaxReturnReportData_ScheduleFIncomeCash": {
        "required": [
          "line_1a_sales_purchased_livestock",
          "line_1b_cost",
          "line_1c_net",
          "line_2_sales_raised_livestock",
          "line_3a_coop_distributions",
          "line_3b_coop_taxable",
          "line_4a_agricultural_payments",
          "line_4b_agricultural_taxable",
          "line_5a_ccc_loans_reported",
          "line_5b_ccc_loans_forfeited",
          "line_5c_ccc_taxable",
          "line_6a_crop_insurance",
          "line_6b_crop_taxable",
          "line_6c_election_deferral",
          "line_6d_amount_deferred",
          "line_7_custom_hire",
          "line_8_other_income",
          "line_9_gross_income"
        ],
        "type": "object",
        "properties": {
          "line_1a_sales_purchased_livestock": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1a, sales of purchased livestock and other resale items.",
            "x-spreadspace-unit": "money"
          },
          "line_1b_cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1b, cost or other basis of purchased livestock or other items reported on line 1a.",
            "x-spreadspace-unit": "money"
          },
          "line_1c_net": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1c, line 1a less line 1b.",
            "x-spreadspace-unit": "money"
          },
          "line_2_sales_raised_livestock": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, sales of livestock, produce, grains and other products you raised.",
            "x-spreadspace-unit": "money"
          },
          "line_3a_coop_distributions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3a, cooperative distributions (Form(s) 1099-PATR).",
            "x-spreadspace-unit": "money"
          },
          "line_3b_coop_taxable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3b, cooperative distributions, taxable amount.",
            "x-spreadspace-unit": "money"
          },
          "line_4a_agricultural_payments": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4a, agricultural program payments.",
            "x-spreadspace-unit": "money"
          },
          "line_4b_agricultural_taxable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4b, agricultural program payments, taxable amount.",
            "x-spreadspace-unit": "money"
          },
          "line_5a_ccc_loans_reported": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5a, Commodity Credit Corporation loans reported under election.",
            "x-spreadspace-unit": "money"
          },
          "line_5b_ccc_loans_forfeited": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5b, Commodity Credit Corporation loans forfeited.",
            "x-spreadspace-unit": "money"
          },
          "line_5c_ccc_taxable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5c, Commodity Credit Corporation loans forfeited, taxable amount.",
            "x-spreadspace-unit": "money"
          },
          "line_6a_crop_insurance": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6a, crop insurance proceeds and federal crop disaster payments.",
            "x-spreadspace-unit": "money"
          },
          "line_6b_crop_taxable": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6b, crop insurance proceeds, taxable amount.",
            "x-spreadspace-unit": "money"
          },
          "line_6c_election_deferral": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 6c, the election to defer to the next year box, yes or no as marked."
          },
          "line_6d_amount_deferred": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6d, amount deferred from the prior year.",
            "x-spreadspace-unit": "money"
          },
          "line_7_custom_hire": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, custom hire (machine work) income.",
            "x-spreadspace-unit": "money"
          },
          "line_8_other_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, other income.",
            "x-spreadspace-unit": "money"
          },
          "line_9_gross_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, gross income: lines 1c, 2, 3b, 4b, 5a, 5c, 6b, 6d, 7 and 8 added together.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule F, Part I, farm income under the cash method, lines 1a through 9."
      },
      "TaxReturnReportData_ScheduleFOtherExpenseItem": {
        "required": [
          "description",
          "amount"
        ],
        "type": "object",
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "The write-in description as printed."
          },
          "amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The amount for that row.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One line 32 write-in row on Schedule F."
      },
      "TaxReturnReportData_ScheduleK1Identity": {
        "required": [
          "form_type",
          "parent_ein",
          "partner_id",
          "partner_name",
          "tax_year"
        ],
        "type": "object",
        "properties": {
          "form_type": {
            "type": "string",
            "description": "The parent form the schedule belongs to: 1065 or 1120S."
          },
          "parent_ein": {
            "type": [
              "string",
              "null"
            ],
            "description": "The partnership's or corporation's employer identification number, last four digits only."
          },
          "partner_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The recipient's identifying number, last four digits only."
          },
          "partner_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The recipient's name as printed."
          },
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year printed on the schedule."
          }
        },
        "additionalProperties": false,
        "description": "Who the Schedule K-1 belongs to, from the schedule's own header."
      },
      "TaxReturnReportData_ScheduleK1Metadata": {
        "required": [
          "detected_year",
          "form_type"
        ],
        "type": "object",
        "properties": {
          "detected_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the schedule was printed for."
          },
          "form_type": {
            "type": "string",
            "description": "The parent form the schedule belongs to: 1065 or 1120S."
          }
        },
        "additionalProperties": false,
        "description": "Which revision of the Schedule K-1 the document was printed on."
      },
      "TaxReturnReportData_ScheduleK1Partner": {
        "title": "Schedule K-1 (Form 1065)",
        "required": [
          "form",
          "data",
          "metadata"
        ],
        "type": "object",
        "properties": {
          "form": {
            "const": "1065-K1",
            "type": "string",
            "description": "The form the document is: 1065-K1."
          },
          "data": {
            "description": "The Schedule K-1's own boxes.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1065K1"
          },
          "metadata": {
            "description": "Which revision of the form the schedule was printed on.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleK1Metadata"
          }
        },
        "additionalProperties": false,
        "description": "A Schedule K-1 (Form 1065) uploaded on its own."
      },
      "TaxReturnReportData_ScheduleK1PartnerElement": {
        "required": [
          "form",
          "data"
        ],
        "type": "object",
        "properties": {
          "form": {
            "const": "1065-K1",
            "type": "string",
            "description": "The schedule's form: 1065-K1."
          },
          "identity": {
            "description": "Who the schedule belongs to.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleK1Identity"
          },
          "page_indices": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "Pages of the uploaded file the schedule occupies, counting from zero."
          },
          "data": {
            "description": "The schedule's own boxes.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1065K1"
          },
          "metadata": {
            "description": "Which revision of the schedule the pages were printed on.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleK1Metadata"
          }
        },
        "additionalProperties": false,
        "description": "One partner's Schedule K-1 (Form 1065) from the packet."
      },
      "TaxReturnReportData_ScheduleK1Shareholder": {
        "title": "Schedule K-1 (Form 1120-S)",
        "required": [
          "form",
          "data",
          "metadata"
        ],
        "type": "object",
        "properties": {
          "form": {
            "const": "1120-S-K1",
            "type": "string",
            "description": "The form the document is: 1120-S-K1."
          },
          "data": {
            "description": "The Schedule K-1's own boxes.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120SK1"
          },
          "metadata": {
            "description": "Which revision of the form the schedule was printed on.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleK1Metadata"
          }
        },
        "additionalProperties": false,
        "description": "A Schedule K-1 (Form 1120-S) uploaded on its own."
      },
      "TaxReturnReportData_ScheduleK1ShareholderElement": {
        "required": [
          "form",
          "data"
        ],
        "type": "object",
        "properties": {
          "form": {
            "const": "1120-S-K1",
            "type": "string",
            "description": "The schedule's form: 1120-S-K1."
          },
          "identity": {
            "description": "Who the schedule belongs to.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleK1Identity"
          },
          "page_indices": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "Pages of the uploaded file the schedule occupies, counting from zero."
          },
          "data": {
            "description": "The schedule's own boxes.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120SK1"
          },
          "metadata": {
            "description": "Which revision of the schedule the pages were printed on.",
            "$ref": "#/components/schemas/TaxReturnReportData_ScheduleK1Metadata"
          }
        },
        "additionalProperties": false,
        "description": "One shareholder's Schedule K-1 (Form 1120-S) from the packet."
      },
      "TaxReturnReportData_ScheduleLCorp": {
        "required": [
          "line_1_cash",
          "line_2a_trade_notes_ar",
          "line_2b_allowance_bad_debts",
          "line_3_inventories",
          "line_4_us_gov",
          "line_5_tax_exempt_securities",
          "line_6_other_current_assets",
          "line_7_loans_to_shareholders",
          "line_8_mortgage_loans",
          "line_9_other_investments",
          "line_10a_buildings",
          "line_10b_accumulated_depreciation",
          "line_11a_depletable",
          "line_11b_accumulated_depletion",
          "line_12_land",
          "line_13a_intangibles",
          "line_13b_accumulated_amortization",
          "line_14_other_assets",
          "line_15_total_assets",
          "line_16_ap",
          "line_17_mortgages_under_1yr",
          "line_18_other_current_liabilities",
          "line_19_loans_from_shareholders",
          "line_20_mortgages_over_1yr",
          "line_21_other_liabilities",
          "line_22a_preferred_stock",
          "line_22b_common_stock",
          "line_23_additional_paid_in_capital",
          "line_24_retained_earnings_appropriated",
          "line_25_retained_earnings_unappropriated",
          "line_26_equity_adjustments",
          "line_27_less_treasury_stock",
          "line_28_total_liab_equity"
        ],
        "type": "object",
        "properties": {
          "line_1_cash": {
            "description": "Line 1, cash.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_2a_trade_notes_ar": {
            "description": "Line 2a, trade notes and accounts receivable.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_2b_allowance_bad_debts": {
            "description": "Line 2b, less allowance for bad debts.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_3_inventories": {
            "description": "Line 3, inventories.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_4_us_gov": {
            "description": "Line 4, U.S. Government obligations.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_5_tax_exempt_securities": {
            "description": "Line 5, tax-exempt securities.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_6_other_current_assets": {
            "description": "Line 6, other current assets.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_7_loans_to_shareholders": {
            "description": "Line 7, loans to shareholders.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_8_mortgage_loans": {
            "description": "Line 8, mortgage and real estate loans.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_9_other_investments": {
            "description": "Line 9, other investments.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_10a_buildings": {
            "description": "Line 10a, buildings and other depreciable assets.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_10b_accumulated_depreciation": {
            "description": "Line 10b, less accumulated depreciation.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_11a_depletable": {
            "description": "Line 11a, depletable assets.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_11b_accumulated_depletion": {
            "description": "Line 11b, less accumulated depletion.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_12_land": {
            "description": "Line 12, land, net of any amortization.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_13a_intangibles": {
            "description": "Line 13a, intangible assets, amortizable only.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_13b_accumulated_amortization": {
            "description": "Line 13b, less accumulated amortization.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_14_other_assets": {
            "description": "Line 14, other assets.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_15_total_assets": {
            "description": "Line 15, total assets.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_16_ap": {
            "description": "Line 16, accounts payable.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_17_mortgages_under_1yr": {
            "description": "Line 17, mortgages, notes and bonds payable in less than one year.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_18_other_current_liabilities": {
            "description": "Line 18, other current liabilities.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_19_loans_from_shareholders": {
            "description": "Line 19, loans from shareholders.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_20_mortgages_over_1yr": {
            "description": "Line 20, mortgages, notes and bonds payable in one year or more.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_21_other_liabilities": {
            "description": "Line 21, other liabilities.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_22a_preferred_stock": {
            "description": "Line 22a, capital stock, preferred.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_22b_common_stock": {
            "description": "Line 22b, capital stock, common.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_23_additional_paid_in_capital": {
            "description": "Line 23, additional paid-in capital.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_24_retained_earnings_appropriated": {
            "description": "Line 24, retained earnings, appropriated.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_25_retained_earnings_unappropriated": {
            "description": "Line 25, retained earnings, unappropriated.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_26_equity_adjustments": {
            "description": "Line 26, adjustments to shareholders' equity.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_27_less_treasury_stock": {
            "description": "Line 27, less cost of treasury stock.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_28_total_liab_equity": {
            "description": "Line 28, total liabilities and shareholders' equity.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          }
        },
        "additionalProperties": false,
        "description": "Schedule L of Form 1120 or Form 1120-S, balance sheets per books, lines 1 through 28."
      },
      "TaxReturnReportData_ScheduleLPartnership": {
        "required": [
          "line_1_cash",
          "line_2a_ar",
          "line_2b_allowance_bad_debts",
          "line_3_inventory",
          "line_4_us_gov",
          "line_5_tax_exempt_securities",
          "line_6_other_current_assets",
          "line_7a_loans_to_partners",
          "line_7b_mortgage_loans",
          "line_8_other_investments",
          "line_9a_buildings",
          "line_9b_accumulated_depreciation",
          "line_10a_depletable",
          "line_10b_accumulated_depletion",
          "line_11_land",
          "line_12a_intangibles",
          "line_12b_accumulated_amortization",
          "line_13_other_assets",
          "line_14_total_assets",
          "line_15_ap",
          "line_16_mortgages_under_1yr",
          "line_17_other_current_liabilities",
          "line_18_nonrecourse_loans",
          "line_19a_loans_from_partners",
          "line_19b_mortgages_over_1yr",
          "line_20_other_liabilities",
          "line_21_partners_capital",
          "line_22_total_liab_capital"
        ],
        "type": "object",
        "properties": {
          "line_1_cash": {
            "description": "Line 1, cash.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_2a_ar": {
            "description": "Line 2a, trade notes and accounts receivable.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_2b_allowance_bad_debts": {
            "description": "Line 2b, less allowance for bad debts.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_3_inventory": {
            "description": "Line 3, inventories.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_4_us_gov": {
            "description": "Line 4, U.S. Government obligations.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_5_tax_exempt_securities": {
            "description": "Line 5, tax-exempt securities.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_6_other_current_assets": {
            "description": "Line 6, other current assets.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_7a_loans_to_partners": {
            "description": "Line 7a, loans to partners or persons related to partners.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_7b_mortgage_loans": {
            "description": "Line 7b, mortgage and real estate loans.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_8_other_investments": {
            "description": "Line 8, other investments.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_9a_buildings": {
            "description": "Line 9a, buildings and other depreciable assets.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_9b_accumulated_depreciation": {
            "description": "Line 9b, less accumulated depreciation.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_10a_depletable": {
            "description": "Line 10a, depletable assets.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_10b_accumulated_depletion": {
            "description": "Line 10b, less accumulated depletion.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_11_land": {
            "description": "Line 11, land, net of any amortization.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_12a_intangibles": {
            "description": "Line 12a, intangible assets, amortizable only.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_12b_accumulated_amortization": {
            "description": "Line 12b, less accumulated amortization.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_13_other_assets": {
            "description": "Line 13, other assets.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_14_total_assets": {
            "description": "Line 14, total assets.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_15_ap": {
            "description": "Line 15, accounts payable.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_16_mortgages_under_1yr": {
            "description": "Line 16, mortgages, notes and bonds payable in less than one year.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_17_other_current_liabilities": {
            "description": "Line 17, other current liabilities.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_18_nonrecourse_loans": {
            "description": "Line 18, all nonrecourse loans.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_19a_loans_from_partners": {
            "description": "Line 19a, loans from partners or persons related to partners.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_19b_mortgages_over_1yr": {
            "description": "Line 19b, mortgages, notes and bonds payable in one year or more.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_20_other_liabilities": {
            "description": "Line 20, other liabilities.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_21_partners_capital": {
            "description": "Line 21, partners' capital accounts.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          },
          "line_22_total_liab_capital": {
            "description": "Line 22, total liabilities and capital.",
            "$ref": "#/components/schemas/TaxReturnReportData_BalanceSheetLine"
          }
        },
        "additionalProperties": false,
        "description": "Schedule L of Form 1065, balance sheets per books, lines 1 through 22."
      },
      "TaxReturnReportData_ScheduleM1Partnership": {
        "required": [
          "line_1_net_income_books",
          "line_2_income_k_not_books",
          "line_3_guaranteed_payments",
          "line_4a_depreciation",
          "line_4b_travel_entertainment",
          "line_4c_other_books_not_return",
          "line_4_expenses_books_not_k",
          "line_5_sum_1_4",
          "line_6a_tax_exempt_interest",
          "line_6b_other_books_not_k",
          "line_7a_depreciation",
          "line_7b_other_return_not_books",
          "line_8_sum_6_7",
          "line_9_income_per_return"
        ],
        "type": "object",
        "properties": {
          "line_1_net_income_books": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, net income (loss) per books.",
            "x-spreadspace-unit": "money"
          },
          "line_2_income_k_not_books": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, income included on Schedule K not recorded on books this year.",
            "x-spreadspace-unit": "money"
          },
          "line_3_guaranteed_payments": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, guaranteed payments, other than health insurance.",
            "x-spreadspace-unit": "money"
          },
          "line_4a_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4a, depreciation recorded on books this year not included on Schedule K.",
            "x-spreadspace-unit": "money"
          },
          "line_4b_travel_entertainment": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4b, travel and entertainment recorded on books this year not included on Schedule K.",
            "x-spreadspace-unit": "money"
          },
          "line_4c_other_books_not_return": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4c, other expenses recorded on books this year not included on Schedule K.",
            "x-spreadspace-unit": "money"
          },
          "line_4_expenses_books_not_k": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, expenses recorded on books this year not included on Schedule K, total.",
            "x-spreadspace-unit": "money"
          },
          "line_5_sum_1_4": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, lines 1 through 4 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_6a_tax_exempt_interest": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6a, tax-exempt interest recorded on books this year not included on Schedule K.",
            "x-spreadspace-unit": "money"
          },
          "line_6b_other_books_not_k": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6b, other income recorded on books this year not included on Schedule K.",
            "x-spreadspace-unit": "money"
          },
          "line_6_income_books_not_k": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, income recorded on books this year not included on Schedule K, total.",
            "x-spreadspace-unit": "money"
          },
          "line_7a_depreciation": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7a, depreciation included on Schedule K not charged against book income this year.",
            "x-spreadspace-unit": "money"
          },
          "line_7b_other_return_not_books": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7b, other deductions included on Schedule K not charged against book income this year.",
            "x-spreadspace-unit": "money"
          },
          "line_7_deductions_k_not_books": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, deductions included on Schedule K not charged against book income this year, total.",
            "x-spreadspace-unit": "money"
          },
          "line_8_sum_6_7": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, lines 6 and 7 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_9_income_per_return": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, income (loss) per return: line 5 less line 8.",
            "x-spreadspace-unit": "money"
          },
          "writeins": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ScheduleM1WriteIn"
            },
            "description": "Reasons the preparer wrote on an itemize line of Schedule M-1 in place of an attached statement, one entry per reason."
          }
        },
        "additionalProperties": false,
        "description": "Schedule M-1 of Form 1065, reconciliation of income per books with income per return, lines 1 through 9."
      },
      "TaxReturnReportData_ScheduleM1WriteIn": {
        "required": [
          "line",
          "label",
          "family",
          "amount"
        ],
        "type": "object",
        "properties": {
          "line": {
            "type": "string",
            "description": "The Schedule M-1 line the reason is written on."
          },
          "label": {
            "type": "string",
            "description": "The reason as printed on the return."
          },
          "family": {
            "type": "string",
            "description": "The kind of adjustment the reason names, such as amortization."
          },
          "amount": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Amount printed beside the reason, null when the reason carries no amount of its own.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "A reason the preparer wrote on a Schedule M-1 itemize line in place of an attached statement, such as a forgiven loan or amortization, with its own amount when one is printed."
      },
      "TaxReturnReportData_ScheduleM2Column": {
        "required": [
          "line_1_balance_beginning",
          "line_2_ordinary_income",
          "line_3_other_additions",
          "line_4_loss",
          "line_5_other_reductions",
          "line_6_combine",
          "line_7_distributions",
          "line_8_balance_end"
        ],
        "type": "object",
        "properties": {
          "line_1_balance_beginning": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, balance at beginning of tax year.",
            "x-spreadspace-unit": "money"
          },
          "line_2_ordinary_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, ordinary income from page 1, line 21.",
            "x-spreadspace-unit": "money"
          },
          "line_3_other_additions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, other additions.",
            "x-spreadspace-unit": "money"
          },
          "line_4_loss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, loss from page 1, line 21.",
            "x-spreadspace-unit": "money"
          },
          "line_5_other_reductions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, other reductions.",
            "x-spreadspace-unit": "money"
          },
          "line_6_combine": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, lines 1 through 5 combined.",
            "x-spreadspace-unit": "money"
          },
          "line_7_distributions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, distributions.",
            "x-spreadspace-unit": "money"
          },
          "line_8_balance_end": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, balance at end of tax year: line 6 less line 7.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One column of Schedule M-2 (Form 1120-S), lines 1 through 8."
      },
      "TaxReturnReportData_ScheduleM2Partnership": {
        "required": [
          "line_1_balance_beginning",
          "line_2a_cash_contributed",
          "line_2b_property_contributed",
          "line_3_net_income_books",
          "line_4_other_increases",
          "line_5_sum_1_4",
          "line_6a_cash_distributions",
          "line_6b_property_distributions",
          "line_7_other_decreases",
          "line_8_sum_6_7",
          "line_9_balance_end"
        ],
        "type": "object",
        "properties": {
          "line_1_balance_beginning": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1, balance at beginning of year.",
            "x-spreadspace-unit": "money"
          },
          "line_2a_cash_contributed": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2a, capital contributed, cash.",
            "x-spreadspace-unit": "money"
          },
          "line_2b_property_contributed": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2b, capital contributed, property.",
            "x-spreadspace-unit": "money"
          },
          "line_3_net_income_books": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, net income (loss).",
            "x-spreadspace-unit": "money"
          },
          "line_4_other_increases": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4, other increases.",
            "x-spreadspace-unit": "money"
          },
          "line_5_sum_1_4": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5, lines 1 through 4 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_6a_cash_distributions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6a, distributions, cash.",
            "x-spreadspace-unit": "money"
          },
          "line_6b_property_distributions": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6b, distributions, property.",
            "x-spreadspace-unit": "money"
          },
          "line_7_other_decreases": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, other decreases.",
            "x-spreadspace-unit": "money"
          },
          "line_8_sum_6_7": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8, lines 6 and 7 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_9_balance_end": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, balance at end of year: line 5 less line 8.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule M-2 of Form 1065, analysis of partners' capital accounts, lines 1 through 9."
      },
      "TaxReturnReportData_ScheduleSE": {
        "required": [
          "tax_year",
          "taxpayer_name",
          "taxpayer_ssn",
          "line_1a_net_farm_profit",
          "line_1b_ss_retirement_disability",
          "line_2_net_profit_sch_c",
          "line_3_combined",
          "line_4a_multiplied_92_35_pct",
          "line_4b_optional_methods",
          "line_4c_combined_4a_4b",
          "line_5a_church_employee_income",
          "line_5b_church_multiplied",
          "line_6_sum_4c_5b",
          "line_7_max_ss_tax_limit",
          "line_8a_ss_wages_w2",
          "line_8b_unreported_tips",
          "line_8c_wages_ss",
          "line_8d_sum_8",
          "line_9_subtract_8d_from_7",
          "line_10_ss_portion",
          "line_11_medicare_portion",
          "line_12_se_tax",
          "line_13_deduction_half_se_tax",
          "line_14_farm_optional_max",
          "line_15_farm_optional_selected",
          "line_16_nonfarm_optional_earnings",
          "line_17_nonfarm_optional_selected"
        ],
        "type": "object",
        "properties": {
          "tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the schedule is for."
          },
          "taxpayer_name": {
            "type": [
              "string",
              "null"
            ],
            "description": "Name of person with self-employment income."
          },
          "taxpayer_ssn": {
            "type": [
              "string",
              "null"
            ],
            "description": "Social Security number of person with self-employment income, masked to the last four digits."
          },
          "line_1a_net_farm_profit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1a, net farm profit or (loss) from Schedule F and farm partnerships.",
            "x-spreadspace-unit": "money"
          },
          "line_1b_ss_retirement_disability": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 1b, Conservation Reserve Program payments included on line 1a, for recipients of Social Security retirement or disability benefits.",
            "x-spreadspace-unit": "money"
          },
          "line_2_net_profit_sch_c": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 2, net profit or (loss) from Schedule C and Schedule K-1 (Form 1065), box 14, code A, other than farming.",
            "x-spreadspace-unit": "money"
          },
          "line_3_combined": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 3, lines 1a, 1b and 2 combined.",
            "x-spreadspace-unit": "money"
          },
          "line_4a_multiplied_92_35_pct": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4a, 92.35 percent of line 3.",
            "x-spreadspace-unit": "money"
          },
          "line_4b_optional_methods": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4b, amount from the optional methods, when used.",
            "x-spreadspace-unit": "money"
          },
          "line_4c_combined_4a_4b": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 4c, lines 4a and 4b combined.",
            "x-spreadspace-unit": "money"
          },
          "line_5a_church_employee_income": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5a, church employee income from Form W-2.",
            "x-spreadspace-unit": "money"
          },
          "line_5b_church_multiplied": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 5b, 92.35 percent of line 5a.",
            "x-spreadspace-unit": "money"
          },
          "line_6_sum_4c_5b": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 6, lines 4c and 5b added together.",
            "x-spreadspace-unit": "money"
          },
          "line_7_max_ss_tax_limit": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 7, maximum amount of combined wages and self-employment earnings subject to Social Security tax.",
            "x-spreadspace-unit": "money"
          },
          "line_8a_ss_wages_w2": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8a, total Social Security wages and tips from Form(s) W-2 and railroad retirement compensation.",
            "x-spreadspace-unit": "money"
          },
          "line_8b_unreported_tips": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8b, unreported tips subject to Social Security tax (Form 4137).",
            "x-spreadspace-unit": "money"
          },
          "line_8c_wages_ss": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8c, wages subject to Social Security tax (Form 8919).",
            "x-spreadspace-unit": "money"
          },
          "line_8d_sum_8": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 8d, lines 8a, 8b and 8c added together.",
            "x-spreadspace-unit": "money"
          },
          "line_9_subtract_8d_from_7": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 9, line 7 less line 8d.",
            "x-spreadspace-unit": "money"
          },
          "line_10_ss_portion": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 10, the Social Security portion: 12.4 percent of the smaller of line 6 or line 9.",
            "x-spreadspace-unit": "money"
          },
          "line_11_medicare_portion": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 11, the Medicare portion: 2.9 percent of line 6.",
            "x-spreadspace-unit": "money"
          },
          "line_12_se_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 12, self-employment tax: lines 10 and 11 added together.",
            "x-spreadspace-unit": "money"
          },
          "line_13_deduction_half_se_tax": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 13, deduction for one-half of self-employment tax.",
            "x-spreadspace-unit": "money"
          },
          "line_14_farm_optional_max": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 14, maximum income for the farm optional method.",
            "x-spreadspace-unit": "money"
          },
          "line_15_farm_optional_selected": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 15, farm optional method amount, when used.",
            "x-spreadspace-unit": "money"
          },
          "line_16_nonfarm_optional_earnings": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 16, line 14 less line 15, for the nonfarm optional method.",
            "x-spreadspace-unit": "money"
          },
          "line_17_nonfarm_optional_selected": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 17, nonfarm optional method amount, when used.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "Schedule SE (Form 1040), self-employment tax."
      },
      "TaxReturnReportData_Section179PropertyRow": {
        "required": [
          "description",
          "cost",
          "elected_cost"
        ],
        "type": "object",
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ],
            "description": "Column (a), description of property."
          },
          "cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (b), cost (business use only).",
            "x-spreadspace-unit": "money"
          },
          "elected_cost": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Column (c), elected cost.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One row of Form 4562, Part I line 6, section 179 property."
      },
      "TaxReturnReportData_StatementItem": {
        "required": [
          "label",
          "amounts"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "The row's printed label."
          },
          "amounts": {
            "type": "array",
            "items": {
              "pattern": "^-?\\d+\\.\\d{2}$",
              "type": [
                "string",
                "null"
              ],
              "x-spreadspace-unit": "money"
            },
            "description": "The row's printed figures, one per column."
          },
          "page": {
            "type": "integer",
            "description": "Page of the uploaded file the row is printed on, counting from one."
          },
          "financing_type": {
            "enum": [
              "line_of_credit",
              "mortgage",
              "note",
              "term_loan",
              null
            ],
            "type": [
              "string",
              "null"
            ],
            "description": "For a debt row, the kind of instrument its label names: a line of credit, a mortgage, a note or a term loan. Null for every other row."
          },
          "code": {
            "type": [
              "string",
              "null"
            ],
            "description": "The Schedule K-1 box code printed on the row, when the row prints its own."
          }
        },
        "additionalProperties": false,
        "description": "One printed row of a supporting statement."
      },
      "TaxReturnReportData_TaxReturn1040": {
        "title": "Form 1040",
        "required": [
          "form",
          "data",
          "metadata",
          "k1_partners",
          "statements"
        ],
        "type": "object",
        "properties": {
          "form": {
            "const": "1040",
            "type": "string",
            "description": "The form the return is: 1040."
          },
          "data": {
            "description": "The return's own lines, its schedules and its attached forms.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1040"
          },
          "metadata": {
            "description": "Which revision of the form the return was printed on.",
            "$ref": "#/components/schemas/TaxReturnReportData_TaxReturnMetadata"
          },
          "k1_partners": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/TaxReturnReportData_ScheduleK1PartnerElement"
                },
                {
                  "$ref": "#/components/schemas/TaxReturnReportData_ScheduleK1ShareholderElement"
                }
              ],
              "discriminator": {
                "propertyName": "form",
                "mapping": {
                  "1065-K1": "#/components/schemas/TaxReturnReportData_ScheduleK1PartnerElement",
                  "1120-S-K1": "#/components/schemas/TaxReturnReportData_ScheduleK1ShareholderElement"
                }
              },
              "x-spreadspace-discriminator": {
                "propertyName": "form"
              }
            },
            "description": "Always empty on a Form 1040 return."
          },
          "statements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_TaxStatement"
            },
            "description": "The supporting statements the return attaches for lines whose detail overflows the form."
          },
          "depreciation_reports": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_DepreciationReports"
              },
              {
                "type": "null"
              }
            ],
            "description": "The depreciation and amortization registers printed in the packet, when it carries any."
          },
          "tie_signals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_TieSignal"
            },
            "description": "Lines on the return that disagree with the attached form they should agree with. Present only when at least one disagrees."
          }
        },
        "additionalProperties": false,
        "description": "A Form 1040 individual return, including a Form 1040-SR."
      },
      "TaxReturnReportData_TaxReturn1065": {
        "title": "Form 1065",
        "required": [
          "form",
          "data",
          "metadata",
          "k1_partners",
          "statements"
        ],
        "type": "object",
        "properties": {
          "form": {
            "const": "1065",
            "type": "string",
            "description": "The form the return is: 1065."
          },
          "data": {
            "description": "The return's own lines and attached forms.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1065"
          },
          "metadata": {
            "description": "Which revision of the form the return was printed on.",
            "$ref": "#/components/schemas/TaxReturnReportData_TaxReturnMetadata"
          },
          "k1_partners": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/TaxReturnReportData_ScheduleK1PartnerElement"
                },
                {
                  "$ref": "#/components/schemas/TaxReturnReportData_ScheduleK1ShareholderElement"
                }
              ],
              "discriminator": {
                "propertyName": "form",
                "mapping": {
                  "1065-K1": "#/components/schemas/TaxReturnReportData_ScheduleK1PartnerElement",
                  "1120-S-K1": "#/components/schemas/TaxReturnReportData_ScheduleK1ShareholderElement"
                }
              },
              "x-spreadspace-discriminator": {
                "propertyName": "form"
              }
            },
            "description": "One entry per Schedule K-1 in the packet, one partner each."
          },
          "statements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_TaxStatement"
            },
            "description": "The supporting statements the return attaches for lines whose detail overflows the form."
          },
          "depreciation_reports": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_DepreciationReports"
              },
              {
                "type": "null"
              }
            ],
            "description": "The depreciation and amortization registers printed in the packet, when it carries any."
          },
          "tie_signals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_TieSignal"
            },
            "description": "Lines on the return that disagree with the attached form they should agree with. Present only when at least one disagrees."
          }
        },
        "additionalProperties": false,
        "description": "A Form 1065 partnership return."
      },
      "TaxReturnReportData_TaxReturn1120": {
        "title": "Form 1120",
        "required": [
          "form",
          "data",
          "metadata",
          "k1_partners",
          "statements"
        ],
        "type": "object",
        "properties": {
          "form": {
            "const": "1120",
            "type": "string",
            "description": "The form the return is: 1120."
          },
          "data": {
            "description": "The return's own lines and attached forms.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120"
          },
          "metadata": {
            "description": "Which revision of the form the return was printed on.",
            "$ref": "#/components/schemas/TaxReturnReportData_TaxReturnMetadata"
          },
          "k1_partners": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/TaxReturnReportData_ScheduleK1PartnerElement"
                },
                {
                  "$ref": "#/components/schemas/TaxReturnReportData_ScheduleK1ShareholderElement"
                }
              ],
              "discriminator": {
                "propertyName": "form",
                "mapping": {
                  "1065-K1": "#/components/schemas/TaxReturnReportData_ScheduleK1PartnerElement",
                  "1120-S-K1": "#/components/schemas/TaxReturnReportData_ScheduleK1ShareholderElement"
                }
              },
              "x-spreadspace-discriminator": {
                "propertyName": "form"
              }
            },
            "description": "Always empty on a Form 1120 return."
          },
          "statements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_TaxStatement"
            },
            "description": "The supporting statements the return attaches for lines whose detail overflows the form."
          },
          "depreciation_reports": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_DepreciationReports"
              },
              {
                "type": "null"
              }
            ],
            "description": "The depreciation and amortization registers printed in the packet, when it carries any."
          },
          "tie_signals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_TieSignal"
            },
            "description": "Lines on the return that disagree with the attached form they should agree with. Present only when at least one disagrees."
          }
        },
        "additionalProperties": false,
        "description": "A Form 1120 corporate return."
      },
      "TaxReturnReportData_TaxReturn1120S": {
        "title": "Form 1120-S",
        "required": [
          "form",
          "data",
          "metadata",
          "k1_partners",
          "statements"
        ],
        "type": "object",
        "properties": {
          "form": {
            "const": "1120S",
            "type": "string",
            "description": "The form the return is: 1120S."
          },
          "data": {
            "description": "The return's own lines and attached forms.",
            "$ref": "#/components/schemas/TaxReturnReportData_Form1120S"
          },
          "metadata": {
            "description": "Which revision of the form the return was printed on.",
            "$ref": "#/components/schemas/TaxReturnReportData_TaxReturnMetadata"
          },
          "k1_partners": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/TaxReturnReportData_ScheduleK1PartnerElement"
                },
                {
                  "$ref": "#/components/schemas/TaxReturnReportData_ScheduleK1ShareholderElement"
                }
              ],
              "discriminator": {
                "propertyName": "form",
                "mapping": {
                  "1065-K1": "#/components/schemas/TaxReturnReportData_ScheduleK1PartnerElement",
                  "1120-S-K1": "#/components/schemas/TaxReturnReportData_ScheduleK1ShareholderElement"
                }
              },
              "x-spreadspace-discriminator": {
                "propertyName": "form"
              }
            },
            "description": "One entry per Schedule K-1 in the packet, one shareholder each."
          },
          "statements": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_TaxStatement"
            },
            "description": "The supporting statements the return attaches for lines whose detail overflows the form."
          },
          "depreciation_reports": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_DepreciationReports"
              },
              {
                "type": "null"
              }
            ],
            "description": "The depreciation and amortization registers printed in the packet, when it carries any."
          },
          "tie_signals": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_TieSignal"
            },
            "description": "Lines on the return that disagree with the attached form they should agree with. Present only when at least one disagrees."
          }
        },
        "additionalProperties": false,
        "description": "A Form 1120-S S corporation return."
      },
      "TaxReturnReportData_TaxReturnMetadata": {
        "required": [
          "form_key"
        ],
        "type": "object",
        "properties": {
          "form_key": {
            "type": "string",
            "description": "The form family, for example 1065 or 1040."
          },
          "detected_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year the form was printed for."
          }
        },
        "additionalProperties": false,
        "description": "Which revision of the form the return was printed on."
      },
      "TaxReturnReportData_TaxStatement": {
        "required": [
          "title",
          "number",
          "anchor_form",
          "anchor_line",
          "items",
          "total",
          "two_column",
          "anchor",
          "sum_check"
        ],
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "description": "The statement's printed title."
          },
          "number": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The statement number printed in its banner, when it prints one."
          },
          "page": {
            "type": "integer",
            "description": "Page of the uploaded file the statement starts on, counting from one."
          },
          "anchor_form": {
            "type": [
              "string",
              "null"
            ],
            "description": "The form the statement supports, as its banner names it."
          },
          "anchor_line": {
            "type": [
              "string",
              "null"
            ],
            "description": "The line on that form the statement supports, as its banner names it."
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_StatementItem"
            },
            "description": "The statement's printed rows."
          },
          "total": {
            "type": "array",
            "items": {
              "pattern": "^-?\\d+\\.\\d{2}$",
              "type": "string",
              "x-spreadspace-unit": "money"
            },
            "description": "The printed total line, one figure per column. Empty when the statement prints no total."
          },
          "two_column": {
            "type": "boolean",
            "description": "Whether the rows print two figures, such as beginning and ending of year."
          },
          "preparer": {
            "type": [
              "string",
              "null"
            ],
            "description": "The tax software family whose statement layout the page follows."
          },
          "column_labels": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "The printed column headings, one per figure, when the statement labels its columns."
          },
          "subtitle": {
            "type": [
              "string",
              "null"
            ],
            "description": "The entity or activity name printed under the title, when there is one."
          },
          "passive_activity_name_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "The heading printed over the activity column of a Form 8582 activity table, when the statement prints its own."
          },
          "passive_activity_ref_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "The heading printed over the form-and-line column of a Form 8582 activity table, when the statement prints its own."
          },
          "property_rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_PropertyDispositionRow"
            },
            "description": "Full rows of a Form 4797 property disposition statement. Empty on every other statement."
          },
          "amortization_rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_AmortizationScheduleRow"
            },
            "description": "Full rows of a Form 4562 Part VI amortization statement. Empty on every other statement."
          },
          "listed_property_rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_ListedPropertyScheduleRow"
            },
            "description": "Full rows of a Form 4562 Part V listed property statement. Empty on every other statement."
          },
          "macrs_rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_MacrsScheduleRow"
            },
            "description": "Full rows of a Form 4562 Part III MACRS depreciation statement. Empty on every other statement."
          },
          "passthrough_rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_PassThroughRow"
            },
            "description": "Full rows of a Schedule E Part II partnership and S corporation statement. Empty on every other statement."
          },
          "nol_rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_NolCarryforwardRow"
            },
            "description": "Full rows of a net operating loss carryforward schedule. Empty on every other statement."
          },
          "passive_activity_rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_PassiveActivityRow"
            },
            "description": "Full rows of a Form 8582 activity table statement. Empty on every other statement."
          },
          "passive_activity_columns": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The printed column letters of a Form 8582 activity table, in order."
          },
          "at_risk_rows": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_K1AtRiskRow"
            },
            "description": "The at-risk and not-at-risk liability split printed under a Schedule K-1 box 20 statement, when the statement carries it."
          },
          "anchor": {
            "type": [
              "string",
              "null"
            ],
            "description": "The form and line the statement supports, in words."
          },
          "sum_check": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Whether the rows add up to the printed total within one dollar. Null when there is no printed total or no rows."
          },
          "billable": {
            "type": "boolean",
            "description": "Whether the statement supports a federal underwriting form and counts as a statement of the return."
          },
          "k1_partner": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_TaxStatementK1Partner"
              },
              {
                "type": "null"
              }
            ],
            "description": "Which Schedule K-1 recipient the statement belongs to, for a statement that supports a Schedule K-1. Null when the recipient is not stated."
          },
          "binding_conflicts": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Recipients the statement could also belong to, when its Schedule K-1 attribution is ambiguous."
          },
          "statement_group_key": {
            "type": [
              "string",
              "null"
            ],
            "description": "The group the statement is listed under."
          },
          "statement_group_label": {
            "type": [
              "string",
              "null"
            ],
            "description": "The label of the group the statement is listed under."
          },
          "anchor_chip_line": {
            "type": [
              "string",
              "null"
            ],
            "description": "The line of the parent return the statement's figure lands on, as printed."
          }
        },
        "additionalProperties": false,
        "description": "A supporting statement: the page a preparer attaches for a form line whose detail overflows the form, with the printed rows and their printed total."
      },
      "TaxReturnReportData_TaxStatementK1Partner": {
        "required": [
          "partner_index",
          "partner_name",
          "printed_partner_number",
          "rule"
        ],
        "type": "object",
        "properties": {
          "partner_index": {
            "type": "integer",
            "description": "Position of the recipient's Schedule K-1 in k1_partners, counting from zero."
          },
          "partner_name": {
            "type": "string",
            "description": "The recipient's name as printed on the Schedule K-1."
          },
          "printed_partner_number": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The recipient number printed on the Schedule K-1, when the packet numbers them."
          },
          "rule": {
            "type": "string",
            "description": "The printed evidence that identified the recipient: sole_partner, name, amount, equity, partner_number or proximity."
          }
        },
        "additionalProperties": false,
        "description": "Which Schedule K-1 recipient a supporting statement belongs to."
      },
      "TaxReturnReportData_TieSignal": {
        "required": [
          "code",
          "return_value",
          "form_value"
        ],
        "type": "object",
        "properties": {
          "code": {
            "enum": [
              "cogs_1125a",
              "officer_comp_1125e",
              "depreciation_4562"
            ],
            "type": "string",
            "description": "Which pair disagrees: cost of goods sold against Form 1125-A, officer compensation against Form 1125-E, or depreciation against Form 4562."
          },
          "return_value": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The figure on the return's own line.",
            "x-spreadspace-unit": "money"
          },
          "form_value": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": "string",
            "description": "The figure on the attached form's line.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "A line on the return that disagrees with the attached form it should agree with."
      },
      "TaxReturnReportData_TwoYearComparison": {
        "required": [
          "source_label",
          "rows",
          "pages"
        ],
        "type": "object",
        "properties": {
          "source_label": {
            "type": "string",
            "description": "The worksheet's printed title."
          },
          "current_tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year of the current year column, when the worksheet heads its columns with years."
          },
          "prior_tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year of the prior year column, when the worksheet heads its columns with years."
          },
          "rows": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TaxReturnReportData_TwoYearComparisonRow"
            },
            "description": "The worksheet's lines in print order."
          },
          "pages": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "Pages of the return the worksheet is on, counting from one."
          }
        },
        "additionalProperties": false,
        "description": "The preparer's comparison worksheet: each line with its prior year and current year figures, and on a three-year sheet the older prior year beside them."
      },
      "TaxReturnReportData_TwoYearComparisonPriorCell": {
        "required": [
          "year",
          "value"
        ],
        "type": "object",
        "properties": {
          "year": {
            "type": "integer",
            "description": "The tax year that column is headed with."
          },
          "value": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The figure as printed, null when the cell is blank.",
            "x-spreadspace-unit": "money"
          }
        },
        "additionalProperties": false,
        "description": "One cell of a three-year comparison worksheet's older prior year column."
      },
      "TaxReturnReportData_TwoYearComparisonRow": {
        "required": [
          "label",
          "section",
          "subsection",
          "prior_year",
          "current_year"
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "The line's label as printed."
          },
          "section": {
            "type": [
              "string",
              "null"
            ],
            "description": "The section heading the line sits under, when any."
          },
          "subsection": {
            "type": [
              "string",
              "null"
            ],
            "description": "The sub-heading the line sits under, when any."
          },
          "older_prior": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/TaxReturnReportData_TwoYearComparisonPriorCell"
              },
              {
                "type": "null"
              }
            ],
            "description": "The line's cell in the older prior year column of a three-year worksheet; null on a two-year worksheet."
          },
          "prior_year": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The prior year figure.",
            "x-spreadspace-unit": "money"
          },
          "current_year": {
            "pattern": "^-?\\d+\\.\\d{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "The current year figure.",
            "x-spreadspace-unit": "money"
          },
          "current_tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year of this line's current year column, when its activity worksheet prints its own year pair."
          },
          "prior_tax_year": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The tax year of this line's prior year column, when its activity worksheet prints its own year pair."
          }
        },
        "additionalProperties": false,
        "description": "One line of the comparison worksheet."
      },
      "TaxReturnReportData_VehicleUseRow": {
        "required": [
          "business_miles",
          "commuting_miles",
          "other_personal_miles",
          "total_miles",
          "personal_use_available",
          "used_by_5pct_owner",
          "another_vehicle_available"
        ],
        "type": "object",
        "properties": {
          "business_miles": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 30, total business or investment miles driven, as printed."
          },
          "commuting_miles": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 31, total commuting miles driven, as printed."
          },
          "other_personal_miles": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 32, total other personal miles driven, as printed."
          },
          "total_miles": {
            "pattern": "^-?\\d+(\\.\\d+)?$",
            "type": [
              "string",
              "null"
            ],
            "description": "Line 33, total miles driven, as printed."
          },
          "personal_use_available": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 34, the vehicle was available for personal use during off-duty hours."
          },
          "used_by_5pct_owner": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 35, the vehicle was used primarily by a more than five percent owner or related person."
          },
          "another_vehicle_available": {
            "type": [
              "boolean",
              "null"
            ],
            "description": "Line 36, another vehicle was available for personal use."
          }
        },
        "additionalProperties": false,
        "description": "One vehicle column of Form 4562, Part V section B (lines 30 through 36)."
      },
      "UpdateBorrowerRequest": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 200,
            "type": [
              "string",
              "null"
            ]
          },
          "dba_name": {
            "maxLength": 200,
            "type": [
              "string",
              "null"
            ]
          },
          "legal_entity_type": {
            "maxLength": 100,
            "type": [
              "string",
              "null"
            ]
          },
          "tax_filing_status": {
            "maxLength": 100,
            "type": [
              "string",
              "null"
            ]
          },
          "city": {
            "maxLength": 100,
            "type": [
              "string",
              "null"
            ]
          },
          "state": {
            "maxLength": 2,
            "type": [
              "string",
              "null"
            ]
          },
          "zip_code": {
            "maxLength": 10,
            "type": [
              "string",
              "null"
            ]
          },
          "state_of_formation": {
            "maxLength": 2,
            "type": [
              "string",
              "null"
            ]
          },
          "industry": {
            "maxLength": 100,
            "type": [
              "string",
              "null"
            ]
          },
          "sub_industry": {
            "maxLength": 100,
            "type": [
              "string",
              "null"
            ]
          },
          "naics_code": {
            "maxLength": 6,
            "type": [
              "string",
              "null"
            ]
          },
          "date_established": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "fiscal_year_end_month": {
            "maximum": 12,
            "minimum": 1,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "format": "int16"
          },
          "number_of_principals": {
            "maximum": 10000,
            "minimum": 0,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "format": "int16"
          },
          "tin_last4": {
            "maxLength": 4,
            "pattern": "^\\d{4}$",
            "type": [
              "string",
              "null"
            ]
          },
          "tin_type": {
            "maxLength": 10,
            "type": [
              "string",
              "null"
            ]
          },
          "ein_last4": {
            "maxLength": 4,
            "pattern": "^\\d{4}$",
            "type": [
              "string",
              "null"
            ]
          },
          "ssn_last4": {
            "maxLength": 4,
            "pattern": "^\\d{4}$",
            "type": [
              "string",
              "null"
            ]
          },
          "notes": {
            "maxLength": 2000,
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "maxLength": 20,
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "UpdateLoanRequest": {
        "type": "object",
        "properties": {
          "loan_type": {
            "maxLength": 100,
            "type": [
              "string",
              "null"
            ],
            "description": "One of `AlternativeFinancing`, `SBA`, `CommercialTerm`, `CommercialRealEstate`, `ResidentialMortgage`, `Auto`, `Personal`. Case-insensitive. Any other value is rejected with 400. Sending `loan_type` without `loan_sub_type` clears the subtype."
          },
          "loan_sub_type": {
            "maxLength": 100,
            "type": [
              "string",
              "null"
            ],
            "description": "A subtype of the given `loan_type`; a subtype that belongs to a different type is rejected with 400."
          },
          "name": {
            "maxLength": 200,
            "type": [
              "string",
              "null"
            ]
          },
          "loan_number": {
            "maxLength": 100,
            "type": [
              "string",
              "null"
            ]
          },
          "requested_amount": {
            "pattern": "^(0|[1-9][0-9]{0,11})\\.[0-9]{2}$",
            "type": [
              "string",
              "null"
            ],
            "description": "Monetary amount as a decimal string with exactly two decimal places. From 0.00 through 999999999999.99.",
            "x-spreadspace-unit": "money"
          },
          "rate_type": {
            "maxLength": 20,
            "pattern": "^(Fixed|SOFR|Prime)$",
            "type": [
              "string",
              "null"
            ]
          },
          "interest_rate": {
            "maximum": 99.999,
            "minimum": 0,
            "pattern": "^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?$",
            "type": [
              "number",
              "null"
            ],
            "format": "double"
          },
          "term_months": {
            "maximum": 600,
            "minimum": 1,
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "notes": {
            "maxLength": 2000,
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "maxLength": 50,
            "type": [
              "string",
              "null"
            ],
            "description": "One of `active`, `under_review`, `approved`, `closed`. Setting anything other than `active` or `under_review` clears `priority`."
          },
          "priority": {
            "maxLength": 20,
            "type": [
              "string",
              "null"
            ],
            "description": "One of `none`, `low`, `medium`, `high`, `urgent`. `none` is stored as null."
          },
          "guarantors": {
            "maxItems": 50,
            "type": [
              "array",
              "null"
            ],
            "items": {
              "type": "string"
            },
            "description": "Guarantor names declared on the loan. Omit the field to leave the\ndeclared list untouched; a list replaces it wholesale, and an empty list\nclears it."
          }
        }
      },
      "UpdateWebhookEndpointRequest": {
        "type": "object",
        "properties": {
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": [
              "string",
              "null"
            ],
            "description": "Status update. Null = unchanged. Only `\"active\"` or `\"paused\"`\nare accepted; `\"revoked\"` is reached exclusively via DELETE."
          },
          "subscribed_events": {
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/WebhookEventType"
            }
          }
        }
      },
      "WebhookDeliverySummary": {
        "required": [
          "id",
          "event_id",
          "event_type",
          "status",
          "attempts",
          "created_at"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "event_id": {
            "type": "string",
            "format": "uuid"
          },
          "event_ref": {
            "type": [
              "string",
              "null"
            ],
            "description": "The event id as delivered: the envelope's `id` and the\n`SpreadSpace-Event-Id` header. Stable across retries; a replay\ncreates a new delivery under the same event id."
          },
          "event_type": {
            "type": "string"
          },
          "loan_id": {
            "type": [
              "string",
              "null"
            ],
            "description": "The loan the event was about (`data.loan_id`), when the payload\ncarried one."
          },
          "status": {
            "type": "string",
            "description": "`pending`, `delivered` or `dead`."
          },
          "attempts": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": "integer",
            "format": "int32"
          },
          "next_attempt_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "last_response_status": {
            "pattern": "^-?(?:0|[1-9]\\d*)$",
            "type": [
              "integer",
              "null"
            ],
            "format": "int32"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "delivered_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "dead_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        }
      },
      "WebhookEndpointSummary": {
        "required": [
          "id",
          "url",
          "status",
          "subscribed_events",
          "created_at"
        ],
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "url": {
            "type": "string"
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": "string",
            "description": "`active`, `paused` or `revoked`."
          },
          "subscribed_events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/WebhookEventType"
            }
          },
          "signing_secret_prefix": {
            "type": [
              "string",
              "null"
            ],
            "description": "First few characters of the active signing secret (e.g.\n`whsec_abc1`), enough to tell two secrets apart without exposing\neither. Null when the endpoint has no current signing secret."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "revoked_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        }
      },
      "WebhookEventType": {
        "enum": [
          "document.failed",
          "document.processed",
          "export.cancelled",
          "export.failed",
          "export.succeeded",
          "extraction.ready",
          "extraction.updated",
          "job.completed",
          "loan.classified",
          "memo.finalized",
          "memo.reopened",
          "memo_render.cancelled",
          "memo_render.failed",
          "memo_render.succeeded",
          "spread.finalized",
          "spread.reopened",
          "*"
        ],
        "type": "string",
        "description": "Event types an endpoint can subscribe to; `*` subscribes to every type, including ones added later. Treat unknown values as opaque."
      }
    },
    "responses": {
      "Error400": {
        "description": "Bad request: validation failed, the cursor is malformed, or the API version is unknown.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiErrorResponse"
            },
            "examples": {
              "validation_error": {
                "summary": "invalid_request",
                "value": {
                  "error": {
                    "type": "invalid_request",
                    "message": "Request body failed validation.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              },
              "invalid_version": {
                "summary": "invalid_version",
                "value": {
                  "error": {
                    "type": "invalid_version",
                    "message": "Unknown API version: 2099-01-01. Supported versions: 2026-07-19.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              },
              "invalid_cursor": {
                "summary": "invalid_cursor",
                "value": {
                  "error": {
                    "type": "invalid_cursor",
                    "message": "Cursor is malformed or signed with a different secret.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              },
              "cursor_expired": {
                "summary": "cursor_expired",
                "value": {
                  "error": {
                    "type": "cursor_expired",
                    "message": "Cursor expired. Restart pagination from the beginning.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              },
              "invalid_limit": {
                "summary": "invalid_limit",
                "value": {
                  "error": {
                    "type": "invalid_limit",
                    "message": "Limit must be between 1 and 100.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          }
        }
      },
      "Error401": {
        "description": "Unauthorized: the bearer token or API key is missing or invalid.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiErrorResponse"
            },
            "examples": {
              "unauthorized": {
                "summary": "unauthorized",
                "value": {
                  "error": {
                    "type": "unauthorized",
                    "message": "Authentication required.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          }
        }
      },
      "Error403": {
        "description": "Forbidden: authentication succeeded but the caller is not permitted to perform this action, for example an API key missing the required scope, an embed session reaching a loan it was not minted for, or a feature outside the workspace's plan.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiErrorResponse"
            },
            "examples": {
              "forbidden": {
                "summary": "forbidden",
                "value": {
                  "error": {
                    "type": "forbidden",
                    "message": "Access denied.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              },
              "pii_claim_required": {
                "summary": "pii_claim_required",
                "value": {
                  "error": {
                    "type": "pii_claim_required",
                    "message": "PII access requires claiming this borrower first.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              },
              "business_email_required": {
                "summary": "business_email_required",
                "value": {
                  "error": {
                    "type": "business_email_required",
                    "message": "SpreadSpace requires a business email address.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          }
        }
      },
      "Error404": {
        "description": "Not found: the resource does not exist or is not visible to the calling tenant.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiErrorResponse"
            },
            "examples": {
              "not_found": {
                "summary": "not_found",
                "value": {
                  "error": {
                    "type": "not_found",
                    "message": "Resource not found.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          }
        }
      },
      "Error409": {
        "description": "Conflict: a version mismatch, where `details.current_version` carries the version the resource is actually at so the client can reload and re-apply, or an idempotency key reused with a different request body.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiErrorResponse"
            },
            "examples": {
              "version_conflict": {
                "summary": "conflict",
                "value": {
                  "error": {
                    "type": "conflict",
                    "message": "This surface changed since you loaded it. Reload and re-apply.",
                    "request_id": "req_0123456789abcdef01234567",
                    "details": {
                      "current_version": "7"
                    }
                  }
                }
              },
              "idempotency_request_mismatch": {
                "summary": "idempotency_request_mismatch",
                "value": {
                  "error": {
                    "type": "idempotency_request_mismatch",
                    "message": "Idempotency-Key was previously used with a different request body.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              },
              "idempotency_response_too_large": {
                "summary": "idempotency_response_too_large",
                "value": {
                  "error": {
                    "type": "idempotency_response_too_large",
                    "message": "The original request completed, but its response exceeded the 1 MiB replay cap and cannot be replayed. Read the resource it affected instead of resending.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          }
        }
      },
      "Error413": {
        "description": "Payload too large: the write exceeds this operation's documented size cap. Nothing was stored, and payloads are never truncated.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiErrorResponse"
            },
            "examples": {
              "payload_too_large": {
                "summary": "payload_too_large",
                "value": {
                  "error": {
                    "type": "payload_too_large",
                    "message": "The request payload exceeds the documented size cap. Nothing was saved.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          }
        }
      },
      "Error422": {
        "description": "Unprocessable: the request is well-formed but a rule refuses it. Retrying unchanged will not succeed, so the caller must change something first.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiErrorResponse"
            },
            "examples": {
              "surface_limit_exceeded": {
                "summary": "surface_limit_exceeded",
                "value": {
                  "error": {
                    "type": "surface_limit_exceeded",
                    "message": "You already have the maximum number of saved UI-state surfaces. Existing surfaces still save normally; delete one before creating another.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          }
        }
      },
      "Error423": {
        "description": "Locked: the resource is frozen and refuses writes until it is reopened. `details.locked_at` says when it was frozen, and `details.locked_by_name` who did it, for callers that may see people's names.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiErrorResponse"
            },
            "examples": {
              "spread_locked": {
                "summary": "spread_locked",
                "value": {
                  "error": {
                    "type": "spread_locked",
                    "message": "This spread is finalized and locked. Reopen it to make changes.",
                    "request_id": "req_0123456789abcdef01234567",
                    "details": {
                      "locked_at": "2026-08-17T14:31:09.4820000+00:00"
                    }
                  }
                }
              },
              "memo_locked": {
                "summary": "memo_locked",
                "value": {
                  "error": {
                    "type": "memo_locked",
                    "message": "This memo is finalized and locked. Reopen it to make changes.",
                    "request_id": "req_0123456789abcdef01234567",
                    "details": {
                      "locked_at": "2026-09-19T14:31:09.4820000+00:00"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "Error429": {
        "description": "Too many requests: the rate limit was hit, or an idempotency-key replay is still in progress.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiErrorResponse"
            },
            "examples": {
              "rate_limited": {
                "summary": "rate_limited",
                "value": {
                  "error": {
                    "type": "rate_limited",
                    "message": "Request rate limit exceeded. Retry after the cooldown.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              },
              "idempotency_in_progress": {
                "summary": "idempotency_in_progress",
                "value": {
                  "error": {
                    "type": "idempotency_in_progress",
                    "message": "Concurrent request with the same Idempotency-Key is still in progress. Retry shortly.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          }
        }
      },
      "Error500": {
        "description": "Internal server error: an unexpected failure. Quote the `request_id` in support tickets. A mutation sent with an `Idempotency-Key` replays this fault under that key rather than re-running; confirm the resource state before resending with a new key.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ApiErrorResponse"
            },
            "examples": {
              "internal_error": {
                "summary": "internal_error",
                "value": {
                  "error": {
                    "type": "internal_error",
                    "message": "An unexpected error occurred.",
                    "request_id": "req_0123456789abcdef01234567"
                  }
                }
              }
            }
          }
        }
      }
    },
    "parameters": {
      "WebhookSignatureHeader": {
        "name": "SpreadSpace-Signature",
        "in": "header",
        "description": "Signature over the exact request body: `t=<seconds since the Unix epoch>,v1=<lowercase hex HMAC-SHA256 of \"{t}.{body}\" keyed with your endpoint's signing secret>`. Verify it before trusting the body, and reject a `t` more than five minutes from your own clock. During a secret rotation both the new and the previous secret verify for 24 hours; each delivery is signed with exactly one.",
        "required": true,
        "schema": {
          "type": "string",
          "example": "t=1700000000,v1=5257a869e7ecebeda32affa62cdca3fa51cad7e77a0e56ff536d0ce8e108d8bd"
        }
      },
      "WebhookEventIdHeader": {
        "name": "SpreadSpace-Event-Id",
        "in": "header",
        "description": "The event id, identical to the body's `id`. Stable across retries and replays, and shared by every endpoint one event fans out to. Delivery is at-least-once, so dedupe on it.",
        "required": true,
        "schema": {
          "pattern": "^evt_[0-9a-f]{24}$",
          "type": "string",
          "example": "evt_4b8c1d2e3f405162738495a6"
        }
      },
      "WebhookUserAgentHeader": {
        "name": "User-Agent",
        "in": "header",
        "description": "Always `SpreadSpace-Webhooks/1` on a delivery we send.",
        "required": true,
        "schema": {
          "type": "string",
          "example": "SpreadSpace-Webhooks/1"
        }
      }
    },
    "securitySchemes": {
      "Bearer": {
        "type": "http",
        "description": "Bearer token. Use `ss_live_…` for live data or `ss_test_…` for the sandbox (test mode). See [Authentication](https://docs.spreadspace.app/api/authentication).",
        "scheme": "bearer",
        "bearerFormat": "API key (ss_live_ / ss_test_)"
      }
    }
  },
  "security": [
    {
      "Bearer": [ ]
    }
  ],
  "tags": [
    {
      "name": "Borrowers"
    },
    {
      "name": "Documents"
    },
    {
      "name": "EmbedSessions"
    },
    {
      "name": "ExtractionExports"
    },
    {
      "name": "Extractions"
    },
    {
      "name": "Intake"
    },
    {
      "name": "Jobs"
    },
    {
      "name": "LoanMemos"
    },
    {
      "name": "Loans"
    },
    {
      "name": "Me"
    },
    {
      "name": "Organizations"
    },
    {
      "name": "SandboxReset"
    },
    {
      "name": "SpreadAttributes"
    },
    {
      "name": "Webhooks"
    }
  ],
  "webhooks": {
    "document.failed": {
      "post": {
        "tags": [
          "Webhook events"
        ],
        "summary": "document.failed",
        "description": "Fires when a document is rejected, hits an unrecoverable extraction error, or is resolved as a duplicate of one already on the deal. `reason` carries the short code or message. `message`, when present, is a sentence you can show the uploader.",
        "operationId": "Webhook_DocumentFailed",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignatureHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookEventIdHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookUserAgentHeader"
          }
        ],
        "requestBody": {
          "description": "The `document.failed` delivery body.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DocumentFailedEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx within 5 seconds. A 4xx other than 429 stops retries for that delivery. 429, 5xx, network errors and timeouts are retried, up to 12 attempts in all."
          }
        },
        "security": [ ]
      }
    },
    "document.processed": {
      "post": {
        "tags": [
          "Webhook events"
        ],
        "summary": "document.processed",
        "description": "Fires once per document, after its extraction has been stored. Carries routing identifiers only, so read the extracted figures back through the API by `document_id`.",
        "operationId": "Webhook_DocumentProcessed",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignatureHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookEventIdHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookUserAgentHeader"
          }
        ],
        "requestBody": {
          "description": "The `document.processed` delivery body.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DocumentProcessedEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx within 5 seconds. A 4xx other than 429 stops retries for that delivery. 429, 5xx, network errors and timeouts are retried, up to 12 attempts in all."
          }
        },
        "security": [ ]
      }
    },
    "export.cancelled": {
      "post": {
        "tags": [
          "Webhook events"
        ],
        "summary": "export.cancelled",
        "description": "Fires once when an export reaches cancelled, either straight from queued or at the document boundary where the worker acknowledged the request.",
        "operationId": "Webhook_ExportCancelled",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignatureHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookEventIdHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookUserAgentHeader"
          }
        ],
        "requestBody": {
          "description": "The `export.cancelled` delivery body.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExportCancelledEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx within 5 seconds. A 4xx other than 429 stops retries for that delivery. 429, 5xx, network errors and timeouts are retried, up to 12 attempts in all."
          }
        },
        "security": [ ]
      }
    },
    "export.failed": {
      "post": {
        "tags": [
          "Webhook events"
        ],
        "summary": "export.failed",
        "description": "Fires once when an export ends in failure and no bundle will be produced. `reason` is the export's error code.",
        "operationId": "Webhook_ExportFailed",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignatureHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookEventIdHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookUserAgentHeader"
          }
        ],
        "requestBody": {
          "description": "The `export.failed` delivery body.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExportFailedEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx within 5 seconds. A 4xx other than 429 stops retries for that delivery. 429, 5xx, network errors and timeouts are retried, up to 12 attempts in all."
          }
        },
        "security": [ ]
      }
    },
    "export.succeeded": {
      "post": {
        "tags": [
          "Webhook events"
        ],
        "summary": "export.succeeded",
        "description": "Fires once when an export's bundle is ready to download. Fetch the export to get a fresh download link; the event never carries one.",
        "operationId": "Webhook_ExportSucceeded",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignatureHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookEventIdHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookUserAgentHeader"
          }
        ],
        "requestBody": {
          "description": "The `export.succeeded` delivery body.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExportSucceededEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx within 5 seconds. A 4xx other than 429 stops retries for that delivery. 429, 5xx, network errors and timeouts are retried, up to 12 attempts in all."
          }
        },
        "security": [ ]
      }
    },
    "extraction.ready": {
      "post": {
        "tags": [
          "Webhook events"
        ],
        "summary": "extraction.ready",
        "description": "Fires once per document, the moment its extraction is queryable in the shape you should build on, and the usual cue to pull line items. For a bank statement it is held back until counterparty enrichment lands, or until the grace window elapses without it (`enrichment` says which).",
        "operationId": "Webhook_ExtractionReady",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignatureHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookEventIdHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookUserAgentHeader"
          }
        ],
        "requestBody": {
          "description": "The `extraction.ready` delivery body.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExtractionReadyEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx within 5 seconds. A 4xx other than 429 stops retries for that delivery. 429, 5xx, network errors and timeouts are retried, up to 12 attempts in all."
          }
        },
        "security": [ ]
      }
    },
    "extraction.updated": {
      "post": {
        "tags": [
          "Webhook events"
        ],
        "summary": "extraction.updated",
        "description": "Fires when a stored extraction is rewritten in place after `extraction.ready` already fired for that document: what you fetched is stale. Re-fetch and compare `extraction_version` against `previous_extraction_version`.",
        "operationId": "Webhook_ExtractionUpdated",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignatureHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookEventIdHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookUserAgentHeader"
          }
        ],
        "requestBody": {
          "description": "The `extraction.updated` delivery body.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ExtractionUpdatedEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx within 5 seconds. A 4xx other than 429 stops retries for that delivery. 429, 5xx, network errors and timeouts are retried, up to 12 attempts in all."
          }
        },
        "security": [ ]
      }
    },
    "job.completed": {
      "post": {
        "tags": [
          "Webhook events"
        ],
        "summary": "job.completed",
        "description": "Terminal event for a document package: fires exactly once, when every document in it has reached a terminal state, success or failure.",
        "operationId": "Webhook_JobCompleted",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignatureHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookEventIdHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookUserAgentHeader"
          }
        ],
        "requestBody": {
          "description": "The `job.completed` delivery body.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/JobCompletedEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx within 5 seconds. A 4xx other than 429 stops retries for that delivery. 429, 5xx, network errors and timeouts are retried, up to 12 attempts in all."
          }
        },
        "security": [ ]
      }
    },
    "loan.classified": {
      "post": {
        "tags": [
          "Webhook events"
        ],
        "summary": "loan.classified",
        "description": "Fires once per loan, after every document in the package has been classified.",
        "operationId": "Webhook_LoanClassified",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignatureHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookEventIdHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookUserAgentHeader"
          }
        ],
        "requestBody": {
          "description": "The `loan.classified` delivery body.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoanClassifiedEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx within 5 seconds. A 4xx other than 429 stops retries for that delivery. 429, 5xx, network errors and timeouts are retried, up to 12 attempts in all."
          }
        },
        "security": [ ]
      }
    },
    "memo.finalized": {
      "post": {
        "tags": [
          "Webhook events"
        ],
        "summary": "memo.finalized",
        "description": "Fires once per finalize: an analyst finished a credit memo, it was locked, and its final PDF was made. The payload carries ids, not the memo. Pull the PDF from `GET /api/loans/{loanId}/memos/{memoId}/pdf`.",
        "operationId": "Webhook_MemoFinalized",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignatureHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookEventIdHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookUserAgentHeader"
          }
        ],
        "requestBody": {
          "description": "The `memo.finalized` delivery body.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MemoFinalizedEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx within 5 seconds. A 4xx other than 429 stops retries for that delivery. 429, 5xx, network errors and timeouts are retried, up to 12 attempts in all."
          }
        },
        "security": [ ]
      }
    },
    "memo.reopened": {
      "post": {
        "tags": [
          "Webhook events"
        ],
        "summary": "memo.reopened",
        "description": "Fires once per reopen: an analyst reopened a finalized credit memo to edit it. The final PDF it points at is kept and unchanged, but the memo is under revision until the next `memo.finalized`, so mark your copy stale. The payload carries ids, not the memo.",
        "operationId": "Webhook_MemoReopened",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignatureHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookEventIdHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookUserAgentHeader"
          }
        ],
        "requestBody": {
          "description": "The `memo.reopened` delivery body.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MemoReopenedEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx within 5 seconds. A 4xx other than 429 stops retries for that delivery. 429, 5xx, network errors and timeouts are retried, up to 12 attempts in all."
          }
        },
        "security": [ ]
      }
    },
    "memo_render.cancelled": {
      "post": {
        "tags": [
          "Webhook events"
        ],
        "summary": "memo_render.cancelled",
        "description": "Fires once when a queued credit memo render is cancelled before it starts.",
        "operationId": "Webhook_MemoRenderCancelled",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignatureHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookEventIdHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookUserAgentHeader"
          }
        ],
        "requestBody": {
          "description": "The `memo_render.cancelled` delivery body.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MemoRenderCancelledEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx within 5 seconds. A 4xx other than 429 stops retries for that delivery. 429, 5xx, network errors and timeouts are retried, up to 12 attempts in all."
          }
        },
        "security": [ ]
      }
    },
    "memo_render.failed": {
      "post": {
        "tags": [
          "Webhook events"
        ],
        "summary": "memo_render.failed",
        "description": "Fires once when a credit memo's PDF render ends in failure and no PDF was produced. `reason` is the render's error code.",
        "operationId": "Webhook_MemoRenderFailed",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignatureHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookEventIdHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookUserAgentHeader"
          }
        ],
        "requestBody": {
          "description": "The `memo_render.failed` delivery body.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MemoRenderFailedEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx within 5 seconds. A 4xx other than 429 stops retries for that delivery. 429, 5xx, network errors and timeouts are retried, up to 12 attempts in all."
          }
        },
        "security": [ ]
      }
    },
    "memo_render.succeeded": {
      "post": {
        "tags": [
          "Webhook events"
        ],
        "summary": "memo_render.succeeded",
        "description": "Fires once when a credit memo's PDF render finishes. Pull the PDF through the memo's own download endpoint; the event never carries a link.",
        "operationId": "Webhook_MemoRenderSucceeded",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignatureHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookEventIdHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookUserAgentHeader"
          }
        ],
        "requestBody": {
          "description": "The `memo_render.succeeded` delivery body.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/MemoRenderSucceededEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx within 5 seconds. A 4xx other than 429 stops retries for that delivery. 429, 5xx, network errors and timeouts are retried, up to 12 attempts in all."
          }
        },
        "security": [ ]
      }
    },
    "spread.finalized": {
      "post": {
        "tags": [
          "Webhook events"
        ],
        "summary": "spread.finalized",
        "description": "Fires once per finalize: an analyst finalized a spread, the `final` and `machine` attribute snapshots were created, and the board was locked. The payload carries ids, not figures. Fetch the figures from `GET /api/loans/{loanId}/attributes/{snapshotId}`.",
        "operationId": "Webhook_SpreadFinalized",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignatureHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookEventIdHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookUserAgentHeader"
          }
        ],
        "requestBody": {
          "description": "The `spread.finalized` delivery body.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SpreadFinalizedEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx within 5 seconds. A 4xx other than 429 stops retries for that delivery. 429, 5xx, network errors and timeouts are retried, up to 12 attempts in all."
          }
        },
        "security": [ ]
      }
    },
    "spread.reopened": {
      "post": {
        "tags": [
          "Webhook events"
        ],
        "summary": "spread.reopened",
        "description": "Fires once per reopen: an analyst reopened a finalized spread to edit it. The `final` snapshot it points at is kept and unchanged, but the figures are under revision until the next `spread.finalized`, so mark your copy stale. The payload carries ids, not figures.",
        "operationId": "Webhook_SpreadReopened",
        "parameters": [
          {
            "$ref": "#/components/parameters/WebhookSignatureHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookEventIdHeader"
          },
          {
            "$ref": "#/components/parameters/WebhookUserAgentHeader"
          }
        ],
        "requestBody": {
          "description": "The `spread.reopened` delivery body.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SpreadReopenedEvent"
              }
            }
          },
          "required": true
        },
        "responses": {
          "2XX": {
            "description": "Return any 2xx within 5 seconds. A 4xx other than 429 stops retries for that delivery. 429, 5xx, network errors and timeouts are retried, up to 12 attempts in all."
          }
        },
        "security": [ ]
      }
    }
  }
}