Creates an account Synci does not sync from a provider, under the user’s “Manual accounts” connection.
A LOAN: give it today’s balance, the rate and the fee, and either the bank account that pays it (its
matched payments then post the payment, interest and fee rows and keep the balance current) or a fixed
payment schedule. The account carries an OPENING row dated balance_date.
A BANK account (cash_account_type CACC, SVGS or CARD): a checking, savings or card account the user
fills from statement files through the import endpoints. Its signed balance today is optional; when
absent the balance stays unknown until the first import with a closing balance or a checkpoint.
An optional institution_name (the bank or lender, as the user wants it shown) groups manual accounts in
the dashboard; it is also editable through the account update endpoint.
The plan feature manual_accounts_max caps how many a user may hold (Basic one, Pro and above
unlimited). One more than that is a 403 with feature: manual_accounts_max, current and limit.
Today's balance as the bank shows it. LOAN: the amount owed, entered positive and stored negative. BANK: signed (a card's debt is negative), or null when unknown until the first import or checkpoint.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Synci API","description":"Fetch, transform, and transfer banking and financial data with the Synci API.","colors":{"primary":"#202020","light":"#65cfa0","dark":"#202020"},"logo":{"light":"https://mintcdn.com/synci/6HoxVjb_wmNxVtbF/logo/light.svg?fit=max\u0026auto=format\u0026n=6HoxVjb_wmNxVtbF\u0026q=85\u0026s=0d2b9ee1337fd0bec1fe8a9e9fccec80","dark":"https://mintcdn.com/synci/6HoxVjb_wmNxVtbF/logo/dark.svg?fit=max\u0026auto=format\u0026n=6HoxVjb_wmNxVtbF\u0026q=85\u0026s=59cf18a61b2bc59cf0bfc4713f0611ae","href":"https://synci.io"},"favicon":"https://mintcdn.com/synci/6HoxVjb_wmNxVtbF/favicon.svg?fit=max\u0026auto=format\u0026n=6HoxVjb_wmNxVtbF\u0026q=85\u0026s=feecb7ee405b94d707a26995dd7b7442","api":{"params":{"expanded":"closed"},"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl","javascript","python","php","go"]}},"background":{"color":{"light":"#f7f7f6","dark":"#1c1b19"}},"navbar":{"links":[{"href":"https://help.synci.io","label":"Help center"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.synci.io"}},"footer":{"socials":{"website":"https://synci.io","github":"https://github.com/synciio","bluesky":"https://bsky.app/profile/synci.io","reddit":"https://www.reddit.com/r/synci"},"links":[{"header":"Product","items":[{"label":"Synci","href":"https://synci.io"},{"label":"Dashboard","href":"https://app.synci.io"},{"label":"Help center","href":"https://help.synci.io"}]},{"header":"Developers","items":[{"label":"Authentication","href":"/guides/authentication"},{"label":"Building OAuth apps","href":"/guides/oauth"},{"label":"Webhooks","href":"/guides/webhooks"}]}]},"search":{"prompt":"Search the Synci API docs"},"seo":{"indexing":"navigable"},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","codeblocks":"dark","latex":false},"contextual":{"options":["copy","view","chatgpt","claude","mcp","cursor","vscode","download-spec"],"display":"header"},"navigation":{"global":{"anchors":[{"anchor":"Help center","icon":"life-buoy","href":"https://help.synci.io"},{"anchor":"Dashboard","icon":"layout-dashboard","href":"https://app.synci.io"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"synci","hasAudioNarration":false,"actualSubdomain":"synci","customDomains":["docs.synci.io"],"gitSource":{"type":"github","owner":"matiastonning","repo":"synci-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aeba0587d81581225f1e596","collectionId":"087f8e1d-ebef-4eaa-beea-44378417faf5","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aeba0587d81581225f1e596"},"feedback":{"thumbs":true,"agentFeedback":true},"entitlements":{},"buildId":"6aeba0587d81581225f1e596","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"API reference","count":155},{"language":"default","tag":"Destinations","count":58},{"language":"default","tag":"Rules","count":36},{"language":"default","tag":"Finance","count":30},{"language":"default","tag":"Endpoints","count":24},{"language":"default","tag":"Accounts","count":20},{"language":"default","tag":"Managed Users API","count":17},{"language":"default","tag":"YNAB","count":14},{"language":"default","tag":"Google Sheets","count":13},{"language":"default","tag":"Notion","count":13}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"privacy":{"consentBanner":{"enabled":true}},"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".dark{--primary-dark: 101 207 160}.dark #topbar-cta-button .text-white,.dark #topbar-cta-button [class*=\"text-white\"]{color:#183324}[role=\"tooltip\"]{background-color:#272a28!important;color:#f7f7f6!important;border-color:transparent!important;border-radius:8px!important}.dark [role=\"tooltip\"]{background-color:#f1efea!important;color:#1c1b19!important}h1{letter-spacing:-0.035em}h2,h3{letter-spacing:-0.02em}"}],"page":{"pagePath":"api-reference/loans/create-a-manual-account","slug":"/api-reference/loans/create-a-manual-account","pageMetadata":{"title":"Create a manual account","description":"Creates an account Synci does not sync from a provider, under the user's \"Manual accounts\" connection.\n\nA `LOAN`: give it today's balance, the rate and the fee, and either the bank account that pays it (its\nmatched payments then post the payment, interest and fee rows and keep the balance current) or a fixed\npayment schedule. The account carries an `OPENING` row dated `balance_date`.\n\nA `BANK` account (`cash_account_type` CACC, SVGS or CARD): a checking, savings or card account the user\nfills from statement files through the import endpoints. Its signed `balance` today is optional; when\nabsent the balance stays unknown until the first import with a closing balance or a checkpoint.\n\nAn optional `institution_name` (the bank or lender, as the user wants it shown) groups manual accounts in\nthe dashboard; it is also editable through the account update endpoint.\n\nThe plan feature `manual_accounts_max` caps how many a user may hold (Basic one, Pro and above\nunlimited). One more than that is a 403 with `feature: manual_accounts_max`, `current` and `limit`.","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /finance/accounts/manual","href":"/api-reference/loans/create-a-manual-account","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Creates an account Synci does not sync from a provider, under the user’s “Manual accounts” connection.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A \", _jsx(_components.code, {\n children: \"LOAN\"\n }), \": give it today’s balance, the rate and the fee, and either the bank account that pays it (its\\nmatched payments then post the payment, interest and fee rows and keep the balance current) or a fixed\\npayment schedule. The account carries an \", _jsx(_components.code, {\n children: \"OPENING\"\n }), \" row dated \", _jsx(_components.code, {\n children: \"balance_date\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"A \", _jsx(_components.code, {\n children: \"BANK\"\n }), \" account (\", _jsx(_components.code, {\n children: \"cash_account_type\"\n }), \" CACC, SVGS or CARD): a checking, savings or card account the user\\nfills from statement files through the import endpoints. Its signed \", _jsx(_components.code, {\n children: \"balance\"\n }), \" today is optional; when\\nabsent the balance stays unknown until the first import with a closing balance or a checkpoint.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"An optional \", _jsx(_components.code, {\n children: \"institution_name\"\n }), \" (the bank or lender, as the user wants it shown) groups manual accounts in\\nthe dashboard; it is also editable through the account update endpoint.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The plan feature \", _jsx(_components.code, {\n children: \"manual_accounts_max\"\n }), \" caps how many a user may hold (Basic one, Pro and above\\nunlimited). One more than that is a 403 with \", _jsx(_components.code, {\n children: \"feature: manual_accounts_max\"\n }), \", \", _jsx(_components.code, {\n children: \"current\"\n }), \" and \", _jsx(_components.code, {\n children: \"limit\"\n }), \".\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"codeStyling":"dark","config":{},"pageMetadata":{"title":"Create a manual account","description":"Creates an account Synci does not sync from a provider, under the user's \"Manual accounts\" connection.\n\nA `LOAN`: give it today's balance, the rate and the fee, and either the bank account that pays it (its\nmatched payments then post the payment, interest and fee rows and keep the balance current) or a fixed\npayment schedule. The account carries an `OPENING` row dated `balance_date`.\n\nA `BANK` account (`cash_account_type` CACC, SVGS or CARD): a checking, savings or card account the user\nfills from statement files through the import endpoints. Its signed `balance` today is optional; when\nabsent the balance stays unknown until the first import with a closing balance or a checkpoint.\n\nAn optional `institution_name` (the bank or lender, as the user wants it shown) groups manual accounts in\nthe dashboard; it is also editable through the account update endpoint.\n\nThe plan feature `manual_accounts_max` caps how many a user may hold (Basic one, Pro and above\nunlimited). One more than that is a 403 with `feature: manual_accounts_max`, `current` and `limit`.","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /finance/accounts/manual","href":"/api-reference/loans/create-a-manual-account","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"financial.accounts.manual.store","description":"Creates an account Synci does not sync from a provider, under the user's \"Manual accounts\" connection.\n\nA `LOAN`: give it today's balance, the rate and the fee, and either the bank account that pays it (its\nmatched payments then post the payment, interest and fee rows and keep the balance current) or a fixed\npayment schedule. The account carries an `OPENING` row dated `balance_date`.\n\nA `BANK` account (`cash_account_type` CACC, SVGS or CARD): a checking, savings or card account the user\nfills from statement files through the import endpoints. Its signed `balance` today is optional; when\nabsent the balance stays unknown until the first import with a closing balance or a checkpoint.\n\nAn optional `institution_name` (the bank or lender, as the user wants it shown) groups manual accounts in\nthe dashboard; it is also editable through the account update endpoint.\n\nThe plan feature `manual_accounts_max` caps how many a user may hold (Basic one, Pro and above\nunlimited). One more than that is a 403 with `feature: manual_accounts_max`, `current` and `limit`.","summary":"Create a manual account","tags":["Loans"],"requestBody":"c6765f17-d533-40c3-a77f-ef7e4bad382d","responses":{"201":"3defad09-38d9-48dc-a693-0c52509f916f","401":"d9529bd1-8f4e-4623-a21f-dc0d8589380a","403":"6700b816-defb-4583-85da-0f8f1c3b7b29","422":"eb986094-7e9c-4ae0-90a9-edc095364c17"},"method":"post","type":"path","servers":["2f1b3b51-ec47-4944-8596-a27703622525"],"security":["dc81c440-001e-43f7-aecb-e77be972661b","dedb45e1-c15a-47c7-8b7a-0b978bddcdb8"],"path":"/finance/accounts/manual","baseUrlOptions":["https://api.synci.io/api/v1"],"title":"Create a manual account","codeSamples":[],"requestExampleLanguages":["bash","javascript","python","php","go"],"requiredOnlyExamples":true,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"account_category":{"type":"string","description":"The kind of manual account: `LOAN` (modelled from its terms) or `BANK` (a checking, savings or card account filled from statement files).","enum":["LOAN","BANK"],"isRequired":true,"uniqueKey":"account_category","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Name of the account as the user wants to see it.","maxLength":100,"isRequired":true,"uniqueKey":"name","typeLabel":"string"},"currency":{"type":"string","description":"ISO 4217 currency code.","pattern":"^[A-Za-z]{3}$","minLength":3,"maxLength":3,"isRequired":true,"uniqueKey":"currency","typeLabel":"string"},"cash_account_type":{"oneOf":[{"type":"string","description":"BANK only: `CACC` (checking), `SVGS` (savings) or `CARD` (card).","enum":["CACC","SVGS","CARD",null],"uniqueKey":"cash_account_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"BANK only: `CACC` (checking), `SVGS` (savings) or `CARD` (card).","enum":["CACC","SVGS","CARD",null],"uniqueKey":"cash_account_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"cash_account_type","typeLabel":"enum\u003cstring> | null"},"institution_name":{"oneOf":[{"type":"string","description":"The lender, as the user wants it shown (\"Lånekassen\"). Groups manual accounts in the dashboard; blank clears it.","maxLength":100,"uniqueKey":"institution_name.oneOf.0","typeLabel":"string"},{"type":"null","description":"The lender, as the user wants it shown (\"Lånekassen\"). Groups manual accounts in the dashboard; blank clears it.","maxLength":100,"uniqueKey":"institution_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"institution_name","typeLabel":"string | null"},"balance":{"oneOf":[{"type":"number","description":"Today's balance as the bank shows it. LOAN: the amount owed, entered positive and stored negative. BANK: signed (a card's debt is negative), or null when unknown until the first import or checkpoint.","minimum":0,"uniqueKey":"balance.oneOf.0","typeLabel":"number"},{"type":"null","description":"Today's balance as the bank shows it. LOAN: the amount owed, entered positive and stored negative. BANK: signed (a card's debt is negative), or null when unknown until the first import or checkpoint.","minimum":0,"uniqueKey":"balance.oneOf.1","typeLabel":"null"}],"uniqueKey":"balance","typeLabel":"number | null"},"balance_date":{"oneOf":[{"type":"string","format":"date-time","description":"The date that balance was true. Defaults to today; never in the future. Needs a balance.","uniqueKey":"balance_date.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"The date that balance was true. Defaults to today; never in the future. Needs a balance.","uniqueKey":"balance_date.oneOf.1","typeLabel":"null"}],"uniqueKey":"balance_date","typeLabel":"string\u003cdate-time> | null"},"loan":{"type":"object","description":"The loan terms. Required for a LOAN account, not accepted on a BANK account.","properties":{"kind":{"type":"string","description":"MORTGAGE, STUDENT, AUTO, PERSONAL or OTHER.","enum":["MORTGAGE","STUDENT","AUTO","PERSONAL","OTHER"],"title":"LoanKindEnum","uniqueKey":"loan.kind","typeLabel":"enum\u003cstring>"},"repayment_type":{"oneOf":[{"type":"string","title":"LoanRepaymentTypeEnum","description":"ANNUITY (default), SERIAL or INTEREST_ONLY.","enum":["ANNUITY","SERIAL","INTEREST_ONLY"],"uniqueKey":"loan.repayment_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"loan.repayment_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"loan.repayment_type","typeLabel":"enum\u003cstring> | null"},"annual_rate":{"type":"number","description":"Annual interest rate in percent, 0 to 100.","minimum":0,"maximum":100,"uniqueKey":"loan.annual_rate","typeLabel":"number"},"fee_per_payment":{"oneOf":[{"type":"number","description":"Fixed fee charged with every regular payment. Defaults to 0.","minimum":0,"uniqueKey":"loan.fee_per_payment.oneOf.0","typeLabel":"number"},{"type":"null","description":"Fixed fee charged with every regular payment. Defaults to 0.","minimum":0,"uniqueKey":"loan.fee_per_payment.oneOf.1","typeLabel":"null"}],"uniqueKey":"loan.fee_per_payment","typeLabel":"number | null"},"day_count":{"oneOf":[{"type":"string","title":"LoanDayCountEnum","description":"ACT_365 (default), ACT_360 or THIRTY_360.","enum":["ACT_365","ACT_360","THIRTY_360"],"uniqueKey":"loan.day_count.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","uniqueKey":"loan.day_count.oneOf.1","typeLabel":"null"}],"uniqueKey":"loan.day_count","typeLabel":"enum\u003cstring> | null"},"original_amount":{"oneOf":[{"type":"number","description":"The amount originally borrowed. Display only.","minimum":0,"uniqueKey":"loan.original_amount.oneOf.0","typeLabel":"number"},{"type":"null","description":"The amount originally borrowed. Display only.","minimum":0,"uniqueKey":"loan.original_amount.oneOf.1","typeLabel":"null"}],"uniqueKey":"loan.original_amount","typeLabel":"number | null"},"start_date":{"oneOf":[{"type":"string","format":"date-time","description":"When the loan started. Display only.","uniqueKey":"loan.start_date.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","format":"date-time","description":"When the loan started. Display only.","uniqueKey":"loan.start_date.oneOf.1","typeLabel":"null"}],"uniqueKey":"loan.start_date","typeLabel":"string\u003cdate-time> | null"},"term_months":{"oneOf":[{"type":"integer","description":"The agreed term in months. Display only.","minimum":1,"maximum":600,"uniqueKey":"loan.term_months.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The agreed term in months. Display only.","minimum":1,"maximum":600,"uniqueKey":"loan.term_months.oneOf.1","typeLabel":"null"}],"uniqueKey":"loan.term_months","typeLabel":"integer | null"},"paying_financial_account_id":{"oneOf":[{"type":"integer","description":"The caller's own bank account that pays the loan. Mutually exclusive with `loan.schedule`.","uniqueKey":"loan.paying_financial_account_id.oneOf.0","typeLabel":"integer"},{"type":"null","description":"The caller's own bank account that pays the loan. Mutually exclusive with `loan.schedule`.","uniqueKey":"loan.paying_financial_account_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"loan.paying_financial_account_id","typeLabel":"integer | null"},"schedule":{"oneOf":[{"type":"object","description":"Schedule mode, when no connected account pays the loan: the amount and day of month to post.","properties":{"amount":{"type":"number","uniqueKey":"loan.schedule.oneOf.0.amount","typeLabel":"number"},"day_of_month":{"type":"integer","minimum":1,"maximum":31,"uniqueKey":"loan.schedule.oneOf.0.day_of_month","typeLabel":"integer"}},"uniqueKey":"loan.schedule.oneOf.0","typeLabel":"object"},{"type":"null","description":"Schedule mode, when no connected account pays the loan: the amount and day of month to post.","properties":{"amount":{"type":"number"},"day_of_month":{"type":"integer","minimum":1,"maximum":31}},"uniqueKey":"loan.schedule.oneOf.1","typeLabel":"null"}],"uniqueKey":"loan.schedule","typeLabel":"object | null"}},"uniqueKey":"loan","typeLabel":"object"}},"required":["account_category","name","currency"],"title":"CreateManualFinancialAccountRequest","uniqueKey":"","typeLabel":"CreateManualFinancialAccountRequest · object"},"examples":{"Example":{"title":"Example","value":{"name":"\u003cstring>","currency":"\u003cstring>","institution_name":"\u003cstring>","balance":1,"balance_date":"2023-11-07T05:31:56Z","loan":{"annual_rate":50,"fee_per_payment":1,"original_amount":1,"start_date":"2023-11-07T05:31:56Z","term_months":300,"paying_financial_account_id":123,"schedule":{"amount":123,"day_of_month":16}}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"3defad09-38d9-48dc-a693-0c52509f916f":{"description":"","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","const":"Manual account created.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"data":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.id","typeLabel":"string"},"enabled":{"type":"string","isRequired":true,"uniqueKey":"data.enabled","typeLabel":"string"},"live":{"type":"string","description":"Whether the account is in use: it AND its connection are enabled. A disabled connection keeps each\naccount's own `enabled` as the user set it, but none of its accounts sync until it is enabled again.","isRequired":true,"uniqueKey":"data.live","typeLabel":"string"},"integrator":{"type":"string","description":"Provider that populates this account (GOCARDLESS / AKAHU / SNAPTRADE).","isRequired":true,"uniqueKey":"data.integrator","typeLabel":"string"},"account_category":{"oneOf":[{"type":"string","description":"High-level kind of account: BANK (checking/savings, provided by\nbanking providers), INVESTMENT (brokerage), DEPOSIT (cash\nsub-account at a broker), LOC (line of credit), LOAN (a manual\nloan Synci models from its terms). Determines which fields are\npopulated on the account.","isRequired":true,"uniqueKey":"data.account_category.oneOf.0","typeLabel":"string"},{"type":"null","description":"High-level kind of account: BANK (checking/savings, provided by\nbanking providers), INVESTMENT (brokerage), DEPOSIT (cash\nsub-account at a broker), LOC (line of credit), LOAN (a manual\nloan Synci models from its terms). Determines which fields are\npopulated on the account.","isRequired":true,"uniqueKey":"data.account_category.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.account_category","typeLabel":"string | null"},"raw_type":{"type":"string","description":"Provider's free-form sub-type label (SnapTrade only). Examples:\n\"Roth IRA\", \"TFSA\", \"Cash\". Null for bank accounts.","isRequired":true,"uniqueKey":"data.raw_type","typeLabel":"string"},"cash_balance":{"oneOf":[{"type":"object","description":"Uninvested cash held at the broker, for INVESTMENT accounts.\nNull for bank accounts.","properties":{"amount":{"type":"string","isRequired":true,"uniqueKey":"data.cash_balance.oneOf.0.amount","typeLabel":"string"},"currency":{"type":"string","isRequired":true,"uniqueKey":"data.cash_balance.oneOf.0.currency","typeLabel":"string"}},"required":["amount","currency"],"isRequired":true,"uniqueKey":"data.cash_balance.oneOf.0","typeLabel":"object"},{"type":"null","description":"Uninvested cash held at the broker, for INVESTMENT accounts.\nNull for bank accounts.","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"],"isRequired":true,"uniqueKey":"data.cash_balance.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.cash_balance","typeLabel":"object | null"},"total_balance":{"oneOf":[{"type":"object","description":"Broker-reported total account value (positions + cash) for\nINVESTMENT accounts. Brokerages report this on the account\npayload rather than as a dated snapshot, so it does not appear\nin the balances endpoint. Null for bank accounts.","properties":{"amount":{"type":"string","isRequired":true,"uniqueKey":"data.total_balance.oneOf.0.amount","typeLabel":"string"},"currency":{"type":"string","isRequired":true,"uniqueKey":"data.total_balance.oneOf.0.currency","typeLabel":"string"}},"required":["amount","currency"],"isRequired":true,"uniqueKey":"data.total_balance.oneOf.0","typeLabel":"object"},{"type":"null","description":"Broker-reported total account value (positions + cash) for\nINVESTMENT accounts. Brokerages report this on the account\npayload rather than as a dated snapshot, so it does not appear\nin the balances endpoint. Null for bank accounts.","properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"required":["amount","currency"],"isRequired":true,"uniqueKey":"data.total_balance.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.total_balance","typeLabel":"object | null"},"meta":{"type":"string","description":"Provider-specific extras that don't fit anywhere else (e.g.\nSnapTrade's `meta.type`/`meta.status` for crypto exchanges).\nTreat as opaque — schema is provider-defined.","isRequired":true,"uniqueKey":"data.meta","typeLabel":"string"},"name":{"type":"string","description":"Name of the account, as assigned by the financial institution.","isRequired":true,"uniqueKey":"data.name","typeLabel":"string"},"custom_name":{"type":"string","description":"Custom name for the account, as defined by the end user.","isRequired":true,"uniqueKey":"data.custom_name","typeLabel":"string"},"institution_name":{"type":"string","description":"The lender's name on a manual account, as the user entered it. Null on provider accounts and on manual\naccounts without one: group those under their connection's institution (\"Manual accounts\").","isRequired":true,"uniqueKey":"data.institution_name","typeLabel":"string"},"display_name":{"type":"string","description":"Name of the account as defined by the end user within online channels.","isRequired":true,"uniqueKey":"data.display_name","typeLabel":"string"},"currency":{"type":"string","description":"ISO 4217 currency code.","isRequired":true,"uniqueKey":"data.currency","typeLabel":"string"},"product_name":{"type":"string","description":"Product Name of the Institution for this account, proprietary definition.","isRequired":true,"uniqueKey":"data.product_name","typeLabel":"string"},"cash_account_type":{"type":"string","description":"ExternalCashAccountType1Code from ISO 20022 (e.g. CACC, CARD, SVGS), when reported by the institution.","isRequired":true,"uniqueKey":"data.cash_account_type","typeLabel":"string"},"account_usage":{"type":"string","description":"Usage of the account: PRIV (private personal account) or ORGA (professional account).","isRequired":true,"uniqueKey":"data.account_usage","typeLabel":"string"},"details":{"type":"string","description":"Specifications that might be provided by the financial institution - characteristics of the account - characteristics of the relevant card.","isRequired":true,"uniqueKey":"data.details","typeLabel":"string"},"details_last_synced_at":{"type":"string","description":"Last time the financial account details were fetched from the integrator.","isRequired":true,"uniqueKey":"data.details_last_synced_at","typeLabel":"string"},"transactions_last_synced_at":{"type":"string","description":"Last time the financial account transactions were fetched from the integrator.","isRequired":true,"uniqueKey":"data.transactions_last_synced_at","typeLabel":"string"},"transactions_backfill_cursor":{"oneOf":[{"type":"string","description":"History is fetched newest-first in windows of up to 90 days. While older\nwindows are still being fetched this is the earliest date already covered;\ntransactions before it arrive on subsequent syncs, at the pace the\ninstitution's daily request allowance permits. Null once the account's\nfull history (up to the connection's `max_historical_days`) is in.","isRequired":true,"uniqueKey":"data.transactions_backfill_cursor.oneOf.0","typeLabel":"string"},{"type":"null","description":"History is fetched newest-first in windows of up to 90 days. While older\nwindows are still being fetched this is the earliest date already covered;\ntransactions before it arrive on subsequent syncs, at the pace the\ninstitution's daily request allowance permits. Null once the account's\nfull history (up to the connection's `max_historical_days`) is in.","isRequired":true,"uniqueKey":"data.transactions_backfill_cursor.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.transactions_backfill_cursor","typeLabel":"string | null"},"balances_last_synced_at":{"type":"string","description":"Last time the financial account balances were fetched from the integrator.","isRequired":true,"uniqueKey":"data.balances_last_synced_at","typeLabel":"string"},"balance":{"type":"object","description":"Balance of the account at the last sync. To get all types of balances at different dates, use the balances endpoints.","properties":{"currency":{"type":"string","description":"ISO 4217 currency of these figures. Only differs from the\naccount's `currency` on a multi-currency account (`XXX`),\nwhich holds a balance per currency: this is the one shown.","isRequired":true,"uniqueKey":"data.balance.currency","typeLabel":"string"},"available":{"oneOf":[{"type":"string","uniqueKey":"data.balance.available.oneOf.0","typeLabel":"string"},{"type":"integer","enum":[0],"uniqueKey":"data.balance.available.oneOf.1","typeLabel":"enum\u003cinteger>"}],"uniqueKey":"data.balance.available","typeLabel":"string | enum\u003cinteger>"},"cleared":{"oneOf":[{"type":"string","uniqueKey":"data.balance.cleared.oneOf.0","typeLabel":"string"},{"type":"integer","enum":[0],"uniqueKey":"data.balance.cleared.oneOf.1","typeLabel":"enum\u003cinteger>"}],"uniqueKey":"data.balance.cleared","typeLabel":"string | enum\u003cinteger>"}},"required":["currency"],"isRequired":true,"uniqueKey":"data.balance","typeLabel":"object"},"created_at":{"type":"string","isRequired":true,"uniqueKey":"data.created_at","typeLabel":"string"},"updated_at":{"type":"string","isRequired":true,"uniqueKey":"data.updated_at","typeLabel":"string"},"financial_connection_id":{"type":"string","uniqueKey":"data.financial_connection_id","typeLabel":"string"},"financial_connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.financial_connection.id","typeLabel":"string"},"institution_id":{"type":"string","isRequired":true,"uniqueKey":"data.financial_connection.institution_id","typeLabel":"string"},"region":{"type":"string","description":"Residency region of the connection's data (`eu`, `us`), decided\nby the institution's provider when the connection was created.","isRequired":true,"uniqueKey":"data.financial_connection.region","typeLabel":"string"},"enabled":{"type":"string","isRequired":true,"uniqueKey":"data.financial_connection.enabled","typeLabel":"string"},"status":{"oneOf":[{"type":"string","description":"Provider-neutral lifecycle status (PENDING_AUTHORIZATION / CONNECTED / ...).","isRequired":true,"uniqueKey":"data.financial_connection.status.oneOf.0","typeLabel":"string"},{"type":"null","description":"Provider-neutral lifecycle status (PENDING_AUTHORIZATION / CONNECTED / ...).","isRequired":true,"uniqueKey":"data.financial_connection.status.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.financial_connection.status","typeLabel":"string | null"},"status_message":{"type":"string","description":"Provider status message.","isRequired":true,"uniqueKey":"data.financial_connection.status_message","typeLabel":"string"},"sync_balances":{"type":"string","description":"Whether balances should be synced. Applies to all accounts belonging to this connection.","isRequired":true,"uniqueKey":"data.financial_connection.sync_balances","typeLabel":"string"},"supports_reauthorization":{"type":"boolean","description":"Whether `PUT /reauthorize` will start a fresh OAuth flow against this connection's\nprovider. True for every currently supported provider (GoCardless renews PSD2 consent;\nAkahu and SnapTrade re-grant a previously-disabled connection). When false, the\nreauthorize endpoint responds with `REAUTHORIZATION_NOT_SUPPORTED`.","isRequired":true,"uniqueKey":"data.financial_connection.supports_reauthorization","typeLabel":"boolean"},"supports_manage":{"type":"boolean","description":"Whether GET /manage will return a URL you can redirect the user to so\nthey can manage their existing connections directly with the provider. Currently\ntrue for Akahu (sends them to oauth.akahu.nz where they can add / revoke banks\nunder their enduring consent), false for GoCardless and SnapTrade.","isRequired":true,"uniqueKey":"data.financial_connection.supports_manage","typeLabel":"boolean"},"max_historical_days":{"oneOf":[{"type":"string","description":"The maximum number of days of historical data Synci is able to fetch. Applies to all accounts belonging to this connection.","isRequired":true,"uniqueKey":"data.financial_connection.max_historical_days.oneOf.0","typeLabel":"string"},{"type":"null","description":"The maximum number of days of historical data Synci is able to fetch. Applies to all accounts belonging to this connection.","isRequired":true,"uniqueKey":"data.financial_connection.max_historical_days.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.financial_connection.max_historical_days","typeLabel":"string | null"},"access_valid_for_days":{"oneOf":[{"type":"string","description":"Also known as consent lifetime. The number of days Synci is able to access accounts belonging to this connection.\nE.g. if this is set to 180 days, you will have to re-authenticate the connection every 180 days.\nSynci will send you an email when the expiry date is approaching.","isRequired":true,"uniqueKey":"data.financial_connection.access_valid_for_days.oneOf.0","typeLabel":"string"},{"type":"null","description":"Also known as consent lifetime. The number of days Synci is able to access accounts belonging to this connection.\nE.g. if this is set to 180 days, you will have to re-authenticate the connection every 180 days.\nSynci will send you an email when the expiry date is approaching.","isRequired":true,"uniqueKey":"data.financial_connection.access_valid_for_days.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.financial_connection.access_valid_for_days","typeLabel":"string | null"},"consent_expires_at":{"oneOf":[{"type":"string","description":"The date and time when the bank consent expires and the connection\nhas to be reauthorized, or null for providers that grant enduring\nconsent (Akahu, SnapTrade).","isRequired":true,"uniqueKey":"data.financial_connection.consent_expires_at.oneOf.0","typeLabel":"string"},{"type":"null","description":"The date and time when the bank consent expires and the connection\nhas to be reauthorized, or null for providers that grant enduring\nconsent (Akahu, SnapTrade).","isRequired":true,"uniqueKey":"data.financial_connection.consent_expires_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.financial_connection.consent_expires_at","typeLabel":"string | null"},"reference":{"type":"string","description":"Caller-supplied correlation id set at creation (e.g. a platform\ndeveloper's own end-user id). Filterable via ?filter[reference]=.","isRequired":true,"uniqueKey":"data.financial_connection.reference","typeLabel":"string"},"accounts_last_synced_at":{"type":"string","isRequired":true,"uniqueKey":"data.financial_connection.accounts_last_synced_at","typeLabel":"string"},"setup_pending":{"type":"boolean","description":"Whether the post-connection setup (choosing accounts, naming them,\npicking a sync start date) is still to be finished. While true the\naccounts exist but their first transaction sync is held back until\n`POST /setup/complete`, or until the setup goes stale. Always false\nfor connections created by API clients.","isRequired":true,"uniqueKey":"data.financial_connection.setup_pending","typeLabel":"boolean"},"setup_renewal":{"type":"boolean","description":"True while a pending setup belongs to a consent renewal rather than a new connection: only the\naccount choice is asked for, and the accounts the user had enabled stay pre-selected.","isRequired":true,"uniqueKey":"data.financial_connection.setup_renewal","typeLabel":"boolean"},"activated_at":{"type":"string","description":"When the connection first went live (provider callback succeeded).\nNull while consent is still pending or the flow was abandoned.","isRequired":true,"uniqueKey":"data.financial_connection.activated_at","typeLabel":"string"},"created_at":{"type":"string","isRequired":true,"uniqueKey":"data.financial_connection.created_at","typeLabel":"string"},"updated_at":{"type":"string","isRequired":true,"uniqueKey":"data.financial_connection.updated_at","typeLabel":"string"},"institution":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.financial_connection.institution.id","typeLabel":"string"},"integrator":{"type":"string","description":"The integrator used to connect to this institution.","isRequired":true,"uniqueKey":"data.financial_connection.institution.integrator","typeLabel":"string"},"region":{"type":"string","description":"Residency region connections to this institution are stored in (`eu`, `us`).","isRequired":true,"uniqueKey":"data.financial_connection.institution.region","typeLabel":"string"},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","isRequired":true,"uniqueKey":"data.financial_connection.institution.country","typeLabel":"string"},"name":{"type":"string","description":"Name of the institution.","isRequired":true,"uniqueKey":"data.financial_connection.institution.name","typeLabel":"string"},"bic":{"type":"string","description":"Institution Identifier Code (BIC/SWIFT code).","isRequired":true,"uniqueKey":"data.financial_connection.institution.bic","typeLabel":"string"},"external_id":{"type":"string","description":"The ID of the institution as provided by the integrator.","isRequired":true,"uniqueKey":"data.financial_connection.institution.external_id","typeLabel":"string"},"logo":{"type":"string","description":"URL to the institution's logo, as provided by the integrator.","isRequired":true,"uniqueKey":"data.financial_connection.institution.logo","typeLabel":"string"},"supported":{"type":"string","description":"Whether the institution is supported. Will be true in most cases, but might be false if the integrator stops supporting an institution.","isRequired":true,"uniqueKey":"data.financial_connection.institution.supported","typeLabel":"string"},"supports_pending_transactions":{"type":"string","description":"Whether the institution supports pending transactions.","isRequired":true,"uniqueKey":"data.financial_connection.institution.supports_pending_transactions","typeLabel":"string"},"supports_card_accounts":{"type":"string","description":"Whether the institution supports card accounts.","isRequired":true,"uniqueKey":"data.financial_connection.institution.supports_card_accounts","typeLabel":"string"},"max_historical_days":{"type":"string","description":"The maximum number of days of historical data this institution can provide.\n`null` where the provider imposes no such limit and fetches whatever the bank\nholds, which is the case for every US institution. Do not read null as zero.","isRequired":true,"uniqueKey":"data.financial_connection.institution.max_historical_days","typeLabel":"string"},"max_access_valid_for_days":{"type":"string","description":"Also known as consent lifetime. The maximum number of days access to this institution may be valid for.\nFor most European institutions this ranges from 90 to 180 days. `null` where access does not\nexpire on a schedule and no periodic re-consent is required, which is the case for every US\ninstitution: those connections break only when the bank breaks them.","isRequired":true,"uniqueKey":"data.financial_connection.institution.max_access_valid_for_days","typeLabel":"string"},"supported_products":{"type":"string","description":"The kinds of data this institution can serve, e.g. `[\"ACCOUNTS\", \"TRANSACTIONS\", \"INVESTMENTS\"]`.\n`null` means the provider does not report it, NOT that the institution serves nothing: treat it\nas no information rather than as a negative. Only US institutions report it today.","isRequired":true,"uniqueKey":"data.financial_connection.institution.supported_products","typeLabel":"string"},"category":{"oneOf":[{"type":"string","description":"The category of the financial institution.","isRequired":true,"uniqueKey":"data.financial_connection.institution.category.oneOf.0","typeLabel":"string"},{"type":"null","description":"The category of the financial institution.","isRequired":true,"uniqueKey":"data.financial_connection.institution.category.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.financial_connection.institution.category","typeLabel":"string | null"},"updated_at":{"type":"string","description":"The date and time when the institution was last updated.","isRequired":true,"uniqueKey":"data.financial_connection.institution.updated_at","typeLabel":"string"}},"required":["id","integrator","region","country","name","bic","external_id","logo","supported","supports_pending_transactions","supports_card_accounts","max_historical_days","max_access_valid_for_days","supported_products","category","updated_at"],"title":"InstitutionResource","uniqueKey":"data.financial_connection.institution","typeLabel":"InstitutionResource · object"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true,"uniqueKey":"data.financial_connection.health.status","typeLabel":"string"},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true,"uniqueKey":"data.financial_connection.health.integrator_message","typeLabel":"string"},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true,"uniqueKey":"data.financial_connection.health.failure_count","typeLabel":"string"},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true,"uniqueKey":"data.financial_connection.health.transient_message","typeLabel":"string"},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true,"uniqueKey":"data.financial_connection.health.transient_failure_count","typeLabel":"string"},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true,"uniqueKey":"data.financial_connection.health.last_attempt_at","typeLabel":"string"}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource","uniqueKey":"data.financial_connection.health","typeLabel":"HealthResource · object"},"financial_accounts":{"type":"array","description":"Financial accounts belonging to this connection.","items":{"$circularRef":"e8a9bf44-5f49-4f46-8f0e-6b0cf3c6185e"},"uniqueKey":"data.financial_connection.financial_accounts","typeLabel":"array"},"financial_accounts_count":{"type":"string","uniqueKey":"data.financial_connection.financial_accounts_count","typeLabel":"string"}},"required":["id","institution_id","region","enabled","status","status_message","sync_balances","supports_reauthorization","supports_manage","max_historical_days","access_valid_for_days","consent_expires_at","reference","accounts_last_synced_at","setup_pending","setup_renewal","activated_at","created_at","updated_at"],"title":"FinancialConnectionResource","uniqueKey":"data.financial_connection","typeLabel":"FinancialConnectionResource · object"},"config":{"type":"object","properties":{"map_fields":{"type":"object","description":"Which field(s) are used when mapping the \"payee\", \"description\" and \"date\" fields for a transaction.\nOne of the fixed option names (`AUTO`, `NONE`, `CREDITOR_NAME`, `BOOKING_DATE`, ...).\nVersion 2 of the API stores an ordered fallback chain per field instead; this is the closest fixed\noption for the stored chain, and a chain without an equivalent reads as `AUTO`.","properties":{"payee":{"type":"string","isRequired":true,"uniqueKey":"data.config.map_fields.payee","typeLabel":"string"},"description":{"type":"string","isRequired":true,"uniqueKey":"data.config.map_fields.description","typeLabel":"string"},"date":{"type":"string","isRequired":true,"uniqueKey":"data.config.map_fields.date","typeLabel":"string"}},"required":["payee","description","date"],"isRequired":true,"uniqueKey":"data.config.map_fields","typeLabel":"object"},"enrichment":{"type":"object","description":"Enrich transaction data with additional information from an external provider","properties":{"enabled":{"type":"string","description":"Whether transaction enrichment is enabled","isRequired":true,"uniqueKey":"data.config.enrichment.enabled","typeLabel":"string"},"provider":{"type":"string","description":"The provider to use for transaction enrichment.","isRequired":true,"uniqueKey":"data.config.enrichment.provider","typeLabel":"string"},"country":{"type":"string","description":"The country where transactions are made. Providing a country significantly improves enrichment accuracy.","isRequired":true,"uniqueKey":"data.config.enrichment.country","typeLabel":"string"}},"required":["enabled","provider","country"],"isRequired":true,"uniqueKey":"data.config.enrichment","typeLabel":"object"},"sync_start_date":{"oneOf":[{"type":"string","description":"The date to start syncing transactions from.\nCannot be earlier than the date the connection was authorized minus the connection's `max_historical_days`.\nWill default to today if not set.","examples":["2025-01-01"],"isRequired":true,"uniqueKey":"data.config.sync_start_date.oneOf.0","typeLabel":"string"},{"type":"null","description":"The date to start syncing transactions from.\nCannot be earlier than the date the connection was authorized minus the connection's `max_historical_days`.\nWill default to today if not set.","examples":["2025-01-01"],"isRequired":true,"uniqueKey":"data.config.sync_start_date.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.config.sync_start_date","typeLabel":"string | null"},"sync_auto":{"type":"string","description":"Whether data should be synced automatically. If set to false, you will need to manually trigger a sync every time you want to refresh data.","isRequired":true,"uniqueKey":"data.config.sync_auto","typeLabel":"string"},"sync_pending_transactions":{"type":"string","description":"Whether pending transactions should be synced. For some banks, setting this to true can cause duplicate transactions.","isRequired":true,"uniqueKey":"data.config.sync_pending_transactions","typeLabel":"string"},"pending_settlement_matching":{"type":"string","description":"Whether a booked transaction can settle an existing pending transaction when the amount changed.\nCard pre-authorizations (fuel stations, hotels, car rentals) are often authorized with a placeholder amount\nthat changes when the transaction is booked, together with the transaction's identifiers.\nWhen enabled, a booked transaction that matches a pending transaction's counterparty (and card details,\nwhen the bank provides them) within `pending_settlement_max_days` days updates that pending transaction\ninstead of creating a duplicate.\nOnly pending transactions are matched this way; deduplication of booked transactions is unaffected.\nEnabled by default; `null` means the default applies.","isRequired":true,"uniqueKey":"data.config.pending_settlement_matching","typeLabel":"string"},"pending_settlement_max_days":{"type":"string","description":"The maximum number of days between a pending transaction and its booked settlement\nfor `pending_settlement_matching` to link the two. Defaults to 7; `null` means the default applies.","isRequired":true,"uniqueKey":"data.config.pending_settlement_max_days","typeLabel":"string"},"fuzzy_counterparty_matching":{"type":"string","description":"Whether a counterparty name the bank re-words when a transaction settles can still match\nthe pending entry it replaces (\"NORWEGIAN.COM\" settling as \"NORWEGIAN.C 3284405123\").\nDescriptors that conflict rather than truncate or extend never match, and only pending\ntransactions are matched this way.\nEnabled by default; `null` means the default applies.","isRequired":true,"uniqueKey":"data.config.fuzzy_counterparty_matching","typeLabel":"string"},"fuzzy_counterparty_min_chars":{"type":"string","description":"The minimum number of characters two re-worded counterparty descriptors must align on for\n`fuzzy_counterparty_matching` to treat them as the same party. Defaults to 6; `null` means\nthe default applies.","isRequired":true,"uniqueKey":"data.config.fuzzy_counterparty_min_chars","typeLabel":"string"},"sync_balances":{"type":"string","description":"Whether balances should be synced.","isRequired":true,"uniqueKey":"data.config.sync_balances","typeLabel":"string"},"sync_frequency_in_minutes":{"type":"string","description":"How often to sync data, in minutes. The permitted minimum is set by the\nsubscriber's plan (`max_sync_frequency_minutes` in the plan's features, see\n`GET /billing/plans`); 30 is only the absolute lower bound any plan could set. This is the CONFIGURED value. The interval actually used may be longer if the\ninstitution has refused requests on its own daily cap, in which case the account\nis demoted to a slower cadence automatically.","isRequired":true,"uniqueKey":"data.config.sync_frequency_in_minutes","typeLabel":"string"},"fields_for_duplicate_filtering":{"oneOf":[{"type":"array","description":"An array of Transaction fields to use when filtering duplicate transactions.\nWhen a new transaction is synced, these fields are compared with existing transactions.\nIf the fields are identical, the new transaction is considered a duplicate and will be ignored.\nThis should only be used if you are struggling with duplicate transactions, and know which fields can be used to filter them. For everyone else, omit this field.","items":{"type":"string","uniqueKey":"data.config.fields_for_duplicate_filtering.oneOf.0.items.[INDEX]","typeLabel":"string"},"uniqueKey":"data.config.fields_for_duplicate_filtering.oneOf.0","typeLabel":"string[]"},{"type":"null","description":"An array of Transaction fields to use when filtering duplicate transactions.\nWhen a new transaction is synced, these fields are compared with existing transactions.\nIf the fields are identical, the new transaction is considered a duplicate and will be ignored.\nThis should only be used if you are struggling with duplicate transactions, and know which fields can be used to filter them. For everyone else, omit this field.","items":{"type":"string"},"uniqueKey":"data.config.fields_for_duplicate_filtering.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.config.fields_for_duplicate_filtering","typeLabel":"string[] | null"}},"required":["map_fields","enrichment","sync_start_date","sync_auto","sync_pending_transactions","pending_settlement_matching","pending_settlement_max_days","fuzzy_counterparty_matching","fuzzy_counterparty_min_chars","sync_balances","sync_frequency_in_minutes"],"title":"InstitutionConfigResource","description":"The financial account configuration. If the financial account has no configuration, the banks default configuration will be used.","uniqueKey":"data.config","typeLabel":"InstitutionConfigResource · object"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true,"uniqueKey":"data.health.status","typeLabel":"string"},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true,"uniqueKey":"data.health.integrator_message","typeLabel":"string"},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true,"uniqueKey":"data.health.failure_count","typeLabel":"string"},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true,"uniqueKey":"data.health.transient_message","typeLabel":"string"},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true,"uniqueKey":"data.health.transient_failure_count","typeLabel":"string"},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true,"uniqueKey":"data.health.last_attempt_at","typeLabel":"string"}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource","uniqueKey":"data.health","typeLabel":"HealthResource · object"},"loan":{"oneOf":[{"type":"array","description":"The loan terms, rate history and derived figures. Present on LOAN accounts only.","items":{"oneOf":[{}],"uniqueKey":"data.loan.oneOf.0.items.[INDEX]","typeLabel":"any"},"uniqueKey":"data.loan.oneOf.0","typeLabel":"any[]"},{"type":"null","description":"The loan terms, rate history and derived figures. Present on LOAN accounts only.","items":{"oneOf":[{}]},"uniqueKey":"data.loan.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.loan","typeLabel":"any[] | null"},"account_number_masked":{"type":"string","description":"Masked account number (e.g. \"****1234\"). Only present when the\nprovider supplies it (SnapTrade brokerages, and banks that report\na masked card PAN via GoCardless); null otherwise.","uniqueKey":"data.account_number_masked","typeLabel":"string"},"bban":{"type":"string","description":"Basic Bank Account Number (BBAN).","uniqueKey":"data.bban","typeLabel":"string"},"scan":{"type":"string","description":"UK SortCodeAccountNumber (6 digit sort code + 8 digit account number), reported by some UK banks.","uniqueKey":"data.scan","typeLabel":"string"},"iban":{"type":"string","description":"International Bank Account Number (IBAN).","uniqueKey":"data.iban","typeLabel":"string"},"bic":{"type":"string","description":"Bank Identifier Code (BIC/SWIFT) associated with the account.","uniqueKey":"data.bic","typeLabel":"string"},"owner_name":{"type":"string","description":"Name of the legal account owner. If there is more than one owner, then e.g. two names might be noted here. For a corporate account, the corporate name is used for this attribute.","uniqueKey":"data.owner_name","typeLabel":"string"},"owner_address":{"type":"string","description":"Address of the legal account owner, when reported by the institution.","uniqueKey":"data.owner_address","typeLabel":"string"},"linked_accounts":{"type":"string","description":"Name of a cash account associated to pending card transactions, when the institution reports one. Banks often put that account's number here, so it is omitted with the other identifiers.","uniqueKey":"data.linked_accounts","typeLabel":"string"},"msisdn":{"type":"string","description":"An alias to a payment account via a registered mobile phone number.","uniqueKey":"data.msisdn","typeLabel":"string"},"integrator_id":{"type":"string","description":"The financial account ID provided by the integrator.","uniqueKey":"data.integrator_id","typeLabel":"string"},"institution_id":{"type":"string","description":"The financial account ID provided by the institution/bank.","uniqueKey":"data.institution_id","typeLabel":"string"},"rules":{"type":"array","description":"The rules attached to this financial account","items":{"type":"object","properties":{"order":{"type":"integer","isRequired":true,"uniqueKey":"data.rules.items.[INDEX].order","typeLabel":"integer"},"rule":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"data.rules.items.[INDEX].rule.additionalProperties","typeLabel":"any"},"isRequired":true,"uniqueKey":"data.rules.items.[INDEX].rule","typeLabel":"object"}},"required":["order","rule"],"uniqueKey":"data.rules.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.rules","typeLabel":"object[]"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].id","typeLabel":"string"},"financial_account_id":{"type":"string","description":"The ID of the financial account transactions are being transferred from.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].financial_account_id","typeLabel":"string"},"destination_type":{"type":"string","description":"The type of destination the transfer link sends transactions to:\n- **YNAB**: a YNAB budget account.\n- **LUNCH_MONEY**: a Lunch Money account.\n- **GOOGLE_SHEETS**: a Google Sheet.\n- **NOTION**: a Notion database.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination_type","typeLabel":"string"},"destination_id":{"type":"string","description":"The ID of the destination transactions are being transferred to. The type of resource the ID refers to depends on the destination type:\n- **YNAB**: the ID of a YNAB budget account.\n- **LUNCH_MONEY**: the ID of a Lunch Money account.\n- **GOOGLE_SHEETS**: the ID of a Google Sheet.\n- **NOTION**: the ID of a Notion database.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination_id","typeLabel":"string"},"transfer_start_date":{"type":"string","description":"The date from which the transfer link will start transferring transactions.\nIf not provided, all available transactions in the attached financial account will be transferred regardless of their date.","examples":["2025-01-01"],"isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].transfer_start_date","typeLabel":"string"},"active":{"type":"string","description":"Whether the transfer link is enabled.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].active","typeLabel":"string"},"sync_mode":{"type":"string","description":"Which streams to push to the destination:\n- `transactions`: only individual transactions (default for bank sources)\n- `balance`: only periodic balance snapshots\n- `transactions_and_balance`: both (default for brokerage / crypto sources)","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].sync_mode","typeLabel":"string"},"on_booked_change":{"type":"object","description":"Which destination fields to update when a transaction's booked status changes.\nIf not provided, all fields will be updated.","properties":{"update_status":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].on_booked_change.update_status","typeLabel":"string"},"update_payee":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].on_booked_change.update_payee","typeLabel":"string"},"update_description":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].on_booked_change.update_description","typeLabel":"string"},"update_amount":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].on_booked_change.update_amount","typeLabel":"string"}},"required":["update_status","update_payee","update_description","update_amount"],"isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].on_booked_change","typeLabel":"object"},"created_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].created_at","typeLabel":"string"},"updated_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].updated_at","typeLabel":"string"},"financial_account":{"$circularRef":"e8a9bf44-5f49-4f46-8f0e-6b0cf3c6185e","description":"The associated FinancialAccount resource. Will be included in the response if the `include` query parameter contains `financial_account`.","uniqueKey":"data.transfer_links.items.[INDEX].financial_account","typeLabel":"any"},"destination":{"oneOf":[{"type":"object","title":"YnabBudgetAccountResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","budget_id","ynab_id","name","type","on_budget","closed","note","balance","cleared_balance","uncleared_balance","transfer_payee_id","direct_import_linked","last_reconciled_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.id","typeLabel":"string"},"budget_id":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget_id","typeLabel":"string"},"ynab_id":{"type":"string","description":"The account's ID in YNAB.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.ynab_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.name","typeLabel":"string"},"type":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.type","typeLabel":"string"},"on_budget":{"type":"string","description":"Whether the account is on budget in YNAB.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.on_budget","typeLabel":"string"},"closed":{"type":"string","description":"Whether the account is closed in YNAB.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.closed","typeLabel":"string"},"note":{"type":"string","description":"The account note from YNAB, if set.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.note","typeLabel":"string"},"balance":{"type":"string","description":"The account balance as reported by YNAB.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.balance","typeLabel":"string"},"cleared_balance":{"type":"string","description":"The cleared balance as reported by YNAB.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.cleared_balance","typeLabel":"string"},"uncleared_balance":{"type":"string","description":"The uncleared balance as reported by YNAB.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.uncleared_balance","typeLabel":"string"},"transfer_payee_id":{"type":"string","description":"The YNAB payee ID used for transfers to this account.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.transfer_payee_id","typeLabel":"string"},"direct_import_linked":{"type":"string","description":"Whether the account is linked to YNAB Direct Import.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.direct_import_linked","typeLabel":"string"},"last_reconciled_at":{"type":"string","description":"When the account was last reconciled in YNAB.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.last_reconciled_at","typeLabel":"string"},"created_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.created_at","typeLabel":"string"},"updated_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.updated_at","typeLabel":"string"},"budget":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.id","typeLabel":"string"},"connection_id":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection_id","typeLabel":"string"},"ynab_id":{"type":"string","description":"The budget's ID in YNAB.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.ynab_id","typeLabel":"string"},"enabled":{"type":"string","description":"Whether syncing to this budget is enabled.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.enabled","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.name","typeLabel":"string"},"currency":{"type":"string","description":"The budget's currency in YNAB.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.currency","typeLabel":"string"},"first_month":{"type":"string","description":"The budget's first month in YNAB.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.first_month","typeLabel":"string"},"last_month":{"type":"string","description":"The budget's last month in YNAB.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.last_month","typeLabel":"string"},"last_synced_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.last_synced_at","typeLabel":"string"},"created_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.created_at","typeLabel":"string"},"updated_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.updated_at","typeLabel":"string"},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection.id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection.name","typeLabel":"string"},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection.enabled","typeLabel":"string"},"sync_balances":{"type":"string","description":"Whether account balances are synced to YNAB.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection.sync_balances","typeLabel":"string"},"ynab_user_id":{"type":"string","description":"The connected user's ID in YNAB.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection.ynab_user_id","typeLabel":"string"},"last_synced_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection.last_synced_at","typeLabel":"string"},"created_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection.created_at","typeLabel":"string"},"updated_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection.updated_at","typeLabel":"string"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection.health.status","typeLabel":"string"},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection.health.integrator_message","typeLabel":"string"},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection.health.failure_count","typeLabel":"string"},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection.health.transient_message","typeLabel":"string"},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection.health.transient_failure_count","typeLabel":"string"},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection.health.last_attempt_at","typeLabel":"string"}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource","uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection.health","typeLabel":"HealthResource · object"},"auth_url":{"type":"string","description":"URL to authorize the connection with YNAB. Only present when authorization is required.","uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection.auth_url","typeLabel":"string"},"budgets":{"type":"array","items":{"$circularRef":"248c304a-3ec9-4df8-af52-e0efd200a978"},"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection.budgets","typeLabel":"array"}},"required":["id","name","enabled","sync_balances","ynab_user_id","last_synced_at","created_at","updated_at"],"title":"YnabConnectionResource","uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.connection","typeLabel":"YnabConnectionResource · object"},"accounts":{"type":"array","items":{"$circularRef":"10a862ec-a219-4aac-b0f2-677b77b5b836"},"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget.accounts","typeLabel":"array"}},"required":["id","connection_id","ynab_id","enabled","name","currency","first_month","last_month","last_synced_at","created_at","updated_at"],"title":"YnabBudgetResource","uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.budget","typeLabel":"YnabBudgetResource · object"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.health.status","typeLabel":"string"},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.health.integrator_message","typeLabel":"string"},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.health.failure_count","typeLabel":"string"},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.health.transient_message","typeLabel":"string"},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.health.transient_failure_count","typeLabel":"string"},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.health.last_attempt_at","typeLabel":"string"}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource","uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.health","typeLabel":"HealthResource · object"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"},"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0.transfer_links","typeLabel":"array"}},"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.0","typeLabel":"YnabBudgetAccountResource · object"},{"type":"object","title":"LunchMoneyAccountResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","lunch_money_id","name","display_name","type","subtype","currency","balance","balance_as_of","closed_on","exclude_from_transactions","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.id","typeLabel":"string"},"connection_id":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection_id","typeLabel":"string"},"lunch_money_id":{"type":"string","description":"The account's ID in Lunch Money.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.lunch_money_id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.name","typeLabel":"string"},"display_name":{"type":"string","description":"The account's display name in Lunch Money, if set.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.display_name","typeLabel":"string"},"type":{"type":"string","description":"The account type as reported by Lunch Money, e.g. \"cash\" or \"credit\".","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.type","typeLabel":"string"},"subtype":{"type":"string","description":"The account subtype as reported by Lunch Money, if set.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.subtype","typeLabel":"string"},"currency":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.currency","typeLabel":"string"},"balance":{"type":"string","description":"The account balance as reported by Lunch Money.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.balance","typeLabel":"string"},"balance_as_of":{"type":"string","description":"When the balance was last updated in Lunch Money.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.balance_as_of","typeLabel":"string"},"closed_on":{"type":"string","description":"When the account was closed in Lunch Money, if closed.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.closed_on","typeLabel":"string"},"exclude_from_transactions":{"type":"string","description":"Whether the account is excluded from transactions in Lunch Money.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.exclude_from_transactions","typeLabel":"string"},"created_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.created_at","typeLabel":"string"},"updated_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.updated_at","typeLabel":"string"},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.id","typeLabel":"string"},"name":{"type":"string","description":"The name of the connected Lunch Money budget.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.name","typeLabel":"string"},"lunch_money_details":{"type":"object","description":"Details about the connected Lunch Money account.","properties":{"user_name":{"type":"string","description":"Name of the Lunch Money user.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.lunch_money_details.user_name","typeLabel":"string"},"user_email":{"type":"string","description":"Email address of the Lunch Money user.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.lunch_money_details.user_email","typeLabel":"string"},"user_id":{"type":"string","description":"The user's ID in Lunch Money.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.lunch_money_details.user_id","typeLabel":"string"},"bank_account_id":{"type":"string","description":"The connected account's ID in Lunch Money.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.lunch_money_details.bank_account_id","typeLabel":"string"},"budget_name":{"type":"string","description":"Name of the connected Lunch Money budget.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.lunch_money_details.budget_name","typeLabel":"string"},"primary_currency":{"type":"string","description":"The budget's primary currency in Lunch Money.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.lunch_money_details.primary_currency","typeLabel":"string"},"api_key_label":{"type":"string","description":"Label of the Lunch Money API token used by this connection, if set.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.lunch_money_details.api_key_label","typeLabel":"string"}},"required":["user_name","user_email","user_id","bank_account_id","budget_name","primary_currency","api_key_label"],"isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.lunch_money_details","typeLabel":"object"},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.enabled","typeLabel":"string"},"sync_balances":{"type":"string","description":"Whether account balances are synced to Lunch Money.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.sync_balances","typeLabel":"string"},"sync_transactions":{"type":"string","description":"Whether transactions are synced to Lunch Money.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.sync_transactions","typeLabel":"string"},"last_synced_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.last_synced_at","typeLabel":"string"},"created_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.created_at","typeLabel":"string"},"updated_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.updated_at","typeLabel":"string"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.health.status","typeLabel":"string"},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.health.integrator_message","typeLabel":"string"},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.health.failure_count","typeLabel":"string"},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.health.transient_message","typeLabel":"string"},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.health.transient_failure_count","typeLabel":"string"},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.health.last_attempt_at","typeLabel":"string"}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource","uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.health","typeLabel":"HealthResource · object"},"accounts":{"type":"array","items":{"$circularRef":"4b474cf8-3b5a-4e7d-9d9a-257a073ea9dd"},"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection.accounts","typeLabel":"array"}},"required":["id","name","lunch_money_details","enabled","sync_balances","sync_transactions","last_synced_at","created_at","updated_at"],"title":"LunchMoneyConnectionResource","uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.connection","typeLabel":"LunchMoneyConnectionResource · object"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.health.status","typeLabel":"string"},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.health.integrator_message","typeLabel":"string"},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.health.failure_count","typeLabel":"string"},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.health.transient_message","typeLabel":"string"},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.health.transient_failure_count","typeLabel":"string"},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.health.last_attempt_at","typeLabel":"string"}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource","uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.health","typeLabel":"HealthResource · object"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"},"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1.transfer_links","typeLabel":"array"}},"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.1","typeLabel":"LunchMoneyAccountResource · object"},{"type":"object","title":"GoogleSheetResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","name","spreadsheet_id","spreadsheet_name","spreadsheet_url","is_synci_managed","transactions_sheet_gid","transactions_sheet_name","live_balance_sheet_gid","live_balance_sheet_name","balance_history_sheet_gid","balance_history_sheet_name","last_synced_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.id","typeLabel":"string"},"connection_id":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.connection_id","typeLabel":"string"},"name":{"type":"string","description":"Display name of the spreadsheet in Synci.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.name","typeLabel":"string"},"spreadsheet_id":{"type":"string","description":"The spreadsheet's ID in Google Sheets, as found in its URL.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.spreadsheet_id","typeLabel":"string"},"spreadsheet_name":{"type":"string","description":"The spreadsheet's title in Google Sheets.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.spreadsheet_name","typeLabel":"string"},"spreadsheet_url":{"type":"string","description":"Link to open the spreadsheet in Google Sheets.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.spreadsheet_url","typeLabel":"string"},"is_synci_managed":{"type":"string","description":"True when the spreadsheet was created by Synci; false when an existing spreadsheet was attached.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.is_synci_managed","typeLabel":"string"},"transactions_sheet_gid":{"type":"string","description":"The gid of the tab that receives transactions, if assigned.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.transactions_sheet_gid","typeLabel":"string"},"transactions_sheet_name":{"type":"string","description":"The name of the tab that receives transactions, if assigned.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.transactions_sheet_name","typeLabel":"string"},"live_balance_sheet_gid":{"type":"string","description":"The gid of the tab that holds current balances, if assigned.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.live_balance_sheet_gid","typeLabel":"string"},"live_balance_sheet_name":{"type":"string","description":"The name of the tab that holds current balances, if assigned.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.live_balance_sheet_name","typeLabel":"string"},"balance_history_sheet_gid":{"type":"string","description":"The gid of the tab that records balance history, if assigned.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.balance_history_sheet_gid","typeLabel":"string"},"balance_history_sheet_name":{"type":"string","description":"The name of the tab that records balance history, if assigned.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.balance_history_sheet_name","typeLabel":"string"},"last_synced_at":{"type":"string","description":"When data was last synced to the spreadsheet.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.last_synced_at","typeLabel":"string"},"created_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.created_at","typeLabel":"string"},"updated_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.updated_at","typeLabel":"string"},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.connection.id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.connection.name","typeLabel":"string"},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.connection.enabled","typeLabel":"string"},"google_email":{"type":"string","description":"Email address of the connected Google account.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.connection.google_email","typeLabel":"string"},"last_synced_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.connection.last_synced_at","typeLabel":"string"},"created_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.connection.created_at","typeLabel":"string"},"updated_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.connection.updated_at","typeLabel":"string"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.connection.health.status","typeLabel":"string"},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.connection.health.integrator_message","typeLabel":"string"},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.connection.health.failure_count","typeLabel":"string"},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.connection.health.transient_message","typeLabel":"string"},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.connection.health.transient_failure_count","typeLabel":"string"},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.connection.health.last_attempt_at","typeLabel":"string"}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource","uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.connection.health","typeLabel":"HealthResource · object"},"auth_url":{"type":"string","description":"URL to authorize the connection with Google. Only present when authorization is required.","uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.connection.auth_url","typeLabel":"string"},"sheets":{"type":"array","items":{"$circularRef":"4855146d-203d-426a-9ae0-10ad2f15b3d1"},"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.connection.sheets","typeLabel":"array"}},"required":["id","name","enabled","google_email","last_synced_at","created_at","updated_at"],"title":"GoogleSheetsConnectionResource","uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.connection","typeLabel":"GoogleSheetsConnectionResource · object"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.health.status","typeLabel":"string"},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.health.integrator_message","typeLabel":"string"},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.health.failure_count","typeLabel":"string"},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.health.transient_message","typeLabel":"string"},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.health.transient_failure_count","typeLabel":"string"},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.health.last_attempt_at","typeLabel":"string"}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource","uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.health","typeLabel":"HealthResource · object"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"},"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2.transfer_links","typeLabel":"array"}},"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.2","typeLabel":"GoogleSheetResource · object"},{"type":"object","title":"NotionDatabaseResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","name","title","database_id","data_source_id","database_url","parent_page_id","parent_page_title","is_synci_managed","layout","header_config","property_map","accounts_database_id","categories_database_id","months_database_id","balance_history_database_id","balance_available","last_synced_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.id","typeLabel":"string"},"connection_id":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection_id","typeLabel":"string"},"name":{"type":"string","description":"Display name of the database in Synci.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.name","typeLabel":"string"},"title":{"type":"string","description":"The database's title in Notion.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.title","typeLabel":"string"},"database_id":{"type":"string","description":"The Notion database ID.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.database_id","typeLabel":"string"},"data_source_id":{"type":"string","description":"The Notion data source (table) transactions are written to.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.data_source_id","typeLabel":"string"},"database_url":{"type":"string","description":"Link to open the database in Notion.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.database_url","typeLabel":"string"},"parent_page_id":{"type":"string","description":"The Notion page the database lives under, when known, and its title\n(a dashboard's `name` falls back to this).","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.parent_page_id","typeLabel":"string"},"parent_page_title":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.parent_page_title","typeLabel":"string"},"is_synci_managed":{"type":"string","description":"True when the database was created by Synci; false when an existing database was attached.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.is_synci_managed","typeLabel":"string"},"layout":{"type":"string","description":"\"dashboard\" when the Synci Finance template was adopted (transactions relate to Accounts,\nCategories and Months); \"flat\" for plain databases.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.layout","typeLabel":"string"},"header_config":{"type":"string","description":"Ordered list of transaction field keys written as database properties.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.header_config","typeLabel":"string"},"property_map":{"type":"string","description":"Field key to Notion property id map Synci writes through.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.property_map","typeLabel":"string"},"accounts_database_id":{"type":"string","description":"The supporting databases next to this one, when present.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.accounts_database_id","typeLabel":"string"},"categories_database_id":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.categories_database_id","typeLabel":"string"},"months_database_id":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.months_database_id","typeLabel":"string"},"balance_history_database_id":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.balance_history_database_id","typeLabel":"string"},"balance_available":{"type":"string","description":"Whether balance databases exist or can be provisioned (requires a parent page).","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.balance_available","typeLabel":"string"},"last_synced_at":{"type":"string","description":"When data was last synced to the database.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.last_synced_at","typeLabel":"string"},"created_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.created_at","typeLabel":"string"},"updated_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.updated_at","typeLabel":"string"},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.name","typeLabel":"string"},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.enabled","typeLabel":"string"},"workspace_id":{"type":"string","description":"The connected Notion workspace.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.workspace_id","typeLabel":"string"},"workspace_name":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.workspace_name","typeLabel":"string"},"workspace_icon":{"type":"string","description":"Emoji or image URL of the workspace icon, if any.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.workspace_icon","typeLabel":"string"},"owner_email":{"type":"string","description":"Email of the Notion user who authorized the connection, when shared.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.owner_email","typeLabel":"string"},"duplicated_template_id":{"type":"string","description":"The page Notion created when the user duplicated the Synci template during authorization, if any.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.duplicated_template_id","typeLabel":"string"},"last_synced_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.last_synced_at","typeLabel":"string"},"created_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.created_at","typeLabel":"string"},"updated_at":{"type":"string","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.updated_at","typeLabel":"string"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.health.status","typeLabel":"string"},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.health.integrator_message","typeLabel":"string"},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.health.failure_count","typeLabel":"string"},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.health.transient_message","typeLabel":"string"},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.health.transient_failure_count","typeLabel":"string"},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.health.last_attempt_at","typeLabel":"string"}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource","uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.health","typeLabel":"HealthResource · object"},"auth_url":{"type":"string","description":"URL to authorize the connection with Notion. Only present when authorization is required.","uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.auth_url","typeLabel":"string"},"databases":{"type":"array","items":{"$circularRef":"1eda84be-8980-45e6-b112-5f3673d06c26"},"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection.databases","typeLabel":"array"}},"required":["id","name","enabled","workspace_id","workspace_name","workspace_icon","owner_email","duplicated_template_id","last_synced_at","created_at","updated_at"],"title":"NotionConnectionResource","uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.connection","typeLabel":"NotionConnectionResource · object"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.health.status","typeLabel":"string"},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.health.integrator_message","typeLabel":"string"},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.health.failure_count","typeLabel":"string"},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.health.transient_message","typeLabel":"string"},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.health.transient_failure_count","typeLabel":"string"},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.health.last_attempt_at","typeLabel":"string"}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource","uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.health","typeLabel":"HealthResource · object"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"},"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3.transfer_links","typeLabel":"array"}},"uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.3","typeLabel":"NotionDatabaseResource · object"},{"type":"null","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","uniqueKey":"data.transfer_links.items.[INDEX].destination.oneOf.4","typeLabel":"null"}],"uniqueKey":"data.transfer_links.items.[INDEX].destination","typeLabel":"YnabBudgetAccountResource · object | LunchMoneyAccountResource · object | GoogleSheetResource · object | NotionDatabaseResource · object | null"},"rules":{"type":"array","description":"The rules attached to the transfer link. Will be included in the response if the `include` query parameter contains `rules`.\nEach object includes:\n- order: The position of the rule in the transfer link's rule list. Rules are applied in ascending order.\n- rule: The rule resource data","items":{"type":"object","properties":{"order":{"type":"integer","isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].rules.items.[INDEX].order","typeLabel":"integer"},"rule":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"data.transfer_links.items.[INDEX].rules.items.[INDEX].rule.additionalProperties","typeLabel":"any"},"isRequired":true,"uniqueKey":"data.transfer_links.items.[INDEX].rules.items.[INDEX].rule","typeLabel":"object"}},"required":["order","rule"],"uniqueKey":"data.transfer_links.items.[INDEX].rules.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.transfer_links.items.[INDEX].rules","typeLabel":"object[]"}},"required":["id","financial_account_id","destination_type","destination_id","transfer_start_date","active","sync_mode","on_booked_change","created_at","updated_at"],"title":"TransferLinkResource","uniqueKey":"data.transfer_links.items.[INDEX]","typeLabel":"TransferLinkResource · object"},"uniqueKey":"data.transfer_links","typeLabel":"TransferLinkResource · object[]"},"transfer_links_count":{"type":"string","description":"Left out for tokens without the `transfer-links:read` scope.","uniqueKey":"data.transfer_links_count","typeLabel":"string"}},"required":["id","enabled","live","integrator","account_category","raw_type","cash_balance","total_balance","meta","name","custom_name","institution_name","display_name","currency","product_name","cash_account_type","account_usage","details","details_last_synced_at","transactions_last_synced_at","transactions_backfill_cursor","balances_last_synced_at","balance","created_at","updated_at"],"title":"FinancialAccountResource","isRequired":true,"uniqueKey":"data","typeLabel":"FinancialAccountResource · object"}},"required":["message","data"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"Manual account created.","data":{"id":"\u003cstring>","enabled":"\u003cstring>","live":"\u003cstring>","integrator":"\u003cstring>","account_category":"\u003cstring>","raw_type":"\u003cstring>","cash_balance":{"amount":"\u003cstring>","currency":"\u003cstring>"},"total_balance":{"amount":"\u003cstring>","currency":"\u003cstring>"},"meta":"\u003cstring>","name":"\u003cstring>","custom_name":"\u003cstring>","institution_name":"\u003cstring>","display_name":"\u003cstring>","currency":"\u003cstring>","product_name":"\u003cstring>","cash_account_type":"\u003cstring>","account_usage":"\u003cstring>","details":"\u003cstring>","details_last_synced_at":"\u003cstring>","transactions_last_synced_at":"\u003cstring>","transactions_backfill_cursor":"\u003cstring>","balances_last_synced_at":"\u003cstring>","balance":{"currency":"\u003cstring>","available":"\u003cstring>","cleared":"\u003cstring>"},"created_at":"\u003cstring>","updated_at":"\u003cstring>","financial_connection_id":"\u003cstring>","financial_connection":{"id":"\u003cstring>","institution_id":"\u003cstring>","region":"\u003cstring>","enabled":"\u003cstring>","status":"\u003cstring>","status_message":"\u003cstring>","sync_balances":"\u003cstring>","supports_reauthorization":true,"supports_manage":true,"max_historical_days":"\u003cstring>","access_valid_for_days":"\u003cstring>","consent_expires_at":"\u003cstring>","reference":"\u003cstring>","accounts_last_synced_at":"\u003cstring>","setup_pending":true,"setup_renewal":true,"activated_at":"\u003cstring>","created_at":"\u003cstring>","updated_at":"\u003cstring>","institution":{"id":"\u003cstring>","integrator":"\u003cstring>","region":"\u003cstring>","country":"\u003cstring>","name":"\u003cstring>","bic":"\u003cstring>","external_id":"\u003cstring>","logo":"\u003cstring>","supported":"\u003cstring>","supports_pending_transactions":"\u003cstring>","supports_card_accounts":"\u003cstring>","max_historical_days":"\u003cstring>","max_access_valid_for_days":"\u003cstring>","supported_products":"\u003cstring>","category":"\u003cstring>","updated_at":"\u003cstring>"},"health":{"status":"\u003cstring>","integrator_message":"\u003cstring>","failure_count":"\u003cstring>","transient_message":"\u003cstring>","transient_failure_count":"\u003cstring>","last_attempt_at":"\u003cstring>"},"financial_accounts":"\u003carray>","financial_accounts_count":"\u003cstring>"},"config":{"map_fields":{"payee":"\u003cstring>","description":"\u003cstring>","date":"\u003cstring>"},"enrichment":{"enabled":"\u003cstring>","provider":"\u003cstring>","country":"\u003cstring>"},"sync_start_date":"2025-01-01","sync_auto":"\u003cstring>","sync_pending_transactions":"\u003cstring>","pending_settlement_matching":"\u003cstring>","pending_settlement_max_days":"\u003cstring>","fuzzy_counterparty_matching":"\u003cstring>","fuzzy_counterparty_min_chars":"\u003cstring>","sync_balances":"\u003cstring>","sync_frequency_in_minutes":"\u003cstring>","fields_for_duplicate_filtering":["\u003cstring>"]},"health":{"status":"\u003cstring>","integrator_message":"\u003cstring>","failure_count":"\u003cstring>","transient_message":"\u003cstring>","transient_failure_count":"\u003cstring>","last_attempt_at":"\u003cstring>"},"loan":["\u003cunknown>"],"account_number_masked":"\u003cstring>","bban":"\u003cstring>","scan":"\u003cstring>","iban":"\u003cstring>","bic":"\u003cstring>","owner_name":"\u003cstring>","owner_address":"\u003cstring>","linked_accounts":"\u003cstring>","msisdn":"\u003cstring>","integrator_id":"\u003cstring>","institution_id":"\u003cstring>","rules":[{"order":123,"rule":{}}],"transfer_links":[{"id":"\u003cstring>","financial_account_id":"\u003cstring>","destination_type":"\u003cstring>","destination_id":"\u003cstring>","transfer_start_date":"2025-01-01","active":"\u003cstring>","sync_mode":"\u003cstring>","on_booked_change":{"update_status":"\u003cstring>","update_payee":"\u003cstring>","update_description":"\u003cstring>","update_amount":"\u003cstring>"},"created_at":"\u003cstring>","updated_at":"\u003cstring>","financial_account":"\u003cunknown>","destination":{"id":"\u003cstring>","budget_id":"\u003cstring>","ynab_id":"\u003cstring>","name":"\u003cstring>","type":"\u003cstring>","on_budget":"\u003cstring>","closed":"\u003cstring>","note":"\u003cstring>","balance":"\u003cstring>","cleared_balance":"\u003cstring>","uncleared_balance":"\u003cstring>","transfer_payee_id":"\u003cstring>","direct_import_linked":"\u003cstring>","last_reconciled_at":"\u003cstring>","created_at":"\u003cstring>","updated_at":"\u003cstring>","budget":{"id":"\u003cstring>","connection_id":"\u003cstring>","ynab_id":"\u003cstring>","enabled":"\u003cstring>","name":"\u003cstring>","currency":"\u003cstring>","first_month":"\u003cstring>","last_month":"\u003cstring>","last_synced_at":"\u003cstring>","created_at":"\u003cstring>","updated_at":"\u003cstring>","connection":{"id":"\u003cstring>","name":"\u003cstring>","enabled":"\u003cstring>","sync_balances":"\u003cstring>","ynab_user_id":"\u003cstring>","last_synced_at":"\u003cstring>","created_at":"\u003cstring>","updated_at":"\u003cstring>","health":{"status":"\u003cstring>","integrator_message":"\u003cstring>","failure_count":"\u003cstring>","transient_message":"\u003cstring>","transient_failure_count":"\u003cstring>","last_attempt_at":"\u003cstring>"},"auth_url":"\u003cstring>","budgets":"\u003carray>"},"accounts":"\u003carray>"},"health":{"status":"\u003cstring>","integrator_message":"\u003cstring>","failure_count":"\u003cstring>","transient_message":"\u003cstring>","transient_failure_count":"\u003cstring>","last_attempt_at":"\u003cstring>"},"transfer_links":"\u003carray>"},"rules":[{"order":123,"rule":{}}]}],"transfer_links_count":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"d9529bd1-8f4e-4623-a21f-dc0d8589380a":{"description":"Unauthenticated","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"required":["message"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"6700b816-defb-4583-85da-0f8f1c3b7b29":{"description":"Authorization error","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Error overview.","isRequired":true,"uniqueKey":"message","typeLabel":"string"}},"required":["message"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"eb986094-7e9c-4ae0-90a9-edc095364c17":{"description":"Validation error","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","description":"Errors overview.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"errors":{"type":"object","description":"A detailed description of each field that failed validation.","additionalProperties":{"type":"array","items":{"type":"string","uniqueKey":"errors.additionalProperties.items.[INDEX]","typeLabel":"string"},"uniqueKey":"errors.additionalProperties","typeLabel":"string[]"},"isRequired":true,"uniqueKey":"errors","typeLabel":"object"}},"required":["message","errors"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","errors":{}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"dc81c440-001e-43f7-aecb-e77be972661b":{"oauth2":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.synci.io/oauth/authorize","tokenUrl":"https://api.synci.io/oauth/token","scopes":{"profile:read":"View your name, email, and profile details","accounts:read":"View your connected financial accounts and balances","accounts:write":"Update, sync, and remove your financial accounts, and change their settings","transactions:read":"View your transactions","transactions:write":"Create, update, and delete your transactions","sensitive:read":"See sensitive identifiers like account numbers and account holder names","transfer-links:read":"View your transfer links and their transfer history","transfer-links:write":"Create, update, and delete transfer links, and undo transfers","rules:read":"View your rules and rule activity","rules:write":"Create, update, and delete rules, and undo rule actions","webhooks:read":"View your webhook endpoints","webhooks:write":"Create, update, and delete webhook endpoints, and rotate their secrets","destinations:read":"View your connected destinations","destinations:write":"Connect, update, and remove destinations","financial-connections:read":"View your connected institutions","financial-connections:write":"Manage your connected institutions"}}},"scopes":[],"schemeName":"oauth2"}},"dedb45e1-c15a-47c7-8b7a-0b978bddcdb8":{"http":{"type":"http","description":"Bearer token (personal access token or OAuth access token)","scheme":"bearer","scopes":[],"schemeName":"http"}}},"servers":{"2f1b3b51-ec47-4944-8596-a27703622525":{"url":"https://api.synci.io/api/v1"}},"schemas":{"e8a9bf44-5f49-4f46-8f0e-6b0cf3c6185e":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"enabled":{"type":"string","isRequired":true},"live":{"type":"string","description":"Whether the account is in use: it AND its connection are enabled. A disabled connection keeps each\naccount's own `enabled` as the user set it, but none of its accounts sync until it is enabled again.","isRequired":true},"integrator":{"type":"string","description":"Provider that populates this account (GOCARDLESS / AKAHU / SNAPTRADE).","isRequired":true},"account_category":{"oneOf":[{"type":"string","description":"High-level kind of account: BANK (checking/savings, provided by\nbanking providers), INVESTMENT (brokerage), DEPOSIT (cash\nsub-account at a broker), LOC (line of credit), LOAN (a manual\nloan Synci models from its terms). Determines which fields are\npopulated on the account.","isRequired":true},{"type":"null","description":"High-level kind of account: BANK (checking/savings, provided by\nbanking providers), INVESTMENT (brokerage), DEPOSIT (cash\nsub-account at a broker), LOC (line of credit), LOAN (a manual\nloan Synci models from its terms). Determines which fields are\npopulated on the account.","isRequired":true}],"isRequired":true},"raw_type":{"type":"string","description":"Provider's free-form sub-type label (SnapTrade only). Examples:\n\"Roth IRA\", \"TFSA\", \"Cash\". Null for bank accounts.","isRequired":true},"cash_balance":{"oneOf":[{"type":"object","description":"Uninvested cash held at the broker, for INVESTMENT accounts.\nNull for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string","isRequired":true},"currency":{"type":"string","isRequired":true}},"isRequired":true},{"type":"null","description":"Uninvested cash held at the broker, for INVESTMENT accounts.\nNull for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"isRequired":true}],"isRequired":true},"total_balance":{"oneOf":[{"type":"object","description":"Broker-reported total account value (positions + cash) for\nINVESTMENT accounts. Brokerages report this on the account\npayload rather than as a dated snapshot, so it does not appear\nin the balances endpoint. Null for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string","isRequired":true},"currency":{"type":"string","isRequired":true}},"isRequired":true},{"type":"null","description":"Broker-reported total account value (positions + cash) for\nINVESTMENT accounts. Brokerages report this on the account\npayload rather than as a dated snapshot, so it does not appear\nin the balances endpoint. Null for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"isRequired":true}],"isRequired":true},"meta":{"type":"string","description":"Provider-specific extras that don't fit anywhere else (e.g.\nSnapTrade's `meta.type`/`meta.status` for crypto exchanges).\nTreat as opaque — schema is provider-defined.","isRequired":true},"name":{"type":"string","description":"Name of the account, as assigned by the financial institution.","isRequired":true},"custom_name":{"type":"string","description":"Custom name for the account, as defined by the end user.","isRequired":true},"institution_name":{"type":"string","description":"The lender's name on a manual account, as the user entered it. Null on provider accounts and on manual\naccounts without one: group those under their connection's institution (\"Manual accounts\").","isRequired":true},"display_name":{"type":"string","description":"Name of the account as defined by the end user within online channels.","isRequired":true},"currency":{"type":"string","description":"ISO 4217 currency code.","isRequired":true},"product_name":{"type":"string","description":"Product Name of the Institution for this account, proprietary definition.","isRequired":true},"cash_account_type":{"type":"string","description":"ExternalCashAccountType1Code from ISO 20022 (e.g. CACC, CARD, SVGS), when reported by the institution.","isRequired":true},"account_usage":{"type":"string","description":"Usage of the account: PRIV (private personal account) or ORGA (professional account).","isRequired":true},"details":{"type":"string","description":"Specifications that might be provided by the financial institution - characteristics of the account - characteristics of the relevant card.","isRequired":true},"details_last_synced_at":{"type":"string","description":"Last time the financial account details were fetched from the integrator.","isRequired":true},"transactions_last_synced_at":{"type":"string","description":"Last time the financial account transactions were fetched from the integrator.","isRequired":true},"transactions_backfill_cursor":{"oneOf":[{"type":"string","description":"History is fetched newest-first in windows of up to 90 days. While older\nwindows are still being fetched this is the earliest date already covered;\ntransactions before it arrive on subsequent syncs, at the pace the\ninstitution's daily request allowance permits. Null once the account's\nfull history (up to the connection's `max_historical_days`) is in.","isRequired":true},{"type":"null","description":"History is fetched newest-first in windows of up to 90 days. While older\nwindows are still being fetched this is the earliest date already covered;\ntransactions before it arrive on subsequent syncs, at the pace the\ninstitution's daily request allowance permits. Null once the account's\nfull history (up to the connection's `max_historical_days`) is in.","isRequired":true}],"isRequired":true},"balances_last_synced_at":{"type":"string","description":"Last time the financial account balances were fetched from the integrator.","isRequired":true},"balance":{"type":"object","description":"Balance of the account at the last sync. To get all types of balances at different dates, use the balances endpoints.","properties":{"currency":{"type":"string","description":"ISO 4217 currency of these figures. Only differs from the\naccount's `currency` on a multi-currency account (`XXX`),\nwhich holds a balance per currency: this is the one shown.","isRequired":true},"available":{"oneOf":[{"type":"string"},{"type":"integer","enum":[0]}]},"cleared":{"oneOf":[{"type":"string"},{"type":"integer","enum":[0]}]}},"required":["currency"],"isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"financial_connection_id":{"type":"string"},"financial_connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"institution_id":{"type":"string","isRequired":true},"region":{"type":"string","description":"Residency region of the connection's data (`eu`, `us`), decided\nby the institution's provider when the connection was created.","isRequired":true},"enabled":{"type":"string","isRequired":true},"status":{"oneOf":[{"type":"string","description":"Provider-neutral lifecycle status (PENDING_AUTHORIZATION / CONNECTED / ...).","isRequired":true},{"type":"null","description":"Provider-neutral lifecycle status (PENDING_AUTHORIZATION / CONNECTED / ...).","isRequired":true}],"isRequired":true},"status_message":{"type":"string","description":"Provider status message.","isRequired":true},"sync_balances":{"type":"string","description":"Whether balances should be synced. Applies to all accounts belonging to this connection.","isRequired":true},"supports_reauthorization":{"type":"boolean","description":"Whether `PUT /reauthorize` will start a fresh OAuth flow against this connection's\nprovider. True for every currently supported provider (GoCardless renews PSD2 consent;\nAkahu and SnapTrade re-grant a previously-disabled connection). When false, the\nreauthorize endpoint responds with `REAUTHORIZATION_NOT_SUPPORTED`.","isRequired":true},"supports_manage":{"type":"boolean","description":"Whether GET /manage will return a URL you can redirect the user to so\nthey can manage their existing connections directly with the provider. Currently\ntrue for Akahu (sends them to oauth.akahu.nz where they can add / revoke banks\nunder their enduring consent), false for GoCardless and SnapTrade.","isRequired":true},"max_historical_days":{"oneOf":[{"type":"string","description":"The maximum number of days of historical data Synci is able to fetch. Applies to all accounts belonging to this connection.","isRequired":true},{"type":"null","description":"The maximum number of days of historical data Synci is able to fetch. Applies to all accounts belonging to this connection.","isRequired":true}],"isRequired":true},"access_valid_for_days":{"oneOf":[{"type":"string","description":"Also known as consent lifetime. The number of days Synci is able to access accounts belonging to this connection.\nE.g. if this is set to 180 days, you will have to re-authenticate the connection every 180 days.\nSynci will send you an email when the expiry date is approaching.","isRequired":true},{"type":"null","description":"Also known as consent lifetime. The number of days Synci is able to access accounts belonging to this connection.\nE.g. if this is set to 180 days, you will have to re-authenticate the connection every 180 days.\nSynci will send you an email when the expiry date is approaching.","isRequired":true}],"isRequired":true},"consent_expires_at":{"oneOf":[{"type":"string","description":"The date and time when the bank consent expires and the connection\nhas to be reauthorized, or null for providers that grant enduring\nconsent (Akahu, SnapTrade).","isRequired":true},{"type":"null","description":"The date and time when the bank consent expires and the connection\nhas to be reauthorized, or null for providers that grant enduring\nconsent (Akahu, SnapTrade).","isRequired":true}],"isRequired":true},"reference":{"type":"string","description":"Caller-supplied correlation id set at creation (e.g. a platform\ndeveloper's own end-user id). Filterable via ?filter[reference]=.","isRequired":true},"accounts_last_synced_at":{"type":"string","isRequired":true},"setup_pending":{"type":"boolean","description":"Whether the post-connection setup (choosing accounts, naming them,\npicking a sync start date) is still to be finished. While true the\naccounts exist but their first transaction sync is held back until\n`POST /setup/complete`, or until the setup goes stale. Always false\nfor connections created by API clients.","isRequired":true},"setup_renewal":{"type":"boolean","description":"True while a pending setup belongs to a consent renewal rather than a new connection: only the\naccount choice is asked for, and the accounts the user had enabled stay pre-selected.","isRequired":true},"activated_at":{"type":"string","description":"When the connection first went live (provider callback succeeded).\nNull while consent is still pending or the flow was abandoned.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"institution":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"integrator":{"type":"string","description":"The integrator used to connect to this institution.","isRequired":true},"region":{"type":"string","description":"Residency region connections to this institution are stored in (`eu`, `us`).","isRequired":true},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","isRequired":true},"name":{"type":"string","description":"Name of the institution.","isRequired":true},"bic":{"type":"string","description":"Institution Identifier Code (BIC/SWIFT code).","isRequired":true},"external_id":{"type":"string","description":"The ID of the institution as provided by the integrator.","isRequired":true},"logo":{"type":"string","description":"URL to the institution's logo, as provided by the integrator.","isRequired":true},"supported":{"type":"string","description":"Whether the institution is supported. Will be true in most cases, but might be false if the integrator stops supporting an institution.","isRequired":true},"supports_pending_transactions":{"type":"string","description":"Whether the institution supports pending transactions.","isRequired":true},"supports_card_accounts":{"type":"string","description":"Whether the institution supports card accounts.","isRequired":true},"max_historical_days":{"type":"string","description":"The maximum number of days of historical data this institution can provide.\n`null` where the provider imposes no such limit and fetches whatever the bank\nholds, which is the case for every US institution. Do not read null as zero.","isRequired":true},"max_access_valid_for_days":{"type":"string","description":"Also known as consent lifetime. The maximum number of days access to this institution may be valid for.\nFor most European institutions this ranges from 90 to 180 days. `null` where access does not\nexpire on a schedule and no periodic re-consent is required, which is the case for every US\ninstitution: those connections break only when the bank breaks them.","isRequired":true},"supported_products":{"type":"string","description":"The kinds of data this institution can serve, e.g. `[\"ACCOUNTS\", \"TRANSACTIONS\", \"INVESTMENTS\"]`.\n`null` means the provider does not report it, NOT that the institution serves nothing: treat it\nas no information rather than as a negative. Only US institutions report it today.","isRequired":true},"category":{"oneOf":[{"type":"string","description":"The category of the financial institution.","isRequired":true},{"type":"null","description":"The category of the financial institution.","isRequired":true}],"isRequired":true},"updated_at":{"type":"string","description":"The date and time when the institution was last updated.","isRequired":true}},"required":["id","integrator","region","country","name","bic","external_id","logo","supported","supports_pending_transactions","supports_card_accounts","max_historical_days","max_access_valid_for_days","supported_products","category","updated_at"],"title":"InstitutionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"financial_accounts":{"type":"array","description":"Financial accounts belonging to this connection.","items":{"$circularRef":"e8a9bf44-5f49-4f46-8f0e-6b0cf3c6185e"}},"financial_accounts_count":{"type":"string"}},"required":["id","institution_id","region","enabled","status","status_message","sync_balances","supports_reauthorization","supports_manage","max_historical_days","access_valid_for_days","consent_expires_at","reference","accounts_last_synced_at","setup_pending","setup_renewal","activated_at","created_at","updated_at"],"title":"FinancialConnectionResource"},"config":{"type":"object","properties":{"map_fields":{"type":"object","description":"Which field(s) are used when mapping the \"payee\", \"description\" and \"date\" fields for a transaction.\nOne of the fixed option names (`AUTO`, `NONE`, `CREDITOR_NAME`, `BOOKING_DATE`, ...).\nVersion 2 of the API stores an ordered fallback chain per field instead; this is the closest fixed\noption for the stored chain, and a chain without an equivalent reads as `AUTO`.","properties":{"payee":{"type":"string","isRequired":true},"description":{"type":"string","isRequired":true},"date":{"type":"string","isRequired":true}},"required":["payee","description","date"],"isRequired":true},"enrichment":{"type":"object","description":"Enrich transaction data with additional information from an external provider","properties":{"enabled":{"type":"string","description":"Whether transaction enrichment is enabled","isRequired":true},"provider":{"type":"string","description":"The provider to use for transaction enrichment.","isRequired":true},"country":{"type":"string","description":"The country where transactions are made. Providing a country significantly improves enrichment accuracy.","isRequired":true}},"required":["enabled","provider","country"],"isRequired":true},"sync_start_date":{"oneOf":[{"type":"string","description":"The date to start syncing transactions from.\nCannot be earlier than the date the connection was authorized minus the connection's `max_historical_days`.\nWill default to today if not set.","example":"2025-01-01","isRequired":true},{"type":"null","description":"The date to start syncing transactions from.\nCannot be earlier than the date the connection was authorized minus the connection's `max_historical_days`.\nWill default to today if not set.","example":"2025-01-01","isRequired":true}],"isRequired":true},"sync_auto":{"type":"string","description":"Whether data should be synced automatically. If set to false, you will need to manually trigger a sync every time you want to refresh data.","isRequired":true},"sync_pending_transactions":{"type":"string","description":"Whether pending transactions should be synced. For some banks, setting this to true can cause duplicate transactions.","isRequired":true},"pending_settlement_matching":{"type":"string","description":"Whether a booked transaction can settle an existing pending transaction when the amount changed.\nCard pre-authorizations (fuel stations, hotels, car rentals) are often authorized with a placeholder amount\nthat changes when the transaction is booked, together with the transaction's identifiers.\nWhen enabled, a booked transaction that matches a pending transaction's counterparty (and card details,\nwhen the bank provides them) within `pending_settlement_max_days` days updates that pending transaction\ninstead of creating a duplicate.\nOnly pending transactions are matched this way; deduplication of booked transactions is unaffected.\nEnabled by default; `null` means the default applies.","isRequired":true},"pending_settlement_max_days":{"type":"string","description":"The maximum number of days between a pending transaction and its booked settlement\nfor `pending_settlement_matching` to link the two. Defaults to 7; `null` means the default applies.","isRequired":true},"fuzzy_counterparty_matching":{"type":"string","description":"Whether a counterparty name the bank re-words when a transaction settles can still match\nthe pending entry it replaces (\"NORWEGIAN.COM\" settling as \"NORWEGIAN.C 3284405123\").\nDescriptors that conflict rather than truncate or extend never match, and only pending\ntransactions are matched this way.\nEnabled by default; `null` means the default applies.","isRequired":true},"fuzzy_counterparty_min_chars":{"type":"string","description":"The minimum number of characters two re-worded counterparty descriptors must align on for\n`fuzzy_counterparty_matching` to treat them as the same party. Defaults to 6; `null` means\nthe default applies.","isRequired":true},"sync_balances":{"type":"string","description":"Whether balances should be synced.","isRequired":true},"sync_frequency_in_minutes":{"type":"string","description":"How often to sync data, in minutes. The permitted minimum is set by the\nsubscriber's plan (`max_sync_frequency_minutes` in the plan's features, see\n`GET /billing/plans`); 30 is only the absolute lower bound any plan could set. This is the CONFIGURED value. The interval actually used may be longer if the\ninstitution has refused requests on its own daily cap, in which case the account\nis demoted to a slower cadence automatically.","isRequired":true},"fields_for_duplicate_filtering":{"oneOf":[{"type":"array","items":{"type":"string"},"description":"An array of Transaction fields to use when filtering duplicate transactions.\nWhen a new transaction is synced, these fields are compared with existing transactions.\nIf the fields are identical, the new transaction is considered a duplicate and will be ignored.\nThis should only be used if you are struggling with duplicate transactions, and know which fields can be used to filter them. For everyone else, omit this field."},{"type":"null","description":"An array of Transaction fields to use when filtering duplicate transactions.\nWhen a new transaction is synced, these fields are compared with existing transactions.\nIf the fields are identical, the new transaction is considered a duplicate and will be ignored.\nThis should only be used if you are struggling with duplicate transactions, and know which fields can be used to filter them. For everyone else, omit this field."}]}},"required":["map_fields","enrichment","sync_start_date","sync_auto","sync_pending_transactions","pending_settlement_matching","pending_settlement_max_days","fuzzy_counterparty_matching","fuzzy_counterparty_min_chars","sync_balances","sync_frequency_in_minutes"],"title":"InstitutionConfigResource","description":"The financial account configuration. If the financial account has no configuration, the banks default configuration will be used."},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"loan":{"oneOf":[{"type":"array","items":{"oneOf":[{}]},"description":"The loan terms, rate history and derived figures. Present on LOAN accounts only."},{"type":"null","description":"The loan terms, rate history and derived figures. Present on LOAN accounts only."}]},"account_number_masked":{"type":"string","description":"Masked account number (e.g. \"****1234\"). Only present when the\nprovider supplies it (SnapTrade brokerages, and banks that report\na masked card PAN via GoCardless); null otherwise."},"bban":{"type":"string","description":"Basic Bank Account Number (BBAN)."},"scan":{"type":"string","description":"UK SortCodeAccountNumber (6 digit sort code + 8 digit account number), reported by some UK banks."},"iban":{"type":"string","description":"International Bank Account Number (IBAN)."},"bic":{"type":"string","description":"Bank Identifier Code (BIC/SWIFT) associated with the account."},"owner_name":{"type":"string","description":"Name of the legal account owner. If there is more than one owner, then e.g. two names might be noted here. For a corporate account, the corporate name is used for this attribute."},"owner_address":{"type":"string","description":"Address of the legal account owner, when reported by the institution."},"linked_accounts":{"type":"string","description":"Name of a cash account associated to pending card transactions, when the institution reports one. Banks often put that account's number here, so it is omitted with the other identifiers."},"msisdn":{"type":"string","description":"An alias to a payment account via a registered mobile phone number."},"integrator_id":{"type":"string","description":"The financial account ID provided by the integrator."},"institution_id":{"type":"string","description":"The financial account ID provided by the institution/bank."},"rules":{"type":"array","description":"The rules attached to this financial account","items":{"type":"object","properties":{"order":{"type":"integer","isRequired":true},"rule":{"type":"object","additionalProperties":{"oneOf":[{}]},"isRequired":true}},"required":["order","rule"]}},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"financial_account_id":{"type":"string","description":"The ID of the financial account transactions are being transferred from.","isRequired":true},"destination_type":{"type":"string","description":"The type of destination the transfer link sends transactions to:\n- **YNAB**: a YNAB budget account.\n- **LUNCH_MONEY**: a Lunch Money account.\n- **GOOGLE_SHEETS**: a Google Sheet.\n- **NOTION**: a Notion database.","isRequired":true},"destination_id":{"type":"string","description":"The ID of the destination transactions are being transferred to. The type of resource the ID refers to depends on the destination type:\n- **YNAB**: the ID of a YNAB budget account.\n- **LUNCH_MONEY**: the ID of a Lunch Money account.\n- **GOOGLE_SHEETS**: the ID of a Google Sheet.\n- **NOTION**: the ID of a Notion database.","isRequired":true},"transfer_start_date":{"type":"string","description":"The date from which the transfer link will start transferring transactions.\nIf not provided, all available transactions in the attached financial account will be transferred regardless of their date.","examples":["2025-01-01"],"isRequired":true},"active":{"type":"string","description":"Whether the transfer link is enabled.","isRequired":true},"sync_mode":{"type":"string","description":"Which streams to push to the destination:\n- `transactions`: only individual transactions (default for bank sources)\n- `balance`: only periodic balance snapshots\n- `transactions_and_balance`: both (default for brokerage / crypto sources)","isRequired":true},"on_booked_change":{"type":"object","description":"Which destination fields to update when a transaction's booked status changes.\nIf not provided, all fields will be updated.","properties":{"update_status":{"type":"string","isRequired":true},"update_payee":{"type":"string","isRequired":true},"update_description":{"type":"string","isRequired":true},"update_amount":{"type":"string","isRequired":true}},"required":["update_status","update_payee","update_description","update_amount"],"isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"financial_account":{"$circularRef":"e8a9bf44-5f49-4f46-8f0e-6b0cf3c6185e","description":"The associated FinancialAccount resource. Will be included in the response if the `include` query parameter contains `financial_account`."},"destination":{"oneOf":[{"type":"object","title":"YnabBudgetAccountResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","budget_id","ynab_id","name","type","on_budget","closed","note","balance","cleared_balance","uncleared_balance","transfer_payee_id","direct_import_linked","last_reconciled_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"budget_id":{"type":"string","isRequired":true},"ynab_id":{"type":"string","description":"The account's ID in YNAB.","isRequired":true},"name":{"type":"string","isRequired":true},"type":{"type":"string","isRequired":true},"on_budget":{"type":"string","description":"Whether the account is on budget in YNAB.","isRequired":true},"closed":{"type":"string","description":"Whether the account is closed in YNAB.","isRequired":true},"note":{"type":"string","description":"The account note from YNAB, if set.","isRequired":true},"balance":{"type":"string","description":"The account balance as reported by YNAB.","isRequired":true},"cleared_balance":{"type":"string","description":"The cleared balance as reported by YNAB.","isRequired":true},"uncleared_balance":{"type":"string","description":"The uncleared balance as reported by YNAB.","isRequired":true},"transfer_payee_id":{"type":"string","description":"The YNAB payee ID used for transfers to this account.","isRequired":true},"direct_import_linked":{"type":"string","description":"Whether the account is linked to YNAB Direct Import.","isRequired":true},"last_reconciled_at":{"type":"string","description":"When the account was last reconciled in YNAB.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"budget":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"ynab_id":{"type":"string","description":"The budget's ID in YNAB.","isRequired":true},"enabled":{"type":"string","description":"Whether syncing to this budget is enabled.","isRequired":true},"name":{"type":"string","isRequired":true},"currency":{"type":"string","description":"The budget's currency in YNAB.","isRequired":true},"first_month":{"type":"string","description":"The budget's first month in YNAB.","isRequired":true},"last_month":{"type":"string","description":"The budget's last month in YNAB.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"sync_balances":{"type":"string","description":"Whether account balances are synced to YNAB.","isRequired":true},"ynab_user_id":{"type":"string","description":"The connected user's ID in YNAB.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with YNAB. Only present when authorization is required."},"budgets":{"type":"array","items":{"$circularRef":"248c304a-3ec9-4df8-af52-e0efd200a978"}}},"required":["id","name","enabled","sync_balances","ynab_user_id","last_synced_at","created_at","updated_at"],"title":"YnabConnectionResource"},"accounts":{"type":"array","items":{"$circularRef":"10a862ec-a219-4aac-b0f2-677b77b5b836"}}},"required":["id","connection_id","ynab_id","enabled","name","currency","first_month","last_month","last_synced_at","created_at","updated_at"],"title":"YnabBudgetResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"object","title":"LunchMoneyAccountResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","lunch_money_id","name","display_name","type","subtype","currency","balance","balance_as_of","closed_on","exclude_from_transactions","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"lunch_money_id":{"type":"string","description":"The account's ID in Lunch Money.","isRequired":true},"name":{"type":"string","isRequired":true},"display_name":{"type":"string","description":"The account's display name in Lunch Money, if set.","isRequired":true},"type":{"type":"string","description":"The account type as reported by Lunch Money, e.g. \"cash\" or \"credit\".","isRequired":true},"subtype":{"type":"string","description":"The account subtype as reported by Lunch Money, if set.","isRequired":true},"currency":{"type":"string","isRequired":true},"balance":{"type":"string","description":"The account balance as reported by Lunch Money.","isRequired":true},"balance_as_of":{"type":"string","description":"When the balance was last updated in Lunch Money.","isRequired":true},"closed_on":{"type":"string","description":"When the account was closed in Lunch Money, if closed.","isRequired":true},"exclude_from_transactions":{"type":"string","description":"Whether the account is excluded from transactions in Lunch Money.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","description":"The name of the connected Lunch Money budget.","isRequired":true},"lunch_money_details":{"type":"object","description":"Details about the connected Lunch Money account.","properties":{"user_name":{"type":"string","description":"Name of the Lunch Money user.","isRequired":true},"user_email":{"type":"string","description":"Email address of the Lunch Money user.","isRequired":true},"user_id":{"type":"string","description":"The user's ID in Lunch Money.","isRequired":true},"bank_account_id":{"type":"string","description":"The connected account's ID in Lunch Money.","isRequired":true},"budget_name":{"type":"string","description":"Name of the connected Lunch Money budget.","isRequired":true},"primary_currency":{"type":"string","description":"The budget's primary currency in Lunch Money.","isRequired":true},"api_key_label":{"type":"string","description":"Label of the Lunch Money API token used by this connection, if set.","isRequired":true}},"required":["user_name","user_email","user_id","bank_account_id","budget_name","primary_currency","api_key_label"],"isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"sync_balances":{"type":"string","description":"Whether account balances are synced to Lunch Money.","isRequired":true},"sync_transactions":{"type":"string","description":"Whether transactions are synced to Lunch Money.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"accounts":{"type":"array","items":{"$circularRef":"4b474cf8-3b5a-4e7d-9d9a-257a073ea9dd"}}},"required":["id","name","lunch_money_details","enabled","sync_balances","sync_transactions","last_synced_at","created_at","updated_at"],"title":"LunchMoneyConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"object","title":"GoogleSheetResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","name","spreadsheet_id","spreadsheet_name","spreadsheet_url","is_synci_managed","transactions_sheet_gid","transactions_sheet_name","live_balance_sheet_gid","live_balance_sheet_name","balance_history_sheet_gid","balance_history_sheet_name","last_synced_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"name":{"type":"string","description":"Display name of the spreadsheet in Synci.","isRequired":true},"spreadsheet_id":{"type":"string","description":"The spreadsheet's ID in Google Sheets, as found in its URL.","isRequired":true},"spreadsheet_name":{"type":"string","description":"The spreadsheet's title in Google Sheets.","isRequired":true},"spreadsheet_url":{"type":"string","description":"Link to open the spreadsheet in Google Sheets.","isRequired":true},"is_synci_managed":{"type":"string","description":"True when the spreadsheet was created by Synci; false when an existing spreadsheet was attached.","isRequired":true},"transactions_sheet_gid":{"type":"string","description":"The gid of the tab that receives transactions, if assigned.","isRequired":true},"transactions_sheet_name":{"type":"string","description":"The name of the tab that receives transactions, if assigned.","isRequired":true},"live_balance_sheet_gid":{"type":"string","description":"The gid of the tab that holds current balances, if assigned.","isRequired":true},"live_balance_sheet_name":{"type":"string","description":"The name of the tab that holds current balances, if assigned.","isRequired":true},"balance_history_sheet_gid":{"type":"string","description":"The gid of the tab that records balance history, if assigned.","isRequired":true},"balance_history_sheet_name":{"type":"string","description":"The name of the tab that records balance history, if assigned.","isRequired":true},"last_synced_at":{"type":"string","description":"When data was last synced to the spreadsheet.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"google_email":{"type":"string","description":"Email address of the connected Google account.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with Google. Only present when authorization is required."},"sheets":{"type":"array","items":{"$circularRef":"4855146d-203d-426a-9ae0-10ad2f15b3d1"}}},"required":["id","name","enabled","google_email","last_synced_at","created_at","updated_at"],"title":"GoogleSheetsConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"object","title":"NotionDatabaseResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","name","title","database_id","data_source_id","database_url","parent_page_id","parent_page_title","is_synci_managed","layout","header_config","property_map","accounts_database_id","categories_database_id","months_database_id","balance_history_database_id","balance_available","last_synced_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"name":{"type":"string","description":"Display name of the database in Synci.","isRequired":true},"title":{"type":"string","description":"The database's title in Notion.","isRequired":true},"database_id":{"type":"string","description":"The Notion database ID.","isRequired":true},"data_source_id":{"type":"string","description":"The Notion data source (table) transactions are written to.","isRequired":true},"database_url":{"type":"string","description":"Link to open the database in Notion.","isRequired":true},"parent_page_id":{"type":"string","description":"The Notion page the database lives under, when known, and its title\n(a dashboard's `name` falls back to this).","isRequired":true},"parent_page_title":{"type":"string","isRequired":true},"is_synci_managed":{"type":"string","description":"True when the database was created by Synci; false when an existing database was attached.","isRequired":true},"layout":{"type":"string","description":"\"dashboard\" when the Synci Finance template was adopted (transactions relate to Accounts,\nCategories and Months); \"flat\" for plain databases.","isRequired":true},"header_config":{"type":"string","description":"Ordered list of transaction field keys written as database properties.","isRequired":true},"property_map":{"type":"string","description":"Field key to Notion property id map Synci writes through.","isRequired":true},"accounts_database_id":{"type":"string","description":"The supporting databases next to this one, when present.","isRequired":true},"categories_database_id":{"type":"string","isRequired":true},"months_database_id":{"type":"string","isRequired":true},"balance_history_database_id":{"type":"string","isRequired":true},"balance_available":{"type":"string","description":"Whether balance databases exist or can be provisioned (requires a parent page).","isRequired":true},"last_synced_at":{"type":"string","description":"When data was last synced to the database.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"workspace_id":{"type":"string","description":"The connected Notion workspace.","isRequired":true},"workspace_name":{"type":"string","isRequired":true},"workspace_icon":{"type":"string","description":"Emoji or image URL of the workspace icon, if any.","isRequired":true},"owner_email":{"type":"string","description":"Email of the Notion user who authorized the connection, when shared.","isRequired":true},"duplicated_template_id":{"type":"string","description":"The page Notion created when the user duplicated the Synci template during authorization, if any.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with Notion. Only present when authorization is required."},"databases":{"type":"array","items":{"$circularRef":"1eda84be-8980-45e6-b112-5f3673d06c26"}}},"required":["id","name","enabled","workspace_id","workspace_name","workspace_icon","owner_email","duplicated_template_id","last_synced_at","created_at","updated_at"],"title":"NotionConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"null","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`."}]},"rules":{"type":"array","description":"The rules attached to the transfer link. Will be included in the response if the `include` query parameter contains `rules`.\nEach object includes:\n- order: The position of the rule in the transfer link's rule list. Rules are applied in ascending order.\n- rule: The rule resource data","items":{"type":"object","properties":{"order":{"type":"integer","isRequired":true},"rule":{"type":"object","additionalProperties":{"oneOf":[{}]},"isRequired":true}},"required":["order","rule"]}}},"required":["id","financial_account_id","destination_type","destination_id","transfer_start_date","active","sync_mode","on_booked_change","created_at","updated_at"],"title":"TransferLinkResource"}},"transfer_links_count":{"type":"string","description":"Left out for tokens without the `transfer-links:read` scope."}},"required":["id","enabled","live","integrator","account_category","raw_type","cash_balance","total_balance","meta","name","custom_name","institution_name","display_name","currency","product_name","cash_account_type","account_usage","details","details_last_synced_at","transactions_last_synced_at","transactions_backfill_cursor","balances_last_synced_at","balance","created_at","updated_at"],"title":"FinancialAccountResource"},"248c304a-3ec9-4df8-af52-e0efd200a978":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"ynab_id":{"type":"string","description":"The budget's ID in YNAB.","isRequired":true},"enabled":{"type":"string","description":"Whether syncing to this budget is enabled.","isRequired":true},"name":{"type":"string","isRequired":true},"currency":{"type":"string","description":"The budget's currency in YNAB.","isRequired":true},"first_month":{"type":"string","description":"The budget's first month in YNAB.","isRequired":true},"last_month":{"type":"string","description":"The budget's last month in YNAB.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"sync_balances":{"type":"string","description":"Whether account balances are synced to YNAB.","isRequired":true},"ynab_user_id":{"type":"string","description":"The connected user's ID in YNAB.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with YNAB. Only present when authorization is required."},"budgets":{"type":"array","items":{"$circularRef":"248c304a-3ec9-4df8-af52-e0efd200a978"}}},"required":["id","name","enabled","sync_balances","ynab_user_id","last_synced_at","created_at","updated_at"],"title":"YnabConnectionResource"},"accounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"budget_id":{"type":"string","isRequired":true},"ynab_id":{"type":"string","description":"The account's ID in YNAB.","isRequired":true},"name":{"type":"string","isRequired":true},"type":{"type":"string","isRequired":true},"on_budget":{"type":"string","description":"Whether the account is on budget in YNAB.","isRequired":true},"closed":{"type":"string","description":"Whether the account is closed in YNAB.","isRequired":true},"note":{"type":"string","description":"The account note from YNAB, if set.","isRequired":true},"balance":{"type":"string","description":"The account balance as reported by YNAB.","isRequired":true},"cleared_balance":{"type":"string","description":"The cleared balance as reported by YNAB.","isRequired":true},"uncleared_balance":{"type":"string","description":"The uncleared balance as reported by YNAB.","isRequired":true},"transfer_payee_id":{"type":"string","description":"The YNAB payee ID used for transfers to this account.","isRequired":true},"direct_import_linked":{"type":"string","description":"Whether the account is linked to YNAB Direct Import.","isRequired":true},"last_reconciled_at":{"type":"string","description":"When the account was last reconciled in YNAB.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"budget":{"oneOf":[{}]},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"financial_account_id":{"type":"string","description":"The ID of the financial account transactions are being transferred from.","isRequired":true},"destination_type":{"type":"string","description":"The type of destination the transfer link sends transactions to:\n- **YNAB**: a YNAB budget account.\n- **LUNCH_MONEY**: a Lunch Money account.\n- **GOOGLE_SHEETS**: a Google Sheet.\n- **NOTION**: a Notion database.","isRequired":true},"destination_id":{"type":"string","description":"The ID of the destination transactions are being transferred to. The type of resource the ID refers to depends on the destination type:\n- **YNAB**: the ID of a YNAB budget account.\n- **LUNCH_MONEY**: the ID of a Lunch Money account.\n- **GOOGLE_SHEETS**: the ID of a Google Sheet.\n- **NOTION**: the ID of a Notion database.","isRequired":true},"transfer_start_date":{"type":"string","description":"The date from which the transfer link will start transferring transactions.\nIf not provided, all available transactions in the attached financial account will be transferred regardless of their date.","examples":["2025-01-01"],"isRequired":true},"active":{"type":"string","description":"Whether the transfer link is enabled.","isRequired":true},"sync_mode":{"type":"string","description":"Which streams to push to the destination:\n- `transactions`: only individual transactions (default for bank sources)\n- `balance`: only periodic balance snapshots\n- `transactions_and_balance`: both (default for brokerage / crypto sources)","isRequired":true},"on_booked_change":{"type":"object","description":"Which destination fields to update when a transaction's booked status changes.\nIf not provided, all fields will be updated.","properties":{"update_status":{"type":"string","isRequired":true},"update_payee":{"type":"string","isRequired":true},"update_description":{"type":"string","isRequired":true},"update_amount":{"type":"string","isRequired":true}},"required":["update_status","update_payee","update_description","update_amount"],"isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"financial_account":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"enabled":{"type":"string","isRequired":true},"live":{"type":"string","description":"Whether the account is in use: it AND its connection are enabled. A disabled connection keeps each\naccount's own `enabled` as the user set it, but none of its accounts sync until it is enabled again.","isRequired":true},"integrator":{"type":"string","description":"Provider that populates this account (GOCARDLESS / AKAHU / SNAPTRADE).","isRequired":true},"account_category":{"oneOf":[{"type":"string","description":"High-level kind of account: BANK (checking/savings, provided by\nbanking providers), INVESTMENT (brokerage), DEPOSIT (cash\nsub-account at a broker), LOC (line of credit), LOAN (a manual\nloan Synci models from its terms). Determines which fields are\npopulated on the account.","isRequired":true},{"type":"null","description":"High-level kind of account: BANK (checking/savings, provided by\nbanking providers), INVESTMENT (brokerage), DEPOSIT (cash\nsub-account at a broker), LOC (line of credit), LOAN (a manual\nloan Synci models from its terms). Determines which fields are\npopulated on the account.","isRequired":true}],"isRequired":true},"raw_type":{"type":"string","description":"Provider's free-form sub-type label (SnapTrade only). Examples:\n\"Roth IRA\", \"TFSA\", \"Cash\". Null for bank accounts.","isRequired":true},"cash_balance":{"oneOf":[{"type":"object","description":"Uninvested cash held at the broker, for INVESTMENT accounts.\nNull for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string","isRequired":true},"currency":{"type":"string","isRequired":true}},"isRequired":true},{"type":"null","description":"Uninvested cash held at the broker, for INVESTMENT accounts.\nNull for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"isRequired":true}],"isRequired":true},"total_balance":{"oneOf":[{"type":"object","description":"Broker-reported total account value (positions + cash) for\nINVESTMENT accounts. Brokerages report this on the account\npayload rather than as a dated snapshot, so it does not appear\nin the balances endpoint. Null for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string","isRequired":true},"currency":{"type":"string","isRequired":true}},"isRequired":true},{"type":"null","description":"Broker-reported total account value (positions + cash) for\nINVESTMENT accounts. Brokerages report this on the account\npayload rather than as a dated snapshot, so it does not appear\nin the balances endpoint. Null for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"isRequired":true}],"isRequired":true},"meta":{"type":"string","description":"Provider-specific extras that don't fit anywhere else (e.g.\nSnapTrade's `meta.type`/`meta.status` for crypto exchanges).\nTreat as opaque — schema is provider-defined.","isRequired":true},"name":{"type":"string","description":"Name of the account, as assigned by the financial institution.","isRequired":true},"custom_name":{"type":"string","description":"Custom name for the account, as defined by the end user.","isRequired":true},"institution_name":{"type":"string","description":"The lender's name on a manual account, as the user entered it. Null on provider accounts and on manual\naccounts without one: group those under their connection's institution (\"Manual accounts\").","isRequired":true},"display_name":{"type":"string","description":"Name of the account as defined by the end user within online channels.","isRequired":true},"currency":{"type":"string","description":"ISO 4217 currency code.","isRequired":true},"product_name":{"type":"string","description":"Product Name of the Institution for this account, proprietary definition.","isRequired":true},"cash_account_type":{"type":"string","description":"ExternalCashAccountType1Code from ISO 20022 (e.g. CACC, CARD, SVGS), when reported by the institution.","isRequired":true},"account_usage":{"type":"string","description":"Usage of the account: PRIV (private personal account) or ORGA (professional account).","isRequired":true},"details":{"type":"string","description":"Specifications that might be provided by the financial institution - characteristics of the account - characteristics of the relevant card.","isRequired":true},"details_last_synced_at":{"type":"string","description":"Last time the financial account details were fetched from the integrator.","isRequired":true},"transactions_last_synced_at":{"type":"string","description":"Last time the financial account transactions were fetched from the integrator.","isRequired":true},"transactions_backfill_cursor":{"oneOf":[{"type":"string","description":"History is fetched newest-first in windows of up to 90 days. While older\nwindows are still being fetched this is the earliest date already covered;\ntransactions before it arrive on subsequent syncs, at the pace the\ninstitution's daily request allowance permits. Null once the account's\nfull history (up to the connection's `max_historical_days`) is in.","isRequired":true},{"type":"null","description":"History is fetched newest-first in windows of up to 90 days. While older\nwindows are still being fetched this is the earliest date already covered;\ntransactions before it arrive on subsequent syncs, at the pace the\ninstitution's daily request allowance permits. Null once the account's\nfull history (up to the connection's `max_historical_days`) is in.","isRequired":true}],"isRequired":true},"balances_last_synced_at":{"type":"string","description":"Last time the financial account balances were fetched from the integrator.","isRequired":true},"balance":{"type":"object","description":"Balance of the account at the last sync. To get all types of balances at different dates, use the balances endpoints.","properties":{"currency":{"type":"string","description":"ISO 4217 currency of these figures. Only differs from the\naccount's `currency` on a multi-currency account (`XXX`),\nwhich holds a balance per currency: this is the one shown.","isRequired":true},"available":{"oneOf":[{"type":"string"},{"type":"integer","enum":[0]}]},"cleared":{"oneOf":[{"type":"string"},{"type":"integer","enum":[0]}]}},"required":["currency"],"isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"financial_connection_id":{"type":"string"},"financial_connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"institution_id":{"type":"string","isRequired":true},"region":{"type":"string","description":"Residency region of the connection's data (`eu`, `us`), decided\nby the institution's provider when the connection was created.","isRequired":true},"enabled":{"type":"string","isRequired":true},"status":{"oneOf":[{"type":"string","description":"Provider-neutral lifecycle status (PENDING_AUTHORIZATION / CONNECTED / ...).","isRequired":true},{"type":"null","description":"Provider-neutral lifecycle status (PENDING_AUTHORIZATION / CONNECTED / ...).","isRequired":true}],"isRequired":true},"status_message":{"type":"string","description":"Provider status message.","isRequired":true},"sync_balances":{"type":"string","description":"Whether balances should be synced. Applies to all accounts belonging to this connection.","isRequired":true},"supports_reauthorization":{"type":"boolean","description":"Whether `PUT /reauthorize` will start a fresh OAuth flow against this connection's\nprovider. True for every currently supported provider (GoCardless renews PSD2 consent;\nAkahu and SnapTrade re-grant a previously-disabled connection). When false, the\nreauthorize endpoint responds with `REAUTHORIZATION_NOT_SUPPORTED`.","isRequired":true},"supports_manage":{"type":"boolean","description":"Whether GET /manage will return a URL you can redirect the user to so\nthey can manage their existing connections directly with the provider. Currently\ntrue for Akahu (sends them to oauth.akahu.nz where they can add / revoke banks\nunder their enduring consent), false for GoCardless and SnapTrade.","isRequired":true},"max_historical_days":{"oneOf":[{"type":"string","description":"The maximum number of days of historical data Synci is able to fetch. Applies to all accounts belonging to this connection.","isRequired":true},{"type":"null","description":"The maximum number of days of historical data Synci is able to fetch. Applies to all accounts belonging to this connection.","isRequired":true}],"isRequired":true},"access_valid_for_days":{"oneOf":[{"type":"string","description":"Also known as consent lifetime. The number of days Synci is able to access accounts belonging to this connection.\nE.g. if this is set to 180 days, you will have to re-authenticate the connection every 180 days.\nSynci will send you an email when the expiry date is approaching.","isRequired":true},{"type":"null","description":"Also known as consent lifetime. The number of days Synci is able to access accounts belonging to this connection.\nE.g. if this is set to 180 days, you will have to re-authenticate the connection every 180 days.\nSynci will send you an email when the expiry date is approaching.","isRequired":true}],"isRequired":true},"consent_expires_at":{"oneOf":[{"type":"string","description":"The date and time when the bank consent expires and the connection\nhas to be reauthorized, or null for providers that grant enduring\nconsent (Akahu, SnapTrade).","isRequired":true},{"type":"null","description":"The date and time when the bank consent expires and the connection\nhas to be reauthorized, or null for providers that grant enduring\nconsent (Akahu, SnapTrade).","isRequired":true}],"isRequired":true},"reference":{"type":"string","description":"Caller-supplied correlation id set at creation (e.g. a platform\ndeveloper's own end-user id). Filterable via ?filter[reference]=.","isRequired":true},"accounts_last_synced_at":{"type":"string","isRequired":true},"setup_pending":{"type":"boolean","description":"Whether the post-connection setup (choosing accounts, naming them,\npicking a sync start date) is still to be finished. While true the\naccounts exist but their first transaction sync is held back until\n`POST /setup/complete`, or until the setup goes stale. Always false\nfor connections created by API clients.","isRequired":true},"setup_renewal":{"type":"boolean","description":"True while a pending setup belongs to a consent renewal rather than a new connection: only the\naccount choice is asked for, and the accounts the user had enabled stay pre-selected.","isRequired":true},"activated_at":{"type":"string","description":"When the connection first went live (provider callback succeeded).\nNull while consent is still pending or the flow was abandoned.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"institution":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"integrator":{"type":"string","description":"The integrator used to connect to this institution.","isRequired":true},"region":{"type":"string","description":"Residency region connections to this institution are stored in (`eu`, `us`).","isRequired":true},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","isRequired":true},"name":{"type":"string","description":"Name of the institution.","isRequired":true},"bic":{"type":"string","description":"Institution Identifier Code (BIC/SWIFT code).","isRequired":true},"external_id":{"type":"string","description":"The ID of the institution as provided by the integrator.","isRequired":true},"logo":{"type":"string","description":"URL to the institution's logo, as provided by the integrator.","isRequired":true},"supported":{"type":"string","description":"Whether the institution is supported. Will be true in most cases, but might be false if the integrator stops supporting an institution.","isRequired":true},"supports_pending_transactions":{"type":"string","description":"Whether the institution supports pending transactions.","isRequired":true},"supports_card_accounts":{"type":"string","description":"Whether the institution supports card accounts.","isRequired":true},"max_historical_days":{"type":"string","description":"The maximum number of days of historical data this institution can provide.\n`null` where the provider imposes no such limit and fetches whatever the bank\nholds, which is the case for every US institution. Do not read null as zero.","isRequired":true},"max_access_valid_for_days":{"type":"string","description":"Also known as consent lifetime. The maximum number of days access to this institution may be valid for.\nFor most European institutions this ranges from 90 to 180 days. `null` where access does not\nexpire on a schedule and no periodic re-consent is required, which is the case for every US\ninstitution: those connections break only when the bank breaks them.","isRequired":true},"supported_products":{"type":"string","description":"The kinds of data this institution can serve, e.g. `[\"ACCOUNTS\", \"TRANSACTIONS\", \"INVESTMENTS\"]`.\n`null` means the provider does not report it, NOT that the institution serves nothing: treat it\nas no information rather than as a negative. Only US institutions report it today.","isRequired":true},"category":{"oneOf":[{"type":"string","description":"The category of the financial institution.","isRequired":true},{"type":"null","description":"The category of the financial institution.","isRequired":true}],"isRequired":true},"updated_at":{"type":"string","description":"The date and time when the institution was last updated.","isRequired":true}},"required":["id","integrator","region","country","name","bic","external_id","logo","supported","supports_pending_transactions","supports_card_accounts","max_historical_days","max_access_valid_for_days","supported_products","category","updated_at"],"title":"InstitutionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"financial_accounts":{"type":"array","description":"Financial accounts belonging to this connection.","items":{"$circularRef":"e8a9bf44-5f49-4f46-8f0e-6b0cf3c6185e"}},"financial_accounts_count":{"type":"string"}},"required":["id","institution_id","region","enabled","status","status_message","sync_balances","supports_reauthorization","supports_manage","max_historical_days","access_valid_for_days","consent_expires_at","reference","accounts_last_synced_at","setup_pending","setup_renewal","activated_at","created_at","updated_at"],"title":"FinancialConnectionResource"},"config":{"type":"object","properties":{"map_fields":{"type":"object","description":"Which field(s) are used when mapping the \"payee\", \"description\" and \"date\" fields for a transaction.\nOne of the fixed option names (`AUTO`, `NONE`, `CREDITOR_NAME`, `BOOKING_DATE`, ...).\nVersion 2 of the API stores an ordered fallback chain per field instead; this is the closest fixed\noption for the stored chain, and a chain without an equivalent reads as `AUTO`.","properties":{"payee":{"type":"string","isRequired":true},"description":{"type":"string","isRequired":true},"date":{"type":"string","isRequired":true}},"required":["payee","description","date"],"isRequired":true},"enrichment":{"type":"object","description":"Enrich transaction data with additional information from an external provider","properties":{"enabled":{"type":"string","description":"Whether transaction enrichment is enabled","isRequired":true},"provider":{"type":"string","description":"The provider to use for transaction enrichment.","isRequired":true},"country":{"type":"string","description":"The country where transactions are made. Providing a country significantly improves enrichment accuracy.","isRequired":true}},"required":["enabled","provider","country"],"isRequired":true},"sync_start_date":{"oneOf":[{"type":"string","description":"The date to start syncing transactions from.\nCannot be earlier than the date the connection was authorized minus the connection's `max_historical_days`.\nWill default to today if not set.","example":"2025-01-01","isRequired":true},{"type":"null","description":"The date to start syncing transactions from.\nCannot be earlier than the date the connection was authorized minus the connection's `max_historical_days`.\nWill default to today if not set.","example":"2025-01-01","isRequired":true}],"isRequired":true},"sync_auto":{"type":"string","description":"Whether data should be synced automatically. If set to false, you will need to manually trigger a sync every time you want to refresh data.","isRequired":true},"sync_pending_transactions":{"type":"string","description":"Whether pending transactions should be synced. For some banks, setting this to true can cause duplicate transactions.","isRequired":true},"pending_settlement_matching":{"type":"string","description":"Whether a booked transaction can settle an existing pending transaction when the amount changed.\nCard pre-authorizations (fuel stations, hotels, car rentals) are often authorized with a placeholder amount\nthat changes when the transaction is booked, together with the transaction's identifiers.\nWhen enabled, a booked transaction that matches a pending transaction's counterparty (and card details,\nwhen the bank provides them) within `pending_settlement_max_days` days updates that pending transaction\ninstead of creating a duplicate.\nOnly pending transactions are matched this way; deduplication of booked transactions is unaffected.\nEnabled by default; `null` means the default applies.","isRequired":true},"pending_settlement_max_days":{"type":"string","description":"The maximum number of days between a pending transaction and its booked settlement\nfor `pending_settlement_matching` to link the two. Defaults to 7; `null` means the default applies.","isRequired":true},"fuzzy_counterparty_matching":{"type":"string","description":"Whether a counterparty name the bank re-words when a transaction settles can still match\nthe pending entry it replaces (\"NORWEGIAN.COM\" settling as \"NORWEGIAN.C 3284405123\").\nDescriptors that conflict rather than truncate or extend never match, and only pending\ntransactions are matched this way.\nEnabled by default; `null` means the default applies.","isRequired":true},"fuzzy_counterparty_min_chars":{"type":"string","description":"The minimum number of characters two re-worded counterparty descriptors must align on for\n`fuzzy_counterparty_matching` to treat them as the same party. Defaults to 6; `null` means\nthe default applies.","isRequired":true},"sync_balances":{"type":"string","description":"Whether balances should be synced.","isRequired":true},"sync_frequency_in_minutes":{"type":"string","description":"How often to sync data, in minutes. The permitted minimum is set by the\nsubscriber's plan (`max_sync_frequency_minutes` in the plan's features, see\n`GET /billing/plans`); 30 is only the absolute lower bound any plan could set. This is the CONFIGURED value. The interval actually used may be longer if the\ninstitution has refused requests on its own daily cap, in which case the account\nis demoted to a slower cadence automatically.","isRequired":true},"fields_for_duplicate_filtering":{"oneOf":[{"type":"array","items":{"type":"string"},"description":"An array of Transaction fields to use when filtering duplicate transactions.\nWhen a new transaction is synced, these fields are compared with existing transactions.\nIf the fields are identical, the new transaction is considered a duplicate and will be ignored.\nThis should only be used if you are struggling with duplicate transactions, and know which fields can be used to filter them. For everyone else, omit this field."},{"type":"null","description":"An array of Transaction fields to use when filtering duplicate transactions.\nWhen a new transaction is synced, these fields are compared with existing transactions.\nIf the fields are identical, the new transaction is considered a duplicate and will be ignored.\nThis should only be used if you are struggling with duplicate transactions, and know which fields can be used to filter them. For everyone else, omit this field."}]}},"required":["map_fields","enrichment","sync_start_date","sync_auto","sync_pending_transactions","pending_settlement_matching","pending_settlement_max_days","fuzzy_counterparty_matching","fuzzy_counterparty_min_chars","sync_balances","sync_frequency_in_minutes"],"title":"InstitutionConfigResource","description":"The financial account configuration. If the financial account has no configuration, the banks default configuration will be used."},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"loan":{"oneOf":[{"type":"array","items":{"oneOf":[{}]},"description":"The loan terms, rate history and derived figures. Present on LOAN accounts only."},{"type":"null","description":"The loan terms, rate history and derived figures. Present on LOAN accounts only."}]},"account_number_masked":{"type":"string","description":"Masked account number (e.g. \"****1234\"). Only present when the\nprovider supplies it (SnapTrade brokerages, and banks that report\na masked card PAN via GoCardless); null otherwise."},"bban":{"type":"string","description":"Basic Bank Account Number (BBAN)."},"scan":{"type":"string","description":"UK SortCodeAccountNumber (6 digit sort code + 8 digit account number), reported by some UK banks."},"iban":{"type":"string","description":"International Bank Account Number (IBAN)."},"bic":{"type":"string","description":"Bank Identifier Code (BIC/SWIFT) associated with the account."},"owner_name":{"type":"string","description":"Name of the legal account owner. If there is more than one owner, then e.g. two names might be noted here. For a corporate account, the corporate name is used for this attribute."},"owner_address":{"type":"string","description":"Address of the legal account owner, when reported by the institution."},"linked_accounts":{"type":"string","description":"Name of a cash account associated to pending card transactions, when the institution reports one. Banks often put that account's number here, so it is omitted with the other identifiers."},"msisdn":{"type":"string","description":"An alias to a payment account via a registered mobile phone number."},"integrator_id":{"type":"string","description":"The financial account ID provided by the integrator."},"institution_id":{"type":"string","description":"The financial account ID provided by the institution/bank."},"rules":{"type":"array","description":"The rules attached to this financial account","items":{"type":"object","properties":{"order":{"type":"integer","isRequired":true},"rule":{"type":"object","additionalProperties":{"oneOf":[{}]},"isRequired":true}},"required":["order","rule"]}},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}},"transfer_links_count":{"type":"string","description":"Left out for tokens without the `transfer-links:read` scope."}},"required":["id","enabled","live","integrator","account_category","raw_type","cash_balance","total_balance","meta","name","custom_name","institution_name","display_name","currency","product_name","cash_account_type","account_usage","details","details_last_synced_at","transactions_last_synced_at","transactions_backfill_cursor","balances_last_synced_at","balance","created_at","updated_at"],"title":"FinancialAccountResource","description":"The associated FinancialAccount resource. Will be included in the response if the `include` query parameter contains `financial_account`."},"destination":{"oneOf":[{"description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`."},{"type":"object","title":"LunchMoneyAccountResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","lunch_money_id","name","display_name","type","subtype","currency","balance","balance_as_of","closed_on","exclude_from_transactions","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"lunch_money_id":{"type":"string","description":"The account's ID in Lunch Money.","isRequired":true},"name":{"type":"string","isRequired":true},"display_name":{"type":"string","description":"The account's display name in Lunch Money, if set.","isRequired":true},"type":{"type":"string","description":"The account type as reported by Lunch Money, e.g. \"cash\" or \"credit\".","isRequired":true},"subtype":{"type":"string","description":"The account subtype as reported by Lunch Money, if set.","isRequired":true},"currency":{"type":"string","isRequired":true},"balance":{"type":"string","description":"The account balance as reported by Lunch Money.","isRequired":true},"balance_as_of":{"type":"string","description":"When the balance was last updated in Lunch Money.","isRequired":true},"closed_on":{"type":"string","description":"When the account was closed in Lunch Money, if closed.","isRequired":true},"exclude_from_transactions":{"type":"string","description":"Whether the account is excluded from transactions in Lunch Money.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","description":"The name of the connected Lunch Money budget.","isRequired":true},"lunch_money_details":{"type":"object","description":"Details about the connected Lunch Money account.","properties":{"user_name":{"type":"string","description":"Name of the Lunch Money user.","isRequired":true},"user_email":{"type":"string","description":"Email address of the Lunch Money user.","isRequired":true},"user_id":{"type":"string","description":"The user's ID in Lunch Money.","isRequired":true},"bank_account_id":{"type":"string","description":"The connected account's ID in Lunch Money.","isRequired":true},"budget_name":{"type":"string","description":"Name of the connected Lunch Money budget.","isRequired":true},"primary_currency":{"type":"string","description":"The budget's primary currency in Lunch Money.","isRequired":true},"api_key_label":{"type":"string","description":"Label of the Lunch Money API token used by this connection, if set.","isRequired":true}},"required":["user_name","user_email","user_id","bank_account_id","budget_name","primary_currency","api_key_label"],"isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"sync_balances":{"type":"string","description":"Whether account balances are synced to Lunch Money.","isRequired":true},"sync_transactions":{"type":"string","description":"Whether transactions are synced to Lunch Money.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"accounts":{"type":"array","items":{"$circularRef":"4b474cf8-3b5a-4e7d-9d9a-257a073ea9dd"}}},"required":["id","name","lunch_money_details","enabled","sync_balances","sync_transactions","last_synced_at","created_at","updated_at"],"title":"LunchMoneyConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"object","title":"GoogleSheetResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","name","spreadsheet_id","spreadsheet_name","spreadsheet_url","is_synci_managed","transactions_sheet_gid","transactions_sheet_name","live_balance_sheet_gid","live_balance_sheet_name","balance_history_sheet_gid","balance_history_sheet_name","last_synced_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"name":{"type":"string","description":"Display name of the spreadsheet in Synci.","isRequired":true},"spreadsheet_id":{"type":"string","description":"The spreadsheet's ID in Google Sheets, as found in its URL.","isRequired":true},"spreadsheet_name":{"type":"string","description":"The spreadsheet's title in Google Sheets.","isRequired":true},"spreadsheet_url":{"type":"string","description":"Link to open the spreadsheet in Google Sheets.","isRequired":true},"is_synci_managed":{"type":"string","description":"True when the spreadsheet was created by Synci; false when an existing spreadsheet was attached.","isRequired":true},"transactions_sheet_gid":{"type":"string","description":"The gid of the tab that receives transactions, if assigned.","isRequired":true},"transactions_sheet_name":{"type":"string","description":"The name of the tab that receives transactions, if assigned.","isRequired":true},"live_balance_sheet_gid":{"type":"string","description":"The gid of the tab that holds current balances, if assigned.","isRequired":true},"live_balance_sheet_name":{"type":"string","description":"The name of the tab that holds current balances, if assigned.","isRequired":true},"balance_history_sheet_gid":{"type":"string","description":"The gid of the tab that records balance history, if assigned.","isRequired":true},"balance_history_sheet_name":{"type":"string","description":"The name of the tab that records balance history, if assigned.","isRequired":true},"last_synced_at":{"type":"string","description":"When data was last synced to the spreadsheet.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"google_email":{"type":"string","description":"Email address of the connected Google account.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with Google. Only present when authorization is required."},"sheets":{"type":"array","items":{"$circularRef":"4855146d-203d-426a-9ae0-10ad2f15b3d1"}}},"required":["id","name","enabled","google_email","last_synced_at","created_at","updated_at"],"title":"GoogleSheetsConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"object","title":"NotionDatabaseResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","name","title","database_id","data_source_id","database_url","parent_page_id","parent_page_title","is_synci_managed","layout","header_config","property_map","accounts_database_id","categories_database_id","months_database_id","balance_history_database_id","balance_available","last_synced_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"name":{"type":"string","description":"Display name of the database in Synci.","isRequired":true},"title":{"type":"string","description":"The database's title in Notion.","isRequired":true},"database_id":{"type":"string","description":"The Notion database ID.","isRequired":true},"data_source_id":{"type":"string","description":"The Notion data source (table) transactions are written to.","isRequired":true},"database_url":{"type":"string","description":"Link to open the database in Notion.","isRequired":true},"parent_page_id":{"type":"string","description":"The Notion page the database lives under, when known, and its title\n(a dashboard's `name` falls back to this).","isRequired":true},"parent_page_title":{"type":"string","isRequired":true},"is_synci_managed":{"type":"string","description":"True when the database was created by Synci; false when an existing database was attached.","isRequired":true},"layout":{"type":"string","description":"\"dashboard\" when the Synci Finance template was adopted (transactions relate to Accounts,\nCategories and Months); \"flat\" for plain databases.","isRequired":true},"header_config":{"type":"string","description":"Ordered list of transaction field keys written as database properties.","isRequired":true},"property_map":{"type":"string","description":"Field key to Notion property id map Synci writes through.","isRequired":true},"accounts_database_id":{"type":"string","description":"The supporting databases next to this one, when present.","isRequired":true},"categories_database_id":{"type":"string","isRequired":true},"months_database_id":{"type":"string","isRequired":true},"balance_history_database_id":{"type":"string","isRequired":true},"balance_available":{"type":"string","description":"Whether balance databases exist or can be provisioned (requires a parent page).","isRequired":true},"last_synced_at":{"type":"string","description":"When data was last synced to the database.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"workspace_id":{"type":"string","description":"The connected Notion workspace.","isRequired":true},"workspace_name":{"type":"string","isRequired":true},"workspace_icon":{"type":"string","description":"Emoji or image URL of the workspace icon, if any.","isRequired":true},"owner_email":{"type":"string","description":"Email of the Notion user who authorized the connection, when shared.","isRequired":true},"duplicated_template_id":{"type":"string","description":"The page Notion created when the user duplicated the Synci template during authorization, if any.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with Notion. Only present when authorization is required."},"databases":{"type":"array","items":{"$circularRef":"1eda84be-8980-45e6-b112-5f3673d06c26"}}},"required":["id","name","enabled","workspace_id","workspace_name","workspace_icon","owner_email","duplicated_template_id","last_synced_at","created_at","updated_at"],"title":"NotionConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"null","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`."}]},"rules":{"type":"array","description":"The rules attached to the transfer link. Will be included in the response if the `include` query parameter contains `rules`.\nEach object includes:\n- order: The position of the rule in the transfer link's rule list. Rules are applied in ascending order.\n- rule: The rule resource data","items":{"type":"object","properties":{"order":{"type":"integer","isRequired":true},"rule":{"type":"object","additionalProperties":{"oneOf":[{}]},"isRequired":true}},"required":["order","rule"]}}},"required":["id","financial_account_id","destination_type","destination_id","transfer_start_date","active","sync_mode","on_booked_change","created_at","updated_at"],"title":"TransferLinkResource"}}},"required":["id","budget_id","ynab_id","name","type","on_budget","closed","note","balance","cleared_balance","uncleared_balance","transfer_payee_id","direct_import_linked","last_reconciled_at","created_at","updated_at"],"title":"YnabBudgetAccountResource"}}},"required":["id","connection_id","ynab_id","enabled","name","currency","first_month","last_month","last_synced_at","created_at","updated_at"],"title":"YnabBudgetResource"},"977aa1c0-f70d-4554-a9ba-fbd13fa41780":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"financial_account_id":{"type":"string","description":"The ID of the financial account transactions are being transferred from.","isRequired":true},"destination_type":{"type":"string","description":"The type of destination the transfer link sends transactions to:\n- **YNAB**: a YNAB budget account.\n- **LUNCH_MONEY**: a Lunch Money account.\n- **GOOGLE_SHEETS**: a Google Sheet.\n- **NOTION**: a Notion database.","isRequired":true},"destination_id":{"type":"string","description":"The ID of the destination transactions are being transferred to. The type of resource the ID refers to depends on the destination type:\n- **YNAB**: the ID of a YNAB budget account.\n- **LUNCH_MONEY**: the ID of a Lunch Money account.\n- **GOOGLE_SHEETS**: the ID of a Google Sheet.\n- **NOTION**: the ID of a Notion database.","isRequired":true},"transfer_start_date":{"type":"string","description":"The date from which the transfer link will start transferring transactions.\nIf not provided, all available transactions in the attached financial account will be transferred regardless of their date.","examples":["2025-01-01"],"isRequired":true},"active":{"type":"string","description":"Whether the transfer link is enabled.","isRequired":true},"sync_mode":{"type":"string","description":"Which streams to push to the destination:\n- `transactions`: only individual transactions (default for bank sources)\n- `balance`: only periodic balance snapshots\n- `transactions_and_balance`: both (default for brokerage / crypto sources)","isRequired":true},"on_booked_change":{"type":"object","description":"Which destination fields to update when a transaction's booked status changes.\nIf not provided, all fields will be updated.","properties":{"update_status":{"type":"string","isRequired":true},"update_payee":{"type":"string","isRequired":true},"update_description":{"type":"string","isRequired":true},"update_amount":{"type":"string","isRequired":true}},"required":["update_status","update_payee","update_description","update_amount"],"isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"financial_account":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"enabled":{"type":"string","isRequired":true},"live":{"type":"string","description":"Whether the account is in use: it AND its connection are enabled. A disabled connection keeps each\naccount's own `enabled` as the user set it, but none of its accounts sync until it is enabled again.","isRequired":true},"integrator":{"type":"string","description":"Provider that populates this account (GOCARDLESS / AKAHU / SNAPTRADE).","isRequired":true},"account_category":{"oneOf":[{"type":"string","description":"High-level kind of account: BANK (checking/savings, provided by\nbanking providers), INVESTMENT (brokerage), DEPOSIT (cash\nsub-account at a broker), LOC (line of credit), LOAN (a manual\nloan Synci models from its terms). Determines which fields are\npopulated on the account.","isRequired":true},{"type":"null","description":"High-level kind of account: BANK (checking/savings, provided by\nbanking providers), INVESTMENT (brokerage), DEPOSIT (cash\nsub-account at a broker), LOC (line of credit), LOAN (a manual\nloan Synci models from its terms). Determines which fields are\npopulated on the account.","isRequired":true}],"isRequired":true},"raw_type":{"type":"string","description":"Provider's free-form sub-type label (SnapTrade only). Examples:\n\"Roth IRA\", \"TFSA\", \"Cash\". Null for bank accounts.","isRequired":true},"cash_balance":{"oneOf":[{"type":"object","description":"Uninvested cash held at the broker, for INVESTMENT accounts.\nNull for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string","isRequired":true},"currency":{"type":"string","isRequired":true}},"isRequired":true},{"type":"null","description":"Uninvested cash held at the broker, for INVESTMENT accounts.\nNull for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"isRequired":true}],"isRequired":true},"total_balance":{"oneOf":[{"type":"object","description":"Broker-reported total account value (positions + cash) for\nINVESTMENT accounts. Brokerages report this on the account\npayload rather than as a dated snapshot, so it does not appear\nin the balances endpoint. Null for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string","isRequired":true},"currency":{"type":"string","isRequired":true}},"isRequired":true},{"type":"null","description":"Broker-reported total account value (positions + cash) for\nINVESTMENT accounts. Brokerages report this on the account\npayload rather than as a dated snapshot, so it does not appear\nin the balances endpoint. Null for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"isRequired":true}],"isRequired":true},"meta":{"type":"string","description":"Provider-specific extras that don't fit anywhere else (e.g.\nSnapTrade's `meta.type`/`meta.status` for crypto exchanges).\nTreat as opaque — schema is provider-defined.","isRequired":true},"name":{"type":"string","description":"Name of the account, as assigned by the financial institution.","isRequired":true},"custom_name":{"type":"string","description":"Custom name for the account, as defined by the end user.","isRequired":true},"institution_name":{"type":"string","description":"The lender's name on a manual account, as the user entered it. Null on provider accounts and on manual\naccounts without one: group those under their connection's institution (\"Manual accounts\").","isRequired":true},"display_name":{"type":"string","description":"Name of the account as defined by the end user within online channels.","isRequired":true},"currency":{"type":"string","description":"ISO 4217 currency code.","isRequired":true},"product_name":{"type":"string","description":"Product Name of the Institution for this account, proprietary definition.","isRequired":true},"cash_account_type":{"type":"string","description":"ExternalCashAccountType1Code from ISO 20022 (e.g. CACC, CARD, SVGS), when reported by the institution.","isRequired":true},"account_usage":{"type":"string","description":"Usage of the account: PRIV (private personal account) or ORGA (professional account).","isRequired":true},"details":{"type":"string","description":"Specifications that might be provided by the financial institution - characteristics of the account - characteristics of the relevant card.","isRequired":true},"details_last_synced_at":{"type":"string","description":"Last time the financial account details were fetched from the integrator.","isRequired":true},"transactions_last_synced_at":{"type":"string","description":"Last time the financial account transactions were fetched from the integrator.","isRequired":true},"transactions_backfill_cursor":{"oneOf":[{"type":"string","description":"History is fetched newest-first in windows of up to 90 days. While older\nwindows are still being fetched this is the earliest date already covered;\ntransactions before it arrive on subsequent syncs, at the pace the\ninstitution's daily request allowance permits. Null once the account's\nfull history (up to the connection's `max_historical_days`) is in.","isRequired":true},{"type":"null","description":"History is fetched newest-first in windows of up to 90 days. While older\nwindows are still being fetched this is the earliest date already covered;\ntransactions before it arrive on subsequent syncs, at the pace the\ninstitution's daily request allowance permits. Null once the account's\nfull history (up to the connection's `max_historical_days`) is in.","isRequired":true}],"isRequired":true},"balances_last_synced_at":{"type":"string","description":"Last time the financial account balances were fetched from the integrator.","isRequired":true},"balance":{"type":"object","description":"Balance of the account at the last sync. To get all types of balances at different dates, use the balances endpoints.","properties":{"currency":{"type":"string","description":"ISO 4217 currency of these figures. Only differs from the\naccount's `currency` on a multi-currency account (`XXX`),\nwhich holds a balance per currency: this is the one shown.","isRequired":true},"available":{"oneOf":[{"type":"string"},{"type":"integer","enum":[0]}]},"cleared":{"oneOf":[{"type":"string"},{"type":"integer","enum":[0]}]}},"required":["currency"],"isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"financial_connection_id":{"type":"string"},"financial_connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"institution_id":{"type":"string","isRequired":true},"region":{"type":"string","description":"Residency region of the connection's data (`eu`, `us`), decided\nby the institution's provider when the connection was created.","isRequired":true},"enabled":{"type":"string","isRequired":true},"status":{"oneOf":[{"type":"string","description":"Provider-neutral lifecycle status (PENDING_AUTHORIZATION / CONNECTED / ...).","isRequired":true},{"type":"null","description":"Provider-neutral lifecycle status (PENDING_AUTHORIZATION / CONNECTED / ...).","isRequired":true}],"isRequired":true},"status_message":{"type":"string","description":"Provider status message.","isRequired":true},"sync_balances":{"type":"string","description":"Whether balances should be synced. Applies to all accounts belonging to this connection.","isRequired":true},"supports_reauthorization":{"type":"boolean","description":"Whether `PUT /reauthorize` will start a fresh OAuth flow against this connection's\nprovider. True for every currently supported provider (GoCardless renews PSD2 consent;\nAkahu and SnapTrade re-grant a previously-disabled connection). When false, the\nreauthorize endpoint responds with `REAUTHORIZATION_NOT_SUPPORTED`.","isRequired":true},"supports_manage":{"type":"boolean","description":"Whether GET /manage will return a URL you can redirect the user to so\nthey can manage their existing connections directly with the provider. Currently\ntrue for Akahu (sends them to oauth.akahu.nz where they can add / revoke banks\nunder their enduring consent), false for GoCardless and SnapTrade.","isRequired":true},"max_historical_days":{"oneOf":[{"type":"string","description":"The maximum number of days of historical data Synci is able to fetch. Applies to all accounts belonging to this connection.","isRequired":true},{"type":"null","description":"The maximum number of days of historical data Synci is able to fetch. Applies to all accounts belonging to this connection.","isRequired":true}],"isRequired":true},"access_valid_for_days":{"oneOf":[{"type":"string","description":"Also known as consent lifetime. The number of days Synci is able to access accounts belonging to this connection.\nE.g. if this is set to 180 days, you will have to re-authenticate the connection every 180 days.\nSynci will send you an email when the expiry date is approaching.","isRequired":true},{"type":"null","description":"Also known as consent lifetime. The number of days Synci is able to access accounts belonging to this connection.\nE.g. if this is set to 180 days, you will have to re-authenticate the connection every 180 days.\nSynci will send you an email when the expiry date is approaching.","isRequired":true}],"isRequired":true},"consent_expires_at":{"oneOf":[{"type":"string","description":"The date and time when the bank consent expires and the connection\nhas to be reauthorized, or null for providers that grant enduring\nconsent (Akahu, SnapTrade).","isRequired":true},{"type":"null","description":"The date and time when the bank consent expires and the connection\nhas to be reauthorized, or null for providers that grant enduring\nconsent (Akahu, SnapTrade).","isRequired":true}],"isRequired":true},"reference":{"type":"string","description":"Caller-supplied correlation id set at creation (e.g. a platform\ndeveloper's own end-user id). Filterable via ?filter[reference]=.","isRequired":true},"accounts_last_synced_at":{"type":"string","isRequired":true},"setup_pending":{"type":"boolean","description":"Whether the post-connection setup (choosing accounts, naming them,\npicking a sync start date) is still to be finished. While true the\naccounts exist but their first transaction sync is held back until\n`POST /setup/complete`, or until the setup goes stale. Always false\nfor connections created by API clients.","isRequired":true},"setup_renewal":{"type":"boolean","description":"True while a pending setup belongs to a consent renewal rather than a new connection: only the\naccount choice is asked for, and the accounts the user had enabled stay pre-selected.","isRequired":true},"activated_at":{"type":"string","description":"When the connection first went live (provider callback succeeded).\nNull while consent is still pending or the flow was abandoned.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"institution":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"integrator":{"type":"string","description":"The integrator used to connect to this institution.","isRequired":true},"region":{"type":"string","description":"Residency region connections to this institution are stored in (`eu`, `us`).","isRequired":true},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","isRequired":true},"name":{"type":"string","description":"Name of the institution.","isRequired":true},"bic":{"type":"string","description":"Institution Identifier Code (BIC/SWIFT code).","isRequired":true},"external_id":{"type":"string","description":"The ID of the institution as provided by the integrator.","isRequired":true},"logo":{"type":"string","description":"URL to the institution's logo, as provided by the integrator.","isRequired":true},"supported":{"type":"string","description":"Whether the institution is supported. Will be true in most cases, but might be false if the integrator stops supporting an institution.","isRequired":true},"supports_pending_transactions":{"type":"string","description":"Whether the institution supports pending transactions.","isRequired":true},"supports_card_accounts":{"type":"string","description":"Whether the institution supports card accounts.","isRequired":true},"max_historical_days":{"type":"string","description":"The maximum number of days of historical data this institution can provide.\n`null` where the provider imposes no such limit and fetches whatever the bank\nholds, which is the case for every US institution. Do not read null as zero.","isRequired":true},"max_access_valid_for_days":{"type":"string","description":"Also known as consent lifetime. The maximum number of days access to this institution may be valid for.\nFor most European institutions this ranges from 90 to 180 days. `null` where access does not\nexpire on a schedule and no periodic re-consent is required, which is the case for every US\ninstitution: those connections break only when the bank breaks them.","isRequired":true},"supported_products":{"type":"string","description":"The kinds of data this institution can serve, e.g. `[\"ACCOUNTS\", \"TRANSACTIONS\", \"INVESTMENTS\"]`.\n`null` means the provider does not report it, NOT that the institution serves nothing: treat it\nas no information rather than as a negative. Only US institutions report it today.","isRequired":true},"category":{"oneOf":[{"type":"string","description":"The category of the financial institution.","isRequired":true},{"type":"null","description":"The category of the financial institution.","isRequired":true}],"isRequired":true},"updated_at":{"type":"string","description":"The date and time when the institution was last updated.","isRequired":true}},"required":["id","integrator","region","country","name","bic","external_id","logo","supported","supports_pending_transactions","supports_card_accounts","max_historical_days","max_access_valid_for_days","supported_products","category","updated_at"],"title":"InstitutionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"financial_accounts":{"type":"array","description":"Financial accounts belonging to this connection.","items":{"$circularRef":"e8a9bf44-5f49-4f46-8f0e-6b0cf3c6185e"}},"financial_accounts_count":{"type":"string"}},"required":["id","institution_id","region","enabled","status","status_message","sync_balances","supports_reauthorization","supports_manage","max_historical_days","access_valid_for_days","consent_expires_at","reference","accounts_last_synced_at","setup_pending","setup_renewal","activated_at","created_at","updated_at"],"title":"FinancialConnectionResource"},"config":{"type":"object","properties":{"map_fields":{"type":"object","description":"Which field(s) are used when mapping the \"payee\", \"description\" and \"date\" fields for a transaction.\nOne of the fixed option names (`AUTO`, `NONE`, `CREDITOR_NAME`, `BOOKING_DATE`, ...).\nVersion 2 of the API stores an ordered fallback chain per field instead; this is the closest fixed\noption for the stored chain, and a chain without an equivalent reads as `AUTO`.","properties":{"payee":{"type":"string","isRequired":true},"description":{"type":"string","isRequired":true},"date":{"type":"string","isRequired":true}},"required":["payee","description","date"],"isRequired":true},"enrichment":{"type":"object","description":"Enrich transaction data with additional information from an external provider","properties":{"enabled":{"type":"string","description":"Whether transaction enrichment is enabled","isRequired":true},"provider":{"type":"string","description":"The provider to use for transaction enrichment.","isRequired":true},"country":{"type":"string","description":"The country where transactions are made. Providing a country significantly improves enrichment accuracy.","isRequired":true}},"required":["enabled","provider","country"],"isRequired":true},"sync_start_date":{"oneOf":[{"type":"string","description":"The date to start syncing transactions from.\nCannot be earlier than the date the connection was authorized minus the connection's `max_historical_days`.\nWill default to today if not set.","example":"2025-01-01","isRequired":true},{"type":"null","description":"The date to start syncing transactions from.\nCannot be earlier than the date the connection was authorized minus the connection's `max_historical_days`.\nWill default to today if not set.","example":"2025-01-01","isRequired":true}],"isRequired":true},"sync_auto":{"type":"string","description":"Whether data should be synced automatically. If set to false, you will need to manually trigger a sync every time you want to refresh data.","isRequired":true},"sync_pending_transactions":{"type":"string","description":"Whether pending transactions should be synced. For some banks, setting this to true can cause duplicate transactions.","isRequired":true},"pending_settlement_matching":{"type":"string","description":"Whether a booked transaction can settle an existing pending transaction when the amount changed.\nCard pre-authorizations (fuel stations, hotels, car rentals) are often authorized with a placeholder amount\nthat changes when the transaction is booked, together with the transaction's identifiers.\nWhen enabled, a booked transaction that matches a pending transaction's counterparty (and card details,\nwhen the bank provides them) within `pending_settlement_max_days` days updates that pending transaction\ninstead of creating a duplicate.\nOnly pending transactions are matched this way; deduplication of booked transactions is unaffected.\nEnabled by default; `null` means the default applies.","isRequired":true},"pending_settlement_max_days":{"type":"string","description":"The maximum number of days between a pending transaction and its booked settlement\nfor `pending_settlement_matching` to link the two. Defaults to 7; `null` means the default applies.","isRequired":true},"fuzzy_counterparty_matching":{"type":"string","description":"Whether a counterparty name the bank re-words when a transaction settles can still match\nthe pending entry it replaces (\"NORWEGIAN.COM\" settling as \"NORWEGIAN.C 3284405123\").\nDescriptors that conflict rather than truncate or extend never match, and only pending\ntransactions are matched this way.\nEnabled by default; `null` means the default applies.","isRequired":true},"fuzzy_counterparty_min_chars":{"type":"string","description":"The minimum number of characters two re-worded counterparty descriptors must align on for\n`fuzzy_counterparty_matching` to treat them as the same party. Defaults to 6; `null` means\nthe default applies.","isRequired":true},"sync_balances":{"type":"string","description":"Whether balances should be synced.","isRequired":true},"sync_frequency_in_minutes":{"type":"string","description":"How often to sync data, in minutes. The permitted minimum is set by the\nsubscriber's plan (`max_sync_frequency_minutes` in the plan's features, see\n`GET /billing/plans`); 30 is only the absolute lower bound any plan could set. This is the CONFIGURED value. The interval actually used may be longer if the\ninstitution has refused requests on its own daily cap, in which case the account\nis demoted to a slower cadence automatically.","isRequired":true},"fields_for_duplicate_filtering":{"oneOf":[{"type":"array","items":{"type":"string"},"description":"An array of Transaction fields to use when filtering duplicate transactions.\nWhen a new transaction is synced, these fields are compared with existing transactions.\nIf the fields are identical, the new transaction is considered a duplicate and will be ignored.\nThis should only be used if you are struggling with duplicate transactions, and know which fields can be used to filter them. For everyone else, omit this field."},{"type":"null","description":"An array of Transaction fields to use when filtering duplicate transactions.\nWhen a new transaction is synced, these fields are compared with existing transactions.\nIf the fields are identical, the new transaction is considered a duplicate and will be ignored.\nThis should only be used if you are struggling with duplicate transactions, and know which fields can be used to filter them. For everyone else, omit this field."}]}},"required":["map_fields","enrichment","sync_start_date","sync_auto","sync_pending_transactions","pending_settlement_matching","pending_settlement_max_days","fuzzy_counterparty_matching","fuzzy_counterparty_min_chars","sync_balances","sync_frequency_in_minutes"],"title":"InstitutionConfigResource","description":"The financial account configuration. If the financial account has no configuration, the banks default configuration will be used."},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"loan":{"oneOf":[{"type":"array","items":{"oneOf":[{}]},"description":"The loan terms, rate history and derived figures. Present on LOAN accounts only."},{"type":"null","description":"The loan terms, rate history and derived figures. Present on LOAN accounts only."}]},"account_number_masked":{"type":"string","description":"Masked account number (e.g. \"****1234\"). Only present when the\nprovider supplies it (SnapTrade brokerages, and banks that report\na masked card PAN via GoCardless); null otherwise."},"bban":{"type":"string","description":"Basic Bank Account Number (BBAN)."},"scan":{"type":"string","description":"UK SortCodeAccountNumber (6 digit sort code + 8 digit account number), reported by some UK banks."},"iban":{"type":"string","description":"International Bank Account Number (IBAN)."},"bic":{"type":"string","description":"Bank Identifier Code (BIC/SWIFT) associated with the account."},"owner_name":{"type":"string","description":"Name of the legal account owner. If there is more than one owner, then e.g. two names might be noted here. For a corporate account, the corporate name is used for this attribute."},"owner_address":{"type":"string","description":"Address of the legal account owner, when reported by the institution."},"linked_accounts":{"type":"string","description":"Name of a cash account associated to pending card transactions, when the institution reports one. Banks often put that account's number here, so it is omitted with the other identifiers."},"msisdn":{"type":"string","description":"An alias to a payment account via a registered mobile phone number."},"integrator_id":{"type":"string","description":"The financial account ID provided by the integrator."},"institution_id":{"type":"string","description":"The financial account ID provided by the institution/bank."},"rules":{"type":"array","description":"The rules attached to this financial account","items":{"type":"object","properties":{"order":{"type":"integer","isRequired":true},"rule":{"type":"object","additionalProperties":{"oneOf":[{}]},"isRequired":true}},"required":["order","rule"]}},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}},"transfer_links_count":{"type":"string","description":"Left out for tokens without the `transfer-links:read` scope."}},"required":["id","enabled","live","integrator","account_category","raw_type","cash_balance","total_balance","meta","name","custom_name","institution_name","display_name","currency","product_name","cash_account_type","account_usage","details","details_last_synced_at","transactions_last_synced_at","transactions_backfill_cursor","balances_last_synced_at","balance","created_at","updated_at"],"title":"FinancialAccountResource","description":"The associated FinancialAccount resource. Will be included in the response if the `include` query parameter contains `financial_account`."},"destination":{"oneOf":[{"type":"object","title":"YnabBudgetAccountResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","budget_id","ynab_id","name","type","on_budget","closed","note","balance","cleared_balance","uncleared_balance","transfer_payee_id","direct_import_linked","last_reconciled_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"budget_id":{"type":"string","isRequired":true},"ynab_id":{"type":"string","description":"The account's ID in YNAB.","isRequired":true},"name":{"type":"string","isRequired":true},"type":{"type":"string","isRequired":true},"on_budget":{"type":"string","description":"Whether the account is on budget in YNAB.","isRequired":true},"closed":{"type":"string","description":"Whether the account is closed in YNAB.","isRequired":true},"note":{"type":"string","description":"The account note from YNAB, if set.","isRequired":true},"balance":{"type":"string","description":"The account balance as reported by YNAB.","isRequired":true},"cleared_balance":{"type":"string","description":"The cleared balance as reported by YNAB.","isRequired":true},"uncleared_balance":{"type":"string","description":"The uncleared balance as reported by YNAB.","isRequired":true},"transfer_payee_id":{"type":"string","description":"The YNAB payee ID used for transfers to this account.","isRequired":true},"direct_import_linked":{"type":"string","description":"Whether the account is linked to YNAB Direct Import.","isRequired":true},"last_reconciled_at":{"type":"string","description":"When the account was last reconciled in YNAB.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"budget":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"ynab_id":{"type":"string","description":"The budget's ID in YNAB.","isRequired":true},"enabled":{"type":"string","description":"Whether syncing to this budget is enabled.","isRequired":true},"name":{"type":"string","isRequired":true},"currency":{"type":"string","description":"The budget's currency in YNAB.","isRequired":true},"first_month":{"type":"string","description":"The budget's first month in YNAB.","isRequired":true},"last_month":{"type":"string","description":"The budget's last month in YNAB.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"sync_balances":{"type":"string","description":"Whether account balances are synced to YNAB.","isRequired":true},"ynab_user_id":{"type":"string","description":"The connected user's ID in YNAB.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with YNAB. Only present when authorization is required."},"budgets":{"type":"array","items":{"$circularRef":"248c304a-3ec9-4df8-af52-e0efd200a978"}}},"required":["id","name","enabled","sync_balances","ynab_user_id","last_synced_at","created_at","updated_at"],"title":"YnabConnectionResource"},"accounts":{"type":"array","items":{"$circularRef":"10a862ec-a219-4aac-b0f2-677b77b5b836"}}},"required":["id","connection_id","ynab_id","enabled","name","currency","first_month","last_month","last_synced_at","created_at","updated_at"],"title":"YnabBudgetResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"object","title":"LunchMoneyAccountResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","lunch_money_id","name","display_name","type","subtype","currency","balance","balance_as_of","closed_on","exclude_from_transactions","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"lunch_money_id":{"type":"string","description":"The account's ID in Lunch Money.","isRequired":true},"name":{"type":"string","isRequired":true},"display_name":{"type":"string","description":"The account's display name in Lunch Money, if set.","isRequired":true},"type":{"type":"string","description":"The account type as reported by Lunch Money, e.g. \"cash\" or \"credit\".","isRequired":true},"subtype":{"type":"string","description":"The account subtype as reported by Lunch Money, if set.","isRequired":true},"currency":{"type":"string","isRequired":true},"balance":{"type":"string","description":"The account balance as reported by Lunch Money.","isRequired":true},"balance_as_of":{"type":"string","description":"When the balance was last updated in Lunch Money.","isRequired":true},"closed_on":{"type":"string","description":"When the account was closed in Lunch Money, if closed.","isRequired":true},"exclude_from_transactions":{"type":"string","description":"Whether the account is excluded from transactions in Lunch Money.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","description":"The name of the connected Lunch Money budget.","isRequired":true},"lunch_money_details":{"type":"object","description":"Details about the connected Lunch Money account.","properties":{"user_name":{"type":"string","description":"Name of the Lunch Money user.","isRequired":true},"user_email":{"type":"string","description":"Email address of the Lunch Money user.","isRequired":true},"user_id":{"type":"string","description":"The user's ID in Lunch Money.","isRequired":true},"bank_account_id":{"type":"string","description":"The connected account's ID in Lunch Money.","isRequired":true},"budget_name":{"type":"string","description":"Name of the connected Lunch Money budget.","isRequired":true},"primary_currency":{"type":"string","description":"The budget's primary currency in Lunch Money.","isRequired":true},"api_key_label":{"type":"string","description":"Label of the Lunch Money API token used by this connection, if set.","isRequired":true}},"required":["user_name","user_email","user_id","bank_account_id","budget_name","primary_currency","api_key_label"],"isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"sync_balances":{"type":"string","description":"Whether account balances are synced to Lunch Money.","isRequired":true},"sync_transactions":{"type":"string","description":"Whether transactions are synced to Lunch Money.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"accounts":{"type":"array","items":{"$circularRef":"4b474cf8-3b5a-4e7d-9d9a-257a073ea9dd"}}},"required":["id","name","lunch_money_details","enabled","sync_balances","sync_transactions","last_synced_at","created_at","updated_at"],"title":"LunchMoneyConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"object","title":"GoogleSheetResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","name","spreadsheet_id","spreadsheet_name","spreadsheet_url","is_synci_managed","transactions_sheet_gid","transactions_sheet_name","live_balance_sheet_gid","live_balance_sheet_name","balance_history_sheet_gid","balance_history_sheet_name","last_synced_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"name":{"type":"string","description":"Display name of the spreadsheet in Synci.","isRequired":true},"spreadsheet_id":{"type":"string","description":"The spreadsheet's ID in Google Sheets, as found in its URL.","isRequired":true},"spreadsheet_name":{"type":"string","description":"The spreadsheet's title in Google Sheets.","isRequired":true},"spreadsheet_url":{"type":"string","description":"Link to open the spreadsheet in Google Sheets.","isRequired":true},"is_synci_managed":{"type":"string","description":"True when the spreadsheet was created by Synci; false when an existing spreadsheet was attached.","isRequired":true},"transactions_sheet_gid":{"type":"string","description":"The gid of the tab that receives transactions, if assigned.","isRequired":true},"transactions_sheet_name":{"type":"string","description":"The name of the tab that receives transactions, if assigned.","isRequired":true},"live_balance_sheet_gid":{"type":"string","description":"The gid of the tab that holds current balances, if assigned.","isRequired":true},"live_balance_sheet_name":{"type":"string","description":"The name of the tab that holds current balances, if assigned.","isRequired":true},"balance_history_sheet_gid":{"type":"string","description":"The gid of the tab that records balance history, if assigned.","isRequired":true},"balance_history_sheet_name":{"type":"string","description":"The name of the tab that records balance history, if assigned.","isRequired":true},"last_synced_at":{"type":"string","description":"When data was last synced to the spreadsheet.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"google_email":{"type":"string","description":"Email address of the connected Google account.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with Google. Only present when authorization is required."},"sheets":{"type":"array","items":{"$circularRef":"4855146d-203d-426a-9ae0-10ad2f15b3d1"}}},"required":["id","name","enabled","google_email","last_synced_at","created_at","updated_at"],"title":"GoogleSheetsConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"object","title":"NotionDatabaseResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","name","title","database_id","data_source_id","database_url","parent_page_id","parent_page_title","is_synci_managed","layout","header_config","property_map","accounts_database_id","categories_database_id","months_database_id","balance_history_database_id","balance_available","last_synced_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"name":{"type":"string","description":"Display name of the database in Synci.","isRequired":true},"title":{"type":"string","description":"The database's title in Notion.","isRequired":true},"database_id":{"type":"string","description":"The Notion database ID.","isRequired":true},"data_source_id":{"type":"string","description":"The Notion data source (table) transactions are written to.","isRequired":true},"database_url":{"type":"string","description":"Link to open the database in Notion.","isRequired":true},"parent_page_id":{"type":"string","description":"The Notion page the database lives under, when known, and its title\n(a dashboard's `name` falls back to this).","isRequired":true},"parent_page_title":{"type":"string","isRequired":true},"is_synci_managed":{"type":"string","description":"True when the database was created by Synci; false when an existing database was attached.","isRequired":true},"layout":{"type":"string","description":"\"dashboard\" when the Synci Finance template was adopted (transactions relate to Accounts,\nCategories and Months); \"flat\" for plain databases.","isRequired":true},"header_config":{"type":"string","description":"Ordered list of transaction field keys written as database properties.","isRequired":true},"property_map":{"type":"string","description":"Field key to Notion property id map Synci writes through.","isRequired":true},"accounts_database_id":{"type":"string","description":"The supporting databases next to this one, when present.","isRequired":true},"categories_database_id":{"type":"string","isRequired":true},"months_database_id":{"type":"string","isRequired":true},"balance_history_database_id":{"type":"string","isRequired":true},"balance_available":{"type":"string","description":"Whether balance databases exist or can be provisioned (requires a parent page).","isRequired":true},"last_synced_at":{"type":"string","description":"When data was last synced to the database.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"workspace_id":{"type":"string","description":"The connected Notion workspace.","isRequired":true},"workspace_name":{"type":"string","isRequired":true},"workspace_icon":{"type":"string","description":"Emoji or image URL of the workspace icon, if any.","isRequired":true},"owner_email":{"type":"string","description":"Email of the Notion user who authorized the connection, when shared.","isRequired":true},"duplicated_template_id":{"type":"string","description":"The page Notion created when the user duplicated the Synci template during authorization, if any.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with Notion. Only present when authorization is required."},"databases":{"type":"array","items":{"$circularRef":"1eda84be-8980-45e6-b112-5f3673d06c26"}}},"required":["id","name","enabled","workspace_id","workspace_name","workspace_icon","owner_email","duplicated_template_id","last_synced_at","created_at","updated_at"],"title":"NotionConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"null","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`."}]},"rules":{"type":"array","description":"The rules attached to the transfer link. Will be included in the response if the `include` query parameter contains `rules`.\nEach object includes:\n- order: The position of the rule in the transfer link's rule list. Rules are applied in ascending order.\n- rule: The rule resource data","items":{"type":"object","properties":{"order":{"type":"integer","isRequired":true},"rule":{"type":"object","additionalProperties":{"oneOf":[{}]},"isRequired":true}},"required":["order","rule"]}}},"required":["id","financial_account_id","destination_type","destination_id","transfer_start_date","active","sync_mode","on_booked_change","created_at","updated_at"],"title":"TransferLinkResource"},"10a862ec-a219-4aac-b0f2-677b77b5b836":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"budget_id":{"type":"string","isRequired":true},"ynab_id":{"type":"string","description":"The account's ID in YNAB.","isRequired":true},"name":{"type":"string","isRequired":true},"type":{"type":"string","isRequired":true},"on_budget":{"type":"string","description":"Whether the account is on budget in YNAB.","isRequired":true},"closed":{"type":"string","description":"Whether the account is closed in YNAB.","isRequired":true},"note":{"type":"string","description":"The account note from YNAB, if set.","isRequired":true},"balance":{"type":"string","description":"The account balance as reported by YNAB.","isRequired":true},"cleared_balance":{"type":"string","description":"The cleared balance as reported by YNAB.","isRequired":true},"uncleared_balance":{"type":"string","description":"The uncleared balance as reported by YNAB.","isRequired":true},"transfer_payee_id":{"type":"string","description":"The YNAB payee ID used for transfers to this account.","isRequired":true},"direct_import_linked":{"type":"string","description":"Whether the account is linked to YNAB Direct Import.","isRequired":true},"last_reconciled_at":{"type":"string","description":"When the account was last reconciled in YNAB.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"budget":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"ynab_id":{"type":"string","description":"The budget's ID in YNAB.","isRequired":true},"enabled":{"type":"string","description":"Whether syncing to this budget is enabled.","isRequired":true},"name":{"type":"string","isRequired":true},"currency":{"type":"string","description":"The budget's currency in YNAB.","isRequired":true},"first_month":{"type":"string","description":"The budget's first month in YNAB.","isRequired":true},"last_month":{"type":"string","description":"The budget's last month in YNAB.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"sync_balances":{"type":"string","description":"Whether account balances are synced to YNAB.","isRequired":true},"ynab_user_id":{"type":"string","description":"The connected user's ID in YNAB.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with YNAB. Only present when authorization is required."},"budgets":{"type":"array","items":{"$circularRef":"248c304a-3ec9-4df8-af52-e0efd200a978"}}},"required":["id","name","enabled","sync_balances","ynab_user_id","last_synced_at","created_at","updated_at"],"title":"YnabConnectionResource"},"accounts":{"type":"array","items":{"$circularRef":"10a862ec-a219-4aac-b0f2-677b77b5b836"}}},"required":["id","connection_id","ynab_id","enabled","name","currency","first_month","last_month","last_synced_at","created_at","updated_at"],"title":"YnabBudgetResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"financial_account_id":{"type":"string","description":"The ID of the financial account transactions are being transferred from.","isRequired":true},"destination_type":{"type":"string","description":"The type of destination the transfer link sends transactions to:\n- **YNAB**: a YNAB budget account.\n- **LUNCH_MONEY**: a Lunch Money account.\n- **GOOGLE_SHEETS**: a Google Sheet.\n- **NOTION**: a Notion database.","isRequired":true},"destination_id":{"type":"string","description":"The ID of the destination transactions are being transferred to. The type of resource the ID refers to depends on the destination type:\n- **YNAB**: the ID of a YNAB budget account.\n- **LUNCH_MONEY**: the ID of a Lunch Money account.\n- **GOOGLE_SHEETS**: the ID of a Google Sheet.\n- **NOTION**: the ID of a Notion database.","isRequired":true},"transfer_start_date":{"type":"string","description":"The date from which the transfer link will start transferring transactions.\nIf not provided, all available transactions in the attached financial account will be transferred regardless of their date.","examples":["2025-01-01"],"isRequired":true},"active":{"type":"string","description":"Whether the transfer link is enabled.","isRequired":true},"sync_mode":{"type":"string","description":"Which streams to push to the destination:\n- `transactions`: only individual transactions (default for bank sources)\n- `balance`: only periodic balance snapshots\n- `transactions_and_balance`: both (default for brokerage / crypto sources)","isRequired":true},"on_booked_change":{"type":"object","description":"Which destination fields to update when a transaction's booked status changes.\nIf not provided, all fields will be updated.","properties":{"update_status":{"type":"string","isRequired":true},"update_payee":{"type":"string","isRequired":true},"update_description":{"type":"string","isRequired":true},"update_amount":{"type":"string","isRequired":true}},"required":["update_status","update_payee","update_description","update_amount"],"isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"financial_account":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"enabled":{"type":"string","isRequired":true},"live":{"type":"string","description":"Whether the account is in use: it AND its connection are enabled. A disabled connection keeps each\naccount's own `enabled` as the user set it, but none of its accounts sync until it is enabled again.","isRequired":true},"integrator":{"type":"string","description":"Provider that populates this account (GOCARDLESS / AKAHU / SNAPTRADE).","isRequired":true},"account_category":{"oneOf":[{"type":"string","description":"High-level kind of account: BANK (checking/savings, provided by\nbanking providers), INVESTMENT (brokerage), DEPOSIT (cash\nsub-account at a broker), LOC (line of credit), LOAN (a manual\nloan Synci models from its terms). Determines which fields are\npopulated on the account.","isRequired":true},{"type":"null","description":"High-level kind of account: BANK (checking/savings, provided by\nbanking providers), INVESTMENT (brokerage), DEPOSIT (cash\nsub-account at a broker), LOC (line of credit), LOAN (a manual\nloan Synci models from its terms). Determines which fields are\npopulated on the account.","isRequired":true}],"isRequired":true},"raw_type":{"type":"string","description":"Provider's free-form sub-type label (SnapTrade only). Examples:\n\"Roth IRA\", \"TFSA\", \"Cash\". Null for bank accounts.","isRequired":true},"cash_balance":{"oneOf":[{"type":"object","description":"Uninvested cash held at the broker, for INVESTMENT accounts.\nNull for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string","isRequired":true},"currency":{"type":"string","isRequired":true}},"isRequired":true},{"type":"null","description":"Uninvested cash held at the broker, for INVESTMENT accounts.\nNull for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"isRequired":true}],"isRequired":true},"total_balance":{"oneOf":[{"type":"object","description":"Broker-reported total account value (positions + cash) for\nINVESTMENT accounts. Brokerages report this on the account\npayload rather than as a dated snapshot, so it does not appear\nin the balances endpoint. Null for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string","isRequired":true},"currency":{"type":"string","isRequired":true}},"isRequired":true},{"type":"null","description":"Broker-reported total account value (positions + cash) for\nINVESTMENT accounts. Brokerages report this on the account\npayload rather than as a dated snapshot, so it does not appear\nin the balances endpoint. Null for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"isRequired":true}],"isRequired":true},"meta":{"type":"string","description":"Provider-specific extras that don't fit anywhere else (e.g.\nSnapTrade's `meta.type`/`meta.status` for crypto exchanges).\nTreat as opaque — schema is provider-defined.","isRequired":true},"name":{"type":"string","description":"Name of the account, as assigned by the financial institution.","isRequired":true},"custom_name":{"type":"string","description":"Custom name for the account, as defined by the end user.","isRequired":true},"institution_name":{"type":"string","description":"The lender's name on a manual account, as the user entered it. Null on provider accounts and on manual\naccounts without one: group those under their connection's institution (\"Manual accounts\").","isRequired":true},"display_name":{"type":"string","description":"Name of the account as defined by the end user within online channels.","isRequired":true},"currency":{"type":"string","description":"ISO 4217 currency code.","isRequired":true},"product_name":{"type":"string","description":"Product Name of the Institution for this account, proprietary definition.","isRequired":true},"cash_account_type":{"type":"string","description":"ExternalCashAccountType1Code from ISO 20022 (e.g. CACC, CARD, SVGS), when reported by the institution.","isRequired":true},"account_usage":{"type":"string","description":"Usage of the account: PRIV (private personal account) or ORGA (professional account).","isRequired":true},"details":{"type":"string","description":"Specifications that might be provided by the financial institution - characteristics of the account - characteristics of the relevant card.","isRequired":true},"details_last_synced_at":{"type":"string","description":"Last time the financial account details were fetched from the integrator.","isRequired":true},"transactions_last_synced_at":{"type":"string","description":"Last time the financial account transactions were fetched from the integrator.","isRequired":true},"transactions_backfill_cursor":{"oneOf":[{"type":"string","description":"History is fetched newest-first in windows of up to 90 days. While older\nwindows are still being fetched this is the earliest date already covered;\ntransactions before it arrive on subsequent syncs, at the pace the\ninstitution's daily request allowance permits. Null once the account's\nfull history (up to the connection's `max_historical_days`) is in.","isRequired":true},{"type":"null","description":"History is fetched newest-first in windows of up to 90 days. While older\nwindows are still being fetched this is the earliest date already covered;\ntransactions before it arrive on subsequent syncs, at the pace the\ninstitution's daily request allowance permits. Null once the account's\nfull history (up to the connection's `max_historical_days`) is in.","isRequired":true}],"isRequired":true},"balances_last_synced_at":{"type":"string","description":"Last time the financial account balances were fetched from the integrator.","isRequired":true},"balance":{"type":"object","description":"Balance of the account at the last sync. To get all types of balances at different dates, use the balances endpoints.","properties":{"currency":{"type":"string","description":"ISO 4217 currency of these figures. Only differs from the\naccount's `currency` on a multi-currency account (`XXX`),\nwhich holds a balance per currency: this is the one shown.","isRequired":true},"available":{"oneOf":[{"type":"string"},{"type":"integer","enum":[0]}]},"cleared":{"oneOf":[{"type":"string"},{"type":"integer","enum":[0]}]}},"required":["currency"],"isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"financial_connection_id":{"type":"string"},"financial_connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"institution_id":{"type":"string","isRequired":true},"region":{"type":"string","description":"Residency region of the connection's data (`eu`, `us`), decided\nby the institution's provider when the connection was created.","isRequired":true},"enabled":{"type":"string","isRequired":true},"status":{"oneOf":[{"type":"string","description":"Provider-neutral lifecycle status (PENDING_AUTHORIZATION / CONNECTED / ...).","isRequired":true},{"type":"null","description":"Provider-neutral lifecycle status (PENDING_AUTHORIZATION / CONNECTED / ...).","isRequired":true}],"isRequired":true},"status_message":{"type":"string","description":"Provider status message.","isRequired":true},"sync_balances":{"type":"string","description":"Whether balances should be synced. Applies to all accounts belonging to this connection.","isRequired":true},"supports_reauthorization":{"type":"boolean","description":"Whether `PUT /reauthorize` will start a fresh OAuth flow against this connection's\nprovider. True for every currently supported provider (GoCardless renews PSD2 consent;\nAkahu and SnapTrade re-grant a previously-disabled connection). When false, the\nreauthorize endpoint responds with `REAUTHORIZATION_NOT_SUPPORTED`.","isRequired":true},"supports_manage":{"type":"boolean","description":"Whether GET /manage will return a URL you can redirect the user to so\nthey can manage their existing connections directly with the provider. Currently\ntrue for Akahu (sends them to oauth.akahu.nz where they can add / revoke banks\nunder their enduring consent), false for GoCardless and SnapTrade.","isRequired":true},"max_historical_days":{"oneOf":[{"type":"string","description":"The maximum number of days of historical data Synci is able to fetch. Applies to all accounts belonging to this connection.","isRequired":true},{"type":"null","description":"The maximum number of days of historical data Synci is able to fetch. Applies to all accounts belonging to this connection.","isRequired":true}],"isRequired":true},"access_valid_for_days":{"oneOf":[{"type":"string","description":"Also known as consent lifetime. The number of days Synci is able to access accounts belonging to this connection.\nE.g. if this is set to 180 days, you will have to re-authenticate the connection every 180 days.\nSynci will send you an email when the expiry date is approaching.","isRequired":true},{"type":"null","description":"Also known as consent lifetime. The number of days Synci is able to access accounts belonging to this connection.\nE.g. if this is set to 180 days, you will have to re-authenticate the connection every 180 days.\nSynci will send you an email when the expiry date is approaching.","isRequired":true}],"isRequired":true},"consent_expires_at":{"oneOf":[{"type":"string","description":"The date and time when the bank consent expires and the connection\nhas to be reauthorized, or null for providers that grant enduring\nconsent (Akahu, SnapTrade).","isRequired":true},{"type":"null","description":"The date and time when the bank consent expires and the connection\nhas to be reauthorized, or null for providers that grant enduring\nconsent (Akahu, SnapTrade).","isRequired":true}],"isRequired":true},"reference":{"type":"string","description":"Caller-supplied correlation id set at creation (e.g. a platform\ndeveloper's own end-user id). Filterable via ?filter[reference]=.","isRequired":true},"accounts_last_synced_at":{"type":"string","isRequired":true},"setup_pending":{"type":"boolean","description":"Whether the post-connection setup (choosing accounts, naming them,\npicking a sync start date) is still to be finished. While true the\naccounts exist but their first transaction sync is held back until\n`POST /setup/complete`, or until the setup goes stale. Always false\nfor connections created by API clients.","isRequired":true},"setup_renewal":{"type":"boolean","description":"True while a pending setup belongs to a consent renewal rather than a new connection: only the\naccount choice is asked for, and the accounts the user had enabled stay pre-selected.","isRequired":true},"activated_at":{"type":"string","description":"When the connection first went live (provider callback succeeded).\nNull while consent is still pending or the flow was abandoned.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"institution":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"integrator":{"type":"string","description":"The integrator used to connect to this institution.","isRequired":true},"region":{"type":"string","description":"Residency region connections to this institution are stored in (`eu`, `us`).","isRequired":true},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","isRequired":true},"name":{"type":"string","description":"Name of the institution.","isRequired":true},"bic":{"type":"string","description":"Institution Identifier Code (BIC/SWIFT code).","isRequired":true},"external_id":{"type":"string","description":"The ID of the institution as provided by the integrator.","isRequired":true},"logo":{"type":"string","description":"URL to the institution's logo, as provided by the integrator.","isRequired":true},"supported":{"type":"string","description":"Whether the institution is supported. Will be true in most cases, but might be false if the integrator stops supporting an institution.","isRequired":true},"supports_pending_transactions":{"type":"string","description":"Whether the institution supports pending transactions.","isRequired":true},"supports_card_accounts":{"type":"string","description":"Whether the institution supports card accounts.","isRequired":true},"max_historical_days":{"type":"string","description":"The maximum number of days of historical data this institution can provide.\n`null` where the provider imposes no such limit and fetches whatever the bank\nholds, which is the case for every US institution. Do not read null as zero.","isRequired":true},"max_access_valid_for_days":{"type":"string","description":"Also known as consent lifetime. The maximum number of days access to this institution may be valid for.\nFor most European institutions this ranges from 90 to 180 days. `null` where access does not\nexpire on a schedule and no periodic re-consent is required, which is the case for every US\ninstitution: those connections break only when the bank breaks them.","isRequired":true},"supported_products":{"type":"string","description":"The kinds of data this institution can serve, e.g. `[\"ACCOUNTS\", \"TRANSACTIONS\", \"INVESTMENTS\"]`.\n`null` means the provider does not report it, NOT that the institution serves nothing: treat it\nas no information rather than as a negative. Only US institutions report it today.","isRequired":true},"category":{"oneOf":[{"type":"string","description":"The category of the financial institution.","isRequired":true},{"type":"null","description":"The category of the financial institution.","isRequired":true}],"isRequired":true},"updated_at":{"type":"string","description":"The date and time when the institution was last updated.","isRequired":true}},"required":["id","integrator","region","country","name","bic","external_id","logo","supported","supports_pending_transactions","supports_card_accounts","max_historical_days","max_access_valid_for_days","supported_products","category","updated_at"],"title":"InstitutionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"financial_accounts":{"type":"array","description":"Financial accounts belonging to this connection.","items":{"$circularRef":"e8a9bf44-5f49-4f46-8f0e-6b0cf3c6185e"}},"financial_accounts_count":{"type":"string"}},"required":["id","institution_id","region","enabled","status","status_message","sync_balances","supports_reauthorization","supports_manage","max_historical_days","access_valid_for_days","consent_expires_at","reference","accounts_last_synced_at","setup_pending","setup_renewal","activated_at","created_at","updated_at"],"title":"FinancialConnectionResource"},"config":{"type":"object","properties":{"map_fields":{"type":"object","description":"Which field(s) are used when mapping the \"payee\", \"description\" and \"date\" fields for a transaction.\nOne of the fixed option names (`AUTO`, `NONE`, `CREDITOR_NAME`, `BOOKING_DATE`, ...).\nVersion 2 of the API stores an ordered fallback chain per field instead; this is the closest fixed\noption for the stored chain, and a chain without an equivalent reads as `AUTO`.","properties":{"payee":{"type":"string","isRequired":true},"description":{"type":"string","isRequired":true},"date":{"type":"string","isRequired":true}},"required":["payee","description","date"],"isRequired":true},"enrichment":{"type":"object","description":"Enrich transaction data with additional information from an external provider","properties":{"enabled":{"type":"string","description":"Whether transaction enrichment is enabled","isRequired":true},"provider":{"type":"string","description":"The provider to use for transaction enrichment.","isRequired":true},"country":{"type":"string","description":"The country where transactions are made. Providing a country significantly improves enrichment accuracy.","isRequired":true}},"required":["enabled","provider","country"],"isRequired":true},"sync_start_date":{"oneOf":[{"type":"string","description":"The date to start syncing transactions from.\nCannot be earlier than the date the connection was authorized minus the connection's `max_historical_days`.\nWill default to today if not set.","example":"2025-01-01","isRequired":true},{"type":"null","description":"The date to start syncing transactions from.\nCannot be earlier than the date the connection was authorized minus the connection's `max_historical_days`.\nWill default to today if not set.","example":"2025-01-01","isRequired":true}],"isRequired":true},"sync_auto":{"type":"string","description":"Whether data should be synced automatically. If set to false, you will need to manually trigger a sync every time you want to refresh data.","isRequired":true},"sync_pending_transactions":{"type":"string","description":"Whether pending transactions should be synced. For some banks, setting this to true can cause duplicate transactions.","isRequired":true},"pending_settlement_matching":{"type":"string","description":"Whether a booked transaction can settle an existing pending transaction when the amount changed.\nCard pre-authorizations (fuel stations, hotels, car rentals) are often authorized with a placeholder amount\nthat changes when the transaction is booked, together with the transaction's identifiers.\nWhen enabled, a booked transaction that matches a pending transaction's counterparty (and card details,\nwhen the bank provides them) within `pending_settlement_max_days` days updates that pending transaction\ninstead of creating a duplicate.\nOnly pending transactions are matched this way; deduplication of booked transactions is unaffected.\nEnabled by default; `null` means the default applies.","isRequired":true},"pending_settlement_max_days":{"type":"string","description":"The maximum number of days between a pending transaction and its booked settlement\nfor `pending_settlement_matching` to link the two. Defaults to 7; `null` means the default applies.","isRequired":true},"fuzzy_counterparty_matching":{"type":"string","description":"Whether a counterparty name the bank re-words when a transaction settles can still match\nthe pending entry it replaces (\"NORWEGIAN.COM\" settling as \"NORWEGIAN.C 3284405123\").\nDescriptors that conflict rather than truncate or extend never match, and only pending\ntransactions are matched this way.\nEnabled by default; `null` means the default applies.","isRequired":true},"fuzzy_counterparty_min_chars":{"type":"string","description":"The minimum number of characters two re-worded counterparty descriptors must align on for\n`fuzzy_counterparty_matching` to treat them as the same party. Defaults to 6; `null` means\nthe default applies.","isRequired":true},"sync_balances":{"type":"string","description":"Whether balances should be synced.","isRequired":true},"sync_frequency_in_minutes":{"type":"string","description":"How often to sync data, in minutes. The permitted minimum is set by the\nsubscriber's plan (`max_sync_frequency_minutes` in the plan's features, see\n`GET /billing/plans`); 30 is only the absolute lower bound any plan could set. This is the CONFIGURED value. The interval actually used may be longer if the\ninstitution has refused requests on its own daily cap, in which case the account\nis demoted to a slower cadence automatically.","isRequired":true},"fields_for_duplicate_filtering":{"oneOf":[{"type":"array","items":{"type":"string"},"description":"An array of Transaction fields to use when filtering duplicate transactions.\nWhen a new transaction is synced, these fields are compared with existing transactions.\nIf the fields are identical, the new transaction is considered a duplicate and will be ignored.\nThis should only be used if you are struggling with duplicate transactions, and know which fields can be used to filter them. For everyone else, omit this field."},{"type":"null","description":"An array of Transaction fields to use when filtering duplicate transactions.\nWhen a new transaction is synced, these fields are compared with existing transactions.\nIf the fields are identical, the new transaction is considered a duplicate and will be ignored.\nThis should only be used if you are struggling with duplicate transactions, and know which fields can be used to filter them. For everyone else, omit this field."}]}},"required":["map_fields","enrichment","sync_start_date","sync_auto","sync_pending_transactions","pending_settlement_matching","pending_settlement_max_days","fuzzy_counterparty_matching","fuzzy_counterparty_min_chars","sync_balances","sync_frequency_in_minutes"],"title":"InstitutionConfigResource","description":"The financial account configuration. If the financial account has no configuration, the banks default configuration will be used."},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"loan":{"oneOf":[{"type":"array","items":{"oneOf":[{}]},"description":"The loan terms, rate history and derived figures. Present on LOAN accounts only."},{"type":"null","description":"The loan terms, rate history and derived figures. Present on LOAN accounts only."}]},"account_number_masked":{"type":"string","description":"Masked account number (e.g. \"****1234\"). Only present when the\nprovider supplies it (SnapTrade brokerages, and banks that report\na masked card PAN via GoCardless); null otherwise."},"bban":{"type":"string","description":"Basic Bank Account Number (BBAN)."},"scan":{"type":"string","description":"UK SortCodeAccountNumber (6 digit sort code + 8 digit account number), reported by some UK banks."},"iban":{"type":"string","description":"International Bank Account Number (IBAN)."},"bic":{"type":"string","description":"Bank Identifier Code (BIC/SWIFT) associated with the account."},"owner_name":{"type":"string","description":"Name of the legal account owner. If there is more than one owner, then e.g. two names might be noted here. For a corporate account, the corporate name is used for this attribute."},"owner_address":{"type":"string","description":"Address of the legal account owner, when reported by the institution."},"linked_accounts":{"type":"string","description":"Name of a cash account associated to pending card transactions, when the institution reports one. Banks often put that account's number here, so it is omitted with the other identifiers."},"msisdn":{"type":"string","description":"An alias to a payment account via a registered mobile phone number."},"integrator_id":{"type":"string","description":"The financial account ID provided by the integrator."},"institution_id":{"type":"string","description":"The financial account ID provided by the institution/bank."},"rules":{"type":"array","description":"The rules attached to this financial account","items":{"type":"object","properties":{"order":{"type":"integer","isRequired":true},"rule":{"type":"object","additionalProperties":{"oneOf":[{}]},"isRequired":true}},"required":["order","rule"]}},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}},"transfer_links_count":{"type":"string","description":"Left out for tokens without the `transfer-links:read` scope."}},"required":["id","enabled","live","integrator","account_category","raw_type","cash_balance","total_balance","meta","name","custom_name","institution_name","display_name","currency","product_name","cash_account_type","account_usage","details","details_last_synced_at","transactions_last_synced_at","transactions_backfill_cursor","balances_last_synced_at","balance","created_at","updated_at"],"title":"FinancialAccountResource","description":"The associated FinancialAccount resource. Will be included in the response if the `include` query parameter contains `financial_account`."},"destination":{"oneOf":[{"description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`."},{"type":"object","title":"LunchMoneyAccountResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","lunch_money_id","name","display_name","type","subtype","currency","balance","balance_as_of","closed_on","exclude_from_transactions","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"lunch_money_id":{"type":"string","description":"The account's ID in Lunch Money.","isRequired":true},"name":{"type":"string","isRequired":true},"display_name":{"type":"string","description":"The account's display name in Lunch Money, if set.","isRequired":true},"type":{"type":"string","description":"The account type as reported by Lunch Money, e.g. \"cash\" or \"credit\".","isRequired":true},"subtype":{"type":"string","description":"The account subtype as reported by Lunch Money, if set.","isRequired":true},"currency":{"type":"string","isRequired":true},"balance":{"type":"string","description":"The account balance as reported by Lunch Money.","isRequired":true},"balance_as_of":{"type":"string","description":"When the balance was last updated in Lunch Money.","isRequired":true},"closed_on":{"type":"string","description":"When the account was closed in Lunch Money, if closed.","isRequired":true},"exclude_from_transactions":{"type":"string","description":"Whether the account is excluded from transactions in Lunch Money.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","description":"The name of the connected Lunch Money budget.","isRequired":true},"lunch_money_details":{"type":"object","description":"Details about the connected Lunch Money account.","properties":{"user_name":{"type":"string","description":"Name of the Lunch Money user.","isRequired":true},"user_email":{"type":"string","description":"Email address of the Lunch Money user.","isRequired":true},"user_id":{"type":"string","description":"The user's ID in Lunch Money.","isRequired":true},"bank_account_id":{"type":"string","description":"The connected account's ID in Lunch Money.","isRequired":true},"budget_name":{"type":"string","description":"Name of the connected Lunch Money budget.","isRequired":true},"primary_currency":{"type":"string","description":"The budget's primary currency in Lunch Money.","isRequired":true},"api_key_label":{"type":"string","description":"Label of the Lunch Money API token used by this connection, if set.","isRequired":true}},"required":["user_name","user_email","user_id","bank_account_id","budget_name","primary_currency","api_key_label"],"isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"sync_balances":{"type":"string","description":"Whether account balances are synced to Lunch Money.","isRequired":true},"sync_transactions":{"type":"string","description":"Whether transactions are synced to Lunch Money.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"accounts":{"type":"array","items":{"$circularRef":"4b474cf8-3b5a-4e7d-9d9a-257a073ea9dd"}}},"required":["id","name","lunch_money_details","enabled","sync_balances","sync_transactions","last_synced_at","created_at","updated_at"],"title":"LunchMoneyConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"object","title":"GoogleSheetResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","name","spreadsheet_id","spreadsheet_name","spreadsheet_url","is_synci_managed","transactions_sheet_gid","transactions_sheet_name","live_balance_sheet_gid","live_balance_sheet_name","balance_history_sheet_gid","balance_history_sheet_name","last_synced_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"name":{"type":"string","description":"Display name of the spreadsheet in Synci.","isRequired":true},"spreadsheet_id":{"type":"string","description":"The spreadsheet's ID in Google Sheets, as found in its URL.","isRequired":true},"spreadsheet_name":{"type":"string","description":"The spreadsheet's title in Google Sheets.","isRequired":true},"spreadsheet_url":{"type":"string","description":"Link to open the spreadsheet in Google Sheets.","isRequired":true},"is_synci_managed":{"type":"string","description":"True when the spreadsheet was created by Synci; false when an existing spreadsheet was attached.","isRequired":true},"transactions_sheet_gid":{"type":"string","description":"The gid of the tab that receives transactions, if assigned.","isRequired":true},"transactions_sheet_name":{"type":"string","description":"The name of the tab that receives transactions, if assigned.","isRequired":true},"live_balance_sheet_gid":{"type":"string","description":"The gid of the tab that holds current balances, if assigned.","isRequired":true},"live_balance_sheet_name":{"type":"string","description":"The name of the tab that holds current balances, if assigned.","isRequired":true},"balance_history_sheet_gid":{"type":"string","description":"The gid of the tab that records balance history, if assigned.","isRequired":true},"balance_history_sheet_name":{"type":"string","description":"The name of the tab that records balance history, if assigned.","isRequired":true},"last_synced_at":{"type":"string","description":"When data was last synced to the spreadsheet.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"google_email":{"type":"string","description":"Email address of the connected Google account.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with Google. Only present when authorization is required."},"sheets":{"type":"array","items":{"$circularRef":"4855146d-203d-426a-9ae0-10ad2f15b3d1"}}},"required":["id","name","enabled","google_email","last_synced_at","created_at","updated_at"],"title":"GoogleSheetsConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"object","title":"NotionDatabaseResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","name","title","database_id","data_source_id","database_url","parent_page_id","parent_page_title","is_synci_managed","layout","header_config","property_map","accounts_database_id","categories_database_id","months_database_id","balance_history_database_id","balance_available","last_synced_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"name":{"type":"string","description":"Display name of the database in Synci.","isRequired":true},"title":{"type":"string","description":"The database's title in Notion.","isRequired":true},"database_id":{"type":"string","description":"The Notion database ID.","isRequired":true},"data_source_id":{"type":"string","description":"The Notion data source (table) transactions are written to.","isRequired":true},"database_url":{"type":"string","description":"Link to open the database in Notion.","isRequired":true},"parent_page_id":{"type":"string","description":"The Notion page the database lives under, when known, and its title\n(a dashboard's `name` falls back to this).","isRequired":true},"parent_page_title":{"type":"string","isRequired":true},"is_synci_managed":{"type":"string","description":"True when the database was created by Synci; false when an existing database was attached.","isRequired":true},"layout":{"type":"string","description":"\"dashboard\" when the Synci Finance template was adopted (transactions relate to Accounts,\nCategories and Months); \"flat\" for plain databases.","isRequired":true},"header_config":{"type":"string","description":"Ordered list of transaction field keys written as database properties.","isRequired":true},"property_map":{"type":"string","description":"Field key to Notion property id map Synci writes through.","isRequired":true},"accounts_database_id":{"type":"string","description":"The supporting databases next to this one, when present.","isRequired":true},"categories_database_id":{"type":"string","isRequired":true},"months_database_id":{"type":"string","isRequired":true},"balance_history_database_id":{"type":"string","isRequired":true},"balance_available":{"type":"string","description":"Whether balance databases exist or can be provisioned (requires a parent page).","isRequired":true},"last_synced_at":{"type":"string","description":"When data was last synced to the database.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"workspace_id":{"type":"string","description":"The connected Notion workspace.","isRequired":true},"workspace_name":{"type":"string","isRequired":true},"workspace_icon":{"type":"string","description":"Emoji or image URL of the workspace icon, if any.","isRequired":true},"owner_email":{"type":"string","description":"Email of the Notion user who authorized the connection, when shared.","isRequired":true},"duplicated_template_id":{"type":"string","description":"The page Notion created when the user duplicated the Synci template during authorization, if any.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with Notion. Only present when authorization is required."},"databases":{"type":"array","items":{"$circularRef":"1eda84be-8980-45e6-b112-5f3673d06c26"}}},"required":["id","name","enabled","workspace_id","workspace_name","workspace_icon","owner_email","duplicated_template_id","last_synced_at","created_at","updated_at"],"title":"NotionConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"null","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`."}]},"rules":{"type":"array","description":"The rules attached to the transfer link. Will be included in the response if the `include` query parameter contains `rules`.\nEach object includes:\n- order: The position of the rule in the transfer link's rule list. Rules are applied in ascending order.\n- rule: The rule resource data","items":{"type":"object","properties":{"order":{"type":"integer","isRequired":true},"rule":{"type":"object","additionalProperties":{"oneOf":[{}]},"isRequired":true}},"required":["order","rule"]}}},"required":["id","financial_account_id","destination_type","destination_id","transfer_start_date","active","sync_mode","on_booked_change","created_at","updated_at"],"title":"TransferLinkResource"}}},"required":["id","budget_id","ynab_id","name","type","on_budget","closed","note","balance","cleared_balance","uncleared_balance","transfer_payee_id","direct_import_linked","last_reconciled_at","created_at","updated_at"],"title":"YnabBudgetAccountResource"},"4b474cf8-3b5a-4e7d-9d9a-257a073ea9dd":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"lunch_money_id":{"type":"string","description":"The account's ID in Lunch Money.","isRequired":true},"name":{"type":"string","isRequired":true},"display_name":{"type":"string","description":"The account's display name in Lunch Money, if set.","isRequired":true},"type":{"type":"string","description":"The account type as reported by Lunch Money, e.g. \"cash\" or \"credit\".","isRequired":true},"subtype":{"type":"string","description":"The account subtype as reported by Lunch Money, if set.","isRequired":true},"currency":{"type":"string","isRequired":true},"balance":{"type":"string","description":"The account balance as reported by Lunch Money.","isRequired":true},"balance_as_of":{"type":"string","description":"When the balance was last updated in Lunch Money.","isRequired":true},"closed_on":{"type":"string","description":"When the account was closed in Lunch Money, if closed.","isRequired":true},"exclude_from_transactions":{"type":"string","description":"Whether the account is excluded from transactions in Lunch Money.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","description":"The name of the connected Lunch Money budget.","isRequired":true},"lunch_money_details":{"type":"object","description":"Details about the connected Lunch Money account.","properties":{"user_name":{"type":"string","description":"Name of the Lunch Money user.","isRequired":true},"user_email":{"type":"string","description":"Email address of the Lunch Money user.","isRequired":true},"user_id":{"type":"string","description":"The user's ID in Lunch Money.","isRequired":true},"bank_account_id":{"type":"string","description":"The connected account's ID in Lunch Money.","isRequired":true},"budget_name":{"type":"string","description":"Name of the connected Lunch Money budget.","isRequired":true},"primary_currency":{"type":"string","description":"The budget's primary currency in Lunch Money.","isRequired":true},"api_key_label":{"type":"string","description":"Label of the Lunch Money API token used by this connection, if set.","isRequired":true}},"required":["user_name","user_email","user_id","bank_account_id","budget_name","primary_currency","api_key_label"],"isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"sync_balances":{"type":"string","description":"Whether account balances are synced to Lunch Money.","isRequired":true},"sync_transactions":{"type":"string","description":"Whether transactions are synced to Lunch Money.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"accounts":{"type":"array","items":{"$circularRef":"4b474cf8-3b5a-4e7d-9d9a-257a073ea9dd"}}},"required":["id","name","lunch_money_details","enabled","sync_balances","sync_transactions","last_synced_at","created_at","updated_at"],"title":"LunchMoneyConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"financial_account_id":{"type":"string","description":"The ID of the financial account transactions are being transferred from.","isRequired":true},"destination_type":{"type":"string","description":"The type of destination the transfer link sends transactions to:\n- **YNAB**: a YNAB budget account.\n- **LUNCH_MONEY**: a Lunch Money account.\n- **GOOGLE_SHEETS**: a Google Sheet.\n- **NOTION**: a Notion database.","isRequired":true},"destination_id":{"type":"string","description":"The ID of the destination transactions are being transferred to. The type of resource the ID refers to depends on the destination type:\n- **YNAB**: the ID of a YNAB budget account.\n- **LUNCH_MONEY**: the ID of a Lunch Money account.\n- **GOOGLE_SHEETS**: the ID of a Google Sheet.\n- **NOTION**: the ID of a Notion database.","isRequired":true},"transfer_start_date":{"type":"string","description":"The date from which the transfer link will start transferring transactions.\nIf not provided, all available transactions in the attached financial account will be transferred regardless of their date.","examples":["2025-01-01"],"isRequired":true},"active":{"type":"string","description":"Whether the transfer link is enabled.","isRequired":true},"sync_mode":{"type":"string","description":"Which streams to push to the destination:\n- `transactions`: only individual transactions (default for bank sources)\n- `balance`: only periodic balance snapshots\n- `transactions_and_balance`: both (default for brokerage / crypto sources)","isRequired":true},"on_booked_change":{"type":"object","description":"Which destination fields to update when a transaction's booked status changes.\nIf not provided, all fields will be updated.","properties":{"update_status":{"type":"string","isRequired":true},"update_payee":{"type":"string","isRequired":true},"update_description":{"type":"string","isRequired":true},"update_amount":{"type":"string","isRequired":true}},"required":["update_status","update_payee","update_description","update_amount"],"isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"financial_account":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"enabled":{"type":"string","isRequired":true},"live":{"type":"string","description":"Whether the account is in use: it AND its connection are enabled. A disabled connection keeps each\naccount's own `enabled` as the user set it, but none of its accounts sync until it is enabled again.","isRequired":true},"integrator":{"type":"string","description":"Provider that populates this account (GOCARDLESS / AKAHU / SNAPTRADE).","isRequired":true},"account_category":{"oneOf":[{"type":"string","description":"High-level kind of account: BANK (checking/savings, provided by\nbanking providers), INVESTMENT (brokerage), DEPOSIT (cash\nsub-account at a broker), LOC (line of credit), LOAN (a manual\nloan Synci models from its terms). Determines which fields are\npopulated on the account.","isRequired":true},{"type":"null","description":"High-level kind of account: BANK (checking/savings, provided by\nbanking providers), INVESTMENT (brokerage), DEPOSIT (cash\nsub-account at a broker), LOC (line of credit), LOAN (a manual\nloan Synci models from its terms). Determines which fields are\npopulated on the account.","isRequired":true}],"isRequired":true},"raw_type":{"type":"string","description":"Provider's free-form sub-type label (SnapTrade only). Examples:\n\"Roth IRA\", \"TFSA\", \"Cash\". Null for bank accounts.","isRequired":true},"cash_balance":{"oneOf":[{"type":"object","description":"Uninvested cash held at the broker, for INVESTMENT accounts.\nNull for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string","isRequired":true},"currency":{"type":"string","isRequired":true}},"isRequired":true},{"type":"null","description":"Uninvested cash held at the broker, for INVESTMENT accounts.\nNull for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"isRequired":true}],"isRequired":true},"total_balance":{"oneOf":[{"type":"object","description":"Broker-reported total account value (positions + cash) for\nINVESTMENT accounts. Brokerages report this on the account\npayload rather than as a dated snapshot, so it does not appear\nin the balances endpoint. Null for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string","isRequired":true},"currency":{"type":"string","isRequired":true}},"isRequired":true},{"type":"null","description":"Broker-reported total account value (positions + cash) for\nINVESTMENT accounts. Brokerages report this on the account\npayload rather than as a dated snapshot, so it does not appear\nin the balances endpoint. Null for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"isRequired":true}],"isRequired":true},"meta":{"type":"string","description":"Provider-specific extras that don't fit anywhere else (e.g.\nSnapTrade's `meta.type`/`meta.status` for crypto exchanges).\nTreat as opaque — schema is provider-defined.","isRequired":true},"name":{"type":"string","description":"Name of the account, as assigned by the financial institution.","isRequired":true},"custom_name":{"type":"string","description":"Custom name for the account, as defined by the end user.","isRequired":true},"institution_name":{"type":"string","description":"The lender's name on a manual account, as the user entered it. Null on provider accounts and on manual\naccounts without one: group those under their connection's institution (\"Manual accounts\").","isRequired":true},"display_name":{"type":"string","description":"Name of the account as defined by the end user within online channels.","isRequired":true},"currency":{"type":"string","description":"ISO 4217 currency code.","isRequired":true},"product_name":{"type":"string","description":"Product Name of the Institution for this account, proprietary definition.","isRequired":true},"cash_account_type":{"type":"string","description":"ExternalCashAccountType1Code from ISO 20022 (e.g. CACC, CARD, SVGS), when reported by the institution.","isRequired":true},"account_usage":{"type":"string","description":"Usage of the account: PRIV (private personal account) or ORGA (professional account).","isRequired":true},"details":{"type":"string","description":"Specifications that might be provided by the financial institution - characteristics of the account - characteristics of the relevant card.","isRequired":true},"details_last_synced_at":{"type":"string","description":"Last time the financial account details were fetched from the integrator.","isRequired":true},"transactions_last_synced_at":{"type":"string","description":"Last time the financial account transactions were fetched from the integrator.","isRequired":true},"transactions_backfill_cursor":{"oneOf":[{"type":"string","description":"History is fetched newest-first in windows of up to 90 days. While older\nwindows are still being fetched this is the earliest date already covered;\ntransactions before it arrive on subsequent syncs, at the pace the\ninstitution's daily request allowance permits. Null once the account's\nfull history (up to the connection's `max_historical_days`) is in.","isRequired":true},{"type":"null","description":"History is fetched newest-first in windows of up to 90 days. While older\nwindows are still being fetched this is the earliest date already covered;\ntransactions before it arrive on subsequent syncs, at the pace the\ninstitution's daily request allowance permits. Null once the account's\nfull history (up to the connection's `max_historical_days`) is in.","isRequired":true}],"isRequired":true},"balances_last_synced_at":{"type":"string","description":"Last time the financial account balances were fetched from the integrator.","isRequired":true},"balance":{"type":"object","description":"Balance of the account at the last sync. To get all types of balances at different dates, use the balances endpoints.","properties":{"currency":{"type":"string","description":"ISO 4217 currency of these figures. Only differs from the\naccount's `currency` on a multi-currency account (`XXX`),\nwhich holds a balance per currency: this is the one shown.","isRequired":true},"available":{"oneOf":[{"type":"string"},{"type":"integer","enum":[0]}]},"cleared":{"oneOf":[{"type":"string"},{"type":"integer","enum":[0]}]}},"required":["currency"],"isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"financial_connection_id":{"type":"string"},"financial_connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"institution_id":{"type":"string","isRequired":true},"region":{"type":"string","description":"Residency region of the connection's data (`eu`, `us`), decided\nby the institution's provider when the connection was created.","isRequired":true},"enabled":{"type":"string","isRequired":true},"status":{"oneOf":[{"type":"string","description":"Provider-neutral lifecycle status (PENDING_AUTHORIZATION / CONNECTED / ...).","isRequired":true},{"type":"null","description":"Provider-neutral lifecycle status (PENDING_AUTHORIZATION / CONNECTED / ...).","isRequired":true}],"isRequired":true},"status_message":{"type":"string","description":"Provider status message.","isRequired":true},"sync_balances":{"type":"string","description":"Whether balances should be synced. Applies to all accounts belonging to this connection.","isRequired":true},"supports_reauthorization":{"type":"boolean","description":"Whether `PUT /reauthorize` will start a fresh OAuth flow against this connection's\nprovider. True for every currently supported provider (GoCardless renews PSD2 consent;\nAkahu and SnapTrade re-grant a previously-disabled connection). When false, the\nreauthorize endpoint responds with `REAUTHORIZATION_NOT_SUPPORTED`.","isRequired":true},"supports_manage":{"type":"boolean","description":"Whether GET /manage will return a URL you can redirect the user to so\nthey can manage their existing connections directly with the provider. Currently\ntrue for Akahu (sends them to oauth.akahu.nz where they can add / revoke banks\nunder their enduring consent), false for GoCardless and SnapTrade.","isRequired":true},"max_historical_days":{"oneOf":[{"type":"string","description":"The maximum number of days of historical data Synci is able to fetch. Applies to all accounts belonging to this connection.","isRequired":true},{"type":"null","description":"The maximum number of days of historical data Synci is able to fetch. Applies to all accounts belonging to this connection.","isRequired":true}],"isRequired":true},"access_valid_for_days":{"oneOf":[{"type":"string","description":"Also known as consent lifetime. The number of days Synci is able to access accounts belonging to this connection.\nE.g. if this is set to 180 days, you will have to re-authenticate the connection every 180 days.\nSynci will send you an email when the expiry date is approaching.","isRequired":true},{"type":"null","description":"Also known as consent lifetime. The number of days Synci is able to access accounts belonging to this connection.\nE.g. if this is set to 180 days, you will have to re-authenticate the connection every 180 days.\nSynci will send you an email when the expiry date is approaching.","isRequired":true}],"isRequired":true},"consent_expires_at":{"oneOf":[{"type":"string","description":"The date and time when the bank consent expires and the connection\nhas to be reauthorized, or null for providers that grant enduring\nconsent (Akahu, SnapTrade).","isRequired":true},{"type":"null","description":"The date and time when the bank consent expires and the connection\nhas to be reauthorized, or null for providers that grant enduring\nconsent (Akahu, SnapTrade).","isRequired":true}],"isRequired":true},"reference":{"type":"string","description":"Caller-supplied correlation id set at creation (e.g. a platform\ndeveloper's own end-user id). Filterable via ?filter[reference]=.","isRequired":true},"accounts_last_synced_at":{"type":"string","isRequired":true},"setup_pending":{"type":"boolean","description":"Whether the post-connection setup (choosing accounts, naming them,\npicking a sync start date) is still to be finished. While true the\naccounts exist but their first transaction sync is held back until\n`POST /setup/complete`, or until the setup goes stale. Always false\nfor connections created by API clients.","isRequired":true},"setup_renewal":{"type":"boolean","description":"True while a pending setup belongs to a consent renewal rather than a new connection: only the\naccount choice is asked for, and the accounts the user had enabled stay pre-selected.","isRequired":true},"activated_at":{"type":"string","description":"When the connection first went live (provider callback succeeded).\nNull while consent is still pending or the flow was abandoned.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"institution":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"integrator":{"type":"string","description":"The integrator used to connect to this institution.","isRequired":true},"region":{"type":"string","description":"Residency region connections to this institution are stored in (`eu`, `us`).","isRequired":true},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","isRequired":true},"name":{"type":"string","description":"Name of the institution.","isRequired":true},"bic":{"type":"string","description":"Institution Identifier Code (BIC/SWIFT code).","isRequired":true},"external_id":{"type":"string","description":"The ID of the institution as provided by the integrator.","isRequired":true},"logo":{"type":"string","description":"URL to the institution's logo, as provided by the integrator.","isRequired":true},"supported":{"type":"string","description":"Whether the institution is supported. Will be true in most cases, but might be false if the integrator stops supporting an institution.","isRequired":true},"supports_pending_transactions":{"type":"string","description":"Whether the institution supports pending transactions.","isRequired":true},"supports_card_accounts":{"type":"string","description":"Whether the institution supports card accounts.","isRequired":true},"max_historical_days":{"type":"string","description":"The maximum number of days of historical data this institution can provide.\n`null` where the provider imposes no such limit and fetches whatever the bank\nholds, which is the case for every US institution. Do not read null as zero.","isRequired":true},"max_access_valid_for_days":{"type":"string","description":"Also known as consent lifetime. The maximum number of days access to this institution may be valid for.\nFor most European institutions this ranges from 90 to 180 days. `null` where access does not\nexpire on a schedule and no periodic re-consent is required, which is the case for every US\ninstitution: those connections break only when the bank breaks them.","isRequired":true},"supported_products":{"type":"string","description":"The kinds of data this institution can serve, e.g. `[\"ACCOUNTS\", \"TRANSACTIONS\", \"INVESTMENTS\"]`.\n`null` means the provider does not report it, NOT that the institution serves nothing: treat it\nas no information rather than as a negative. Only US institutions report it today.","isRequired":true},"category":{"oneOf":[{"type":"string","description":"The category of the financial institution.","isRequired":true},{"type":"null","description":"The category of the financial institution.","isRequired":true}],"isRequired":true},"updated_at":{"type":"string","description":"The date and time when the institution was last updated.","isRequired":true}},"required":["id","integrator","region","country","name","bic","external_id","logo","supported","supports_pending_transactions","supports_card_accounts","max_historical_days","max_access_valid_for_days","supported_products","category","updated_at"],"title":"InstitutionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"financial_accounts":{"type":"array","description":"Financial accounts belonging to this connection.","items":{"$circularRef":"e8a9bf44-5f49-4f46-8f0e-6b0cf3c6185e"}},"financial_accounts_count":{"type":"string"}},"required":["id","institution_id","region","enabled","status","status_message","sync_balances","supports_reauthorization","supports_manage","max_historical_days","access_valid_for_days","consent_expires_at","reference","accounts_last_synced_at","setup_pending","setup_renewal","activated_at","created_at","updated_at"],"title":"FinancialConnectionResource"},"config":{"type":"object","properties":{"map_fields":{"type":"object","description":"Which field(s) are used when mapping the \"payee\", \"description\" and \"date\" fields for a transaction.\nOne of the fixed option names (`AUTO`, `NONE`, `CREDITOR_NAME`, `BOOKING_DATE`, ...).\nVersion 2 of the API stores an ordered fallback chain per field instead; this is the closest fixed\noption for the stored chain, and a chain without an equivalent reads as `AUTO`.","properties":{"payee":{"type":"string","isRequired":true},"description":{"type":"string","isRequired":true},"date":{"type":"string","isRequired":true}},"required":["payee","description","date"],"isRequired":true},"enrichment":{"type":"object","description":"Enrich transaction data with additional information from an external provider","properties":{"enabled":{"type":"string","description":"Whether transaction enrichment is enabled","isRequired":true},"provider":{"type":"string","description":"The provider to use for transaction enrichment.","isRequired":true},"country":{"type":"string","description":"The country where transactions are made. Providing a country significantly improves enrichment accuracy.","isRequired":true}},"required":["enabled","provider","country"],"isRequired":true},"sync_start_date":{"oneOf":[{"type":"string","description":"The date to start syncing transactions from.\nCannot be earlier than the date the connection was authorized minus the connection's `max_historical_days`.\nWill default to today if not set.","example":"2025-01-01","isRequired":true},{"type":"null","description":"The date to start syncing transactions from.\nCannot be earlier than the date the connection was authorized minus the connection's `max_historical_days`.\nWill default to today if not set.","example":"2025-01-01","isRequired":true}],"isRequired":true},"sync_auto":{"type":"string","description":"Whether data should be synced automatically. If set to false, you will need to manually trigger a sync every time you want to refresh data.","isRequired":true},"sync_pending_transactions":{"type":"string","description":"Whether pending transactions should be synced. For some banks, setting this to true can cause duplicate transactions.","isRequired":true},"pending_settlement_matching":{"type":"string","description":"Whether a booked transaction can settle an existing pending transaction when the amount changed.\nCard pre-authorizations (fuel stations, hotels, car rentals) are often authorized with a placeholder amount\nthat changes when the transaction is booked, together with the transaction's identifiers.\nWhen enabled, a booked transaction that matches a pending transaction's counterparty (and card details,\nwhen the bank provides them) within `pending_settlement_max_days` days updates that pending transaction\ninstead of creating a duplicate.\nOnly pending transactions are matched this way; deduplication of booked transactions is unaffected.\nEnabled by default; `null` means the default applies.","isRequired":true},"pending_settlement_max_days":{"type":"string","description":"The maximum number of days between a pending transaction and its booked settlement\nfor `pending_settlement_matching` to link the two. Defaults to 7; `null` means the default applies.","isRequired":true},"fuzzy_counterparty_matching":{"type":"string","description":"Whether a counterparty name the bank re-words when a transaction settles can still match\nthe pending entry it replaces (\"NORWEGIAN.COM\" settling as \"NORWEGIAN.C 3284405123\").\nDescriptors that conflict rather than truncate or extend never match, and only pending\ntransactions are matched this way.\nEnabled by default; `null` means the default applies.","isRequired":true},"fuzzy_counterparty_min_chars":{"type":"string","description":"The minimum number of characters two re-worded counterparty descriptors must align on for\n`fuzzy_counterparty_matching` to treat them as the same party. Defaults to 6; `null` means\nthe default applies.","isRequired":true},"sync_balances":{"type":"string","description":"Whether balances should be synced.","isRequired":true},"sync_frequency_in_minutes":{"type":"string","description":"How often to sync data, in minutes. The permitted minimum is set by the\nsubscriber's plan (`max_sync_frequency_minutes` in the plan's features, see\n`GET /billing/plans`); 30 is only the absolute lower bound any plan could set. This is the CONFIGURED value. The interval actually used may be longer if the\ninstitution has refused requests on its own daily cap, in which case the account\nis demoted to a slower cadence automatically.","isRequired":true},"fields_for_duplicate_filtering":{"oneOf":[{"type":"array","items":{"type":"string"},"description":"An array of Transaction fields to use when filtering duplicate transactions.\nWhen a new transaction is synced, these fields are compared with existing transactions.\nIf the fields are identical, the new transaction is considered a duplicate and will be ignored.\nThis should only be used if you are struggling with duplicate transactions, and know which fields can be used to filter them. For everyone else, omit this field."},{"type":"null","description":"An array of Transaction fields to use when filtering duplicate transactions.\nWhen a new transaction is synced, these fields are compared with existing transactions.\nIf the fields are identical, the new transaction is considered a duplicate and will be ignored.\nThis should only be used if you are struggling with duplicate transactions, and know which fields can be used to filter them. For everyone else, omit this field."}]}},"required":["map_fields","enrichment","sync_start_date","sync_auto","sync_pending_transactions","pending_settlement_matching","pending_settlement_max_days","fuzzy_counterparty_matching","fuzzy_counterparty_min_chars","sync_balances","sync_frequency_in_minutes"],"title":"InstitutionConfigResource","description":"The financial account configuration. If the financial account has no configuration, the banks default configuration will be used."},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"loan":{"oneOf":[{"type":"array","items":{"oneOf":[{}]},"description":"The loan terms, rate history and derived figures. Present on LOAN accounts only."},{"type":"null","description":"The loan terms, rate history and derived figures. Present on LOAN accounts only."}]},"account_number_masked":{"type":"string","description":"Masked account number (e.g. \"****1234\"). Only present when the\nprovider supplies it (SnapTrade brokerages, and banks that report\na masked card PAN via GoCardless); null otherwise."},"bban":{"type":"string","description":"Basic Bank Account Number (BBAN)."},"scan":{"type":"string","description":"UK SortCodeAccountNumber (6 digit sort code + 8 digit account number), reported by some UK banks."},"iban":{"type":"string","description":"International Bank Account Number (IBAN)."},"bic":{"type":"string","description":"Bank Identifier Code (BIC/SWIFT) associated with the account."},"owner_name":{"type":"string","description":"Name of the legal account owner. If there is more than one owner, then e.g. two names might be noted here. For a corporate account, the corporate name is used for this attribute."},"owner_address":{"type":"string","description":"Address of the legal account owner, when reported by the institution."},"linked_accounts":{"type":"string","description":"Name of a cash account associated to pending card transactions, when the institution reports one. Banks often put that account's number here, so it is omitted with the other identifiers."},"msisdn":{"type":"string","description":"An alias to a payment account via a registered mobile phone number."},"integrator_id":{"type":"string","description":"The financial account ID provided by the integrator."},"institution_id":{"type":"string","description":"The financial account ID provided by the institution/bank."},"rules":{"type":"array","description":"The rules attached to this financial account","items":{"type":"object","properties":{"order":{"type":"integer","isRequired":true},"rule":{"type":"object","additionalProperties":{"oneOf":[{}]},"isRequired":true}},"required":["order","rule"]}},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}},"transfer_links_count":{"type":"string","description":"Left out for tokens without the `transfer-links:read` scope."}},"required":["id","enabled","live","integrator","account_category","raw_type","cash_balance","total_balance","meta","name","custom_name","institution_name","display_name","currency","product_name","cash_account_type","account_usage","details","details_last_synced_at","transactions_last_synced_at","transactions_backfill_cursor","balances_last_synced_at","balance","created_at","updated_at"],"title":"FinancialAccountResource","description":"The associated FinancialAccount resource. Will be included in the response if the `include` query parameter contains `financial_account`."},"destination":{"oneOf":[{"type":"object","title":"YnabBudgetAccountResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","budget_id","ynab_id","name","type","on_budget","closed","note","balance","cleared_balance","uncleared_balance","transfer_payee_id","direct_import_linked","last_reconciled_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"budget_id":{"type":"string","isRequired":true},"ynab_id":{"type":"string","description":"The account's ID in YNAB.","isRequired":true},"name":{"type":"string","isRequired":true},"type":{"type":"string","isRequired":true},"on_budget":{"type":"string","description":"Whether the account is on budget in YNAB.","isRequired":true},"closed":{"type":"string","description":"Whether the account is closed in YNAB.","isRequired":true},"note":{"type":"string","description":"The account note from YNAB, if set.","isRequired":true},"balance":{"type":"string","description":"The account balance as reported by YNAB.","isRequired":true},"cleared_balance":{"type":"string","description":"The cleared balance as reported by YNAB.","isRequired":true},"uncleared_balance":{"type":"string","description":"The uncleared balance as reported by YNAB.","isRequired":true},"transfer_payee_id":{"type":"string","description":"The YNAB payee ID used for transfers to this account.","isRequired":true},"direct_import_linked":{"type":"string","description":"Whether the account is linked to YNAB Direct Import.","isRequired":true},"last_reconciled_at":{"type":"string","description":"When the account was last reconciled in YNAB.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"budget":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"ynab_id":{"type":"string","description":"The budget's ID in YNAB.","isRequired":true},"enabled":{"type":"string","description":"Whether syncing to this budget is enabled.","isRequired":true},"name":{"type":"string","isRequired":true},"currency":{"type":"string","description":"The budget's currency in YNAB.","isRequired":true},"first_month":{"type":"string","description":"The budget's first month in YNAB.","isRequired":true},"last_month":{"type":"string","description":"The budget's last month in YNAB.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"sync_balances":{"type":"string","description":"Whether account balances are synced to YNAB.","isRequired":true},"ynab_user_id":{"type":"string","description":"The connected user's ID in YNAB.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with YNAB. Only present when authorization is required."},"budgets":{"type":"array","items":{"$circularRef":"248c304a-3ec9-4df8-af52-e0efd200a978"}}},"required":["id","name","enabled","sync_balances","ynab_user_id","last_synced_at","created_at","updated_at"],"title":"YnabConnectionResource"},"accounts":{"type":"array","items":{"$circularRef":"10a862ec-a219-4aac-b0f2-677b77b5b836"}}},"required":["id","connection_id","ynab_id","enabled","name","currency","first_month","last_month","last_synced_at","created_at","updated_at"],"title":"YnabBudgetResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`."},{"type":"object","title":"GoogleSheetResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","name","spreadsheet_id","spreadsheet_name","spreadsheet_url","is_synci_managed","transactions_sheet_gid","transactions_sheet_name","live_balance_sheet_gid","live_balance_sheet_name","balance_history_sheet_gid","balance_history_sheet_name","last_synced_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"name":{"type":"string","description":"Display name of the spreadsheet in Synci.","isRequired":true},"spreadsheet_id":{"type":"string","description":"The spreadsheet's ID in Google Sheets, as found in its URL.","isRequired":true},"spreadsheet_name":{"type":"string","description":"The spreadsheet's title in Google Sheets.","isRequired":true},"spreadsheet_url":{"type":"string","description":"Link to open the spreadsheet in Google Sheets.","isRequired":true},"is_synci_managed":{"type":"string","description":"True when the spreadsheet was created by Synci; false when an existing spreadsheet was attached.","isRequired":true},"transactions_sheet_gid":{"type":"string","description":"The gid of the tab that receives transactions, if assigned.","isRequired":true},"transactions_sheet_name":{"type":"string","description":"The name of the tab that receives transactions, if assigned.","isRequired":true},"live_balance_sheet_gid":{"type":"string","description":"The gid of the tab that holds current balances, if assigned.","isRequired":true},"live_balance_sheet_name":{"type":"string","description":"The name of the tab that holds current balances, if assigned.","isRequired":true},"balance_history_sheet_gid":{"type":"string","description":"The gid of the tab that records balance history, if assigned.","isRequired":true},"balance_history_sheet_name":{"type":"string","description":"The name of the tab that records balance history, if assigned.","isRequired":true},"last_synced_at":{"type":"string","description":"When data was last synced to the spreadsheet.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"google_email":{"type":"string","description":"Email address of the connected Google account.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with Google. Only present when authorization is required."},"sheets":{"type":"array","items":{"$circularRef":"4855146d-203d-426a-9ae0-10ad2f15b3d1"}}},"required":["id","name","enabled","google_email","last_synced_at","created_at","updated_at"],"title":"GoogleSheetsConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"object","title":"NotionDatabaseResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","name","title","database_id","data_source_id","database_url","parent_page_id","parent_page_title","is_synci_managed","layout","header_config","property_map","accounts_database_id","categories_database_id","months_database_id","balance_history_database_id","balance_available","last_synced_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"name":{"type":"string","description":"Display name of the database in Synci.","isRequired":true},"title":{"type":"string","description":"The database's title in Notion.","isRequired":true},"database_id":{"type":"string","description":"The Notion database ID.","isRequired":true},"data_source_id":{"type":"string","description":"The Notion data source (table) transactions are written to.","isRequired":true},"database_url":{"type":"string","description":"Link to open the database in Notion.","isRequired":true},"parent_page_id":{"type":"string","description":"The Notion page the database lives under, when known, and its title\n(a dashboard's `name` falls back to this).","isRequired":true},"parent_page_title":{"type":"string","isRequired":true},"is_synci_managed":{"type":"string","description":"True when the database was created by Synci; false when an existing database was attached.","isRequired":true},"layout":{"type":"string","description":"\"dashboard\" when the Synci Finance template was adopted (transactions relate to Accounts,\nCategories and Months); \"flat\" for plain databases.","isRequired":true},"header_config":{"type":"string","description":"Ordered list of transaction field keys written as database properties.","isRequired":true},"property_map":{"type":"string","description":"Field key to Notion property id map Synci writes through.","isRequired":true},"accounts_database_id":{"type":"string","description":"The supporting databases next to this one, when present.","isRequired":true},"categories_database_id":{"type":"string","isRequired":true},"months_database_id":{"type":"string","isRequired":true},"balance_history_database_id":{"type":"string","isRequired":true},"balance_available":{"type":"string","description":"Whether balance databases exist or can be provisioned (requires a parent page).","isRequired":true},"last_synced_at":{"type":"string","description":"When data was last synced to the database.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"workspace_id":{"type":"string","description":"The connected Notion workspace.","isRequired":true},"workspace_name":{"type":"string","isRequired":true},"workspace_icon":{"type":"string","description":"Emoji or image URL of the workspace icon, if any.","isRequired":true},"owner_email":{"type":"string","description":"Email of the Notion user who authorized the connection, when shared.","isRequired":true},"duplicated_template_id":{"type":"string","description":"The page Notion created when the user duplicated the Synci template during authorization, if any.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with Notion. Only present when authorization is required."},"databases":{"type":"array","items":{"$circularRef":"1eda84be-8980-45e6-b112-5f3673d06c26"}}},"required":["id","name","enabled","workspace_id","workspace_name","workspace_icon","owner_email","duplicated_template_id","last_synced_at","created_at","updated_at"],"title":"NotionConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"null","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`."}]},"rules":{"type":"array","description":"The rules attached to the transfer link. Will be included in the response if the `include` query parameter contains `rules`.\nEach object includes:\n- order: The position of the rule in the transfer link's rule list. Rules are applied in ascending order.\n- rule: The rule resource data","items":{"type":"object","properties":{"order":{"type":"integer","isRequired":true},"rule":{"type":"object","additionalProperties":{"oneOf":[{}]},"isRequired":true}},"required":["order","rule"]}}},"required":["id","financial_account_id","destination_type","destination_id","transfer_start_date","active","sync_mode","on_booked_change","created_at","updated_at"],"title":"TransferLinkResource"}}},"required":["id","connection_id","lunch_money_id","name","display_name","type","subtype","currency","balance","balance_as_of","closed_on","exclude_from_transactions","created_at","updated_at"],"title":"LunchMoneyAccountResource"},"4855146d-203d-426a-9ae0-10ad2f15b3d1":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"name":{"type":"string","description":"Display name of the spreadsheet in Synci.","isRequired":true},"spreadsheet_id":{"type":"string","description":"The spreadsheet's ID in Google Sheets, as found in its URL.","isRequired":true},"spreadsheet_name":{"type":"string","description":"The spreadsheet's title in Google Sheets.","isRequired":true},"spreadsheet_url":{"type":"string","description":"Link to open the spreadsheet in Google Sheets.","isRequired":true},"is_synci_managed":{"type":"string","description":"True when the spreadsheet was created by Synci; false when an existing spreadsheet was attached.","isRequired":true},"transactions_sheet_gid":{"type":"string","description":"The gid of the tab that receives transactions, if assigned.","isRequired":true},"transactions_sheet_name":{"type":"string","description":"The name of the tab that receives transactions, if assigned.","isRequired":true},"live_balance_sheet_gid":{"type":"string","description":"The gid of the tab that holds current balances, if assigned.","isRequired":true},"live_balance_sheet_name":{"type":"string","description":"The name of the tab that holds current balances, if assigned.","isRequired":true},"balance_history_sheet_gid":{"type":"string","description":"The gid of the tab that records balance history, if assigned.","isRequired":true},"balance_history_sheet_name":{"type":"string","description":"The name of the tab that records balance history, if assigned.","isRequired":true},"last_synced_at":{"type":"string","description":"When data was last synced to the spreadsheet.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"google_email":{"type":"string","description":"Email address of the connected Google account.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with Google. Only present when authorization is required."},"sheets":{"type":"array","items":{"$circularRef":"4855146d-203d-426a-9ae0-10ad2f15b3d1"}}},"required":["id","name","enabled","google_email","last_synced_at","created_at","updated_at"],"title":"GoogleSheetsConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"financial_account_id":{"type":"string","description":"The ID of the financial account transactions are being transferred from.","isRequired":true},"destination_type":{"type":"string","description":"The type of destination the transfer link sends transactions to:\n- **YNAB**: a YNAB budget account.\n- **LUNCH_MONEY**: a Lunch Money account.\n- **GOOGLE_SHEETS**: a Google Sheet.\n- **NOTION**: a Notion database.","isRequired":true},"destination_id":{"type":"string","description":"The ID of the destination transactions are being transferred to. The type of resource the ID refers to depends on the destination type:\n- **YNAB**: the ID of a YNAB budget account.\n- **LUNCH_MONEY**: the ID of a Lunch Money account.\n- **GOOGLE_SHEETS**: the ID of a Google Sheet.\n- **NOTION**: the ID of a Notion database.","isRequired":true},"transfer_start_date":{"type":"string","description":"The date from which the transfer link will start transferring transactions.\nIf not provided, all available transactions in the attached financial account will be transferred regardless of their date.","examples":["2025-01-01"],"isRequired":true},"active":{"type":"string","description":"Whether the transfer link is enabled.","isRequired":true},"sync_mode":{"type":"string","description":"Which streams to push to the destination:\n- `transactions`: only individual transactions (default for bank sources)\n- `balance`: only periodic balance snapshots\n- `transactions_and_balance`: both (default for brokerage / crypto sources)","isRequired":true},"on_booked_change":{"type":"object","description":"Which destination fields to update when a transaction's booked status changes.\nIf not provided, all fields will be updated.","properties":{"update_status":{"type":"string","isRequired":true},"update_payee":{"type":"string","isRequired":true},"update_description":{"type":"string","isRequired":true},"update_amount":{"type":"string","isRequired":true}},"required":["update_status","update_payee","update_description","update_amount"],"isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"financial_account":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"enabled":{"type":"string","isRequired":true},"live":{"type":"string","description":"Whether the account is in use: it AND its connection are enabled. A disabled connection keeps each\naccount's own `enabled` as the user set it, but none of its accounts sync until it is enabled again.","isRequired":true},"integrator":{"type":"string","description":"Provider that populates this account (GOCARDLESS / AKAHU / SNAPTRADE).","isRequired":true},"account_category":{"oneOf":[{"type":"string","description":"High-level kind of account: BANK (checking/savings, provided by\nbanking providers), INVESTMENT (brokerage), DEPOSIT (cash\nsub-account at a broker), LOC (line of credit), LOAN (a manual\nloan Synci models from its terms). Determines which fields are\npopulated on the account.","isRequired":true},{"type":"null","description":"High-level kind of account: BANK (checking/savings, provided by\nbanking providers), INVESTMENT (brokerage), DEPOSIT (cash\nsub-account at a broker), LOC (line of credit), LOAN (a manual\nloan Synci models from its terms). Determines which fields are\npopulated on the account.","isRequired":true}],"isRequired":true},"raw_type":{"type":"string","description":"Provider's free-form sub-type label (SnapTrade only). Examples:\n\"Roth IRA\", \"TFSA\", \"Cash\". Null for bank accounts.","isRequired":true},"cash_balance":{"oneOf":[{"type":"object","description":"Uninvested cash held at the broker, for INVESTMENT accounts.\nNull for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string","isRequired":true},"currency":{"type":"string","isRequired":true}},"isRequired":true},{"type":"null","description":"Uninvested cash held at the broker, for INVESTMENT accounts.\nNull for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"isRequired":true}],"isRequired":true},"total_balance":{"oneOf":[{"type":"object","description":"Broker-reported total account value (positions + cash) for\nINVESTMENT accounts. Brokerages report this on the account\npayload rather than as a dated snapshot, so it does not appear\nin the balances endpoint. Null for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string","isRequired":true},"currency":{"type":"string","isRequired":true}},"isRequired":true},{"type":"null","description":"Broker-reported total account value (positions + cash) for\nINVESTMENT accounts. Brokerages report this on the account\npayload rather than as a dated snapshot, so it does not appear\nin the balances endpoint. Null for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"isRequired":true}],"isRequired":true},"meta":{"type":"string","description":"Provider-specific extras that don't fit anywhere else (e.g.\nSnapTrade's `meta.type`/`meta.status` for crypto exchanges).\nTreat as opaque — schema is provider-defined.","isRequired":true},"name":{"type":"string","description":"Name of the account, as assigned by the financial institution.","isRequired":true},"custom_name":{"type":"string","description":"Custom name for the account, as defined by the end user.","isRequired":true},"institution_name":{"type":"string","description":"The lender's name on a manual account, as the user entered it. Null on provider accounts and on manual\naccounts without one: group those under their connection's institution (\"Manual accounts\").","isRequired":true},"display_name":{"type":"string","description":"Name of the account as defined by the end user within online channels.","isRequired":true},"currency":{"type":"string","description":"ISO 4217 currency code.","isRequired":true},"product_name":{"type":"string","description":"Product Name of the Institution for this account, proprietary definition.","isRequired":true},"cash_account_type":{"type":"string","description":"ExternalCashAccountType1Code from ISO 20022 (e.g. CACC, CARD, SVGS), when reported by the institution.","isRequired":true},"account_usage":{"type":"string","description":"Usage of the account: PRIV (private personal account) or ORGA (professional account).","isRequired":true},"details":{"type":"string","description":"Specifications that might be provided by the financial institution - characteristics of the account - characteristics of the relevant card.","isRequired":true},"details_last_synced_at":{"type":"string","description":"Last time the financial account details were fetched from the integrator.","isRequired":true},"transactions_last_synced_at":{"type":"string","description":"Last time the financial account transactions were fetched from the integrator.","isRequired":true},"transactions_backfill_cursor":{"oneOf":[{"type":"string","description":"History is fetched newest-first in windows of up to 90 days. While older\nwindows are still being fetched this is the earliest date already covered;\ntransactions before it arrive on subsequent syncs, at the pace the\ninstitution's daily request allowance permits. Null once the account's\nfull history (up to the connection's `max_historical_days`) is in.","isRequired":true},{"type":"null","description":"History is fetched newest-first in windows of up to 90 days. While older\nwindows are still being fetched this is the earliest date already covered;\ntransactions before it arrive on subsequent syncs, at the pace the\ninstitution's daily request allowance permits. Null once the account's\nfull history (up to the connection's `max_historical_days`) is in.","isRequired":true}],"isRequired":true},"balances_last_synced_at":{"type":"string","description":"Last time the financial account balances were fetched from the integrator.","isRequired":true},"balance":{"type":"object","description":"Balance of the account at the last sync. To get all types of balances at different dates, use the balances endpoints.","properties":{"currency":{"type":"string","description":"ISO 4217 currency of these figures. Only differs from the\naccount's `currency` on a multi-currency account (`XXX`),\nwhich holds a balance per currency: this is the one shown.","isRequired":true},"available":{"oneOf":[{"type":"string"},{"type":"integer","enum":[0]}]},"cleared":{"oneOf":[{"type":"string"},{"type":"integer","enum":[0]}]}},"required":["currency"],"isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"financial_connection_id":{"type":"string"},"financial_connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"institution_id":{"type":"string","isRequired":true},"region":{"type":"string","description":"Residency region of the connection's data (`eu`, `us`), decided\nby the institution's provider when the connection was created.","isRequired":true},"enabled":{"type":"string","isRequired":true},"status":{"oneOf":[{"type":"string","description":"Provider-neutral lifecycle status (PENDING_AUTHORIZATION / CONNECTED / ...).","isRequired":true},{"type":"null","description":"Provider-neutral lifecycle status (PENDING_AUTHORIZATION / CONNECTED / ...).","isRequired":true}],"isRequired":true},"status_message":{"type":"string","description":"Provider status message.","isRequired":true},"sync_balances":{"type":"string","description":"Whether balances should be synced. Applies to all accounts belonging to this connection.","isRequired":true},"supports_reauthorization":{"type":"boolean","description":"Whether `PUT /reauthorize` will start a fresh OAuth flow against this connection's\nprovider. True for every currently supported provider (GoCardless renews PSD2 consent;\nAkahu and SnapTrade re-grant a previously-disabled connection). When false, the\nreauthorize endpoint responds with `REAUTHORIZATION_NOT_SUPPORTED`.","isRequired":true},"supports_manage":{"type":"boolean","description":"Whether GET /manage will return a URL you can redirect the user to so\nthey can manage their existing connections directly with the provider. Currently\ntrue for Akahu (sends them to oauth.akahu.nz where they can add / revoke banks\nunder their enduring consent), false for GoCardless and SnapTrade.","isRequired":true},"max_historical_days":{"oneOf":[{"type":"string","description":"The maximum number of days of historical data Synci is able to fetch. Applies to all accounts belonging to this connection.","isRequired":true},{"type":"null","description":"The maximum number of days of historical data Synci is able to fetch. Applies to all accounts belonging to this connection.","isRequired":true}],"isRequired":true},"access_valid_for_days":{"oneOf":[{"type":"string","description":"Also known as consent lifetime. The number of days Synci is able to access accounts belonging to this connection.\nE.g. if this is set to 180 days, you will have to re-authenticate the connection every 180 days.\nSynci will send you an email when the expiry date is approaching.","isRequired":true},{"type":"null","description":"Also known as consent lifetime. The number of days Synci is able to access accounts belonging to this connection.\nE.g. if this is set to 180 days, you will have to re-authenticate the connection every 180 days.\nSynci will send you an email when the expiry date is approaching.","isRequired":true}],"isRequired":true},"consent_expires_at":{"oneOf":[{"type":"string","description":"The date and time when the bank consent expires and the connection\nhas to be reauthorized, or null for providers that grant enduring\nconsent (Akahu, SnapTrade).","isRequired":true},{"type":"null","description":"The date and time when the bank consent expires and the connection\nhas to be reauthorized, or null for providers that grant enduring\nconsent (Akahu, SnapTrade).","isRequired":true}],"isRequired":true},"reference":{"type":"string","description":"Caller-supplied correlation id set at creation (e.g. a platform\ndeveloper's own end-user id). Filterable via ?filter[reference]=.","isRequired":true},"accounts_last_synced_at":{"type":"string","isRequired":true},"setup_pending":{"type":"boolean","description":"Whether the post-connection setup (choosing accounts, naming them,\npicking a sync start date) is still to be finished. While true the\naccounts exist but their first transaction sync is held back until\n`POST /setup/complete`, or until the setup goes stale. Always false\nfor connections created by API clients.","isRequired":true},"setup_renewal":{"type":"boolean","description":"True while a pending setup belongs to a consent renewal rather than a new connection: only the\naccount choice is asked for, and the accounts the user had enabled stay pre-selected.","isRequired":true},"activated_at":{"type":"string","description":"When the connection first went live (provider callback succeeded).\nNull while consent is still pending or the flow was abandoned.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"institution":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"integrator":{"type":"string","description":"The integrator used to connect to this institution.","isRequired":true},"region":{"type":"string","description":"Residency region connections to this institution are stored in (`eu`, `us`).","isRequired":true},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","isRequired":true},"name":{"type":"string","description":"Name of the institution.","isRequired":true},"bic":{"type":"string","description":"Institution Identifier Code (BIC/SWIFT code).","isRequired":true},"external_id":{"type":"string","description":"The ID of the institution as provided by the integrator.","isRequired":true},"logo":{"type":"string","description":"URL to the institution's logo, as provided by the integrator.","isRequired":true},"supported":{"type":"string","description":"Whether the institution is supported. Will be true in most cases, but might be false if the integrator stops supporting an institution.","isRequired":true},"supports_pending_transactions":{"type":"string","description":"Whether the institution supports pending transactions.","isRequired":true},"supports_card_accounts":{"type":"string","description":"Whether the institution supports card accounts.","isRequired":true},"max_historical_days":{"type":"string","description":"The maximum number of days of historical data this institution can provide.\n`null` where the provider imposes no such limit and fetches whatever the bank\nholds, which is the case for every US institution. Do not read null as zero.","isRequired":true},"max_access_valid_for_days":{"type":"string","description":"Also known as consent lifetime. The maximum number of days access to this institution may be valid for.\nFor most European institutions this ranges from 90 to 180 days. `null` where access does not\nexpire on a schedule and no periodic re-consent is required, which is the case for every US\ninstitution: those connections break only when the bank breaks them.","isRequired":true},"supported_products":{"type":"string","description":"The kinds of data this institution can serve, e.g. `[\"ACCOUNTS\", \"TRANSACTIONS\", \"INVESTMENTS\"]`.\n`null` means the provider does not report it, NOT that the institution serves nothing: treat it\nas no information rather than as a negative. Only US institutions report it today.","isRequired":true},"category":{"oneOf":[{"type":"string","description":"The category of the financial institution.","isRequired":true},{"type":"null","description":"The category of the financial institution.","isRequired":true}],"isRequired":true},"updated_at":{"type":"string","description":"The date and time when the institution was last updated.","isRequired":true}},"required":["id","integrator","region","country","name","bic","external_id","logo","supported","supports_pending_transactions","supports_card_accounts","max_historical_days","max_access_valid_for_days","supported_products","category","updated_at"],"title":"InstitutionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"financial_accounts":{"type":"array","description":"Financial accounts belonging to this connection.","items":{"$circularRef":"e8a9bf44-5f49-4f46-8f0e-6b0cf3c6185e"}},"financial_accounts_count":{"type":"string"}},"required":["id","institution_id","region","enabled","status","status_message","sync_balances","supports_reauthorization","supports_manage","max_historical_days","access_valid_for_days","consent_expires_at","reference","accounts_last_synced_at","setup_pending","setup_renewal","activated_at","created_at","updated_at"],"title":"FinancialConnectionResource"},"config":{"type":"object","properties":{"map_fields":{"type":"object","description":"Which field(s) are used when mapping the \"payee\", \"description\" and \"date\" fields for a transaction.\nOne of the fixed option names (`AUTO`, `NONE`, `CREDITOR_NAME`, `BOOKING_DATE`, ...).\nVersion 2 of the API stores an ordered fallback chain per field instead; this is the closest fixed\noption for the stored chain, and a chain without an equivalent reads as `AUTO`.","properties":{"payee":{"type":"string","isRequired":true},"description":{"type":"string","isRequired":true},"date":{"type":"string","isRequired":true}},"required":["payee","description","date"],"isRequired":true},"enrichment":{"type":"object","description":"Enrich transaction data with additional information from an external provider","properties":{"enabled":{"type":"string","description":"Whether transaction enrichment is enabled","isRequired":true},"provider":{"type":"string","description":"The provider to use for transaction enrichment.","isRequired":true},"country":{"type":"string","description":"The country where transactions are made. Providing a country significantly improves enrichment accuracy.","isRequired":true}},"required":["enabled","provider","country"],"isRequired":true},"sync_start_date":{"oneOf":[{"type":"string","description":"The date to start syncing transactions from.\nCannot be earlier than the date the connection was authorized minus the connection's `max_historical_days`.\nWill default to today if not set.","example":"2025-01-01","isRequired":true},{"type":"null","description":"The date to start syncing transactions from.\nCannot be earlier than the date the connection was authorized minus the connection's `max_historical_days`.\nWill default to today if not set.","example":"2025-01-01","isRequired":true}],"isRequired":true},"sync_auto":{"type":"string","description":"Whether data should be synced automatically. If set to false, you will need to manually trigger a sync every time you want to refresh data.","isRequired":true},"sync_pending_transactions":{"type":"string","description":"Whether pending transactions should be synced. For some banks, setting this to true can cause duplicate transactions.","isRequired":true},"pending_settlement_matching":{"type":"string","description":"Whether a booked transaction can settle an existing pending transaction when the amount changed.\nCard pre-authorizations (fuel stations, hotels, car rentals) are often authorized with a placeholder amount\nthat changes when the transaction is booked, together with the transaction's identifiers.\nWhen enabled, a booked transaction that matches a pending transaction's counterparty (and card details,\nwhen the bank provides them) within `pending_settlement_max_days` days updates that pending transaction\ninstead of creating a duplicate.\nOnly pending transactions are matched this way; deduplication of booked transactions is unaffected.\nEnabled by default; `null` means the default applies.","isRequired":true},"pending_settlement_max_days":{"type":"string","description":"The maximum number of days between a pending transaction and its booked settlement\nfor `pending_settlement_matching` to link the two. Defaults to 7; `null` means the default applies.","isRequired":true},"fuzzy_counterparty_matching":{"type":"string","description":"Whether a counterparty name the bank re-words when a transaction settles can still match\nthe pending entry it replaces (\"NORWEGIAN.COM\" settling as \"NORWEGIAN.C 3284405123\").\nDescriptors that conflict rather than truncate or extend never match, and only pending\ntransactions are matched this way.\nEnabled by default; `null` means the default applies.","isRequired":true},"fuzzy_counterparty_min_chars":{"type":"string","description":"The minimum number of characters two re-worded counterparty descriptors must align on for\n`fuzzy_counterparty_matching` to treat them as the same party. Defaults to 6; `null` means\nthe default applies.","isRequired":true},"sync_balances":{"type":"string","description":"Whether balances should be synced.","isRequired":true},"sync_frequency_in_minutes":{"type":"string","description":"How often to sync data, in minutes. The permitted minimum is set by the\nsubscriber's plan (`max_sync_frequency_minutes` in the plan's features, see\n`GET /billing/plans`); 30 is only the absolute lower bound any plan could set. This is the CONFIGURED value. The interval actually used may be longer if the\ninstitution has refused requests on its own daily cap, in which case the account\nis demoted to a slower cadence automatically.","isRequired":true},"fields_for_duplicate_filtering":{"oneOf":[{"type":"array","items":{"type":"string"},"description":"An array of Transaction fields to use when filtering duplicate transactions.\nWhen a new transaction is synced, these fields are compared with existing transactions.\nIf the fields are identical, the new transaction is considered a duplicate and will be ignored.\nThis should only be used if you are struggling with duplicate transactions, and know which fields can be used to filter them. For everyone else, omit this field."},{"type":"null","description":"An array of Transaction fields to use when filtering duplicate transactions.\nWhen a new transaction is synced, these fields are compared with existing transactions.\nIf the fields are identical, the new transaction is considered a duplicate and will be ignored.\nThis should only be used if you are struggling with duplicate transactions, and know which fields can be used to filter them. For everyone else, omit this field."}]}},"required":["map_fields","enrichment","sync_start_date","sync_auto","sync_pending_transactions","pending_settlement_matching","pending_settlement_max_days","fuzzy_counterparty_matching","fuzzy_counterparty_min_chars","sync_balances","sync_frequency_in_minutes"],"title":"InstitutionConfigResource","description":"The financial account configuration. If the financial account has no configuration, the banks default configuration will be used."},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"loan":{"oneOf":[{"type":"array","items":{"oneOf":[{}]},"description":"The loan terms, rate history and derived figures. Present on LOAN accounts only."},{"type":"null","description":"The loan terms, rate history and derived figures. Present on LOAN accounts only."}]},"account_number_masked":{"type":"string","description":"Masked account number (e.g. \"****1234\"). Only present when the\nprovider supplies it (SnapTrade brokerages, and banks that report\na masked card PAN via GoCardless); null otherwise."},"bban":{"type":"string","description":"Basic Bank Account Number (BBAN)."},"scan":{"type":"string","description":"UK SortCodeAccountNumber (6 digit sort code + 8 digit account number), reported by some UK banks."},"iban":{"type":"string","description":"International Bank Account Number (IBAN)."},"bic":{"type":"string","description":"Bank Identifier Code (BIC/SWIFT) associated with the account."},"owner_name":{"type":"string","description":"Name of the legal account owner. If there is more than one owner, then e.g. two names might be noted here. For a corporate account, the corporate name is used for this attribute."},"owner_address":{"type":"string","description":"Address of the legal account owner, when reported by the institution."},"linked_accounts":{"type":"string","description":"Name of a cash account associated to pending card transactions, when the institution reports one. Banks often put that account's number here, so it is omitted with the other identifiers."},"msisdn":{"type":"string","description":"An alias to a payment account via a registered mobile phone number."},"integrator_id":{"type":"string","description":"The financial account ID provided by the integrator."},"institution_id":{"type":"string","description":"The financial account ID provided by the institution/bank."},"rules":{"type":"array","description":"The rules attached to this financial account","items":{"type":"object","properties":{"order":{"type":"integer","isRequired":true},"rule":{"type":"object","additionalProperties":{"oneOf":[{}]},"isRequired":true}},"required":["order","rule"]}},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}},"transfer_links_count":{"type":"string","description":"Left out for tokens without the `transfer-links:read` scope."}},"required":["id","enabled","live","integrator","account_category","raw_type","cash_balance","total_balance","meta","name","custom_name","institution_name","display_name","currency","product_name","cash_account_type","account_usage","details","details_last_synced_at","transactions_last_synced_at","transactions_backfill_cursor","balances_last_synced_at","balance","created_at","updated_at"],"title":"FinancialAccountResource","description":"The associated FinancialAccount resource. Will be included in the response if the `include` query parameter contains `financial_account`."},"destination":{"oneOf":[{"type":"object","title":"YnabBudgetAccountResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","budget_id","ynab_id","name","type","on_budget","closed","note","balance","cleared_balance","uncleared_balance","transfer_payee_id","direct_import_linked","last_reconciled_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"budget_id":{"type":"string","isRequired":true},"ynab_id":{"type":"string","description":"The account's ID in YNAB.","isRequired":true},"name":{"type":"string","isRequired":true},"type":{"type":"string","isRequired":true},"on_budget":{"type":"string","description":"Whether the account is on budget in YNAB.","isRequired":true},"closed":{"type":"string","description":"Whether the account is closed in YNAB.","isRequired":true},"note":{"type":"string","description":"The account note from YNAB, if set.","isRequired":true},"balance":{"type":"string","description":"The account balance as reported by YNAB.","isRequired":true},"cleared_balance":{"type":"string","description":"The cleared balance as reported by YNAB.","isRequired":true},"uncleared_balance":{"type":"string","description":"The uncleared balance as reported by YNAB.","isRequired":true},"transfer_payee_id":{"type":"string","description":"The YNAB payee ID used for transfers to this account.","isRequired":true},"direct_import_linked":{"type":"string","description":"Whether the account is linked to YNAB Direct Import.","isRequired":true},"last_reconciled_at":{"type":"string","description":"When the account was last reconciled in YNAB.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"budget":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"ynab_id":{"type":"string","description":"The budget's ID in YNAB.","isRequired":true},"enabled":{"type":"string","description":"Whether syncing to this budget is enabled.","isRequired":true},"name":{"type":"string","isRequired":true},"currency":{"type":"string","description":"The budget's currency in YNAB.","isRequired":true},"first_month":{"type":"string","description":"The budget's first month in YNAB.","isRequired":true},"last_month":{"type":"string","description":"The budget's last month in YNAB.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"sync_balances":{"type":"string","description":"Whether account balances are synced to YNAB.","isRequired":true},"ynab_user_id":{"type":"string","description":"The connected user's ID in YNAB.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with YNAB. Only present when authorization is required."},"budgets":{"type":"array","items":{"$circularRef":"248c304a-3ec9-4df8-af52-e0efd200a978"}}},"required":["id","name","enabled","sync_balances","ynab_user_id","last_synced_at","created_at","updated_at"],"title":"YnabConnectionResource"},"accounts":{"type":"array","items":{"$circularRef":"10a862ec-a219-4aac-b0f2-677b77b5b836"}}},"required":["id","connection_id","ynab_id","enabled","name","currency","first_month","last_month","last_synced_at","created_at","updated_at"],"title":"YnabBudgetResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"object","title":"LunchMoneyAccountResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","lunch_money_id","name","display_name","type","subtype","currency","balance","balance_as_of","closed_on","exclude_from_transactions","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"lunch_money_id":{"type":"string","description":"The account's ID in Lunch Money.","isRequired":true},"name":{"type":"string","isRequired":true},"display_name":{"type":"string","description":"The account's display name in Lunch Money, if set.","isRequired":true},"type":{"type":"string","description":"The account type as reported by Lunch Money, e.g. \"cash\" or \"credit\".","isRequired":true},"subtype":{"type":"string","description":"The account subtype as reported by Lunch Money, if set.","isRequired":true},"currency":{"type":"string","isRequired":true},"balance":{"type":"string","description":"The account balance as reported by Lunch Money.","isRequired":true},"balance_as_of":{"type":"string","description":"When the balance was last updated in Lunch Money.","isRequired":true},"closed_on":{"type":"string","description":"When the account was closed in Lunch Money, if closed.","isRequired":true},"exclude_from_transactions":{"type":"string","description":"Whether the account is excluded from transactions in Lunch Money.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","description":"The name of the connected Lunch Money budget.","isRequired":true},"lunch_money_details":{"type":"object","description":"Details about the connected Lunch Money account.","properties":{"user_name":{"type":"string","description":"Name of the Lunch Money user.","isRequired":true},"user_email":{"type":"string","description":"Email address of the Lunch Money user.","isRequired":true},"user_id":{"type":"string","description":"The user's ID in Lunch Money.","isRequired":true},"bank_account_id":{"type":"string","description":"The connected account's ID in Lunch Money.","isRequired":true},"budget_name":{"type":"string","description":"Name of the connected Lunch Money budget.","isRequired":true},"primary_currency":{"type":"string","description":"The budget's primary currency in Lunch Money.","isRequired":true},"api_key_label":{"type":"string","description":"Label of the Lunch Money API token used by this connection, if set.","isRequired":true}},"required":["user_name","user_email","user_id","bank_account_id","budget_name","primary_currency","api_key_label"],"isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"sync_balances":{"type":"string","description":"Whether account balances are synced to Lunch Money.","isRequired":true},"sync_transactions":{"type":"string","description":"Whether transactions are synced to Lunch Money.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"accounts":{"type":"array","items":{"$circularRef":"4b474cf8-3b5a-4e7d-9d9a-257a073ea9dd"}}},"required":["id","name","lunch_money_details","enabled","sync_balances","sync_transactions","last_synced_at","created_at","updated_at"],"title":"LunchMoneyConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`."},{"type":"object","title":"NotionDatabaseResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","name","title","database_id","data_source_id","database_url","parent_page_id","parent_page_title","is_synci_managed","layout","header_config","property_map","accounts_database_id","categories_database_id","months_database_id","balance_history_database_id","balance_available","last_synced_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"name":{"type":"string","description":"Display name of the database in Synci.","isRequired":true},"title":{"type":"string","description":"The database's title in Notion.","isRequired":true},"database_id":{"type":"string","description":"The Notion database ID.","isRequired":true},"data_source_id":{"type":"string","description":"The Notion data source (table) transactions are written to.","isRequired":true},"database_url":{"type":"string","description":"Link to open the database in Notion.","isRequired":true},"parent_page_id":{"type":"string","description":"The Notion page the database lives under, when known, and its title\n(a dashboard's `name` falls back to this).","isRequired":true},"parent_page_title":{"type":"string","isRequired":true},"is_synci_managed":{"type":"string","description":"True when the database was created by Synci; false when an existing database was attached.","isRequired":true},"layout":{"type":"string","description":"\"dashboard\" when the Synci Finance template was adopted (transactions relate to Accounts,\nCategories and Months); \"flat\" for plain databases.","isRequired":true},"header_config":{"type":"string","description":"Ordered list of transaction field keys written as database properties.","isRequired":true},"property_map":{"type":"string","description":"Field key to Notion property id map Synci writes through.","isRequired":true},"accounts_database_id":{"type":"string","description":"The supporting databases next to this one, when present.","isRequired":true},"categories_database_id":{"type":"string","isRequired":true},"months_database_id":{"type":"string","isRequired":true},"balance_history_database_id":{"type":"string","isRequired":true},"balance_available":{"type":"string","description":"Whether balance databases exist or can be provisioned (requires a parent page).","isRequired":true},"last_synced_at":{"type":"string","description":"When data was last synced to the database.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"workspace_id":{"type":"string","description":"The connected Notion workspace.","isRequired":true},"workspace_name":{"type":"string","isRequired":true},"workspace_icon":{"type":"string","description":"Emoji or image URL of the workspace icon, if any.","isRequired":true},"owner_email":{"type":"string","description":"Email of the Notion user who authorized the connection, when shared.","isRequired":true},"duplicated_template_id":{"type":"string","description":"The page Notion created when the user duplicated the Synci template during authorization, if any.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with Notion. Only present when authorization is required."},"databases":{"type":"array","items":{"$circularRef":"1eda84be-8980-45e6-b112-5f3673d06c26"}}},"required":["id","name","enabled","workspace_id","workspace_name","workspace_icon","owner_email","duplicated_template_id","last_synced_at","created_at","updated_at"],"title":"NotionConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"null","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`."}]},"rules":{"type":"array","description":"The rules attached to the transfer link. Will be included in the response if the `include` query parameter contains `rules`.\nEach object includes:\n- order: The position of the rule in the transfer link's rule list. Rules are applied in ascending order.\n- rule: The rule resource data","items":{"type":"object","properties":{"order":{"type":"integer","isRequired":true},"rule":{"type":"object","additionalProperties":{"oneOf":[{}]},"isRequired":true}},"required":["order","rule"]}}},"required":["id","financial_account_id","destination_type","destination_id","transfer_start_date","active","sync_mode","on_booked_change","created_at","updated_at"],"title":"TransferLinkResource"}}},"required":["id","connection_id","name","spreadsheet_id","spreadsheet_name","spreadsheet_url","is_synci_managed","transactions_sheet_gid","transactions_sheet_name","live_balance_sheet_gid","live_balance_sheet_name","balance_history_sheet_gid","balance_history_sheet_name","last_synced_at","created_at","updated_at"],"title":"GoogleSheetResource"},"1eda84be-8980-45e6-b112-5f3673d06c26":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"name":{"type":"string","description":"Display name of the database in Synci.","isRequired":true},"title":{"type":"string","description":"The database's title in Notion.","isRequired":true},"database_id":{"type":"string","description":"The Notion database ID.","isRequired":true},"data_source_id":{"type":"string","description":"The Notion data source (table) transactions are written to.","isRequired":true},"database_url":{"type":"string","description":"Link to open the database in Notion.","isRequired":true},"parent_page_id":{"type":"string","description":"The Notion page the database lives under, when known, and its title\n(a dashboard's `name` falls back to this).","isRequired":true},"parent_page_title":{"type":"string","isRequired":true},"is_synci_managed":{"type":"string","description":"True when the database was created by Synci; false when an existing database was attached.","isRequired":true},"layout":{"type":"string","description":"\"dashboard\" when the Synci Finance template was adopted (transactions relate to Accounts,\nCategories and Months); \"flat\" for plain databases.","isRequired":true},"header_config":{"type":"string","description":"Ordered list of transaction field keys written as database properties.","isRequired":true},"property_map":{"type":"string","description":"Field key to Notion property id map Synci writes through.","isRequired":true},"accounts_database_id":{"type":"string","description":"The supporting databases next to this one, when present.","isRequired":true},"categories_database_id":{"type":"string","isRequired":true},"months_database_id":{"type":"string","isRequired":true},"balance_history_database_id":{"type":"string","isRequired":true},"balance_available":{"type":"string","description":"Whether balance databases exist or can be provisioned (requires a parent page).","isRequired":true},"last_synced_at":{"type":"string","description":"When data was last synced to the database.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"workspace_id":{"type":"string","description":"The connected Notion workspace.","isRequired":true},"workspace_name":{"type":"string","isRequired":true},"workspace_icon":{"type":"string","description":"Emoji or image URL of the workspace icon, if any.","isRequired":true},"owner_email":{"type":"string","description":"Email of the Notion user who authorized the connection, when shared.","isRequired":true},"duplicated_template_id":{"type":"string","description":"The page Notion created when the user duplicated the Synci template during authorization, if any.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with Notion. Only present when authorization is required."},"databases":{"type":"array","items":{"$circularRef":"1eda84be-8980-45e6-b112-5f3673d06c26"}}},"required":["id","name","enabled","workspace_id","workspace_name","workspace_icon","owner_email","duplicated_template_id","last_synced_at","created_at","updated_at"],"title":"NotionConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"financial_account_id":{"type":"string","description":"The ID of the financial account transactions are being transferred from.","isRequired":true},"destination_type":{"type":"string","description":"The type of destination the transfer link sends transactions to:\n- **YNAB**: a YNAB budget account.\n- **LUNCH_MONEY**: a Lunch Money account.\n- **GOOGLE_SHEETS**: a Google Sheet.\n- **NOTION**: a Notion database.","isRequired":true},"destination_id":{"type":"string","description":"The ID of the destination transactions are being transferred to. The type of resource the ID refers to depends on the destination type:\n- **YNAB**: the ID of a YNAB budget account.\n- **LUNCH_MONEY**: the ID of a Lunch Money account.\n- **GOOGLE_SHEETS**: the ID of a Google Sheet.\n- **NOTION**: the ID of a Notion database.","isRequired":true},"transfer_start_date":{"type":"string","description":"The date from which the transfer link will start transferring transactions.\nIf not provided, all available transactions in the attached financial account will be transferred regardless of their date.","examples":["2025-01-01"],"isRequired":true},"active":{"type":"string","description":"Whether the transfer link is enabled.","isRequired":true},"sync_mode":{"type":"string","description":"Which streams to push to the destination:\n- `transactions`: only individual transactions (default for bank sources)\n- `balance`: only periodic balance snapshots\n- `transactions_and_balance`: both (default for brokerage / crypto sources)","isRequired":true},"on_booked_change":{"type":"object","description":"Which destination fields to update when a transaction's booked status changes.\nIf not provided, all fields will be updated.","properties":{"update_status":{"type":"string","isRequired":true},"update_payee":{"type":"string","isRequired":true},"update_description":{"type":"string","isRequired":true},"update_amount":{"type":"string","isRequired":true}},"required":["update_status","update_payee","update_description","update_amount"],"isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"financial_account":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"enabled":{"type":"string","isRequired":true},"live":{"type":"string","description":"Whether the account is in use: it AND its connection are enabled. A disabled connection keeps each\naccount's own `enabled` as the user set it, but none of its accounts sync until it is enabled again.","isRequired":true},"integrator":{"type":"string","description":"Provider that populates this account (GOCARDLESS / AKAHU / SNAPTRADE).","isRequired":true},"account_category":{"oneOf":[{"type":"string","description":"High-level kind of account: BANK (checking/savings, provided by\nbanking providers), INVESTMENT (brokerage), DEPOSIT (cash\nsub-account at a broker), LOC (line of credit), LOAN (a manual\nloan Synci models from its terms). Determines which fields are\npopulated on the account.","isRequired":true},{"type":"null","description":"High-level kind of account: BANK (checking/savings, provided by\nbanking providers), INVESTMENT (brokerage), DEPOSIT (cash\nsub-account at a broker), LOC (line of credit), LOAN (a manual\nloan Synci models from its terms). Determines which fields are\npopulated on the account.","isRequired":true}],"isRequired":true},"raw_type":{"type":"string","description":"Provider's free-form sub-type label (SnapTrade only). Examples:\n\"Roth IRA\", \"TFSA\", \"Cash\". Null for bank accounts.","isRequired":true},"cash_balance":{"oneOf":[{"type":"object","description":"Uninvested cash held at the broker, for INVESTMENT accounts.\nNull for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string","isRequired":true},"currency":{"type":"string","isRequired":true}},"isRequired":true},{"type":"null","description":"Uninvested cash held at the broker, for INVESTMENT accounts.\nNull for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"isRequired":true}],"isRequired":true},"total_balance":{"oneOf":[{"type":"object","description":"Broker-reported total account value (positions + cash) for\nINVESTMENT accounts. Brokerages report this on the account\npayload rather than as a dated snapshot, so it does not appear\nin the balances endpoint. Null for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string","isRequired":true},"currency":{"type":"string","isRequired":true}},"isRequired":true},{"type":"null","description":"Broker-reported total account value (positions + cash) for\nINVESTMENT accounts. Brokerages report this on the account\npayload rather than as a dated snapshot, so it does not appear\nin the balances endpoint. Null for bank accounts.","required":["amount","currency"],"properties":{"amount":{"type":"string"},"currency":{"type":"string"}},"isRequired":true}],"isRequired":true},"meta":{"type":"string","description":"Provider-specific extras that don't fit anywhere else (e.g.\nSnapTrade's `meta.type`/`meta.status` for crypto exchanges).\nTreat as opaque — schema is provider-defined.","isRequired":true},"name":{"type":"string","description":"Name of the account, as assigned by the financial institution.","isRequired":true},"custom_name":{"type":"string","description":"Custom name for the account, as defined by the end user.","isRequired":true},"institution_name":{"type":"string","description":"The lender's name on a manual account, as the user entered it. Null on provider accounts and on manual\naccounts without one: group those under their connection's institution (\"Manual accounts\").","isRequired":true},"display_name":{"type":"string","description":"Name of the account as defined by the end user within online channels.","isRequired":true},"currency":{"type":"string","description":"ISO 4217 currency code.","isRequired":true},"product_name":{"type":"string","description":"Product Name of the Institution for this account, proprietary definition.","isRequired":true},"cash_account_type":{"type":"string","description":"ExternalCashAccountType1Code from ISO 20022 (e.g. CACC, CARD, SVGS), when reported by the institution.","isRequired":true},"account_usage":{"type":"string","description":"Usage of the account: PRIV (private personal account) or ORGA (professional account).","isRequired":true},"details":{"type":"string","description":"Specifications that might be provided by the financial institution - characteristics of the account - characteristics of the relevant card.","isRequired":true},"details_last_synced_at":{"type":"string","description":"Last time the financial account details were fetched from the integrator.","isRequired":true},"transactions_last_synced_at":{"type":"string","description":"Last time the financial account transactions were fetched from the integrator.","isRequired":true},"transactions_backfill_cursor":{"oneOf":[{"type":"string","description":"History is fetched newest-first in windows of up to 90 days. While older\nwindows are still being fetched this is the earliest date already covered;\ntransactions before it arrive on subsequent syncs, at the pace the\ninstitution's daily request allowance permits. Null once the account's\nfull history (up to the connection's `max_historical_days`) is in.","isRequired":true},{"type":"null","description":"History is fetched newest-first in windows of up to 90 days. While older\nwindows are still being fetched this is the earliest date already covered;\ntransactions before it arrive on subsequent syncs, at the pace the\ninstitution's daily request allowance permits. Null once the account's\nfull history (up to the connection's `max_historical_days`) is in.","isRequired":true}],"isRequired":true},"balances_last_synced_at":{"type":"string","description":"Last time the financial account balances were fetched from the integrator.","isRequired":true},"balance":{"type":"object","description":"Balance of the account at the last sync. To get all types of balances at different dates, use the balances endpoints.","properties":{"currency":{"type":"string","description":"ISO 4217 currency of these figures. Only differs from the\naccount's `currency` on a multi-currency account (`XXX`),\nwhich holds a balance per currency: this is the one shown.","isRequired":true},"available":{"oneOf":[{"type":"string"},{"type":"integer","enum":[0]}]},"cleared":{"oneOf":[{"type":"string"},{"type":"integer","enum":[0]}]}},"required":["currency"],"isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"financial_connection_id":{"type":"string"},"financial_connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"institution_id":{"type":"string","isRequired":true},"region":{"type":"string","description":"Residency region of the connection's data (`eu`, `us`), decided\nby the institution's provider when the connection was created.","isRequired":true},"enabled":{"type":"string","isRequired":true},"status":{"oneOf":[{"type":"string","description":"Provider-neutral lifecycle status (PENDING_AUTHORIZATION / CONNECTED / ...).","isRequired":true},{"type":"null","description":"Provider-neutral lifecycle status (PENDING_AUTHORIZATION / CONNECTED / ...).","isRequired":true}],"isRequired":true},"status_message":{"type":"string","description":"Provider status message.","isRequired":true},"sync_balances":{"type":"string","description":"Whether balances should be synced. Applies to all accounts belonging to this connection.","isRequired":true},"supports_reauthorization":{"type":"boolean","description":"Whether `PUT /reauthorize` will start a fresh OAuth flow against this connection's\nprovider. True for every currently supported provider (GoCardless renews PSD2 consent;\nAkahu and SnapTrade re-grant a previously-disabled connection). When false, the\nreauthorize endpoint responds with `REAUTHORIZATION_NOT_SUPPORTED`.","isRequired":true},"supports_manage":{"type":"boolean","description":"Whether GET /manage will return a URL you can redirect the user to so\nthey can manage their existing connections directly with the provider. Currently\ntrue for Akahu (sends them to oauth.akahu.nz where they can add / revoke banks\nunder their enduring consent), false for GoCardless and SnapTrade.","isRequired":true},"max_historical_days":{"oneOf":[{"type":"string","description":"The maximum number of days of historical data Synci is able to fetch. Applies to all accounts belonging to this connection.","isRequired":true},{"type":"null","description":"The maximum number of days of historical data Synci is able to fetch. Applies to all accounts belonging to this connection.","isRequired":true}],"isRequired":true},"access_valid_for_days":{"oneOf":[{"type":"string","description":"Also known as consent lifetime. The number of days Synci is able to access accounts belonging to this connection.\nE.g. if this is set to 180 days, you will have to re-authenticate the connection every 180 days.\nSynci will send you an email when the expiry date is approaching.","isRequired":true},{"type":"null","description":"Also known as consent lifetime. The number of days Synci is able to access accounts belonging to this connection.\nE.g. if this is set to 180 days, you will have to re-authenticate the connection every 180 days.\nSynci will send you an email when the expiry date is approaching.","isRequired":true}],"isRequired":true},"consent_expires_at":{"oneOf":[{"type":"string","description":"The date and time when the bank consent expires and the connection\nhas to be reauthorized, or null for providers that grant enduring\nconsent (Akahu, SnapTrade).","isRequired":true},{"type":"null","description":"The date and time when the bank consent expires and the connection\nhas to be reauthorized, or null for providers that grant enduring\nconsent (Akahu, SnapTrade).","isRequired":true}],"isRequired":true},"reference":{"type":"string","description":"Caller-supplied correlation id set at creation (e.g. a platform\ndeveloper's own end-user id). Filterable via ?filter[reference]=.","isRequired":true},"accounts_last_synced_at":{"type":"string","isRequired":true},"setup_pending":{"type":"boolean","description":"Whether the post-connection setup (choosing accounts, naming them,\npicking a sync start date) is still to be finished. While true the\naccounts exist but their first transaction sync is held back until\n`POST /setup/complete`, or until the setup goes stale. Always false\nfor connections created by API clients.","isRequired":true},"setup_renewal":{"type":"boolean","description":"True while a pending setup belongs to a consent renewal rather than a new connection: only the\naccount choice is asked for, and the accounts the user had enabled stay pre-selected.","isRequired":true},"activated_at":{"type":"string","description":"When the connection first went live (provider callback succeeded).\nNull while consent is still pending or the flow was abandoned.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"institution":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"integrator":{"type":"string","description":"The integrator used to connect to this institution.","isRequired":true},"region":{"type":"string","description":"Residency region connections to this institution are stored in (`eu`, `us`).","isRequired":true},"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code.","isRequired":true},"name":{"type":"string","description":"Name of the institution.","isRequired":true},"bic":{"type":"string","description":"Institution Identifier Code (BIC/SWIFT code).","isRequired":true},"external_id":{"type":"string","description":"The ID of the institution as provided by the integrator.","isRequired":true},"logo":{"type":"string","description":"URL to the institution's logo, as provided by the integrator.","isRequired":true},"supported":{"type":"string","description":"Whether the institution is supported. Will be true in most cases, but might be false if the integrator stops supporting an institution.","isRequired":true},"supports_pending_transactions":{"type":"string","description":"Whether the institution supports pending transactions.","isRequired":true},"supports_card_accounts":{"type":"string","description":"Whether the institution supports card accounts.","isRequired":true},"max_historical_days":{"type":"string","description":"The maximum number of days of historical data this institution can provide.\n`null` where the provider imposes no such limit and fetches whatever the bank\nholds, which is the case for every US institution. Do not read null as zero.","isRequired":true},"max_access_valid_for_days":{"type":"string","description":"Also known as consent lifetime. The maximum number of days access to this institution may be valid for.\nFor most European institutions this ranges from 90 to 180 days. `null` where access does not\nexpire on a schedule and no periodic re-consent is required, which is the case for every US\ninstitution: those connections break only when the bank breaks them.","isRequired":true},"supported_products":{"type":"string","description":"The kinds of data this institution can serve, e.g. `[\"ACCOUNTS\", \"TRANSACTIONS\", \"INVESTMENTS\"]`.\n`null` means the provider does not report it, NOT that the institution serves nothing: treat it\nas no information rather than as a negative. Only US institutions report it today.","isRequired":true},"category":{"oneOf":[{"type":"string","description":"The category of the financial institution.","isRequired":true},{"type":"null","description":"The category of the financial institution.","isRequired":true}],"isRequired":true},"updated_at":{"type":"string","description":"The date and time when the institution was last updated.","isRequired":true}},"required":["id","integrator","region","country","name","bic","external_id","logo","supported","supports_pending_transactions","supports_card_accounts","max_historical_days","max_access_valid_for_days","supported_products","category","updated_at"],"title":"InstitutionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"financial_accounts":{"type":"array","description":"Financial accounts belonging to this connection.","items":{"$circularRef":"e8a9bf44-5f49-4f46-8f0e-6b0cf3c6185e"}},"financial_accounts_count":{"type":"string"}},"required":["id","institution_id","region","enabled","status","status_message","sync_balances","supports_reauthorization","supports_manage","max_historical_days","access_valid_for_days","consent_expires_at","reference","accounts_last_synced_at","setup_pending","setup_renewal","activated_at","created_at","updated_at"],"title":"FinancialConnectionResource"},"config":{"type":"object","properties":{"map_fields":{"type":"object","description":"Which field(s) are used when mapping the \"payee\", \"description\" and \"date\" fields for a transaction.\nOne of the fixed option names (`AUTO`, `NONE`, `CREDITOR_NAME`, `BOOKING_DATE`, ...).\nVersion 2 of the API stores an ordered fallback chain per field instead; this is the closest fixed\noption for the stored chain, and a chain without an equivalent reads as `AUTO`.","properties":{"payee":{"type":"string","isRequired":true},"description":{"type":"string","isRequired":true},"date":{"type":"string","isRequired":true}},"required":["payee","description","date"],"isRequired":true},"enrichment":{"type":"object","description":"Enrich transaction data with additional information from an external provider","properties":{"enabled":{"type":"string","description":"Whether transaction enrichment is enabled","isRequired":true},"provider":{"type":"string","description":"The provider to use for transaction enrichment.","isRequired":true},"country":{"type":"string","description":"The country where transactions are made. Providing a country significantly improves enrichment accuracy.","isRequired":true}},"required":["enabled","provider","country"],"isRequired":true},"sync_start_date":{"oneOf":[{"type":"string","description":"The date to start syncing transactions from.\nCannot be earlier than the date the connection was authorized minus the connection's `max_historical_days`.\nWill default to today if not set.","example":"2025-01-01","isRequired":true},{"type":"null","description":"The date to start syncing transactions from.\nCannot be earlier than the date the connection was authorized minus the connection's `max_historical_days`.\nWill default to today if not set.","example":"2025-01-01","isRequired":true}],"isRequired":true},"sync_auto":{"type":"string","description":"Whether data should be synced automatically. If set to false, you will need to manually trigger a sync every time you want to refresh data.","isRequired":true},"sync_pending_transactions":{"type":"string","description":"Whether pending transactions should be synced. For some banks, setting this to true can cause duplicate transactions.","isRequired":true},"pending_settlement_matching":{"type":"string","description":"Whether a booked transaction can settle an existing pending transaction when the amount changed.\nCard pre-authorizations (fuel stations, hotels, car rentals) are often authorized with a placeholder amount\nthat changes when the transaction is booked, together with the transaction's identifiers.\nWhen enabled, a booked transaction that matches a pending transaction's counterparty (and card details,\nwhen the bank provides them) within `pending_settlement_max_days` days updates that pending transaction\ninstead of creating a duplicate.\nOnly pending transactions are matched this way; deduplication of booked transactions is unaffected.\nEnabled by default; `null` means the default applies.","isRequired":true},"pending_settlement_max_days":{"type":"string","description":"The maximum number of days between a pending transaction and its booked settlement\nfor `pending_settlement_matching` to link the two. Defaults to 7; `null` means the default applies.","isRequired":true},"fuzzy_counterparty_matching":{"type":"string","description":"Whether a counterparty name the bank re-words when a transaction settles can still match\nthe pending entry it replaces (\"NORWEGIAN.COM\" settling as \"NORWEGIAN.C 3284405123\").\nDescriptors that conflict rather than truncate or extend never match, and only pending\ntransactions are matched this way.\nEnabled by default; `null` means the default applies.","isRequired":true},"fuzzy_counterparty_min_chars":{"type":"string","description":"The minimum number of characters two re-worded counterparty descriptors must align on for\n`fuzzy_counterparty_matching` to treat them as the same party. Defaults to 6; `null` means\nthe default applies.","isRequired":true},"sync_balances":{"type":"string","description":"Whether balances should be synced.","isRequired":true},"sync_frequency_in_minutes":{"type":"string","description":"How often to sync data, in minutes. The permitted minimum is set by the\nsubscriber's plan (`max_sync_frequency_minutes` in the plan's features, see\n`GET /billing/plans`); 30 is only the absolute lower bound any plan could set. This is the CONFIGURED value. The interval actually used may be longer if the\ninstitution has refused requests on its own daily cap, in which case the account\nis demoted to a slower cadence automatically.","isRequired":true},"fields_for_duplicate_filtering":{"oneOf":[{"type":"array","items":{"type":"string"},"description":"An array of Transaction fields to use when filtering duplicate transactions.\nWhen a new transaction is synced, these fields are compared with existing transactions.\nIf the fields are identical, the new transaction is considered a duplicate and will be ignored.\nThis should only be used if you are struggling with duplicate transactions, and know which fields can be used to filter them. For everyone else, omit this field."},{"type":"null","description":"An array of Transaction fields to use when filtering duplicate transactions.\nWhen a new transaction is synced, these fields are compared with existing transactions.\nIf the fields are identical, the new transaction is considered a duplicate and will be ignored.\nThis should only be used if you are struggling with duplicate transactions, and know which fields can be used to filter them. For everyone else, omit this field."}]}},"required":["map_fields","enrichment","sync_start_date","sync_auto","sync_pending_transactions","pending_settlement_matching","pending_settlement_max_days","fuzzy_counterparty_matching","fuzzy_counterparty_min_chars","sync_balances","sync_frequency_in_minutes"],"title":"InstitutionConfigResource","description":"The financial account configuration. If the financial account has no configuration, the banks default configuration will be used."},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"loan":{"oneOf":[{"type":"array","items":{"oneOf":[{}]},"description":"The loan terms, rate history and derived figures. Present on LOAN accounts only."},{"type":"null","description":"The loan terms, rate history and derived figures. Present on LOAN accounts only."}]},"account_number_masked":{"type":"string","description":"Masked account number (e.g. \"****1234\"). Only present when the\nprovider supplies it (SnapTrade brokerages, and banks that report\na masked card PAN via GoCardless); null otherwise."},"bban":{"type":"string","description":"Basic Bank Account Number (BBAN)."},"scan":{"type":"string","description":"UK SortCodeAccountNumber (6 digit sort code + 8 digit account number), reported by some UK banks."},"iban":{"type":"string","description":"International Bank Account Number (IBAN)."},"bic":{"type":"string","description":"Bank Identifier Code (BIC/SWIFT) associated with the account."},"owner_name":{"type":"string","description":"Name of the legal account owner. If there is more than one owner, then e.g. two names might be noted here. For a corporate account, the corporate name is used for this attribute."},"owner_address":{"type":"string","description":"Address of the legal account owner, when reported by the institution."},"linked_accounts":{"type":"string","description":"Name of a cash account associated to pending card transactions, when the institution reports one. Banks often put that account's number here, so it is omitted with the other identifiers."},"msisdn":{"type":"string","description":"An alias to a payment account via a registered mobile phone number."},"integrator_id":{"type":"string","description":"The financial account ID provided by the integrator."},"institution_id":{"type":"string","description":"The financial account ID provided by the institution/bank."},"rules":{"type":"array","description":"The rules attached to this financial account","items":{"type":"object","properties":{"order":{"type":"integer","isRequired":true},"rule":{"type":"object","additionalProperties":{"oneOf":[{}]},"isRequired":true}},"required":["order","rule"]}},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}},"transfer_links_count":{"type":"string","description":"Left out for tokens without the `transfer-links:read` scope."}},"required":["id","enabled","live","integrator","account_category","raw_type","cash_balance","total_balance","meta","name","custom_name","institution_name","display_name","currency","product_name","cash_account_type","account_usage","details","details_last_synced_at","transactions_last_synced_at","transactions_backfill_cursor","balances_last_synced_at","balance","created_at","updated_at"],"title":"FinancialAccountResource","description":"The associated FinancialAccount resource. Will be included in the response if the `include` query parameter contains `financial_account`."},"destination":{"oneOf":[{"type":"object","title":"YnabBudgetAccountResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","budget_id","ynab_id","name","type","on_budget","closed","note","balance","cleared_balance","uncleared_balance","transfer_payee_id","direct_import_linked","last_reconciled_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"budget_id":{"type":"string","isRequired":true},"ynab_id":{"type":"string","description":"The account's ID in YNAB.","isRequired":true},"name":{"type":"string","isRequired":true},"type":{"type":"string","isRequired":true},"on_budget":{"type":"string","description":"Whether the account is on budget in YNAB.","isRequired":true},"closed":{"type":"string","description":"Whether the account is closed in YNAB.","isRequired":true},"note":{"type":"string","description":"The account note from YNAB, if set.","isRequired":true},"balance":{"type":"string","description":"The account balance as reported by YNAB.","isRequired":true},"cleared_balance":{"type":"string","description":"The cleared balance as reported by YNAB.","isRequired":true},"uncleared_balance":{"type":"string","description":"The uncleared balance as reported by YNAB.","isRequired":true},"transfer_payee_id":{"type":"string","description":"The YNAB payee ID used for transfers to this account.","isRequired":true},"direct_import_linked":{"type":"string","description":"Whether the account is linked to YNAB Direct Import.","isRequired":true},"last_reconciled_at":{"type":"string","description":"When the account was last reconciled in YNAB.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"budget":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"ynab_id":{"type":"string","description":"The budget's ID in YNAB.","isRequired":true},"enabled":{"type":"string","description":"Whether syncing to this budget is enabled.","isRequired":true},"name":{"type":"string","isRequired":true},"currency":{"type":"string","description":"The budget's currency in YNAB.","isRequired":true},"first_month":{"type":"string","description":"The budget's first month in YNAB.","isRequired":true},"last_month":{"type":"string","description":"The budget's last month in YNAB.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"sync_balances":{"type":"string","description":"Whether account balances are synced to YNAB.","isRequired":true},"ynab_user_id":{"type":"string","description":"The connected user's ID in YNAB.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with YNAB. Only present when authorization is required."},"budgets":{"type":"array","items":{"$circularRef":"248c304a-3ec9-4df8-af52-e0efd200a978"}}},"required":["id","name","enabled","sync_balances","ynab_user_id","last_synced_at","created_at","updated_at"],"title":"YnabConnectionResource"},"accounts":{"type":"array","items":{"$circularRef":"10a862ec-a219-4aac-b0f2-677b77b5b836"}}},"required":["id","connection_id","ynab_id","enabled","name","currency","first_month","last_month","last_synced_at","created_at","updated_at"],"title":"YnabBudgetResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"object","title":"LunchMoneyAccountResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","lunch_money_id","name","display_name","type","subtype","currency","balance","balance_as_of","closed_on","exclude_from_transactions","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"lunch_money_id":{"type":"string","description":"The account's ID in Lunch Money.","isRequired":true},"name":{"type":"string","isRequired":true},"display_name":{"type":"string","description":"The account's display name in Lunch Money, if set.","isRequired":true},"type":{"type":"string","description":"The account type as reported by Lunch Money, e.g. \"cash\" or \"credit\".","isRequired":true},"subtype":{"type":"string","description":"The account subtype as reported by Lunch Money, if set.","isRequired":true},"currency":{"type":"string","isRequired":true},"balance":{"type":"string","description":"The account balance as reported by Lunch Money.","isRequired":true},"balance_as_of":{"type":"string","description":"When the balance was last updated in Lunch Money.","isRequired":true},"closed_on":{"type":"string","description":"When the account was closed in Lunch Money, if closed.","isRequired":true},"exclude_from_transactions":{"type":"string","description":"Whether the account is excluded from transactions in Lunch Money.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","description":"The name of the connected Lunch Money budget.","isRequired":true},"lunch_money_details":{"type":"object","description":"Details about the connected Lunch Money account.","properties":{"user_name":{"type":"string","description":"Name of the Lunch Money user.","isRequired":true},"user_email":{"type":"string","description":"Email address of the Lunch Money user.","isRequired":true},"user_id":{"type":"string","description":"The user's ID in Lunch Money.","isRequired":true},"bank_account_id":{"type":"string","description":"The connected account's ID in Lunch Money.","isRequired":true},"budget_name":{"type":"string","description":"Name of the connected Lunch Money budget.","isRequired":true},"primary_currency":{"type":"string","description":"The budget's primary currency in Lunch Money.","isRequired":true},"api_key_label":{"type":"string","description":"Label of the Lunch Money API token used by this connection, if set.","isRequired":true}},"required":["user_name","user_email","user_id","bank_account_id","budget_name","primary_currency","api_key_label"],"isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"sync_balances":{"type":"string","description":"Whether account balances are synced to Lunch Money.","isRequired":true},"sync_transactions":{"type":"string","description":"Whether transactions are synced to Lunch Money.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"accounts":{"type":"array","items":{"$circularRef":"4b474cf8-3b5a-4e7d-9d9a-257a073ea9dd"}}},"required":["id","name","lunch_money_details","enabled","sync_balances","sync_transactions","last_synced_at","created_at","updated_at"],"title":"LunchMoneyConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"type":"object","title":"GoogleSheetResource","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`.","required":["id","connection_id","name","spreadsheet_id","spreadsheet_name","spreadsheet_url","is_synci_managed","transactions_sheet_gid","transactions_sheet_name","live_balance_sheet_gid","live_balance_sheet_name","balance_history_sheet_gid","balance_history_sheet_name","last_synced_at","created_at","updated_at"],"properties":{"id":{"type":"string","isRequired":true},"connection_id":{"type":"string","isRequired":true},"name":{"type":"string","description":"Display name of the spreadsheet in Synci.","isRequired":true},"spreadsheet_id":{"type":"string","description":"The spreadsheet's ID in Google Sheets, as found in its URL.","isRequired":true},"spreadsheet_name":{"type":"string","description":"The spreadsheet's title in Google Sheets.","isRequired":true},"spreadsheet_url":{"type":"string","description":"Link to open the spreadsheet in Google Sheets.","isRequired":true},"is_synci_managed":{"type":"string","description":"True when the spreadsheet was created by Synci; false when an existing spreadsheet was attached.","isRequired":true},"transactions_sheet_gid":{"type":"string","description":"The gid of the tab that receives transactions, if assigned.","isRequired":true},"transactions_sheet_name":{"type":"string","description":"The name of the tab that receives transactions, if assigned.","isRequired":true},"live_balance_sheet_gid":{"type":"string","description":"The gid of the tab that holds current balances, if assigned.","isRequired":true},"live_balance_sheet_name":{"type":"string","description":"The name of the tab that holds current balances, if assigned.","isRequired":true},"balance_history_sheet_gid":{"type":"string","description":"The gid of the tab that records balance history, if assigned.","isRequired":true},"balance_history_sheet_name":{"type":"string","description":"The name of the tab that records balance history, if assigned.","isRequired":true},"last_synced_at":{"type":"string","description":"When data was last synced to the spreadsheet.","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"connection":{"type":"object","properties":{"id":{"type":"string","isRequired":true},"name":{"type":"string","isRequired":true},"enabled":{"type":"string","description":"Whether syncing through this connection is enabled.","isRequired":true},"google_email":{"type":"string","description":"Email address of the connected Google account.","isRequired":true},"last_synced_at":{"type":"string","isRequired":true},"created_at":{"type":"string","isRequired":true},"updated_at":{"type":"string","isRequired":true},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"auth_url":{"type":"string","description":"URL to authorize the connection with Google. Only present when authorization is required."},"sheets":{"type":"array","items":{"$circularRef":"4855146d-203d-426a-9ae0-10ad2f15b3d1"}}},"required":["id","name","enabled","google_email","last_synced_at","created_at","updated_at"],"title":"GoogleSheetsConnectionResource"},"health":{"type":"object","properties":{"status":{"type":"string","description":"Health status: HEALTHY (last request succeeded), FAILING (recent requests failed), or DEAD (10 or more consecutive failures).","isRequired":true},"integrator_message":{"type":"string","description":"The most recent error message reported by the provider, if any.","isRequired":true},"failure_count":{"type":"string","description":"The number of consecutive failed requests.","isRequired":true},"transient_message":{"type":"string","description":"A provider-side outage currently blocking part of the sync (for example the institution being down for maintenance). Not counted as a failure: the status stays HEALTHY while Synci retries automatically. Null when nothing is being retried.","isRequired":true},"transient_failure_count":{"type":"string","description":"The number of consecutive sync attempts refused by that outage.","isRequired":true},"last_attempt_at":{"type":"string","description":"When the last sync attempt occurred.","isRequired":true}},"required":["status","integrator_message","failure_count","transient_message","transient_failure_count","last_attempt_at"],"title":"HealthResource"},"transfer_links":{"type":"array","description":"Left out for tokens without the `transfer-links:read` scope.","items":{"$circularRef":"977aa1c0-f70d-4554-a9ba-fbd13fa41780"}}}},{"description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`."},{"type":"null","description":"The associated destination resource. Will be included in the response if the `include` query parameter contains `destination`."}]},"rules":{"type":"array","description":"The rules attached to the transfer link. Will be included in the response if the `include` query parameter contains `rules`.\nEach object includes:\n- order: The position of the rule in the transfer link's rule list. Rules are applied in ascending order.\n- rule: The rule resource data","items":{"type":"object","properties":{"order":{"type":"integer","isRequired":true},"rule":{"type":"object","additionalProperties":{"oneOf":[{}]},"isRequired":true}},"required":["order","rule"]}}},"required":["id","financial_account_id","destination_type","destination_id","transfer_start_date","active","sync_mode","on_booked_change","created_at","updated_at"],"title":"TransferLinkResource"}}},"required":["id","connection_id","name","title","database_id","data_source_id","database_url","parent_page_id","parent_page_title","is_synci_managed","layout","header_config","property_map","accounts_database_id","categories_database_id","months_database_id","balance_history_database_id","balance_available","last_synced_at","created_at","updated_at"],"title":"NotionDatabaseResource"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://api.synci.io/oauth/authorize","tokenUrl":"https://api.synci.io/oauth/token","scopes":{"profile:read":"View your name, email, and profile details","accounts:read":"View your connected financial accounts and balances","accounts:write":"Update, sync, and remove your financial accounts, and change their settings","transactions:read":"View your transactions","transactions:write":"Create, update, and delete your transactions","sensitive:read":"See sensitive identifiers like account numbers and account holder names","transfer-links:read":"View your transfer links and their transfer history","transfer-links:write":"Create, update, and delete transfer links, and undo transfers","rules:read":"View your rules and rule activity","rules:write":"Create, update, and delete rules, and undo rule actions","webhooks:read":"View your webhook endpoints","webhooks:write":"Create, update, and delete webhook endpoints, and rotate their secrets","destinations:read":"View your connected destinations","destinations:write":"Connect, update, and remove destinations","financial-connections:read":"View your connected institutions","financial-connections:write":"Manage your connected institutions"}}},"scopes":[],"schemeName":"oauth2"},"schema":{"title":"OAuth2 Auth","type":"string","isRequired":true,"description":"The access token received from the authorization server in the OAuth 2.0 flow.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"oauth2","name":"Authorization"}],"title":"oauth2"},{"schemes":[{"scheme":{"type":"http","description":"Bearer token (personal access token or OAuth access token)","scheme":"bearer","scopes":[],"schemeName":"http"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer token (personal access token or OAuth access token)","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"http","name":"Authorization"}],"title":"http"}]},"originalFileLocation":"openapi/v1.json"},"subdomain":"synci","siteName":"Synci API","title":"Create a manual account - Synci API","navMaps":{"firstHrefInVersion":{"v1":{"href":"/api-reference/loans/create-a-manual-account","matchLevel":0},"v2":{"href":"/api-reference/v2/introduction","matchLevel":3}},"firstHrefInLanguage":{}},"lastModified":"2026-11-04T21:15:20.806Z","originalFileLocation":"api-reference/loans/create-a-manual-account.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Creates an account Synci does not sync from a provider, under the user\u0026#x27;s \u0026quot;Manual accounts\u0026quot; connection. A LOAN: give it today\u0026#x27;s balance, the rate and the fee, and either the bank account that pays it (its matched payments then post the payment, interest and fee rows and keep the balance current) or a fixed payment schedule. The account carries an OPENING row dated balance_date. A BANK account (cash_account_type CACC, SVGS or CARD): a checking, savings or card account the user fills from statement files through the import endpoints. Its signed balance today is optional; when absent the balance stays unknown until the first import with a closing balance or a checkpoint. An optional institution_name (the bank or lender, as the user wants it shown) groups manual accounts in the dashboard; it is also editable through the account update endpoint. The plan feature manual_accounts_max caps how many a user may hold (Basic one, Pro and above unlimited). One more than that is a 403 with feature: manual_accounts_max, current and limit.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Synci API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/synci/_F7xK8wI5Zq_eYiI/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/synci/_F7xK8wI5Zq_eYiI/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/synci/_F7xK8wI5Zq_eYiI/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/synci/_F7xK8wI5Zq_eYiI/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/synci/_F7xK8wI5Zq_eYiI/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/synci/_F7xK8wI5Zq_eYiI/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/synci/_F7xK8wI5Zq_eYiI/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/synci/_F7xK8wI5Zq_eYiI/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/synci/_F7xK8wI5Zq_eYiI/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create a manual account - Synci API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Creates an account Synci does not sync from a provider, under the user\u0026#x27;s \u0026quot;Manual accounts\u0026quot; connection. A LOAN: give it today\u0026#x27;s balance, the rate and the fee, and either the bank account that pays it (its matched payments then post the payment, interest and fee rows and keep the balance current) or a fixed payment schedule. The account carries an OPENING row dated balance_date. A BANK account (cash_account_type CACC, SVGS or CARD): a checking, savings or card account the user fills from statement files through the import endpoints. Its signed balance today is optional; when absent the balance stays unknown until the first import with a closing balance or a checkpoint. An optional institution_name (the bank or lender, as the user wants it shown) groups manual accounts in the dashboard; it is also editable through the account update endpoint. The plan feature manual_accounts_max caps how many a user may hold (Basic one, Pro and above unlimited). One more than that is a 403 with feature: manual_accounts_max, current and limit.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Synci API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.synci.io/api-reference/loans/create-a-manual-account\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://synci.mintlify.app/_mintlify/api/og/v2?division=Loans\u0026amp;title=Create+a+manual+account\u0026amp;description=Creates+an+account+Synci+does+not+sync+from+a+provider%2C+under+the+user%27s+%22Manual+accounts%22+connection.%0A%0AA+%60LOAN%60%3A+give+it+today%27s+balance%2C+the+rate+and+the+fee%2C\u0026amp;theme=90b174a997ab814bdabb5584\u0026amp;signature=611692139b5fb7a343964f44cad18027c3be717bcc031110f806213823f53e91\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create a manual account - Synci API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Creates an account Synci does not sync from a provider, under the user\u0026#x27;s \u0026quot;Manual accounts\u0026quot; connection. A LOAN: give it today\u0026#x27;s balance, the rate and the fee, and either the bank account that pays it (its matched payments then post the payment, interest and fee rows and keep the balance current) or a fixed payment schedule. The account carries an OPENING row dated balance_date. A BANK account (cash_account_type CACC, SVGS or CARD): a checking, savings or card account the user fills from statement files through the import endpoints. Its signed balance today is optional; when absent the balance stays unknown until the first import with a closing balance or a checkpoint. An optional institution_name (the bank or lender, as the user wants it shown) groups manual accounts in the dashboard; it is also editable through the account update endpoint. The plan feature manual_accounts_max caps how many a user may hold (Basic one, Pro and above unlimited). One more than that is a 403 with feature: manual_accounts_max, current and limit.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://synci.mintlify.app/_mintlify/api/og/v2?division=Loans\u0026amp;title=Create+a+manual+account\u0026amp;description=Creates+an+account+Synci+does+not+sync+from+a+provider%2C+under+the+user%27s+%22Manual+accounts%22+connection.%0A%0AA+%60LOAN%60%3A+give+it+today%27s+balance%2C+the+rate+and+the+fee%2C\u0026amp;theme=90b174a997ab814bdabb5584\u0026amp;signature=611692139b5fb7a343964f44cad18027c3be717bcc031110f806213823f53e91\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/synci/_F7xK8wI5Zq_eYiI/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Synci API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#202020\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.synci.io/api-reference/loans/create-a-manual-account\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/loans/create-a-manual-account.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.synci.io/#organization\",\"name\":\"Synci API\",\"url\":\"https://docs.synci.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/synci/6HoxVjb_wmNxVtbF/logo/light.svg?fit=max\u0026auto=format\u0026n=6HoxVjb_wmNxVtbF\u0026q=85\u0026s=0d2b9ee1337fd0bec1fe8a9e9fccec80\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.synci.io#website\",\"name\":\"Synci API\",\"url\":\"https://docs.synci.io\",\"publisher\":{\"@id\":\"https://docs.synci.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.synci.io/api-reference/loans/create-a-manual-account#webpage\",\"url\":\"https://docs.synci.io/api-reference/loans/create-a-manual-account\",\"name\":\"Create a manual account\",\"description\":\"Creates an account Synci does not sync from a provider, under the user's \\\"Manual accounts\\\" connection. A LOAN: give it today's balance, the rate and the fee, and either the bank account that pays it (its matched payments then post the payment, interest and fee rows and keep the balance current) or a fixed payment schedule. The account carries an OPENING row dated balance_date. A BANK account (cash_account_type CACC, SVGS or CARD): a checking, savings or card account the user fills from statement files through the import endpoints. Its signed balance today is optional; when absent the balance stays unknown until the first import with a closing balance or a checkpoint. An optional institution_name (the bank or lender, as the user wants it shown) groups manual accounts in the dashboard; it is also editable through the account update endpoint. The plan feature manual_accounts_max caps how many a user may hold (Basic one, Pro and above unlimited). One more than that is a 403 with feature: manual_accounts_max, current and limit.\",\"dateModified\":\"2026-11-04T21:15:20.806Z\",\"isPartOf\":{\"@id\":\"https://docs.synci.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.synci.io/api-reference/loans/create-a-manual-account#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.synci.io/api-reference/loans/create-a-manual-account#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Synci API\",\"item\":\"https://docs.synci.io\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create a manual account\",\"item\":\"https://docs.synci.io/api-reference/loans/create-a-manual-account\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.synci.io/api-reference/loans/create-a-manual-account#apireference\",\"headline\":\"Create a manual account\",\"name\":\"Create a manual account\",\"description\":\"Creates an account Synci does not sync from a provider, under the user's \\\"Manual accounts\\\" connection. A LOAN: give it today's balance, the rate and the fee, and either the bank account that pays it (its matched payments then post the payment, interest and fee rows and keep the balance current) or a fixed payment schedule. The account carries an OPENING row dated balance_date. A BANK account (cash_account_type CACC, SVGS or CARD): a checking, savings or card account the user fills from statement files through the import endpoints. Its signed balance today is optional; when absent the balance stays unknown until the first import with a closing balance or a checkpoint. An optional institution_name (the bank or lender, as the user wants it shown) groups manual accounts in the dashboard; it is also editable through the account update endpoint. The plan feature manual_accounts_max caps how many a user may hold (Basic one, Pro and above unlimited). One more than that is a 403 with feature: manual_accounts_max, current and limit.\",\"url\":\"https://docs.synci.io/api-reference/loans/create-a-manual-account\",\"mainEntityOfPage\":{\"@id\":\"https://docs.synci.io/api-reference/loans/create-a-manual-account#webpage\"},\"dateModified\":\"2026-11-04T21:15:20.806Z\",\"publisher\":{\"@id\":\"https://docs.synci.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.synci.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Synci API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Synci API","nav":{"global":{"anchors":[{"anchor":"Help center","icon":"life-buoy","href":"https://help.synci.io"},{"anchor":"Dashboard","icon":"layout-dashboard","href":"https://app.synci.io"}]},"tabs":[{"tab":"Documentation","icon":"book-open","pages":[{"title":"Documentation","href":""}]},{"tab":"API reference","icon":"code","versions":[{"version":"v1","default":true,"tag":"Stable","groups":[{"group":"Finance","pages":[{"group":"Connections","pages":[{"title":"List all financial connections","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/connections","href":"/api-reference/connections/list-all-financial-connections"},{"title":"Create a new financial connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /finance/connections","href":"/api-reference/connections/create-a-new-financial-connection"},{"title":"Get financial connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/connections/{connectionId}","href":"/api-reference/connections/get-financial-connection"},{"title":"Delete financial connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /finance/connections/{connectionId}","href":"/api-reference/connections/delete-financial-connection"},{"title":"Disable financial connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /finance/connections/{connectionId}/disable","href":"/api-reference/connections/disable-financial-connection"},{"title":"Reconfirm the consent of a financial connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /finance/connections/{connectionId}/reauthorize","href":"/api-reference/connections/reconfirm-the-consent-of-a-financial-connection"},{"title":"Choose the accounts to keep","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /finance/connections/{connectionId}/setup/accounts","href":"/api-reference/connections/choose-the-accounts-to-keep"},{"title":"Complete the setup","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /finance/connections/{connectionId}/setup/complete","href":"/api-reference/connections/complete-the-setup"}]},{"group":"Accounts","pages":[{"title":"List all financial accounts","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/accounts","href":"/api-reference/accounts/list-all-financial-accounts"},{"title":"Get financial account","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/accounts/{accountId}","href":"/api-reference/accounts/get-financial-account"},{"title":"Update financial account","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /finance/accounts/{accountId}","href":"/api-reference/accounts/update-financial-account"},{"title":"Delete financial account","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /finance/accounts/{accountId}","href":"/api-reference/accounts/delete-financial-account"},{"title":"Bulk delete financial accounts","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /finance/accounts/bulk-delete","href":"/api-reference/accounts/bulk-delete-financial-accounts"},{"title":"Sync financial account data","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /finance/accounts/{accountId}/sync","href":"/api-reference/accounts/sync-financial-account-data"},{"title":"Reset financial account config to defaults","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /finance/accounts/{accountId}/reset-config","href":"/api-reference/accounts/reset-financial-account-config-to-defaults"},{"title":"List all account balance entries","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/accounts/{accountId}/balances","href":"/api-reference/accounts/list-all-account-balance-entries"},{"title":"Get account balance entry","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/accounts/{accountId}/balances/{balanceId}","href":"/api-reference/accounts/get-account-balance-entry"},{"title":"List account holdings","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/accounts/{accountId}/holdings","href":"/api-reference/accounts/list-account-holdings"},{"title":"Get account holding","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/accounts/{accountId}/holdings/{holdingId}","href":"/api-reference/accounts/get-account-holding"},{"title":"Get enrichment backfill status","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/accounts/{accountId}/enrichment-status","href":"/api-reference/accounts/get-enrichment-backfill-status"}]},{"group":"Transactions","pages":[{"title":"List all transactions","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/transactions","href":"/api-reference/transactions/list-all-transactions"},{"title":"Create a new transaction","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /finance/transactions","href":"/api-reference/transactions/create-a-new-transaction"},{"title":"Get transaction","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/transactions/{transactionId}","href":"/api-reference/transactions/get-transaction"},{"title":"Update transaction","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /finance/transactions/{transactionId}","href":"/api-reference/transactions/update-transaction"},{"title":"Delete transaction","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /finance/transactions/{transactionId}","href":"/api-reference/transactions/delete-transaction"},{"title":"Bulk delete transactions","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /finance/transactions/bulk-delete","href":"/api-reference/transactions/bulk-delete-transactions"},{"title":"Pairing candidates","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/transactions/{transactionId}/pairing-candidates","href":"/api-reference/transactions/pairing-candidates"}]},{"group":"Institutions","pages":[{"title":"Get supported countries","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/institutions/countries","href":"/api-reference/institutions/get-supported-countries"},{"title":"List all supported institutions","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/institutions","href":"/api-reference/institutions/list-all-supported-institutions"},{"title":"Get supported institution","description":"Get a supported institution. Use the institution IDs when creating new financial connections.","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/institutions/{institutionId}","href":"/api-reference/institutions/get-supported-institution"}]}]},{"group":"Loans","pages":[{"title":"Create a manual account","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /finance/accounts/manual","href":"/api-reference/loans/create-a-manual-account"},{"title":"Update loan terms","description":"Everything on the `loan` object except the rate, which has its own endpoint. Changing the fee or the\nday count applies to payments from now on. Setting a paying account turns schedule mode off.","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /finance/accounts/{accountId}/loan","href":"/api-reference/loans/update-loan-terms"},{"title":"Add a rate period","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /finance/accounts/{accountId}/loan/rate-periods","href":"/api-reference/loans/add-a-rate-period"},{"title":"Remove a rate period","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /finance/accounts/{accountId}/loan/rate-periods/{effectiveFrom}","href":"/api-reference/loans/remove-a-rate-period"},{"title":"Verify the balance","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /finance/accounts/{accountId}/loan/checkpoints","href":"/api-reference/loans/verify-the-balance"},{"title":"Dismiss a payment change","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /finance/accounts/{accountId}/loan/dismiss-payment-change","href":"/api-reference/loans/dismiss-a-payment-change"},{"title":"Suggest loan payments","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/accounts/{accountId}/loan/candidate-payments","href":"/api-reference/loans/suggest-loan-payments"},{"title":"Derived loan balance on a date","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/accounts/{accountId}/loan/balance","href":"/api-reference/loans/derived-loan-balance-on-a-date"}]},{"group":"Manual accounts","pages":[{"title":"Derived balance on a date","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/accounts/{accountId}/balance","href":"/api-reference/manual-accounts/derived-balance-on-a-date"},{"title":"Verify the balance","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /finance/accounts/{accountId}/balance-checkpoints","href":"/api-reference/manual-accounts/verify-the-balance"}]},{"group":"Imports","pages":[{"title":"List imports","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/accounts/{accountId}/imports","href":"/api-reference/imports/list-imports"},{"title":"Upload a statement file","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /finance/accounts/{accountId}/imports","href":"/api-reference/imports/upload-a-statement-file"},{"title":"Get an import","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/accounts/{accountId}/imports/{importId}","href":"/api-reference/imports/get-an-import"},{"title":"Discard an import","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /finance/accounts/{accountId}/imports/{importId}","href":"/api-reference/imports/discard-an-import"},{"title":"List an import's rows","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /finance/accounts/{accountId}/imports/{importId}/rows","href":"/api-reference/imports/list-an-imports-rows"},{"title":"Change the CSV mapping","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /finance/accounts/{accountId}/imports/{importId}/mapping","href":"/api-reference/imports/change-the-csv-mapping"},{"title":"Commit an import","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /finance/accounts/{accountId}/imports/{importId}/commit","href":"/api-reference/imports/commit-an-import"},{"title":"Undo an import","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /finance/accounts/{accountId}/imports/{importId}/undo","href":"/api-reference/imports/undo-an-import"}]},{"group":"Destinations","pages":[{"group":"YNAB","pages":[{"title":"List all YNAB connections","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/ynab/connections","href":"/api-reference/ynab/list-all-ynab-connections"},{"title":"Create new YNAB connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /destinations/ynab/connections","href":"/api-reference/ynab/create-new-ynab-connection"},{"title":"Get YNAB connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/ynab/connections/{connectionId}","href":"/api-reference/ynab/get-ynab-connection"},{"title":"Update YNAB connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /destinations/ynab/connections/{connectionId}","href":"/api-reference/ynab/update-ynab-connection"},{"title":"Delete YNAB connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /destinations/ynab/connections/{connectionId}","href":"/api-reference/ynab/delete-ynab-connection"},{"title":"Refresh YNAB connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /destinations/ynab/connections/{connectionId}/refresh","href":"/api-reference/ynab/refresh-ynab-connection"},{"title":"List all YNAB budgets","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/ynab/connections/{connectionId}/budgets","href":"/api-reference/ynab/list-all-ynab-budgets"},{"title":"Get YNAB budget","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/ynab/connections/{connectionId}/budgets/{budgetId}","href":"/api-reference/ynab/get-ynab-budget"},{"title":"Update YNAB budget","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /destinations/ynab/connections/{connectionId}/budgets/{budgetId}","href":"/api-reference/ynab/update-ynab-budget"},{"title":"Delete YNAB budget","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /destinations/ynab/connections/{connectionId}/budgets/{budgetId}","href":"/api-reference/ynab/delete-ynab-budget"},{"title":"List all YNAB budget accounts","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/ynab/connections/{connectionId}/budgets/{budgetId}/accounts","href":"/api-reference/ynab/list-all-ynab-budget-accounts"},{"title":"Create YNAB budget account","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /destinations/ynab/connections/{connectionId}/budgets/{budgetId}/accounts","href":"/api-reference/ynab/create-ynab-budget-account"},{"title":"Get YNAB budget account","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/ynab/connections/{connectionId}/budgets/{budgetId}/accounts/{budgetAccountId}","href":"/api-reference/ynab/get-ynab-budget-account"},{"title":"Delete YNAB budget account","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /destinations/ynab/connections/{connectionId}/budgets/{budgetId}/accounts/{budgetAccountId}","href":"/api-reference/ynab/delete-ynab-budget-account"}]},{"group":"Lunch Money","pages":[{"title":"List all Lunch Money connections","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/lunch-money/connections","href":"/api-reference/lunch-money/list-all-lunch-money-connections"},{"title":"Create new Lunch Money connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /destinations/lunch-money/connections","href":"/api-reference/lunch-money/create-new-lunch-money-connection"},{"title":"Get Lunch Money connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/lunch-money/connections/{connectionId}","href":"/api-reference/lunch-money/get-lunch-money-connection"},{"title":"Update Lunch Money connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /destinations/lunch-money/connections/{connectionId}","href":"/api-reference/lunch-money/update-lunch-money-connection"},{"title":"Delete Lunch Money connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /destinations/lunch-money/connections/{connectionId}","href":"/api-reference/lunch-money/delete-lunch-money-connection"},{"title":"Refresh Lunch Money connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /destinations/lunch-money/connections/{connectionId}/refresh","href":"/api-reference/lunch-money/refresh-lunch-money-connection"},{"title":"List all Lunch Money accounts","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/lunch-money/connections/{connectionId}/accounts","href":"/api-reference/lunch-money/list-all-lunch-money-accounts"},{"title":"Create Lunch Money account","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /destinations/lunch-money/connections/{connectionId}/accounts","href":"/api-reference/lunch-money/create-lunch-money-account"},{"title":"Get Lunch Money account","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/lunch-money/connections/{connectionId}/accounts/{accountId}","href":"/api-reference/lunch-money/get-lunch-money-account"},{"title":"Delete Lunch Money account","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /destinations/lunch-money/connections/{connectionId}/accounts/{accountId}","href":"/api-reference/lunch-money/delete-lunch-money-account"}]},{"group":"Google Sheets","pages":[{"title":"List all Google Sheets connections","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/google-sheets/connections","href":"/api-reference/google-sheets/list-all-google-sheets-connections"},{"title":"Create new Google Sheets connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /destinations/google-sheets/connections","href":"/api-reference/google-sheets/create-new-google-sheets-connection"},{"title":"Get Google Sheets connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/google-sheets/connections/{connectionId}","href":"/api-reference/google-sheets/get-google-sheets-connection"},{"title":"Update Google Sheets connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /destinations/google-sheets/connections/{connectionId}","href":"/api-reference/google-sheets/update-google-sheets-connection"},{"title":"Delete Google Sheets connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /destinations/google-sheets/connections/{connectionId}","href":"/api-reference/google-sheets/delete-google-sheets-connection"},{"title":"Refresh Google Sheets connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /destinations/google-sheets/connections/{connectionId}/refresh","href":"/api-reference/google-sheets/refresh-google-sheets-connection"},{"title":"List destination spreadsheets for a connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/google-sheets/connections/{connectionId}/sheets","href":"/api-reference/google-sheets/list-destination-spreadsheets-for-a-connection"},{"title":"Register a destination spreadsheet","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /destinations/google-sheets/connections/{connectionId}/sheets","href":"/api-reference/google-sheets/register-a-destination-spreadsheet"},{"title":"Get a destination spreadsheet","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/google-sheets/connections/{connectionId}/sheets/{sheetId}","href":"/api-reference/google-sheets/get-a-destination-spreadsheet"},{"title":"Update a destination spreadsheet","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /destinations/google-sheets/connections/{connectionId}/sheets/{sheetId}","href":"/api-reference/google-sheets/update-a-destination-spreadsheet"},{"title":"Delete a destination spreadsheet","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /destinations/google-sheets/connections/{connectionId}/sheets/{sheetId}","href":"/api-reference/google-sheets/delete-a-destination-spreadsheet"},{"title":"List the worksheets (tabs) of a spreadsheet","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/google-sheets/connections/{connectionId}/sheets/{sheetId}/tabs","href":"/api-reference/google-sheets/list-the-worksheets-tabs-of-a-spreadsheet"},{"title":"Create a new worksheet (tab) in a spreadsheet","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /destinations/google-sheets/connections/{connectionId}/sheets/{sheetId}/tabs","href":"/api-reference/google-sheets/create-a-new-worksheet-tab-in-a-spreadsheet"}]},{"group":"SimpleFIN","pages":[{"title":"List all SimpleFIN connections","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/simplefin/connections","href":"/api-reference/simplefin/list-all-simplefin-connections"},{"title":"Create new SimpleFIN connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /destinations/simplefin/connections","href":"/api-reference/simplefin/create-new-simplefin-connection"},{"title":"Get SimpleFIN connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/simplefin/connections/{connectionId}","href":"/api-reference/simplefin/get-simplefin-connection"},{"title":"Update SimpleFIN connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /destinations/simplefin/connections/{connectionId}","href":"/api-reference/simplefin/update-simplefin-connection"},{"title":"Delete SimpleFIN connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /destinations/simplefin/connections/{connectionId}","href":"/api-reference/simplefin/delete-simplefin-connection"},{"title":"Regenerate setup token","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /destinations/simplefin/connections/{connectionId}/regenerate-token","href":"/api-reference/simplefin/regenerate-setup-token"},{"title":"Revoke access credentials","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /destinations/simplefin/connections/{connectionId}/revoke","href":"/api-reference/simplefin/revoke-access-credentials"},{"title":"List accounts observed syncing","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/simplefin/connections/{connectionId}/accounts","href":"/api-reference/simplefin/list-accounts-observed-syncing"}]},{"group":"Notion","pages":[{"title":"List all Notion connections","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/notion/connections","href":"/api-reference/notion/list-all-notion-connections"},{"title":"Create new Notion connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /destinations/notion/connections","href":"/api-reference/notion/create-new-notion-connection"},{"title":"Get Notion connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/notion/connections/{connectionId}","href":"/api-reference/notion/get-notion-connection"},{"title":"Update Notion connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /destinations/notion/connections/{connectionId}","href":"/api-reference/notion/update-notion-connection"},{"title":"Delete Notion connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /destinations/notion/connections/{connectionId}","href":"/api-reference/notion/delete-notion-connection"},{"title":"Refresh Notion connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /destinations/notion/connections/{connectionId}/refresh","href":"/api-reference/notion/refresh-notion-connection"},{"title":"Search pages shared with Synci","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/notion/connections/{connectionId}/pages","href":"/api-reference/notion/search-pages-shared-with-synci"},{"title":"Search databases shared with Synci","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/notion/connections/{connectionId}/data-sources","href":"/api-reference/notion/search-databases-shared-with-synci"},{"title":"List destination databases for a connection","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/notion/connections/{connectionId}/databases","href":"/api-reference/notion/list-destination-databases-for-a-connection"},{"title":"Register a destination database","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /destinations/notion/connections/{connectionId}/databases","href":"/api-reference/notion/register-a-destination-database"},{"title":"Get a destination database","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /destinations/notion/connections/{connectionId}/databases/{databaseId}","href":"/api-reference/notion/get-a-destination-database"},{"title":"Update a destination database","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /destinations/notion/connections/{connectionId}/databases/{databaseId}","href":"/api-reference/notion/update-a-destination-database"},{"title":"Delete a destination database","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /destinations/notion/connections/{connectionId}/databases/{databaseId}","href":"/api-reference/notion/delete-a-destination-database"}]}]},{"group":"Account","pages":[{"group":"Webhooks","pages":[{"title":"List all webhook events","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /webhooks/events","href":"/api-reference/webhooks/list-all-webhook-events"},{"title":"List all webhook endpoints","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /webhooks","href":"/api-reference/webhooks/list-all-webhook-endpoints"},{"title":"Create new webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /webhooks","href":"/api-reference/webhooks/create-new-webhook-endpoint"},{"title":"Get webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /webhooks/{webhookEndpointId}","href":"/api-reference/webhooks/get-webhook-endpoint"},{"title":"Update webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /webhooks/{webhookEndpointId}","href":"/api-reference/webhooks/update-webhook-endpoint"},{"title":"Delete webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /webhooks/{webhookEndpointId}","href":"/api-reference/webhooks/delete-webhook-endpoint"},{"title":"Test webhook endpoint","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /webhooks/{webhookEndpointId}/test","href":"/api-reference/webhooks/test-webhook-endpoint"},{"title":"Rotate webhook secret","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /webhooks/{webhookEndpointId}/rotate-secret","href":"/api-reference/webhooks/rotate-webhook-secret"}]},{"group":"User","pages":[{"title":"Get the authenticated user","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /user","href":"/api-reference/user/get-the-authenticated-user"}]}]},{"group":"Rules","pages":[{"group":"Rules","pages":[{"title":"List all rules","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /rules","href":"/api-reference/rules/list-all-rules"},{"title":"Create a new rule","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /rules","href":"/api-reference/rules/create-a-new-rule"},{"title":"Get rule","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /rules/{ruleId}","href":"/api-reference/rules/get-rule"},{"title":"Update rule","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /rules/{ruleId}","href":"/api-reference/rules/update-rule"},{"title":"Delete rule","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /rules/{ruleId}","href":"/api-reference/rules/delete-rule"},{"title":"Reorder rules for a financial account","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /rules/{ruleId}/accounts/{financialAccountId}","href":"/api-reference/rules/reorder-rules-for-a-financial-account"},{"title":"Attach rule to a financial account","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /rules/{ruleId}/accounts/{financialAccountId}","href":"/api-reference/rules/attach-rule-to-a-financial-account"},{"title":"Detach rule from financial account","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /rules/{ruleId}/accounts/{financialAccountId}","href":"/api-reference/rules/detach-rule-from-financial-account"},{"title":"Reorder rules for a transfer link","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /rules/{ruleId}/transfer-links/{transferLinkId}","href":"/api-reference/rules/reorder-rules-for-a-transfer-link"},{"title":"Attach rule to transfer link","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /rules/{ruleId}/transfer-links/{transferLinkId}","href":"/api-reference/rules/attach-rule-to-transfer-link"},{"title":"Detach rule from transfer link","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /rules/{ruleId}/transfer-links/{transferLinkId}","href":"/api-reference/rules/detach-rule-from-transfer-link"},{"title":"Suggest an internal-transfer rule from examples","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /rules/suggest","href":"/api-reference/rules/suggest-an-internal-transfer-rule-from-examples"},{"title":"Apply a rule to existing transactions","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /rules/{ruleId}/apply","href":"/api-reference/rules/apply-a-rule-to-existing-transactions"},{"title":"Get a rule application","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /rules/{ruleId}/applications/{applicationId}","href":"/api-reference/rules/get-a-rule-application"},{"title":"Rule field catalog","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /rules/field-catalog","href":"/api-reference/rules/rule-field-catalog"},{"title":"Preview a rule against transactions (dry-run)","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /rules/preview","href":"/api-reference/rules/preview-a-rule-against-transactions-dry-run"}]},{"group":"Rule Logs","pages":[{"title":"List all rule logs","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /rule-logs","href":"/api-reference/rule-logs/list-all-rule-logs"},{"title":"Get rule log","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /rule-logs/{logId}","href":"/api-reference/rule-logs/get-rule-log"},{"title":"Undo multiple rule actions","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /rule-logs/undo-bulk","href":"/api-reference/rule-logs/undo-multiple-rule-actions"},{"title":"Undo a rule action","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /rule-logs/{logId}/undo","href":"/api-reference/rule-logs/undo-a-rule-action"}]}]},{"group":"Transfers","pages":[{"group":"Transfer Links","pages":[{"title":"List all transfer links","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /transfer-links","href":"/api-reference/transfer-links/list-all-transfer-links"},{"title":"Create a new transfer link","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /transfer-links","href":"/api-reference/transfer-links/create-a-new-transfer-link"},{"title":"Get transfer link","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /transfer-links/{transferLinkId}","href":"/api-reference/transfer-links/get-transfer-link"},{"title":"Update transfer link","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /transfer-links/{transferLinkId}","href":"/api-reference/transfer-links/update-transfer-link"},{"title":"Delete transfer link","deprecated":null,"version":null,"openapi":"/openapi/v1.json delete /transfer-links/{transferLinkId}","href":"/api-reference/transfer-links/delete-transfer-link"},{"title":"Retry transfers for all transfer links","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /transfer-links/retry-transfers","href":"/api-reference/transfer-links/retry-transfers-for-all-transfer-links"},{"title":"Retry transfers for a specific transfer link","deprecated":null,"version":null,"openapi":"/openapi/v1.json post /transfer-links/{transferLinkId}/retry-transfers","href":"/api-reference/transfer-links/retry-transfers-for-a-specific-transfer-link"}]},{"group":"Transfer Logs","pages":[{"title":"List all transfer logs","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /transfer-logs","href":"/api-reference/transfer-logs/list-all-transfer-logs"},{"title":"Get transfer log","deprecated":null,"version":null,"openapi":"/openapi/v1.json get /transfer-logs/{transferLogId}","href":"/api-reference/transfer-logs/get-transfer-log"},{"title":"Undo a transfer","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /transfer-logs/{transferLogId}/undo","href":"/api-reference/transfer-logs/undo-a-transfer"},{"title":"Undo multiple transfers","deprecated":null,"version":null,"openapi":"/openapi/v1.json put /transfer-logs/undo-bulk","href":"/api-reference/transfer-logs/undo-multiple-transfers"}]}]}]},{"version":"v2","tag":"Alpha","pages":[{"title":"v2","href":"/api-reference/v2/introduction"}]}]},{"tab":"Managed Users API","icon":"users","pages":[{"title":"Managed Users API","href":"/api-reference/managed/introduction"}]}]},"basePath":"","title":"Create a manual account - Synci API","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DX1Meug0.js","utils-B_OMIQVC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChxhRPMa.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CuKvD8Iv.js","snippetPresets-C5d7p2hp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","Page-BAvA99GL.js","getPastedJson-bz0M41mU.js","icon-CsmhpPrv.js","MethodPill-CNGsVE77.js","DuplicateIcon-DilfU_Z2.js","createIcon-BdsYzQck.js","DynamicMarkdown-CbqEDjbV.js","SectionHeading-O6hXpFCN.js","axios-vUo_bRtp.js","Markdown-nKm-uidQ.js","clsx-ClVdStUn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CIQkMg3R.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ImrFS4Fy.js"]}