@warmio/contracts 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -0
- package/dist/api/endpoints.d.ts +461 -0
- package/dist/api/endpoints.d.ts.map +1 -0
- package/dist/api/endpoints.js +397 -0
- package/dist/api/endpoints.js.map +1 -0
- package/dist/api/index.d.ts +2 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +2 -0
- package/dist/api/index.js.map +1 -0
- package/dist/examples/automation.d.ts +16 -0
- package/dist/examples/automation.d.ts.map +1 -0
- package/dist/examples/automation.js +17 -0
- package/dist/examples/automation.js.map +1 -0
- package/dist/examples/financial-context.d.ts +32 -0
- package/dist/examples/financial-context.d.ts.map +1 -0
- package/dist/examples/financial-context.js +29 -0
- package/dist/examples/financial-context.js.map +1 -0
- package/dist/examples/index.d.ts +3 -0
- package/dist/examples/index.d.ts.map +1 -0
- package/dist/examples/index.js +3 -0
- package/dist/examples/index.js.map +1 -0
- package/dist/generated/base-openapi.d.ts +2 -0
- package/dist/generated/base-openapi.d.ts.map +1 -0
- package/dist/generated/base-openapi.js +3 -0
- package/dist/generated/base-openapi.js.map +1 -0
- package/dist/generated/private-mcp-tool-descriptors.d.ts +1031 -0
- package/dist/generated/private-mcp-tool-descriptors.d.ts.map +1 -0
- package/dist/generated/private-mcp-tool-descriptors.js +1541 -0
- package/dist/generated/private-mcp-tool-descriptors.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/manifest.d.ts +3 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +3 -0
- package/dist/manifest.js.map +1 -0
- package/dist/mcp/index.d.ts +2 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +2 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/tools.d.ts +88 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +124 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/openapi/base.yaml +1679 -0
- package/dist/openapi/build-openapi.d.ts +28 -0
- package/dist/openapi/build-openapi.d.ts.map +1 -0
- package/dist/openapi/build-openapi.js +89 -0
- package/dist/openapi/build-openapi.js.map +1 -0
- package/dist/openapi/index.d.ts +2 -0
- package/dist/openapi/index.d.ts.map +1 -0
- package/dist/openapi/index.js +2 -0
- package/dist/openapi/index.js.map +1 -0
- package/dist/schemas/automation.d.ts +248 -0
- package/dist/schemas/automation.d.ts.map +1 -0
- package/dist/schemas/automation.js +46 -0
- package/dist/schemas/automation.js.map +1 -0
- package/dist/schemas/common.d.ts +76 -0
- package/dist/schemas/common.d.ts.map +1 -0
- package/dist/schemas/common.js +23 -0
- package/dist/schemas/common.js.map +1 -0
- package/dist/schemas/financial-context.d.ts +1300 -0
- package/dist/schemas/financial-context.d.ts.map +1 -0
- package/dist/schemas/financial-context.js +271 -0
- package/dist/schemas/financial-context.js.map +1 -0
- package/dist/schemas/index.d.ts +4 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +4 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/types.d.ts +68 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +94 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const baseOpenApiYaml = "openapi: 3.1.0\ninfo:\n title: Warm API\n description: |\n Read your financial context or invoke supported Warm actions through a compact operation catalog.\n\n ## Authentication\n All requests use `Authorization: Bearer`. API keys are created for either read-only context\n access or automation access in Settings on paid Warm plans.\n\n Read/export routes accept `Authorization: Bearer YOUR_API_KEY_OR_ACCESS_TOKEN`.\n Automation routes require an automation key (`warm_auto_...`) and do not accept access tokens.\n\n Unauthenticated responses include `WWW-Authenticate` guidance and protected resource metadata.\n\n ## Rate Limits\n - Context keys: 200 requests per hour per key\n - Automation keys: 500 requests per hour per key\n - Rate limit headers included in authenticated responses\n - `/api/export` supports dataset-scoped delta sync with `since` and publishes edge-cache metadata headers\n version: '2.0.0'\n contact:\n name: Warm Support\n url: https://warm.io/support\n license:\n name: Proprietary\n url: https://warm.io/terms\n\nservers:\n - url: https://app.warm.io\n description: Production\n\nsecurity:\n - BearerAuth: []\n\npaths:\n /api/verify:\n get:\n operationId: verifyApiAccess\n summary: Verify API credentials\n description: |\n Validate a Warm API key or signed-in user access token against the public verification route.\n\n This endpoint is the canonical readiness check for public API clients and discovery tools.\n tags:\n - Verification\n responses:\n '200':\n description: Credentials are valid and the caller has API access\n content:\n application/json:\n schema:\n type: object\n required:\n - status\n - valid\n - auth\n properties:\n status:\n type: string\n enum: [ok]\n valid:\n type: boolean\n auth:\n type: string\n description: Auth method used to satisfy verification\n audience:\n type: string\n enum: [context, automation, oauth]\n '401':\n $ref: '#/components/responses/Unauthorized'\n '403':\n $ref: '#/components/responses/Forbidden'\n '429':\n $ref: '#/components/responses/RateLimited'\n\n /api/export:\n get:\n operationId: getDatasetExport\n summary: Get a typed dataset export\n description: |\n Fetch a canonical financial dataset export from the unified `/api/export` surface.\n\n Use `dataset=transactions` for paginated transaction history. Other datasets return\n a typed JSON object keyed by the dataset name or retained public alias.\n\n Preferred dataset names are `accounts`, `transactions`, `snapshots`, `recurring`,\n `budgets`, `goals`, `health`, `liabilities`, and `holdings`.\n tags:\n - Export\n parameters:\n - name: dataset\n in: query\n description: Dataset identifier or retained public alias\n required: true\n schema:\n type: string\n enum:\n - accounts\n - transactions\n - snapshots\n - recurring\n - budgets\n - goals\n - health\n - liabilities\n - holdings\n - name: since\n in: query\n description: ISO timestamp for incremental exports\n required: false\n schema:\n type: string\n format: date-time\n - name: last_knowledge\n in: query\n description: Legacy alias for `since`\n required: false\n schema:\n type: string\n format: date-time\n - name: limit\n in: query\n description: Maximum transactions per page when `dataset=transactions`\n required: false\n schema:\n type: integer\n minimum: 1\n maximum: 1000\n - name: cursor\n in: query\n description: Pagination token from `pagination.next_cursor` when `dataset=transactions`\n required: false\n schema:\n type: string\n - name: accountId\n in: query\n description: Optional account filter when `dataset=transactions`\n required: false\n schema:\n type: string\n - name: search\n in: query\n description: Optional merchant or description search filter when `dataset=transactions`\n required: false\n schema:\n type: string\n minLength: 1\n maxLength: 120\n responses:\n '200':\n description: Successful dataset export\n content:\n application/json:\n schema:\n type: object\n description: Dataset-shaped JSON response keyed by the requested dataset\n properties:\n generated_at:\n type: string\n format: date-time\n next_knowledge:\n type: string\n format: date-time\n nullable: true\n pagination:\n $ref: '#/components/schemas/Pagination'\n additionalProperties: true\n '400':\n description: Invalid query parameters\n '401':\n $ref: '#/components/responses/Unauthorized'\n '403':\n $ref: '#/components/responses/Forbidden'\n '429':\n $ref: '#/components/responses/RateLimited'\n\n /api/financial-context:\n get:\n operationId: getFinancialContext\n summary: Get compact financial context\n description: |\n Fetch the current compact FinancialContext artifact for the authenticated user.\n\n This response does not include transaction items. Use\n `/api/financial-context/transactions` for month-addressed transaction pages or the\n fixed 10-day latest transaction window.\n tags:\n - Export\n responses:\n '200':\n description: Compact FinancialContext artifact\n headers:\n ETag:\n $ref: '#/components/headers/ETag'\n Cache-Control:\n $ref: '#/components/headers/PrivateNoStore'\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/FinancialContext'\n '304':\n description: The caller's If-None-Match value matches the current content hash\n '401':\n $ref: '#/components/responses/Unauthorized'\n '403':\n $ref: '#/components/responses/Forbidden'\n '413':\n $ref: '#/components/responses/PayloadTooLarge'\n '429':\n $ref: '#/components/responses/RateLimited'\n\n /api/financial-context/transactions:\n get:\n operationId: getFinancialContextTransactions\n summary: Get financial-context transactions\n description: |\n Fetch one transaction month or the fixed 10-day latest transaction window from the\n current financial-context artifact.\n\n The raw API requires exactly one selector: `month=YYYY-MM` or `latest=1`.\n Bare calls are invalid on the raw API. The `@warmio/mcp` v7 `get_transactions` tool\n maps bare calls to the fixed latest window and accepts only `month` (`YYYY-MM`) or\n `latest: true`; it does not accept cursor, search, or `last_knowledge`.\n Transaction amounts use the Warm/Plaid sign convention:\n positive = expense/debit, negative = income/credit.\n\n A well-formed month inside the covered range with no matching items returns `200` with\n `count: 0` and `items: []`. Months before the earliest indexed month or after the latest\n covered month return `404`.\n tags:\n - Export\n parameters:\n - name: month\n in: query\n description: Transaction month selector in YYYY-MM format. Mutually exclusive with `latest`.\n required: false\n schema:\n type: string\n pattern: '^\\d{4}-(0[1-9]|1[0-2])$'\n example: '2026-07'\n - name: latest\n in: query\n description: Set to `1` for the fixed 10-day latest transaction window.\n required: false\n schema:\n type: string\n enum: ['1']\n responses:\n '200':\n description: Transaction month page or latest transaction window\n headers:\n ETag:\n $ref: '#/components/headers/ETag'\n Cache-Control:\n $ref: '#/components/headers/PrivateNoStore'\n content:\n application/json:\n schema:\n oneOf:\n - $ref: '#/components/schemas/TransactionMonth'\n - $ref: '#/components/schemas/LatestTransactions'\n '304':\n description: The caller's If-None-Match value matches the current content hash\n '400':\n description: Missing selectors, mutually exclusive selectors, malformed `month`, or `latest` other than `1`\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n '401':\n $ref: '#/components/responses/Unauthorized'\n '403':\n $ref: '#/components/responses/Forbidden'\n '413':\n $ref: '#/components/responses/PayloadTooLarge'\n '429':\n $ref: '#/components/responses/RateLimited'\n\n /api/financial-context/meta:\n get:\n operationId: getFinancialContextMeta\n summary: Get financial-context metadata\n description: |\n Fetch operational metadata for the current financial-context artifact, including the\n content hash used as the ETag, byte length, row counts, and freshness timestamps.\n `content_hash` is the public artifact version token; this metadata does not expose a\n public `data_version`.\n tags:\n - Export\n responses:\n '200':\n description: Financial-context metadata\n headers:\n ETag:\n $ref: '#/components/headers/ETag'\n Cache-Control:\n $ref: '#/components/headers/PrivateNoStore'\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/FinancialContextMeta'\n '304':\n description: The caller's If-None-Match value matches the current content hash\n '401':\n $ref: '#/components/responses/Unauthorized'\n '403':\n $ref: '#/components/responses/Forbidden'\n '413':\n $ref: '#/components/responses/PayloadTooLarge'\n '429':\n $ref: '#/components/responses/RateLimited'\n\n /api/automation/operations/search:\n post:\n operationId: searchOperations\n summary: Search supported automation operations\n tags: [Automation]\n security:\n - AutomationKeyAuth: []\n requestBody:\n required: false\n content:\n application/json:\n schema:\n type: object\n additionalProperties: false\n properties:\n query:\n type: string\n maxLength: 200\n responses:\n '200':\n description: Matching operations\n content:\n application/json:\n schema:\n type: object\n additionalProperties: false\n required: [operations]\n properties:\n operations:\n type: array\n items:\n $ref: '#/components/schemas/AutomationOperation'\n '401':\n $ref: '#/components/responses/Unauthorized'\n '403':\n $ref: '#/components/responses/Forbidden'\n '400':\n $ref: '#/components/responses/BadRequest'\n '429':\n $ref: '#/components/responses/RateLimited'\n '500':\n $ref: '#/components/responses/InternalError'\n\n /api/automation/operations/describe:\n post:\n operationId: describeOperation\n summary: Describe one operation and request owner approval when required\n tags: [Automation]\n security:\n - AutomationKeyAuth: []\n requestBody:\n required: true\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/OperationRequest'\n responses:\n '200':\n description: Operation schema and optional pending owner approval\n content:\n application/json:\n schema:\n type: object\n additionalProperties: false\n required: [operation]\n properties:\n operation:\n allOf:\n - $ref: '#/components/schemas/AutomationOperation'\n - type: object\n properties:\n input_schema:\n type: object\n approval:\n type: object\n additionalProperties: false\n required: [id, status, approval_url, expires_at]\n properties:\n id: { type: string, format: uuid }\n status: { type: string, enum: [pending] }\n approval_url: { type: string, format: uri }\n expires_at: { type: string, format: date-time }\n '400':\n $ref: '#/components/responses/BadRequest'\n '401':\n $ref: '#/components/responses/Unauthorized'\n '403':\n $ref: '#/components/responses/Forbidden'\n '404':\n $ref: '#/components/responses/NotFound'\n '429':\n $ref: '#/components/responses/RateLimited'\n '500':\n $ref: '#/components/responses/InternalError'\n\n /api/automation/operations/invoke:\n post:\n operationId: invokeOperation\n summary: Invoke one supported operation\n tags: [Automation]\n security:\n - AutomationKeyAuth: []\n requestBody:\n required: true\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/OperationInvokeRequest'\n responses:\n '200':\n description: Wrapped response from the invoked operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/AutomationInvocationResponse'\n '400':\n $ref: '#/components/responses/BadRequest'\n '401':\n $ref: '#/components/responses/Unauthorized'\n '403':\n $ref: '#/components/responses/Forbidden'\n '404':\n $ref: '#/components/responses/NotFound'\n '409':\n description: Owner approval is required, invalid, expired, or already used\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n '429':\n $ref: '#/components/responses/RateLimited'\n '500':\n $ref: '#/components/responses/InternalError'\n\ncomponents:\n securitySchemes:\n BearerAuth:\n type: http\n scheme: bearer\n description: 'Read/export format: `Authorization: Bearer YOUR_API_KEY_OR_ACCESS_TOKEN`'\n AutomationKeyAuth:\n type: http\n scheme: bearer\n description: 'Automation format: `Authorization: Bearer warm_auto_...`'\n\n headers:\n ETag:\n description: Quoted content hash for If-None-Match revalidation\n schema:\n type: string\n example: '\"7b6f9d4c...\"'\n PrivateNoStore:\n description: Private financial responses are not stored by browsers or shared caches\n schema:\n type: string\n example: private, no-store\n\n responses:\n BadRequest:\n description: The request body or operation input is invalid\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n Unauthorized:\n description: Missing or invalid credentials\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n Forbidden:\n description: The caller is authenticated but does not have API access\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n NotFound:\n description: The requested operation does not exist\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n InternalError:\n description: The request could not be completed safely\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n PayloadTooLarge:\n description: The response would exceed the public API response-size limit\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n RateLimited:\n description: Hourly per-credential rate limit exceeded\n headers:\n Retry-After:\n description: Seconds until the rate-limit window resets\n schema:\n type: integer\n example: 3600\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n\n schemas:\n AutomationOperation:\n type: object\n additionalProperties: false\n required: [operation_id, summary, description, method, path, risk, confirmation_required]\n properties:\n operation_id: { type: string }\n summary: { type: string }\n description: { type: string }\n method: { type: string, enum: [GET, POST, PATCH, PUT, DELETE] }\n path: { type: string }\n risk:\n type: array\n items: { type: string, enum: [read, write, destructive, external_effect] }\n confirmation_required: { type: boolean }\n OperationRequest:\n type: object\n additionalProperties: false\n required: [operation_id]\n properties:\n operation_id: { type: string }\n input:\n $ref: '#/components/schemas/OperationInput'\n OperationInvokeRequest:\n type: object\n additionalProperties: false\n required: [operation_id]\n properties:\n operation_id: { type: string }\n input:\n $ref: '#/components/schemas/OperationInput'\n approval_id:\n type: string\n format: uuid\n description: Matching owner approval required for every write operation\n OperationInput:\n type: object\n additionalProperties: false\n properties:\n params: { type: object, additionalProperties: { type: string } }\n body: { type: object, additionalProperties: true }\n AutomationInvocationResponse:\n type: object\n additionalProperties: false\n required: [body, headers, operation_id, status]\n properties:\n body: {}\n headers:\n type: object\n additionalProperties: { type: string }\n operation_id: { type: string }\n status: { type: integer, minimum: 100, maximum: 599 }\n ExportResponse:\n type: object\n required:\n - schema_version\n - generated_at\n - user_id\n - data_version\n - next_knowledge\n - accounts\n - transactions\n - snapshots\n - pagination\n properties:\n schema_version:\n type: string\n description: API schema version\n example: v1\n generated_at:\n type: string\n format: date-time\n description: Response generation timestamp\n example: '2026-01-10T15:30:00Z'\n user_id:\n type: string\n format: uuid\n description: Your user ID\n example: a1b2c3d4-e5f6-7890-abcd-ef1234567890\n data_version:\n type: integer\n description: Monotonic version number (increments on data changes)\n example: 42\n next_knowledge:\n type: string\n format: date-time\n description: Use as `last_knowledge` in next request for delta sync\n example: '2026-01-10T15:30:00Z'\n accounts:\n type: array\n items:\n $ref: '#/components/schemas/Account'\n transactions:\n type: array\n items:\n $ref: '#/components/schemas/Transaction'\n snapshots:\n type: array\n items:\n $ref: '#/components/schemas/Snapshot'\n pagination:\n $ref: '#/components/schemas/Pagination'\n\n Account:\n type: object\n required:\n - id\n - name\n - type\n - current_balance\n - iso_currency_code\n - is_active\n properties:\n id:\n type: string\n format: uuid\n description: Unique account identifier\n example: acc_8f3a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c\n account_id:\n type: string\n description: External account ID (from Plaid)\n example: plaid_acc_ABC123xyz\n name:\n type: string\n description: Display name with masked account number\n example: 'Checking ****1234'\n type:\n type: string\n enum: [depository, credit, loan, investment, brokerage, other]\n description: Account type\n example: depository\n subtype:\n type: string\n description: Specific subtype\n example: checking\n enum:\n - checking\n - savings\n - money market\n - cd\n - credit card\n - mortgage\n - student\n - auto\n - 401k\n - ira\n - brokerage\n - other\n current_balance:\n type: number\n description: Current balance (positive for assets)\n example: 5420.50\n available_balance:\n type: number\n nullable: true\n description: Available balance (may differ from current)\n example: 5320.50\n iso_currency_code:\n type: string\n description: ISO 4217 currency code\n example: USD\n mask:\n type: string\n description: Last 4 digits of account number\n example: '1234'\n is_active:\n type: boolean\n description: Whether account is actively syncing\n example: true\n created_at:\n type: string\n format: date-time\n example: '2025-06-15T10:00:00Z'\n updated_at:\n type: string\n format: date-time\n example: '2026-01-10T12:00:00Z'\n\n Transaction:\n type: object\n required:\n - id\n - account_id\n - date\n - amount\n - name\n - primary_category\n - detailed_category\n - pending\n - iso_currency_code\n properties:\n id:\n type: string\n format: uuid\n description: Unique transaction identifier\n example: txn_9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d\n transaction_id:\n type: string\n description: External transaction ID (from Plaid)\n example: plaid_txn_XYZ789abc\n account_id:\n type: string\n format: uuid\n description: Parent account ID\n example: acc_8f3a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c\n date:\n type: string\n format: date\n description: Posted date\n example: '2026-01-09'\n authorized_date:\n type: string\n format: date\n nullable: true\n description: Authorization date (if different)\n example: '2026-01-08'\n amount:\n type: number\n description: Amount (positive = expense/debit, negative = income/credit)\n example: 42.50\n name:\n type: string\n description: Raw transaction description from bank\n example: 'TRADER JOES #123 SAN FRANCISCO'\n merchant_name:\n type: string\n nullable: true\n description: Cleaned merchant name\n example: \"Trader Joe's\"\n merchant_entity_id:\n type: string\n nullable: true\n description: Unique merchant identifier\n example: eyg8o776k0QmNgVpAmaQj4WgzW9Qzo6O51gdd\n logo:\n type: string\n format: uri\n nullable: true\n description: URL to merchant logo\n example: https://plaid-merchant-logos.plaid.com/trader_joes.png\n primary_category:\n type: string\n description: High-level category\n example: FOOD_AND_DRINK\n enum:\n - INCOME\n - TRANSFER_IN\n - TRANSFER_OUT\n - LOAN_PAYMENTS\n - BANK_FEES\n - ENTERTAINMENT\n - FOOD_AND_DRINK\n - GENERAL_MERCHANDISE\n - HOME_IMPROVEMENT\n - MEDICAL\n - PERSONAL_CARE\n - GENERAL_SERVICES\n - GOVERNMENT_AND_NON_PROFIT\n - TRANSPORTATION\n - TRAVEL\n - RENT_AND_UTILITIES\n detailed_category:\n type: string\n description: Specific category\n example: FOOD_AND_DRINK_GROCERIES\n category_confidence:\n type: string\n enum: [VERY_HIGH, HIGH, MEDIUM, LOW, UNKNOWN]\n description: Category confidence level\n example: VERY_HIGH\n payment_channel:\n type: string\n enum: [in_store, online, other]\n description: How payment was made\n example: in_store\n pending:\n type: boolean\n description: Whether transaction is still pending\n example: false\n iso_currency_code:\n type: string\n description: ISO 4217 currency code\n example: USD\n location:\n $ref: '#/components/schemas/Location'\n created_at:\n type: string\n format: date-time\n example: '2026-01-09T18:30:00Z'\n\n Location:\n type: object\n nullable: true\n properties:\n city:\n type: string\n nullable: true\n example: San Francisco\n region:\n type: string\n nullable: true\n example: CA\n postal_code:\n type: string\n nullable: true\n example: '94110'\n country:\n type: string\n nullable: true\n example: US\n\n Snapshot:\n type: object\n required:\n - id\n - period_type\n - period_start\n - period_end\n - snapshot_date\n properties:\n id:\n type: string\n format: uuid\n description: Unique snapshot identifier\n example: snap_1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d\n period_type:\n type: string\n enum: [daily, weekly, monthly]\n description: Period granularity\n example: daily\n period_start:\n type: string\n format: date\n description: Period start date\n example: '2026-01-01'\n period_end:\n type: string\n format: date\n description: Period end date\n example: '2026-01-31'\n snapshot_date:\n type: string\n format: date\n description: When snapshot was taken\n example: '2026-01-10'\n income:\n type: number\n description: Total income for period\n example: 6500.00\n expenses:\n type: number\n description: Total expenses for period\n example: 4200.00\n net_cash_flow:\n type: number\n description: Income minus expenses\n example: 2300.00\n savings_rate:\n type: number\n description: Percentage saved (0.0 to 1.0)\n example: 0.35\n net_worth:\n type: number\n description: Total assets minus liabilities\n example: 45000.00\n total_cash:\n type: number\n description: Sum of depository balances\n example: 12500.00\n total_debt:\n type: number\n description: Sum of credit/loan balances\n example: 8500.00\n investment_value:\n type: number\n description: Investment account value\n example: 28000.00\n asset_value:\n type: number\n description: Other asset values\n example: 15000.00\n burn_rate:\n type: number\n description: Average daily spending\n example: 140.00\n runway_days:\n type: integer\n description: Days of expenses covered by cash\n example: 89\n safe_to_spend:\n type: number\n description: Estimated discretionary spending available\n example: 1800.00\n recurring_total:\n type: number\n description: Sum of recurring expenses\n example: 1250.00\n spending_by_category:\n type: array\n items:\n $ref: '#/components/schemas/CategorySpending'\n top_merchants:\n type: array\n items:\n $ref: '#/components/schemas/MerchantSpending'\n income_vs_last_period:\n type: number\n description: Percentage change from previous period\n example: 0.05\n spending_vs_last_period:\n type: number\n description: Percentage change from previous period\n example: -0.08\n created_at:\n type: string\n format: date-time\n updated_at:\n type: string\n format: date-time\n\n CategorySpending:\n type: object\n properties:\n category:\n type: string\n example: FOOD_AND_DRINK\n amount:\n type: number\n example: 850.00\n percentage:\n type: number\n example: 20.2\n\n MerchantSpending:\n type: object\n properties:\n merchant:\n type: string\n example: Whole Foods\n amount:\n type: number\n example: 420.00\n count:\n type: integer\n example: 8\n\n Pagination:\n type: object\n properties:\n limit:\n type: integer\n description: Transactions per page\n example: 1000\n next_cursor:\n type: string\n nullable: true\n description: Token for next page (null if no more pages)\n example: eyJkYXRlIjoiMjAyNi0wMS0wMSIsImlkIjoiYWJjMTIzIn0\n\n RecurringStream:\n type: object\n properties:\n id:\n type: string\n format: uuid\n description: Unique stream identifier\n example: cb3daddd-1f82-43ed-ba9f-60ecf8c937e3\n stream_id:\n type: string\n description: External stream ID (from Plaid)\n example: LN053MyLw9H9MQ5ybwrJim1Kj495gbsJ98aeM\n account_id:\n type: string\n description: Account ID this stream belongs to\n example: Dpnjw06KAJHYVmr5jqejimy4nE0OQJczvD8KD\n stream_type:\n type: string\n enum: [inflow, outflow]\n description: Direction of recurring payment\n example: outflow\n merchant_name:\n type: string\n description: Merchant or payee name\n example: Ting\n description:\n type: string\n description: Transaction description pattern\n example: 'TING* INV#MI-4636263'\n category:\n type: object\n properties:\n primary:\n type: string\n example: RENT_AND_UTILITIES\n detailed:\n type: string\n example: RENT_AND_UTILITIES_TELEPHONE\n confidence_level:\n type: string\n enum: [VERY_HIGH, HIGH, MEDIUM, LOW, UNKNOWN]\n frequency:\n type: string\n enum: [WEEKLY, BIWEEKLY, SEMI_MONTHLY, MONTHLY, ANNUALLY, UNKNOWN]\n description: Payment frequency\n example: MONTHLY\n average_amount:\n type: number\n description: Average transaction amount\n example: 118.98\n last_amount:\n type: number\n description: Most recent transaction amount\n example: 146.58\n is_active:\n type: boolean\n description: Whether stream is currently active\n example: true\n status:\n type: string\n enum: [MATURE, EARLY_DETECTION, TOMBSTONED]\n description: Detection status\n example: MATURE\n first_date:\n type: string\n format: date\n description: First detected transaction date\n example: '2025-07-15'\n last_date:\n type: string\n format: date\n description: Most recent transaction date\n example: '2025-09-15'\n next_date:\n type: string\n format: date\n description: Predicted next transaction date\n example: '2025-10-15'\n source:\n type: string\n enum: [plaid, user]\n description: How stream was detected\n example: plaid\n\n Error:\n type: object\n required:\n - error\n properties:\n error:\n type: string\n description: Human-readable error message\n example: Invalid API key.\n\n FinancialContext:\n type: object\n required:\n - version\n - updated_at\n - currency\n - status\n - transactions\n - recurring\n - budgets\n - goals\n - snapshots\n - liabilities\n - holdings\n - health\n properties:\n version:\n type: string\n enum: [v1]\n updated_at:\n type: string\n format: date-time\n description: Latest represented source-data freshness timestamp\n currency:\n type: string\n enum: [USD]\n status:\n $ref: '#/components/schemas/FinancialContextStatus'\n transactions:\n $ref: '#/components/schemas/TransactionIndex'\n recurring:\n type: array\n items:\n $ref: '#/components/schemas/FinancialContextRecurring'\n budgets:\n type: array\n items:\n $ref: '#/components/schemas/FinancialContextBudget'\n goals:\n type: array\n items:\n $ref: '#/components/schemas/FinancialContextGoal'\n snapshots:\n type: array\n items:\n $ref: '#/components/schemas/FinancialContextSnapshot'\n liabilities:\n type: array\n items:\n $ref: '#/components/schemas/FinancialContextLiability'\n holdings:\n type: array\n items:\n $ref: '#/components/schemas/FinancialContextHolding'\n health:\n oneOf:\n - $ref: '#/components/schemas/FinancialContextHealth'\n - type: 'null'\n\n FinancialContextStatus:\n type: object\n required:\n - position\n - accounts\n properties:\n position:\n oneOf:\n - $ref: '#/components/schemas/FinancialContextPosition'\n - type: 'null'\n accounts:\n type: array\n items:\n $ref: '#/components/schemas/FinancialContextAccount'\n\n FinancialContextPosition:\n type: object\n required:\n - date\n - net_worth\n - cash\n - debt\n - investments\n - other_assets\n - total_assets\n properties:\n date:\n type: string\n format: date\n nullable: true\n net_worth:\n type: number\n nullable: true\n cash:\n type: number\n nullable: true\n debt:\n type: number\n nullable: true\n investments:\n type: number\n nullable: true\n other_assets:\n type: number\n nullable: true\n total_assets:\n type: number\n nullable: true\n\n FinancialContextAccount:\n type: object\n required:\n - id\n - name\n - type\n - subtype\n - group\n - institution\n - mask\n - balance\n - available\n - currency\n - updated_at\n properties:\n id:\n type: string\n name:\n type: string\n type:\n type: string\n enum: [depository, credit, loan, investment, brokerage, other]\n subtype:\n type: string\n nullable: true\n group:\n type: string\n enum: [cash, debt, investments]\n nullable: true\n institution:\n type: string\n nullable: true\n mask:\n type: string\n nullable: true\n balance:\n type: number\n nullable: true\n available:\n type: number\n nullable: true\n currency:\n type: string\n nullable: true\n updated_at:\n type: string\n format: date-time\n nullable: true\n\n TransactionIndex:\n type: object\n required:\n - total\n - months\n properties:\n total:\n type: integer\n minimum: 0\n months:\n type: array\n items:\n type: object\n required:\n - month\n - count\n properties:\n month:\n type: string\n pattern: '^\\d{4}-\\d{2}$'\n count:\n type: integer\n minimum: 0\n\n TransactionMonth:\n type: object\n required:\n - month\n - start_date\n - end_date\n - count\n - items\n properties:\n month:\n type: string\n pattern: '^\\d{4}-\\d{2}$'\n start_date:\n type: string\n format: date\n end_date:\n type: string\n format: date\n count:\n type: integer\n minimum: 0\n items:\n type: array\n items:\n $ref: '#/components/schemas/FinancialContextTransaction'\n\n LatestTransactions:\n type: object\n required:\n - since\n - window_days\n - count\n - items\n properties:\n since:\n type: string\n format: date\n description: Inclusive lower bound for the latest transaction window\n window_days:\n type: integer\n enum: [10]\n count:\n type: integer\n minimum: 0\n items:\n type: array\n items:\n $ref: '#/components/schemas/FinancialContextTransaction'\n\n FinancialContextTransaction:\n type: object\n required:\n - id\n - account_id\n - date\n - amount\n - merchant\n - name\n - category\n - subcategory\n - pending\n - currency\n properties:\n id:\n type: string\n account_id:\n type: string\n nullable: true\n date:\n type: string\n format: date\n nullable: true\n amount:\n type: number\n description: Amount (positive = expense/debit, negative = income/credit)\n merchant:\n type: string\n nullable: true\n name:\n type: string\n nullable: true\n category:\n type: string\n nullable: true\n subcategory:\n type: string\n nullable: true\n pending:\n type: boolean\n nullable: true\n currency:\n type: string\n nullable: true\n\n FinancialContextRecurring:\n type: object\n required:\n - id\n - account_id\n - direction\n - frequency\n - status\n - merchant\n - amount\n - next_date\n properties:\n id:\n type: string\n account_id:\n type: string\n nullable: true\n direction:\n type: string\n enum: [inflow, outflow]\n nullable: true\n frequency:\n type: string\n enum: [WEEKLY, BIWEEKLY, MONTHLY, QUARTERLY, SEMI_ANNUALLY, ANNUALLY]\n nullable: true\n status:\n type: string\n enum: [active, inactive, dismissed]\n nullable: true\n merchant:\n type: string\n nullable: true\n amount:\n type: number\n nullable: true\n next_date:\n type: string\n format: date\n nullable: true\n\n FinancialContextBudget:\n type: object\n required:\n - id\n - name\n - type\n - period\n - status\n - amount\n - spent\n - remaining\n - used_percent\n properties:\n id:\n type: string\n name:\n type: string\n type:\n type: string\n enum: [category, merchant]\n period:\n type: string\n enum: [weekly, biweekly, monthly]\n status:\n type: string\n enum: [under, warning, over]\n amount:\n type: number\n spent:\n type: number\n remaining:\n type: number\n used_percent:\n type: number\n\n FinancialContextGoal:\n type: object\n required:\n - id\n - name\n - category\n - status\n - target\n - current\n - progress_percent\n - target_date\n properties:\n id:\n type: string\n name:\n type: string\n category:\n type: string\n status:\n type: string\n enum: [not_started, in_progress, on_track, behind, completed]\n target:\n type: number\n current:\n type: number\n progress_percent:\n type: number\n target_date:\n type: string\n format: date\n nullable: true\n\n FinancialContextSnapshot:\n type: object\n required:\n - date\n - net_worth\n - cash\n - debt\n - income\n - expenses\n - cash_flow\n - savings_rate\n - investments\n - assets\n - health_score\n properties:\n date:\n type: string\n format: date\n net_worth:\n type: number\n nullable: true\n cash:\n type: number\n nullable: true\n debt:\n type: number\n nullable: true\n income:\n type: number\n nullable: true\n expenses:\n type: number\n nullable: true\n cash_flow:\n type: number\n nullable: true\n savings_rate:\n type: number\n nullable: true\n investments:\n type: number\n nullable: true\n assets:\n type: number\n nullable: true\n health_score:\n type: number\n nullable: true\n\n FinancialContextLiability:\n type: object\n required:\n - account_id\n - type\n - balance\n - minimum_payment\n - due_date\n - interest_rate\n - rate_type\n - overdue\n properties:\n account_id:\n type: string\n nullable: true\n type:\n type: string\n enum: [credit, student, mortgage, other]\n nullable: true\n balance:\n type: number\n nullable: true\n minimum_payment:\n type: number\n nullable: true\n due_date:\n type: string\n format: date\n nullable: true\n interest_rate:\n type: number\n nullable: true\n rate_type:\n type: string\n enum: [fixed, variable]\n nullable: true\n overdue:\n type: boolean\n nullable: true\n\n FinancialContextHolding:\n type: object\n required:\n - account_id\n - symbol\n - name\n - type\n - quantity\n - value\n - cost_basis\n properties:\n account_id:\n type: string\n nullable: true\n symbol:\n type: string\n nullable: true\n name:\n type: string\n nullable: true\n type:\n type: string\n enum: [cash, derivative, equity, etf, fixed_income, mutual_fund, other]\n nullable: true\n quantity:\n type: number\n nullable: true\n value:\n type: number\n nullable: true\n cost_basis:\n type: number\n nullable: true\n\n FinancialContextHealth:\n type: object\n required:\n - score\n - label\n - level\n - summary\n - data_completeness\n - pillars\n properties:\n score:\n type: number\n label:\n type: string\n enum: [Needs Attention, Good, Strong]\n level:\n type: string\n enum: [critical, poor, fair, good, strong]\n summary:\n type: string\n data_completeness:\n type: number\n pillars:\n oneOf:\n - type: object\n required:\n - spend\n - save\n - borrow\n - build\n properties:\n spend:\n type: number\n nullable: true\n save:\n type: number\n nullable: true\n borrow:\n type: number\n nullable: true\n build:\n type: number\n nullable: true\n - type: 'null'\n\n FinancialContextMeta:\n type: object\n required:\n - version\n - user_id\n - context_id\n - generated_at\n - updated_at\n - content_hash\n - byte_length\n - counts\n properties:\n version:\n type: string\n enum: [v1]\n user_id:\n type: string\n context_id:\n type: string\n generated_at:\n type: string\n format: date-time\n updated_at:\n type: string\n format: date-time\n description: Latest represented source-data freshness timestamp\n content_hash:\n type: string\n description: Opaque artifact version token and ETag value. This is the only public artifact version token.\n byte_length:\n type: integer\n minimum: 0\n counts:\n type: object\n required:\n - accounts\n - transaction_months\n - transactions\n - snapshots\n properties:\n accounts:\n type: integer\n minimum: 0\n transaction_months:\n type: integer\n minimum: 0\n transactions:\n type: integer\n minimum: 0\n snapshots:\n type: integer\n minimum: 0\n\ntags:\n - name: Export\n description: Export financial data as structured JSON\n";
|
|
2
|
+
//# sourceMappingURL=base-openapi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-openapi.d.ts","sourceRoot":"","sources":["../../src/generated/base-openapi.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,eAAe,oy/CAAoy/C,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
// Generated by tools/tasks/generate-openapi-base.mts. Do not edit.
|
|
2
|
+
export const baseOpenApiYaml = "openapi: 3.1.0\ninfo:\n title: Warm API\n description: |\n Read your financial context or invoke supported Warm actions through a compact operation catalog.\n\n ## Authentication\n All requests use `Authorization: Bearer`. API keys are created for either read-only context\n access or automation access in Settings on paid Warm plans.\n\n Read/export routes accept `Authorization: Bearer YOUR_API_KEY_OR_ACCESS_TOKEN`.\n Automation routes require an automation key (`warm_auto_...`) and do not accept access tokens.\n\n Unauthenticated responses include `WWW-Authenticate` guidance and protected resource metadata.\n\n ## Rate Limits\n - Context keys: 200 requests per hour per key\n - Automation keys: 500 requests per hour per key\n - Rate limit headers included in authenticated responses\n - `/api/export` supports dataset-scoped delta sync with `since` and publishes edge-cache metadata headers\n version: '2.0.0'\n contact:\n name: Warm Support\n url: https://warm.io/support\n license:\n name: Proprietary\n url: https://warm.io/terms\n\nservers:\n - url: https://app.warm.io\n description: Production\n\nsecurity:\n - BearerAuth: []\n\npaths:\n /api/verify:\n get:\n operationId: verifyApiAccess\n summary: Verify API credentials\n description: |\n Validate a Warm API key or signed-in user access token against the public verification route.\n\n This endpoint is the canonical readiness check for public API clients and discovery tools.\n tags:\n - Verification\n responses:\n '200':\n description: Credentials are valid and the caller has API access\n content:\n application/json:\n schema:\n type: object\n required:\n - status\n - valid\n - auth\n properties:\n status:\n type: string\n enum: [ok]\n valid:\n type: boolean\n auth:\n type: string\n description: Auth method used to satisfy verification\n audience:\n type: string\n enum: [context, automation, oauth]\n '401':\n $ref: '#/components/responses/Unauthorized'\n '403':\n $ref: '#/components/responses/Forbidden'\n '429':\n $ref: '#/components/responses/RateLimited'\n\n /api/export:\n get:\n operationId: getDatasetExport\n summary: Get a typed dataset export\n description: |\n Fetch a canonical financial dataset export from the unified `/api/export` surface.\n\n Use `dataset=transactions` for paginated transaction history. Other datasets return\n a typed JSON object keyed by the dataset name or retained public alias.\n\n Preferred dataset names are `accounts`, `transactions`, `snapshots`, `recurring`,\n `budgets`, `goals`, `health`, `liabilities`, and `holdings`.\n tags:\n - Export\n parameters:\n - name: dataset\n in: query\n description: Dataset identifier or retained public alias\n required: true\n schema:\n type: string\n enum:\n - accounts\n - transactions\n - snapshots\n - recurring\n - budgets\n - goals\n - health\n - liabilities\n - holdings\n - name: since\n in: query\n description: ISO timestamp for incremental exports\n required: false\n schema:\n type: string\n format: date-time\n - name: last_knowledge\n in: query\n description: Legacy alias for `since`\n required: false\n schema:\n type: string\n format: date-time\n - name: limit\n in: query\n description: Maximum transactions per page when `dataset=transactions`\n required: false\n schema:\n type: integer\n minimum: 1\n maximum: 1000\n - name: cursor\n in: query\n description: Pagination token from `pagination.next_cursor` when `dataset=transactions`\n required: false\n schema:\n type: string\n - name: accountId\n in: query\n description: Optional account filter when `dataset=transactions`\n required: false\n schema:\n type: string\n - name: search\n in: query\n description: Optional merchant or description search filter when `dataset=transactions`\n required: false\n schema:\n type: string\n minLength: 1\n maxLength: 120\n responses:\n '200':\n description: Successful dataset export\n content:\n application/json:\n schema:\n type: object\n description: Dataset-shaped JSON response keyed by the requested dataset\n properties:\n generated_at:\n type: string\n format: date-time\n next_knowledge:\n type: string\n format: date-time\n nullable: true\n pagination:\n $ref: '#/components/schemas/Pagination'\n additionalProperties: true\n '400':\n description: Invalid query parameters\n '401':\n $ref: '#/components/responses/Unauthorized'\n '403':\n $ref: '#/components/responses/Forbidden'\n '429':\n $ref: '#/components/responses/RateLimited'\n\n /api/financial-context:\n get:\n operationId: getFinancialContext\n summary: Get compact financial context\n description: |\n Fetch the current compact FinancialContext artifact for the authenticated user.\n\n This response does not include transaction items. Use\n `/api/financial-context/transactions` for month-addressed transaction pages or the\n fixed 10-day latest transaction window.\n tags:\n - Export\n responses:\n '200':\n description: Compact FinancialContext artifact\n headers:\n ETag:\n $ref: '#/components/headers/ETag'\n Cache-Control:\n $ref: '#/components/headers/PrivateNoStore'\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/FinancialContext'\n '304':\n description: The caller's If-None-Match value matches the current content hash\n '401':\n $ref: '#/components/responses/Unauthorized'\n '403':\n $ref: '#/components/responses/Forbidden'\n '413':\n $ref: '#/components/responses/PayloadTooLarge'\n '429':\n $ref: '#/components/responses/RateLimited'\n\n /api/financial-context/transactions:\n get:\n operationId: getFinancialContextTransactions\n summary: Get financial-context transactions\n description: |\n Fetch one transaction month or the fixed 10-day latest transaction window from the\n current financial-context artifact.\n\n The raw API requires exactly one selector: `month=YYYY-MM` or `latest=1`.\n Bare calls are invalid on the raw API. The `@warmio/mcp` v7 `get_transactions` tool\n maps bare calls to the fixed latest window and accepts only `month` (`YYYY-MM`) or\n `latest: true`; it does not accept cursor, search, or `last_knowledge`.\n Transaction amounts use the Warm/Plaid sign convention:\n positive = expense/debit, negative = income/credit.\n\n A well-formed month inside the covered range with no matching items returns `200` with\n `count: 0` and `items: []`. Months before the earliest indexed month or after the latest\n covered month return `404`.\n tags:\n - Export\n parameters:\n - name: month\n in: query\n description: Transaction month selector in YYYY-MM format. Mutually exclusive with `latest`.\n required: false\n schema:\n type: string\n pattern: '^\\d{4}-(0[1-9]|1[0-2])$'\n example: '2026-07'\n - name: latest\n in: query\n description: Set to `1` for the fixed 10-day latest transaction window.\n required: false\n schema:\n type: string\n enum: ['1']\n responses:\n '200':\n description: Transaction month page or latest transaction window\n headers:\n ETag:\n $ref: '#/components/headers/ETag'\n Cache-Control:\n $ref: '#/components/headers/PrivateNoStore'\n content:\n application/json:\n schema:\n oneOf:\n - $ref: '#/components/schemas/TransactionMonth'\n - $ref: '#/components/schemas/LatestTransactions'\n '304':\n description: The caller's If-None-Match value matches the current content hash\n '400':\n description: Missing selectors, mutually exclusive selectors, malformed `month`, or `latest` other than `1`\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n '401':\n $ref: '#/components/responses/Unauthorized'\n '403':\n $ref: '#/components/responses/Forbidden'\n '413':\n $ref: '#/components/responses/PayloadTooLarge'\n '429':\n $ref: '#/components/responses/RateLimited'\n\n /api/financial-context/meta:\n get:\n operationId: getFinancialContextMeta\n summary: Get financial-context metadata\n description: |\n Fetch operational metadata for the current financial-context artifact, including the\n content hash used as the ETag, byte length, row counts, and freshness timestamps.\n `content_hash` is the public artifact version token; this metadata does not expose a\n public `data_version`.\n tags:\n - Export\n responses:\n '200':\n description: Financial-context metadata\n headers:\n ETag:\n $ref: '#/components/headers/ETag'\n Cache-Control:\n $ref: '#/components/headers/PrivateNoStore'\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/FinancialContextMeta'\n '304':\n description: The caller's If-None-Match value matches the current content hash\n '401':\n $ref: '#/components/responses/Unauthorized'\n '403':\n $ref: '#/components/responses/Forbidden'\n '413':\n $ref: '#/components/responses/PayloadTooLarge'\n '429':\n $ref: '#/components/responses/RateLimited'\n\n /api/automation/operations/search:\n post:\n operationId: searchOperations\n summary: Search supported automation operations\n tags: [Automation]\n security:\n - AutomationKeyAuth: []\n requestBody:\n required: false\n content:\n application/json:\n schema:\n type: object\n additionalProperties: false\n properties:\n query:\n type: string\n maxLength: 200\n responses:\n '200':\n description: Matching operations\n content:\n application/json:\n schema:\n type: object\n additionalProperties: false\n required: [operations]\n properties:\n operations:\n type: array\n items:\n $ref: '#/components/schemas/AutomationOperation'\n '401':\n $ref: '#/components/responses/Unauthorized'\n '403':\n $ref: '#/components/responses/Forbidden'\n '400':\n $ref: '#/components/responses/BadRequest'\n '429':\n $ref: '#/components/responses/RateLimited'\n '500':\n $ref: '#/components/responses/InternalError'\n\n /api/automation/operations/describe:\n post:\n operationId: describeOperation\n summary: Describe one operation and request owner approval when required\n tags: [Automation]\n security:\n - AutomationKeyAuth: []\n requestBody:\n required: true\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/OperationRequest'\n responses:\n '200':\n description: Operation schema and optional pending owner approval\n content:\n application/json:\n schema:\n type: object\n additionalProperties: false\n required: [operation]\n properties:\n operation:\n allOf:\n - $ref: '#/components/schemas/AutomationOperation'\n - type: object\n properties:\n input_schema:\n type: object\n approval:\n type: object\n additionalProperties: false\n required: [id, status, approval_url, expires_at]\n properties:\n id: { type: string, format: uuid }\n status: { type: string, enum: [pending] }\n approval_url: { type: string, format: uri }\n expires_at: { type: string, format: date-time }\n '400':\n $ref: '#/components/responses/BadRequest'\n '401':\n $ref: '#/components/responses/Unauthorized'\n '403':\n $ref: '#/components/responses/Forbidden'\n '404':\n $ref: '#/components/responses/NotFound'\n '429':\n $ref: '#/components/responses/RateLimited'\n '500':\n $ref: '#/components/responses/InternalError'\n\n /api/automation/operations/invoke:\n post:\n operationId: invokeOperation\n summary: Invoke one supported operation\n tags: [Automation]\n security:\n - AutomationKeyAuth: []\n requestBody:\n required: true\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/OperationInvokeRequest'\n responses:\n '200':\n description: Wrapped response from the invoked operation\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/AutomationInvocationResponse'\n '400':\n $ref: '#/components/responses/BadRequest'\n '401':\n $ref: '#/components/responses/Unauthorized'\n '403':\n $ref: '#/components/responses/Forbidden'\n '404':\n $ref: '#/components/responses/NotFound'\n '409':\n description: Owner approval is required, invalid, expired, or already used\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n '429':\n $ref: '#/components/responses/RateLimited'\n '500':\n $ref: '#/components/responses/InternalError'\n\ncomponents:\n securitySchemes:\n BearerAuth:\n type: http\n scheme: bearer\n description: 'Read/export format: `Authorization: Bearer YOUR_API_KEY_OR_ACCESS_TOKEN`'\n AutomationKeyAuth:\n type: http\n scheme: bearer\n description: 'Automation format: `Authorization: Bearer warm_auto_...`'\n\n headers:\n ETag:\n description: Quoted content hash for If-None-Match revalidation\n schema:\n type: string\n example: '\"7b6f9d4c...\"'\n PrivateNoStore:\n description: Private financial responses are not stored by browsers or shared caches\n schema:\n type: string\n example: private, no-store\n\n responses:\n BadRequest:\n description: The request body or operation input is invalid\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n Unauthorized:\n description: Missing or invalid credentials\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n Forbidden:\n description: The caller is authenticated but does not have API access\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n NotFound:\n description: The requested operation does not exist\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n InternalError:\n description: The request could not be completed safely\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n PayloadTooLarge:\n description: The response would exceed the public API response-size limit\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n RateLimited:\n description: Hourly per-credential rate limit exceeded\n headers:\n Retry-After:\n description: Seconds until the rate-limit window resets\n schema:\n type: integer\n example: 3600\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/Error'\n\n schemas:\n AutomationOperation:\n type: object\n additionalProperties: false\n required: [operation_id, summary, description, method, path, risk, confirmation_required]\n properties:\n operation_id: { type: string }\n summary: { type: string }\n description: { type: string }\n method: { type: string, enum: [GET, POST, PATCH, PUT, DELETE] }\n path: { type: string }\n risk:\n type: array\n items: { type: string, enum: [read, write, destructive, external_effect] }\n confirmation_required: { type: boolean }\n OperationRequest:\n type: object\n additionalProperties: false\n required: [operation_id]\n properties:\n operation_id: { type: string }\n input:\n $ref: '#/components/schemas/OperationInput'\n OperationInvokeRequest:\n type: object\n additionalProperties: false\n required: [operation_id]\n properties:\n operation_id: { type: string }\n input:\n $ref: '#/components/schemas/OperationInput'\n approval_id:\n type: string\n format: uuid\n description: Matching owner approval required for every write operation\n OperationInput:\n type: object\n additionalProperties: false\n properties:\n params: { type: object, additionalProperties: { type: string } }\n body: { type: object, additionalProperties: true }\n AutomationInvocationResponse:\n type: object\n additionalProperties: false\n required: [body, headers, operation_id, status]\n properties:\n body: {}\n headers:\n type: object\n additionalProperties: { type: string }\n operation_id: { type: string }\n status: { type: integer, minimum: 100, maximum: 599 }\n ExportResponse:\n type: object\n required:\n - schema_version\n - generated_at\n - user_id\n - data_version\n - next_knowledge\n - accounts\n - transactions\n - snapshots\n - pagination\n properties:\n schema_version:\n type: string\n description: API schema version\n example: v1\n generated_at:\n type: string\n format: date-time\n description: Response generation timestamp\n example: '2026-01-10T15:30:00Z'\n user_id:\n type: string\n format: uuid\n description: Your user ID\n example: a1b2c3d4-e5f6-7890-abcd-ef1234567890\n data_version:\n type: integer\n description: Monotonic version number (increments on data changes)\n example: 42\n next_knowledge:\n type: string\n format: date-time\n description: Use as `last_knowledge` in next request for delta sync\n example: '2026-01-10T15:30:00Z'\n accounts:\n type: array\n items:\n $ref: '#/components/schemas/Account'\n transactions:\n type: array\n items:\n $ref: '#/components/schemas/Transaction'\n snapshots:\n type: array\n items:\n $ref: '#/components/schemas/Snapshot'\n pagination:\n $ref: '#/components/schemas/Pagination'\n\n Account:\n type: object\n required:\n - id\n - name\n - type\n - current_balance\n - iso_currency_code\n - is_active\n properties:\n id:\n type: string\n format: uuid\n description: Unique account identifier\n example: acc_8f3a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c\n account_id:\n type: string\n description: External account ID (from Plaid)\n example: plaid_acc_ABC123xyz\n name:\n type: string\n description: Display name with masked account number\n example: 'Checking ****1234'\n type:\n type: string\n enum: [depository, credit, loan, investment, brokerage, other]\n description: Account type\n example: depository\n subtype:\n type: string\n description: Specific subtype\n example: checking\n enum:\n - checking\n - savings\n - money market\n - cd\n - credit card\n - mortgage\n - student\n - auto\n - 401k\n - ira\n - brokerage\n - other\n current_balance:\n type: number\n description: Current balance (positive for assets)\n example: 5420.50\n available_balance:\n type: number\n nullable: true\n description: Available balance (may differ from current)\n example: 5320.50\n iso_currency_code:\n type: string\n description: ISO 4217 currency code\n example: USD\n mask:\n type: string\n description: Last 4 digits of account number\n example: '1234'\n is_active:\n type: boolean\n description: Whether account is actively syncing\n example: true\n created_at:\n type: string\n format: date-time\n example: '2025-06-15T10:00:00Z'\n updated_at:\n type: string\n format: date-time\n example: '2026-01-10T12:00:00Z'\n\n Transaction:\n type: object\n required:\n - id\n - account_id\n - date\n - amount\n - name\n - primary_category\n - detailed_category\n - pending\n - iso_currency_code\n properties:\n id:\n type: string\n format: uuid\n description: Unique transaction identifier\n example: txn_9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d\n transaction_id:\n type: string\n description: External transaction ID (from Plaid)\n example: plaid_txn_XYZ789abc\n account_id:\n type: string\n format: uuid\n description: Parent account ID\n example: acc_8f3a2b1c-4d5e-6f7a-8b9c-0d1e2f3a4b5c\n date:\n type: string\n format: date\n description: Posted date\n example: '2026-01-09'\n authorized_date:\n type: string\n format: date\n nullable: true\n description: Authorization date (if different)\n example: '2026-01-08'\n amount:\n type: number\n description: Amount (positive = expense/debit, negative = income/credit)\n example: 42.50\n name:\n type: string\n description: Raw transaction description from bank\n example: 'TRADER JOES #123 SAN FRANCISCO'\n merchant_name:\n type: string\n nullable: true\n description: Cleaned merchant name\n example: \"Trader Joe's\"\n merchant_entity_id:\n type: string\n nullable: true\n description: Unique merchant identifier\n example: eyg8o776k0QmNgVpAmaQj4WgzW9Qzo6O51gdd\n logo:\n type: string\n format: uri\n nullable: true\n description: URL to merchant logo\n example: https://plaid-merchant-logos.plaid.com/trader_joes.png\n primary_category:\n type: string\n description: High-level category\n example: FOOD_AND_DRINK\n enum:\n - INCOME\n - TRANSFER_IN\n - TRANSFER_OUT\n - LOAN_PAYMENTS\n - BANK_FEES\n - ENTERTAINMENT\n - FOOD_AND_DRINK\n - GENERAL_MERCHANDISE\n - HOME_IMPROVEMENT\n - MEDICAL\n - PERSONAL_CARE\n - GENERAL_SERVICES\n - GOVERNMENT_AND_NON_PROFIT\n - TRANSPORTATION\n - TRAVEL\n - RENT_AND_UTILITIES\n detailed_category:\n type: string\n description: Specific category\n example: FOOD_AND_DRINK_GROCERIES\n category_confidence:\n type: string\n enum: [VERY_HIGH, HIGH, MEDIUM, LOW, UNKNOWN]\n description: Category confidence level\n example: VERY_HIGH\n payment_channel:\n type: string\n enum: [in_store, online, other]\n description: How payment was made\n example: in_store\n pending:\n type: boolean\n description: Whether transaction is still pending\n example: false\n iso_currency_code:\n type: string\n description: ISO 4217 currency code\n example: USD\n location:\n $ref: '#/components/schemas/Location'\n created_at:\n type: string\n format: date-time\n example: '2026-01-09T18:30:00Z'\n\n Location:\n type: object\n nullable: true\n properties:\n city:\n type: string\n nullable: true\n example: San Francisco\n region:\n type: string\n nullable: true\n example: CA\n postal_code:\n type: string\n nullable: true\n example: '94110'\n country:\n type: string\n nullable: true\n example: US\n\n Snapshot:\n type: object\n required:\n - id\n - period_type\n - period_start\n - period_end\n - snapshot_date\n properties:\n id:\n type: string\n format: uuid\n description: Unique snapshot identifier\n example: snap_1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d\n period_type:\n type: string\n enum: [daily, weekly, monthly]\n description: Period granularity\n example: daily\n period_start:\n type: string\n format: date\n description: Period start date\n example: '2026-01-01'\n period_end:\n type: string\n format: date\n description: Period end date\n example: '2026-01-31'\n snapshot_date:\n type: string\n format: date\n description: When snapshot was taken\n example: '2026-01-10'\n income:\n type: number\n description: Total income for period\n example: 6500.00\n expenses:\n type: number\n description: Total expenses for period\n example: 4200.00\n net_cash_flow:\n type: number\n description: Income minus expenses\n example: 2300.00\n savings_rate:\n type: number\n description: Percentage saved (0.0 to 1.0)\n example: 0.35\n net_worth:\n type: number\n description: Total assets minus liabilities\n example: 45000.00\n total_cash:\n type: number\n description: Sum of depository balances\n example: 12500.00\n total_debt:\n type: number\n description: Sum of credit/loan balances\n example: 8500.00\n investment_value:\n type: number\n description: Investment account value\n example: 28000.00\n asset_value:\n type: number\n description: Other asset values\n example: 15000.00\n burn_rate:\n type: number\n description: Average daily spending\n example: 140.00\n runway_days:\n type: integer\n description: Days of expenses covered by cash\n example: 89\n safe_to_spend:\n type: number\n description: Estimated discretionary spending available\n example: 1800.00\n recurring_total:\n type: number\n description: Sum of recurring expenses\n example: 1250.00\n spending_by_category:\n type: array\n items:\n $ref: '#/components/schemas/CategorySpending'\n top_merchants:\n type: array\n items:\n $ref: '#/components/schemas/MerchantSpending'\n income_vs_last_period:\n type: number\n description: Percentage change from previous period\n example: 0.05\n spending_vs_last_period:\n type: number\n description: Percentage change from previous period\n example: -0.08\n created_at:\n type: string\n format: date-time\n updated_at:\n type: string\n format: date-time\n\n CategorySpending:\n type: object\n properties:\n category:\n type: string\n example: FOOD_AND_DRINK\n amount:\n type: number\n example: 850.00\n percentage:\n type: number\n example: 20.2\n\n MerchantSpending:\n type: object\n properties:\n merchant:\n type: string\n example: Whole Foods\n amount:\n type: number\n example: 420.00\n count:\n type: integer\n example: 8\n\n Pagination:\n type: object\n properties:\n limit:\n type: integer\n description: Transactions per page\n example: 1000\n next_cursor:\n type: string\n nullable: true\n description: Token for next page (null if no more pages)\n example: eyJkYXRlIjoiMjAyNi0wMS0wMSIsImlkIjoiYWJjMTIzIn0\n\n RecurringStream:\n type: object\n properties:\n id:\n type: string\n format: uuid\n description: Unique stream identifier\n example: cb3daddd-1f82-43ed-ba9f-60ecf8c937e3\n stream_id:\n type: string\n description: External stream ID (from Plaid)\n example: LN053MyLw9H9MQ5ybwrJim1Kj495gbsJ98aeM\n account_id:\n type: string\n description: Account ID this stream belongs to\n example: Dpnjw06KAJHYVmr5jqejimy4nE0OQJczvD8KD\n stream_type:\n type: string\n enum: [inflow, outflow]\n description: Direction of recurring payment\n example: outflow\n merchant_name:\n type: string\n description: Merchant or payee name\n example: Ting\n description:\n type: string\n description: Transaction description pattern\n example: 'TING* INV#MI-4636263'\n category:\n type: object\n properties:\n primary:\n type: string\n example: RENT_AND_UTILITIES\n detailed:\n type: string\n example: RENT_AND_UTILITIES_TELEPHONE\n confidence_level:\n type: string\n enum: [VERY_HIGH, HIGH, MEDIUM, LOW, UNKNOWN]\n frequency:\n type: string\n enum: [WEEKLY, BIWEEKLY, SEMI_MONTHLY, MONTHLY, ANNUALLY, UNKNOWN]\n description: Payment frequency\n example: MONTHLY\n average_amount:\n type: number\n description: Average transaction amount\n example: 118.98\n last_amount:\n type: number\n description: Most recent transaction amount\n example: 146.58\n is_active:\n type: boolean\n description: Whether stream is currently active\n example: true\n status:\n type: string\n enum: [MATURE, EARLY_DETECTION, TOMBSTONED]\n description: Detection status\n example: MATURE\n first_date:\n type: string\n format: date\n description: First detected transaction date\n example: '2025-07-15'\n last_date:\n type: string\n format: date\n description: Most recent transaction date\n example: '2025-09-15'\n next_date:\n type: string\n format: date\n description: Predicted next transaction date\n example: '2025-10-15'\n source:\n type: string\n enum: [plaid, user]\n description: How stream was detected\n example: plaid\n\n Error:\n type: object\n required:\n - error\n properties:\n error:\n type: string\n description: Human-readable error message\n example: Invalid API key.\n\n FinancialContext:\n type: object\n required:\n - version\n - updated_at\n - currency\n - status\n - transactions\n - recurring\n - budgets\n - goals\n - snapshots\n - liabilities\n - holdings\n - health\n properties:\n version:\n type: string\n enum: [v1]\n updated_at:\n type: string\n format: date-time\n description: Latest represented source-data freshness timestamp\n currency:\n type: string\n enum: [USD]\n status:\n $ref: '#/components/schemas/FinancialContextStatus'\n transactions:\n $ref: '#/components/schemas/TransactionIndex'\n recurring:\n type: array\n items:\n $ref: '#/components/schemas/FinancialContextRecurring'\n budgets:\n type: array\n items:\n $ref: '#/components/schemas/FinancialContextBudget'\n goals:\n type: array\n items:\n $ref: '#/components/schemas/FinancialContextGoal'\n snapshots:\n type: array\n items:\n $ref: '#/components/schemas/FinancialContextSnapshot'\n liabilities:\n type: array\n items:\n $ref: '#/components/schemas/FinancialContextLiability'\n holdings:\n type: array\n items:\n $ref: '#/components/schemas/FinancialContextHolding'\n health:\n oneOf:\n - $ref: '#/components/schemas/FinancialContextHealth'\n - type: 'null'\n\n FinancialContextStatus:\n type: object\n required:\n - position\n - accounts\n properties:\n position:\n oneOf:\n - $ref: '#/components/schemas/FinancialContextPosition'\n - type: 'null'\n accounts:\n type: array\n items:\n $ref: '#/components/schemas/FinancialContextAccount'\n\n FinancialContextPosition:\n type: object\n required:\n - date\n - net_worth\n - cash\n - debt\n - investments\n - other_assets\n - total_assets\n properties:\n date:\n type: string\n format: date\n nullable: true\n net_worth:\n type: number\n nullable: true\n cash:\n type: number\n nullable: true\n debt:\n type: number\n nullable: true\n investments:\n type: number\n nullable: true\n other_assets:\n type: number\n nullable: true\n total_assets:\n type: number\n nullable: true\n\n FinancialContextAccount:\n type: object\n required:\n - id\n - name\n - type\n - subtype\n - group\n - institution\n - mask\n - balance\n - available\n - currency\n - updated_at\n properties:\n id:\n type: string\n name:\n type: string\n type:\n type: string\n enum: [depository, credit, loan, investment, brokerage, other]\n subtype:\n type: string\n nullable: true\n group:\n type: string\n enum: [cash, debt, investments]\n nullable: true\n institution:\n type: string\n nullable: true\n mask:\n type: string\n nullable: true\n balance:\n type: number\n nullable: true\n available:\n type: number\n nullable: true\n currency:\n type: string\n nullable: true\n updated_at:\n type: string\n format: date-time\n nullable: true\n\n TransactionIndex:\n type: object\n required:\n - total\n - months\n properties:\n total:\n type: integer\n minimum: 0\n months:\n type: array\n items:\n type: object\n required:\n - month\n - count\n properties:\n month:\n type: string\n pattern: '^\\d{4}-\\d{2}$'\n count:\n type: integer\n minimum: 0\n\n TransactionMonth:\n type: object\n required:\n - month\n - start_date\n - end_date\n - count\n - items\n properties:\n month:\n type: string\n pattern: '^\\d{4}-\\d{2}$'\n start_date:\n type: string\n format: date\n end_date:\n type: string\n format: date\n count:\n type: integer\n minimum: 0\n items:\n type: array\n items:\n $ref: '#/components/schemas/FinancialContextTransaction'\n\n LatestTransactions:\n type: object\n required:\n - since\n - window_days\n - count\n - items\n properties:\n since:\n type: string\n format: date\n description: Inclusive lower bound for the latest transaction window\n window_days:\n type: integer\n enum: [10]\n count:\n type: integer\n minimum: 0\n items:\n type: array\n items:\n $ref: '#/components/schemas/FinancialContextTransaction'\n\n FinancialContextTransaction:\n type: object\n required:\n - id\n - account_id\n - date\n - amount\n - merchant\n - name\n - category\n - subcategory\n - pending\n - currency\n properties:\n id:\n type: string\n account_id:\n type: string\n nullable: true\n date:\n type: string\n format: date\n nullable: true\n amount:\n type: number\n description: Amount (positive = expense/debit, negative = income/credit)\n merchant:\n type: string\n nullable: true\n name:\n type: string\n nullable: true\n category:\n type: string\n nullable: true\n subcategory:\n type: string\n nullable: true\n pending:\n type: boolean\n nullable: true\n currency:\n type: string\n nullable: true\n\n FinancialContextRecurring:\n type: object\n required:\n - id\n - account_id\n - direction\n - frequency\n - status\n - merchant\n - amount\n - next_date\n properties:\n id:\n type: string\n account_id:\n type: string\n nullable: true\n direction:\n type: string\n enum: [inflow, outflow]\n nullable: true\n frequency:\n type: string\n enum: [WEEKLY, BIWEEKLY, MONTHLY, QUARTERLY, SEMI_ANNUALLY, ANNUALLY]\n nullable: true\n status:\n type: string\n enum: [active, inactive, dismissed]\n nullable: true\n merchant:\n type: string\n nullable: true\n amount:\n type: number\n nullable: true\n next_date:\n type: string\n format: date\n nullable: true\n\n FinancialContextBudget:\n type: object\n required:\n - id\n - name\n - type\n - period\n - status\n - amount\n - spent\n - remaining\n - used_percent\n properties:\n id:\n type: string\n name:\n type: string\n type:\n type: string\n enum: [category, merchant]\n period:\n type: string\n enum: [weekly, biweekly, monthly]\n status:\n type: string\n enum: [under, warning, over]\n amount:\n type: number\n spent:\n type: number\n remaining:\n type: number\n used_percent:\n type: number\n\n FinancialContextGoal:\n type: object\n required:\n - id\n - name\n - category\n - status\n - target\n - current\n - progress_percent\n - target_date\n properties:\n id:\n type: string\n name:\n type: string\n category:\n type: string\n status:\n type: string\n enum: [not_started, in_progress, on_track, behind, completed]\n target:\n type: number\n current:\n type: number\n progress_percent:\n type: number\n target_date:\n type: string\n format: date\n nullable: true\n\n FinancialContextSnapshot:\n type: object\n required:\n - date\n - net_worth\n - cash\n - debt\n - income\n - expenses\n - cash_flow\n - savings_rate\n - investments\n - assets\n - health_score\n properties:\n date:\n type: string\n format: date\n net_worth:\n type: number\n nullable: true\n cash:\n type: number\n nullable: true\n debt:\n type: number\n nullable: true\n income:\n type: number\n nullable: true\n expenses:\n type: number\n nullable: true\n cash_flow:\n type: number\n nullable: true\n savings_rate:\n type: number\n nullable: true\n investments:\n type: number\n nullable: true\n assets:\n type: number\n nullable: true\n health_score:\n type: number\n nullable: true\n\n FinancialContextLiability:\n type: object\n required:\n - account_id\n - type\n - balance\n - minimum_payment\n - due_date\n - interest_rate\n - rate_type\n - overdue\n properties:\n account_id:\n type: string\n nullable: true\n type:\n type: string\n enum: [credit, student, mortgage, other]\n nullable: true\n balance:\n type: number\n nullable: true\n minimum_payment:\n type: number\n nullable: true\n due_date:\n type: string\n format: date\n nullable: true\n interest_rate:\n type: number\n nullable: true\n rate_type:\n type: string\n enum: [fixed, variable]\n nullable: true\n overdue:\n type: boolean\n nullable: true\n\n FinancialContextHolding:\n type: object\n required:\n - account_id\n - symbol\n - name\n - type\n - quantity\n - value\n - cost_basis\n properties:\n account_id:\n type: string\n nullable: true\n symbol:\n type: string\n nullable: true\n name:\n type: string\n nullable: true\n type:\n type: string\n enum: [cash, derivative, equity, etf, fixed_income, mutual_fund, other]\n nullable: true\n quantity:\n type: number\n nullable: true\n value:\n type: number\n nullable: true\n cost_basis:\n type: number\n nullable: true\n\n FinancialContextHealth:\n type: object\n required:\n - score\n - label\n - level\n - summary\n - data_completeness\n - pillars\n properties:\n score:\n type: number\n label:\n type: string\n enum: [Needs Attention, Good, Strong]\n level:\n type: string\n enum: [critical, poor, fair, good, strong]\n summary:\n type: string\n data_completeness:\n type: number\n pillars:\n oneOf:\n - type: object\n required:\n - spend\n - save\n - borrow\n - build\n properties:\n spend:\n type: number\n nullable: true\n save:\n type: number\n nullable: true\n borrow:\n type: number\n nullable: true\n build:\n type: number\n nullable: true\n - type: 'null'\n\n FinancialContextMeta:\n type: object\n required:\n - version\n - user_id\n - context_id\n - generated_at\n - updated_at\n - content_hash\n - byte_length\n - counts\n properties:\n version:\n type: string\n enum: [v1]\n user_id:\n type: string\n context_id:\n type: string\n generated_at:\n type: string\n format: date-time\n updated_at:\n type: string\n format: date-time\n description: Latest represented source-data freshness timestamp\n content_hash:\n type: string\n description: Opaque artifact version token and ETag value. This is the only public artifact version token.\n byte_length:\n type: integer\n minimum: 0\n counts:\n type: object\n required:\n - accounts\n - transaction_months\n - transactions\n - snapshots\n properties:\n accounts:\n type: integer\n minimum: 0\n transaction_months:\n type: integer\n minimum: 0\n transactions:\n type: integer\n minimum: 0\n snapshots:\n type: integer\n minimum: 0\n\ntags:\n - name: Export\n description: Export financial data as structured JSON\n";
|
|
3
|
+
//# sourceMappingURL=base-openapi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-openapi.js","sourceRoot":"","sources":["../../src/generated/base-openapi.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,MAAM,CAAC,MAAM,eAAe,GAAG,iy/CAAiy/C,CAAC"}
|