{"openapi":"3.0.3","info":{"title":"OweJar Cloud API","version":"1.0.0","description":"Monetary minor units and versions are decimal strings. Mutations return durable outcomes; inspect status even on HTTP 200. If-Match is the current private aggregate version. Web mutations require a matching Origin header. Private /v1 financial operations require paid access. Separate /v2/shared operations are free to signed-in accounts with accepted relationships and explicit shared OAuth scopes. Shared payments record external funds and never transfer money. Unsynced phone changes are unavailable remotely."},"servers":[{"url":"https://owejar.com"}],"security":[{"bearerAuth":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"paths":{"/v1/books":{"post":{"operationId":"createBook","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["book"],"properties":{"book":{"$ref":"#/components/schemas/Book"}}}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"moneyScale":{"type":"integer","minimum":0,"maximum":4},"timeZone":{"type":"string"}},"required":["currency","timeZone"],"additionalProperties":false}}}}}},"/v1/me/book":{"get":{"operationId":"getPrivateBook","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["book"],"properties":{"book":{"allOf":[{"$ref":"#/components/schemas/Book"}],"nullable":true},"compatibility":{"type":"object","properties":{"loanInterest":{"$ref":"#/components/schemas/LoanInterestCompatibility"}}}}}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Account and book metadata stay available to older native apps. Optional compatibility is a sibling of the unchanged v1 Book. New interest requires LOAN_INTEREST_ENABLED=true, a capable caller and support advertised by every registered native device; existing interest ledgers require a capable client to sync."}},"/v1/books/{bookId}/commands":{"post":{"operationId":"executeCommand","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloudCommand"}}}},"description":"Native v1 compatibility: an authenticated native session with a device ID can replay settlement.record with both interestAmountMinor and all preconditions omitted as a principal-only payment. The current dated loan timeline, amount limits and capability gate still apply. Supplied allocations or preconditions retain entry-version checks; web, OAuth API and MCP omissions remain interest-first."}},"/v1/books/{bookId}/commands/prepare":{"post":{"operationId":"prepareCommand","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/v1/books/{bookId}/sync/push":{"post":{"operationId":"pushCommands","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushResponse"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["commands"],"properties":{"commands":{"type":"array","maxItems":50,"items":{"$ref":"#/components/schemas/CloudCommand"}}}}}}},"description":"Native v1 compatibility: an authenticated native session with a device ID can replay settlement.record with both interestAmountMinor and all preconditions omitted as a principal-only payment. The current dated loan timeline, amount limits and capability gate still apply. Supplied allocations or preconditions retain entry-version checks; web, OAuth API and MCP omissions remain interest-first."}},"/v1/books/{bookId}/sync/changes":{"get":{"operationId":"pullChanges","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangesResponse"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/snapshots":{"post":{"operationId":"createSnapshot","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnapshotManifest"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/snapshots/{id}":{"get":{"operationId":"getSnapshotPage","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"multipleOf":500,"default":0}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnapshotPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/imports":{"post":{"operationId":"beginImport","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["id"],"properties":{"id":{"type":"string"}}}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rowCount":{"type":"integer","minimum":0,"maximum":2000000},"checksum":{"type":"string"},"chunkCount":{"type":"integer","minimum":0}},"required":["rowCount"],"additionalProperties":false}}}}}},"/v1/books/{bookId}/imports/{id}/chunks/{index}":{"put":{"operationId":"putImportChunk","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"index","in":"path","required":true,"schema":{"type":"integer","minimum":0}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["records"],"properties":{"records":{"type":"array","maxItems":500,"items":{"$ref":"#/components/schemas/EntityChange"}}}}}}}}},"/v1/books/{bookId}/imports/{id}/finalize":{"post":{"operationId":"finalizeImport","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["revision","epoch","cursor"],"properties":{"revision":{"type":"string"},"epoch":{"type":"string"},"cursor":{"type":"string"},"snapshotRequired":{"type":"boolean"}}}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"rowCount":{"type":"integer","minimum":0},"chunkCount":{"type":"integer","minimum":0},"reconciliation":{"type":"object","properties":{"mode":{"type":"string","enum":["preserve_paid_balances"]},"token":{"type":"string","pattern":"^[a-f0-9]{64}$"},"expiresAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["mode","token","expiresAt"],"additionalProperties":false}},"additionalProperties":false}}}}}},"/v1/operations/{operationId}":{"get":{"operationId":"getOperationOutcome","parameters":[{"name":"operationId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/balances":{"get":{"operationId":"getBalances","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"includeExpenses","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"includeDeliveries","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"owedToMeMinor":{"type":"string"},"iOweMinor":{"type":"string"},"netMinor":{"type":"string"},"currency":{"type":"string"},"moneyScale":{"type":"number"},"revision":{"type":"string"},"asOf":{"type":"number"},"nextInterestChangeAt":{"type":"integer","nullable":true},"scope":{"type":"string","enum":["committed_cloud_records"]},"includesExpenses":{"type":"boolean"},"includesDeliveries":{"type":"boolean"}},"required":["owedToMeMinor","iOweMinor","netMinor","currency","moneyScale","revision","asOf","scope","includesExpenses","includesDeliveries"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/people/{id}/balances":{"get":{"operationId":"getPersonBalances","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"includeExpenses","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"includeDeliveries","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"owedToMeMinor":{"type":"string"},"iOweMinor":{"type":"string"},"netMinor":{"type":"string"},"currency":{"type":"string"},"moneyScale":{"type":"number"},"revision":{"type":"string"},"asOf":{"type":"number"},"nextInterestChangeAt":{"type":"integer","nullable":true},"scope":{"type":"string","enum":["committed_cloud_records"]},"includesExpenses":{"type":"boolean"},"includesDeliveries":{"type":"boolean"},"personId":{"type":"string"}},"required":["owedToMeMinor","iOweMinor","netMinor","currency","moneyScale","revision","asOf","scope","includesExpenses","includesDeliveries","personId"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/expense-view":{"get":{"operationId":"listPrivateExpenseViews","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"from","in":"query","required":false,"schema":{"type":"string"}},{"name":"to","in":"query","required":false,"schema":{"type":"string"}},{"name":"mode","in":"query","required":false,"schema":{"type":"string"}},{"name":"currency","in":"query","required":false,"schema":{"type":"string"}},{"name":"categoryId","in":"query","required":false,"schema":{"type":"string"}},{"name":"subcategoryId","in":"query","required":false,"schema":{"type":"string"}},{"name":"uncategorized","in":"query","required":false,"schema":{"type":"string"}},{"name":"personId","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PrivateExpenseViewPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Read-only private expense projection with exact recorded own shares and a full filtered summary before pagination. Dates are inclusive millisecond boundaries. Sort is latest (default), oldest, amount_high_to_low or amount_low_to_high; amount sorts require one currency. ID ties follow the selected ascending or descending order. A concurrent book revision returns expense_view_changed; restart pagination. Private cloud authorization and Pro requirements apply."}},"/v1/books/{bookId}/export/{table}":{"get":{"operationId":"exportPrivateBook","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"table","in":"path","required":true,"schema":{"type":"string","enum":["people","entries","settlements","expenses","shares"]}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":500}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"filename":{"type":"string"},"contentType":{"type":"string","enum":["text/csv; charset=utf-8"]},"text":{"type":"string"},"table":{"type":"string","enum":["people","entries","settlements","expenses","shares"]},"rowCount":{"type":"integer","minimum":0},"nextCursor":{"type":"string","nullable":true},"currency":{"type":"string"},"moneyScale":{"type":"integer"},"timeZone":{"type":"string"},"from":{"type":"string","nullable":true},"to":{"type":"string","nullable":true},"revision":{"type":"string"},"asOf":{"type":"integer"}},"required":["filename","contentType","text","table","rowCount","nextCursor","currency","moneyScale","timeZone","from","to","revision","asOf"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Read-only CSV page of one private-book table (people, entries, settlements, expenses or shares) for spreadsheets and assistants: active records only, exact minor-unit amounts plus decimals, dates in the book time zone, inclusive local from/to dates, and formula-like cells prefixed with an apostrophe. At most 1000 rows and about 256 KB per page; continue with nextCursor. The full JSONL backup (snapshots) is available only to the signed-in OweJar apps."}},"/v1/books/{bookId}/insights":{"get":{"operationId":"getSpendingInsights","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpendingInsights"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Read-only spending aggregates for an inclusive local-date range in the book time zone (at most 1830 days), with the previous period of the same length: whole calendar months compare with the same number of months before, other ranges with the same number of days. Amounts are exact minor-unit strings of your own share per currency, never added across currencies: private self shares exactly as the expense view summary counts them, plus your share of group expenses after your refunds (voided expenses count zero, archived groups included) when the caller may read shared history. Also returns months, categories, groups, bills paid and current private balances with people. Private cloud authorization and Pro requirements apply."}},"/v1/books/{bookId}/agenda":{"get":{"operationId":"getAgenda","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"},"description":"Inclusive local date in the book time zone; default 30 days before today."},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"},"description":"Inclusive local date in the book time zone; default 14 days after today. At most 366 days after from."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":200}},{"name":"sections","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated sections to read: trackers, entries, reminders, recurring, groups, projection. Default all; leave out groups to skip reading groups."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Agenda"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Read-only: what needs attention in the private book. Items merge unpaid bill and unrecorded delivery dates (every open date up to today and the next one per rule), entries with a due date that are still owed (no lower bound), enabled reminders whose entry or share is still owed (repeating ones rolled to their next time) and recurring entries or expenses not yet created (at most 5 dates per rule), ordered by date, kind and id. Status is overdue, today, soon (within 7 days) or upcoming, by local date in the rule's or book's time zone. counts cover every item; truncated is true when more than limit exist. sections.trackers lists each bill and delivery with its status, open dates and next date; sections.groups counts what waits on you across groups when the caller may read shared history (not_permitted otherwise, unavailable on failure). projection (when that section is read) adds up the month ahead per currency: overdue and due-this-month amounts to pay, money expected back, interest open loans accrue until month end, and the dated lines behind them; currencies are never added together. Errors: agenda_invalid_date, agenda_invalid_range, agenda_range_too_large, invalid_agenda_section. Nothing is materialized, settled or acknowledged. Private cloud authorization and Pro requirements apply."}},"/v1/books/{bookId}/people":{"get":{"operationId":"list_people","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"},"description":"Case-insensitive text search: the name for people and categories, the note or person name for entries, the note, category or split person name for expenses, the note for expense rules, bills and deliveries."},{"name":"balance","in":"query","required":false,"schema":{"type":"string","enum":["owed_to_you","you_owe","outstanding","settled"]},"description":"Filter by the signed full-ledger person balance before cursor pagination. Combines with q. Omit to include all active people."},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["created_desc","created_asc","name_asc","name_desc","owed_to_you_desc","you_owe_desc","net_desc","net_asc","recent"],"default":"created_desc"},"description":"Page order; the first value is the default. Cursors are bound to the sort: a different sort with an old cursor returns cursor_context_mismatch, and an unknown sort unsupported_sort with details.supported."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PeopleRecordPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"create_people","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"name":{"type":"string","minLength":1,"maxLength":500},"category":{"type":"string","maxLength":100,"nullable":true},"phoneRaw":{"type":"string","maxLength":10000,"nullable":true},"phoneNormalized":{"type":"string","maxLength":10000,"nullable":true},"countryCode":{"type":"string","maxLength":3,"nullable":true},"note":{"type":"string","maxLength":10000,"nullable":true},"sourceType":{"type":"string","enum":["manual","contact"]},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true}},"required":["id","name"],"additionalProperties":false}}}}}},"/v1/books/{bookId}/people/{id}":{"get":{"operationId":"get_people","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"update_people","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"If-Match","in":"header","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":500},"category":{"type":"string","maxLength":100,"nullable":true},"phoneRaw":{"type":"string","maxLength":10000,"nullable":true},"phoneNormalized":{"type":"string","maxLength":10000,"nullable":true},"countryCode":{"type":"string","maxLength":3,"nullable":true},"note":{"type":"string","maxLength":10000,"nullable":true},"sourceType":{"type":"string","enum":["manual","contact"]},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true}},"additionalProperties":false}}}}},"delete":{"operationId":"delete_people","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"If-Match","in":"header","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/entries":{"get":{"operationId":"list_entries","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"},"description":"Case-insensitive text search: the name for people and categories, the note or person name for entries, the note, category or split person name for expenses, the note for expense rules, bills and deliveries."},{"name":"from","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Earliest date, inclusive epoch milliseconds."},{"name":"to","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Latest date, inclusive epoch milliseconds."},{"name":"dueBefore","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Latest due date, inclusive epoch milliseconds."},{"name":"dueAfter","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Earliest due date, inclusive epoch milliseconds."},{"name":"hasDueDate","in":"query","required":false,"schema":{"type":"string","enum":["1","0"]},"description":"1: only entries with a due date; 0: only entries without one."},{"name":"outstanding","in":"query","required":false,"schema":{"type":"string","enum":["1"]},"description":"1: only entries still owed (not settled, not repayment records)."},{"name":"personId","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"direction","in":"query","required":false,"schema":{"type":"string"}},{"name":"recurringRuleId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["date_desc","date_asc","amount_desc","amount_asc","due_date_asc","due_date_desc"],"default":"date_desc"},"description":"Page order; the first value is the default. Cursors are bound to the sort: a different sort with an old cursor returns cursor_context_mismatch, and an unknown sort unsupported_sort with details.supported."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"create_entries","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"personId":{"type":"string","minLength":1,"maxLength":512},"direction":{"type":"string","enum":["gave","got"]},"kind":{"type":"string","enum":["money"]},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"dueDate":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds.","nullable":true},"note":{"type":"string","maxLength":10000,"nullable":true},"recurringRuleId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"recurringOccurrenceLocalDate":{"type":"string","nullable":true},"interestRateBps":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":9007199254740991,"description":"Annual simple interest in basis points: 1800 means 18% yearly. Interest accrues daily on unpaid principal using actual calendar days/365, without compounding.","nullable":true},"interestTimeZone":{"type":"string","maxLength":100,"nullable":true}},"required":["id","personId","direction","amountMinor","currency","date"],"additionalProperties":false}}}}}},"/v1/books/{bookId}/entries/{id}":{"get":{"operationId":"get_entries","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"update_entries","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"If-Match","in":"header","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"personId":{"type":"string","minLength":1,"maxLength":512},"direction":{"type":"string","enum":["gave","got"]},"kind":{"type":"string","enum":["money"]},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"dueDate":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds.","nullable":true},"note":{"type":"string","maxLength":10000,"nullable":true},"recurringRuleId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"recurringOccurrenceLocalDate":{"type":"string","nullable":true},"interestRateBps":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":9007199254740991,"description":"Annual simple interest in basis points: 1800 means 18% yearly. Interest accrues daily on unpaid principal using actual calendar days/365, without compounding.","nullable":true},"interestTimeZone":{"type":"string","maxLength":100,"nullable":true}},"additionalProperties":false}}}}},"delete":{"operationId":"delete_entries","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"If-Match","in":"header","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/expenses":{"get":{"operationId":"list_expenses","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"},"description":"Case-insensitive text search: the name for people and categories, the note or person name for entries, the note, category or split person name for expenses, the note for expense rules, bills and deliveries."},{"name":"from","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Earliest date, inclusive epoch milliseconds."},{"name":"to","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Latest date, inclusive epoch milliseconds."},{"name":"categoryId","in":"query","required":false,"schema":{"type":"string"}},{"name":"subcategoryId","in":"query","required":false,"schema":{"type":"string"}},{"name":"mode","in":"query","required":false,"schema":{"type":"string"}},{"name":"recurringRuleId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["date_desc","date_asc","amount_desc","amount_asc"],"default":"date_desc"},"description":"Page order; the first value is the default. Cursors are bound to the sort: a different sort with an old cursor returns cursor_context_mismatch, and an unknown sort unsupported_sort with details.supported."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"create_expenses","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"totalAmountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"mode":{"type":"string","enum":["personal","split"]},"splitMethod":{"type":"string","enum":["equal","exact","percentage"],"nullable":true},"categoryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"subcategoryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"note":{"type":"string","maxLength":10000,"nullable":true},"quantity":{"type":"number","exclusiveMinimum":true,"minimum":0,"nullable":true},"unit":{"type":"string","maxLength":100,"nullable":true},"origin":{"type":"string","enum":["manual","recurring","bill","delivery"]},"recurringRuleId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"recurringOccurrenceLocalDate":{"type":"string","nullable":true},"shares":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"personId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"isSelf":{"type":"boolean"},"shareAmountMinor":{"type":"string"},"sharePercentage":{"type":"number","minimum":0,"maximum":100,"nullable":true},"role":{"type":"string","enum":["self_expense","receivable"]}},"required":["id","isSelf","shareAmountMinor","role"],"additionalProperties":false},"minItems":1,"maxItems":500}},"required":["id","totalAmountMinor","currency","mode","date","shares"],"additionalProperties":false}}}}}},"/v1/books/{bookId}/expenses/{id}":{"get":{"operationId":"get_expenses","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"update_expenses","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"If-Match","in":"header","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"totalAmountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"mode":{"type":"string","enum":["personal","split"]},"splitMethod":{"type":"string","enum":["equal","exact","percentage"],"nullable":true},"categoryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"subcategoryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"note":{"type":"string","maxLength":10000,"nullable":true},"quantity":{"type":"number","exclusiveMinimum":true,"minimum":0,"nullable":true},"unit":{"type":"string","maxLength":100,"nullable":true},"origin":{"type":"string","enum":["manual","recurring","bill","delivery"]},"recurringRuleId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"recurringOccurrenceLocalDate":{"type":"string","nullable":true},"shares":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"personId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"isSelf":{"type":"boolean"},"shareAmountMinor":{"type":"string"},"sharePercentage":{"type":"number","minimum":0,"maximum":100,"nullable":true},"role":{"type":"string","enum":["self_expense","receivable"]}},"required":["id","isSelf","shareAmountMinor","role"],"additionalProperties":false},"minItems":1,"maxItems":500}},"additionalProperties":false}}}}},"delete":{"operationId":"delete_expenses","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"If-Match","in":"header","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/shares":{"get":{"operationId":"list_shares","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"personId","in":"query","required":false,"schema":{"type":"string"}},{"name":"status","in":"query","required":false,"schema":{"type":"string"}},{"name":"spendEventId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["created_desc","created_asc","amount_desc","amount_asc"],"default":"created_desc"},"description":"Page order; the first value is the default. Cursors are bound to the sort: a different sort with an old cursor returns cursor_context_mismatch, and an unknown sort unsupported_sort with details.supported."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/shares/{id}":{"get":{"operationId":"get_shares","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/settlements":{"get":{"operationId":"list_settlements","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"from","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Earliest date, inclusive epoch milliseconds."},{"name":"to","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"},"description":"Latest date, inclusive epoch milliseconds."},{"name":"entryId","in":"query","required":false,"schema":{"type":"string"}},{"name":"spendShareId","in":"query","required":false,"schema":{"type":"string"}},{"name":"reverseEntryId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["date_desc","date_asc","amount_desc","amount_asc"],"default":"date_desc"},"description":"Page order; the first value is the default. Cursors are bound to the sort: a different sort with an old cursor returns cursor_context_mismatch, and an unknown sort unsupported_sort with details.supported."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"recordSettlement","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"If-Match","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"entryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"spendShareId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"reverseEntryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"amountMinor":{"type":"string"},"interestAmountMinor":{"type":"string","description":"Interest portion of total cash paid. Omit for interest-first allocation on interest loans; equal to amountMinor for interest-only, or zero for principal-only. Advance interest is not allowed."},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"note":{"type":"string","maxLength":10000,"nullable":true}},"required":["id","amountMinor","date"],"additionalProperties":false}}}},"description":"Record cash already paid. Interest loans allocate interest first when interestAmountMinor is omitted; an explicit allocation preserves interest-only/principal-only payments. Send the repayment quote entryVersion as If-Match for interest loans. No funds are transferred. Native v1 compatibility: an authenticated native session with a device ID can replay settlement.record with both interestAmountMinor and all preconditions omitted as a principal-only payment. The current dated loan timeline, amount limits and capability gate still apply. Supplied allocations or preconditions retain entry-version checks; web, OAuth API and MCP omissions remain interest-first."}},"/v1/books/{bookId}/settlements/{id}":{"get":{"operationId":"get_settlements","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/categories":{"get":{"operationId":"list_categories","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"},"description":"Case-insensitive text search: the name for people and categories, the note or person name for entries, the note, category or split person name for expenses, the note for expense rules, bills and deliveries."},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["created_desc","created_asc","name_asc","name_desc"],"default":"created_desc"},"description":"Page order; the first value is the default. Cursors are bound to the sort: a different sort with an old cursor returns cursor_context_mismatch, and an unknown sort unsupported_sort with details.supported."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"create_categories","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"name":{"type":"string","minLength":1,"maxLength":200},"emoji":{"type":"string","maxLength":64}},"required":["id","name","emoji"],"additionalProperties":false}}}}}},"/v1/books/{bookId}/categories/{id}":{"get":{"operationId":"get_categories","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"update_categories","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"If-Match","in":"header","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"emoji":{"type":"string","maxLength":64}},"additionalProperties":false}}}}},"delete":{"operationId":"delete_categories","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"If-Match","in":"header","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/subcategories":{"get":{"operationId":"list_subcategories","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"},"description":"Case-insensitive text search: the name for people and categories, the note or person name for entries, the note, category or split person name for expenses, the note for expense rules, bills and deliveries."},{"name":"categoryId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["created_desc","created_asc","name_asc","name_desc"],"default":"created_desc"},"description":"Page order; the first value is the default. Cursors are bound to the sort: a different sort with an old cursor returns cursor_context_mismatch, and an unknown sort unsupported_sort with details.supported."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"create_subcategories","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"name":{"type":"string","minLength":1,"maxLength":200},"emoji":{"type":"string","maxLength":64},"categoryId":{"type":"string","minLength":1,"maxLength":512}},"required":["id","name","emoji","categoryId"],"additionalProperties":false}}}}}},"/v1/books/{bookId}/subcategories/{id}":{"get":{"operationId":"get_subcategories","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"update_subcategories","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"If-Match","in":"header","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":200},"emoji":{"type":"string","maxLength":64},"categoryId":{"type":"string","minLength":1,"maxLength":512}},"additionalProperties":false}}}}},"delete":{"operationId":"delete_subcategories","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"If-Match","in":"header","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/rules":{"get":{"operationId":"list_rules","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"personId","in":"query","required":false,"schema":{"type":"string"}},{"name":"direction","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["created_desc","created_asc","name_asc","name_desc","amount_desc","amount_asc"],"default":"created_desc"},"description":"Page order; the first value is the default. Cursors are bound to the sort: a different sort with an old cursor returns cursor_context_mismatch, and an unknown sort unsupported_sort with details.supported."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"create_rules","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"personId":{"type":"string","minLength":1,"maxLength":512},"direction":{"type":"string","enum":["gave","got"]},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"note":{"type":"string","maxLength":10000,"nullable":true},"startDateLocal":{"type":"string"},"endDateLocal":{"type":"string","nullable":true},"timeOfDayMinutes":{"type":"integer","minimum":0,"maximum":1439},"timeZone":{"type":"string","maxLength":100},"frequency":{"type":"string","enum":["daily","weekly","monthly","yearly"]},"interval":{"type":"integer","minimum":1,"maximum":999},"weekdays":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"maxItems":7},"monthlyDay":{"type":"integer","minimum":1,"maximum":31,"nullable":true},"yearlyMonth":{"type":"integer","minimum":1,"maximum":12,"nullable":true},"yearlyDay":{"type":"integer","minimum":1,"maximum":31,"nullable":true},"enabled":{"type":"boolean"},"autoCreateMissed":{"type":"boolean"},"resumeFromDateLocal":{"type":"string","nullable":true}},"required":["id","personId","direction","amountMinor","currency","startDateLocal","timeOfDayMinutes","timeZone","frequency","interval","weekdays","enabled"],"additionalProperties":false}}}}}},"/v1/books/{bookId}/rules/{id}":{"get":{"operationId":"get_rules","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"update_rules","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"If-Match","in":"header","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"personId":{"type":"string","minLength":1,"maxLength":512},"direction":{"type":"string","enum":["gave","got"]},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"note":{"type":"string","maxLength":10000,"nullable":true},"startDateLocal":{"type":"string"},"endDateLocal":{"type":"string","nullable":true},"timeOfDayMinutes":{"type":"integer","minimum":0,"maximum":1439},"timeZone":{"type":"string","maxLength":100},"frequency":{"type":"string","enum":["daily","weekly","monthly","yearly"]},"interval":{"type":"integer","minimum":1,"maximum":999},"weekdays":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"maxItems":7},"monthlyDay":{"type":"integer","minimum":1,"maximum":31,"nullable":true},"yearlyMonth":{"type":"integer","minimum":1,"maximum":12,"nullable":true},"yearlyDay":{"type":"integer","minimum":1,"maximum":31,"nullable":true},"enabled":{"type":"boolean"},"autoCreateMissed":{"type":"boolean"},"resumeFromDateLocal":{"type":"string","nullable":true}},"additionalProperties":false}}}}},"delete":{"operationId":"delete_rules","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"If-Match","in":"header","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/expense-rules":{"get":{"operationId":"list_expense_rules","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"},"description":"Case-insensitive text search: the name for people and categories, the note or person name for entries, the note, category or split person name for expenses, the note for expense rules, bills and deliveries."},{"name":"personId","in":"query","required":false,"schema":{"type":"string"}},{"name":"categoryId","in":"query","required":false,"schema":{"type":"string"}},{"name":"subcategoryId","in":"query","required":false,"schema":{"type":"string"}},{"name":"trackingMode","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["created_desc","created_asc","name_asc","name_desc","amount_desc","amount_asc"],"default":"created_desc"},"description":"Page order; the first value is the default. Cursors are bound to the sort: a different sort with an old cursor returns cursor_context_mismatch, and an unknown sort unsupported_sort with details.supported."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"create_expense_rules","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"trackingMode":{"type":"string","enum":["expense","bill","delivery"]},"amountMinor":{"type":"string","nullable":true},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"note":{"type":"string","maxLength":10000,"nullable":true},"personId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"categoryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"subcategoryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"notifyOnDue":{"type":"boolean"},"deliveryQuantity":{"type":"number","exclusiveMinimum":true,"minimum":0,"nullable":true},"deliveryUnit":{"type":"string","maxLength":100,"nullable":true},"startDateLocal":{"type":"string"},"endDateLocal":{"type":"string","nullable":true},"timeOfDayMinutes":{"type":"integer","minimum":0,"maximum":1439},"timeZone":{"type":"string","maxLength":100},"frequency":{"type":"string","enum":["daily","weekly","monthly","yearly"]},"interval":{"type":"integer","minimum":1,"maximum":999},"weekdays":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"maxItems":7},"monthlyDay":{"type":"integer","minimum":1,"maximum":31,"nullable":true},"yearlyMonth":{"type":"integer","minimum":1,"maximum":12,"nullable":true},"yearlyDay":{"type":"integer","minimum":1,"maximum":31,"nullable":true},"enabled":{"type":"boolean"},"autoCreateMissed":{"type":"boolean"},"resumeFromDateLocal":{"type":"string","nullable":true}},"required":["id","trackingMode","amountMinor","currency","startDateLocal","timeOfDayMinutes","timeZone","frequency","interval","weekdays","enabled"],"additionalProperties":false}}}}}},"/v1/books/{bookId}/expense-rules/{id}":{"get":{"operationId":"get_expense_rules","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"update_expense_rules","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"If-Match","in":"header","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"trackingMode":{"type":"string","enum":["expense","bill","delivery"]},"amountMinor":{"type":"string","nullable":true},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"note":{"type":"string","maxLength":10000,"nullable":true},"personId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"categoryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"subcategoryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"notifyOnDue":{"type":"boolean"},"deliveryQuantity":{"type":"number","exclusiveMinimum":true,"minimum":0,"nullable":true},"deliveryUnit":{"type":"string","maxLength":100,"nullable":true},"startDateLocal":{"type":"string"},"endDateLocal":{"type":"string","nullable":true},"timeOfDayMinutes":{"type":"integer","minimum":0,"maximum":1439},"timeZone":{"type":"string","maxLength":100},"frequency":{"type":"string","enum":["daily","weekly","monthly","yearly"]},"interval":{"type":"integer","minimum":1,"maximum":999},"weekdays":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"maxItems":7},"monthlyDay":{"type":"integer","minimum":1,"maximum":31,"nullable":true},"yearlyMonth":{"type":"integer","minimum":1,"maximum":12,"nullable":true},"yearlyDay":{"type":"integer","minimum":1,"maximum":31,"nullable":true},"enabled":{"type":"boolean"},"autoCreateMissed":{"type":"boolean"},"resumeFromDateLocal":{"type":"string","nullable":true}},"additionalProperties":false}}}}},"delete":{"operationId":"delete_expense_rules","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"If-Match","in":"header","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/rule-exceptions":{"get":{"operationId":"list_rule_exceptions","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"recurringRuleId","in":"query","required":false,"schema":{"type":"string"}},{"name":"occurrenceLocalDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["created_desc"],"default":"created_desc"},"description":"Page order; the first value is the default. Cursors are bound to the sort: a different sort with an old cursor returns cursor_context_mismatch, and an unknown sort unsupported_sort with details.supported."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/rule-exceptions/{id}":{"get":{"operationId":"get_rule_exceptions","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/expense-rule-exceptions":{"get":{"operationId":"list_expense_rule_exceptions","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"recurringRuleId","in":"query","required":false,"schema":{"type":"string"}},{"name":"occurrenceLocalDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["created_desc"],"default":"created_desc"},"description":"Page order; the first value is the default. Cursors are bound to the sort: a different sort with an old cursor returns cursor_context_mismatch, and an unknown sort unsupported_sort with details.supported."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/expense-rule-exceptions/{id}":{"get":{"operationId":"get_expense_rule_exceptions","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/bill-amount-overrides":{"get":{"operationId":"list_bill_amount_overrides","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"recurringRuleId","in":"query","required":false,"schema":{"type":"string"}},{"name":"occurrenceLocalDate","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["created_desc"],"default":"created_desc"},"description":"Page order; the first value is the default. Cursors are bound to the sort: a different sort with an old cursor returns cursor_context_mismatch, and an unknown sort unsupported_sort with details.supported."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/bill-amount-overrides/{id}":{"get":{"operationId":"get_bill_amount_overrides","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/reminders":{"get":{"operationId":"list_reminders","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"entityType","in":"query","required":false,"schema":{"type":"string"}},{"name":"entityId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["created_desc","created_asc","next_trigger_asc","next_trigger_desc"],"default":"created_desc"},"description":"Page order; the first value is the default. Cursors are bound to the sort: a different sort with an old cursor returns cursor_context_mismatch, and an unknown sort unsupported_sort with details.supported."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"create_reminders","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"entityType":{"type":"string","enum":["entry","spend_share"]},"entityId":{"type":"string","minLength":1,"maxLength":512},"type":{"type":"string","enum":["one_time","recurring"]},"recurrence":{"type":"string","enum":["daily","weekly","monthly"],"nullable":true},"interval":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":10000},"nextTriggerAt":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"enabled":{"type":"boolean"},"messageKey":{"type":"string","minLength":1,"maxLength":200},"messageParams":{"type":"object","additionalProperties":{}}},"required":["id","entityType","entityId","type","nextTriggerAt","enabled","messageKey"],"additionalProperties":false}}}}}},"/v1/books/{bookId}/reminders/{id}":{"get":{"operationId":"get_reminders","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"update_reminders","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"If-Match","in":"header","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"entityType":{"type":"string","enum":["entry","spend_share"]},"entityId":{"type":"string","minLength":1,"maxLength":512},"type":{"type":"string","enum":["one_time","recurring"]},"recurrence":{"type":"string","enum":["daily","weekly","monthly"],"nullable":true},"interval":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":10000},"nextTriggerAt":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"enabled":{"type":"boolean"},"messageKey":{"type":"string","minLength":1,"maxLength":200},"messageParams":{"type":"object","additionalProperties":{}}},"additionalProperties":false}}}}},"delete":{"operationId":"delete_reminders","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"If-Match","in":"header","required":true,"schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/activity":{"get":{"operationId":"list_activity","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"entityType","in":"query","required":false,"schema":{"type":"string"}},{"name":"entityId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["created_desc"],"default":"created_desc"},"description":"Page order; the first value is the default. Cursors are bound to the sort: a different sort with an old cursor returns cursor_context_mismatch, and an unknown sort unsupported_sort with details.supported."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/activity/{id}":{"get":{"operationId":"get_activity","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/settings":{"get":{"operationId":"list_settings","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["key_desc"],"default":"key_desc"},"description":"Page order; the first value is the default. Cursors are bound to the sort: a different sort with an old cursor returns cursor_context_mismatch, and an unknown sort unsupported_sort with details.supported."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/settings/{id}":{"get":{"operationId":"get_settings","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/bills":{"get":{"operationId":"list_bills","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"},"description":"Case-insensitive text search: the name for people and categories, the note or person name for entries, the note, category or split person name for expenses, the note for expense rules, bills and deliveries."},{"name":"personId","in":"query","required":false,"schema":{"type":"string"}},{"name":"categoryId","in":"query","required":false,"schema":{"type":"string"}},{"name":"subcategoryId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["created_desc","created_asc","name_asc","name_desc","amount_desc","amount_asc"],"default":"created_desc"},"description":"Page order; the first value is the default. Cursors are bound to the sort: a different sort with an old cursor returns cursor_context_mismatch, and an unknown sort unsupported_sort with details.supported."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/bills/{ruleId}/occurrences":{"get":{"operationId":"list_bills_occurrences","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"ruleId","in":"path","required":true,"schema":{"type":"string"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackedOccurrencesPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/deliveries":{"get":{"operationId":"list_deliveries","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"},"description":"Case-insensitive text search: the name for people and categories, the note or person name for entries, the note, category or split person name for expenses, the note for expense rules, bills and deliveries."},{"name":"personId","in":"query","required":false,"schema":{"type":"string"}},{"name":"categoryId","in":"query","required":false,"schema":{"type":"string"}},{"name":"subcategoryId","in":"query","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","enum":["created_desc","created_asc","name_asc","name_desc","amount_desc","amount_asc"],"default":"created_desc"},"description":"Page order; the first value is the default. Cursors are bound to the sort: a different sort with an old cursor returns cursor_context_mismatch, and an unknown sort unsupported_sort with details.supported."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/deliveries/{ruleId}/occurrences":{"get":{"operationId":"list_deliveries_occurrences","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"ruleId","in":"path","required":true,"schema":{"type":"string"}},{"name":"from","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","format":"date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrackedOccurrencesPage"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/books/{bookId}/entries/{id}/repayment-quote":{"post":{"operationId":"quoteLoanRepayment","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RepaymentQuote"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"amountMinor":{"type":"string"},"interestAmountMinor":{"type":"string"},"proposedTerms":{"type":"object","properties":{"amountMinor":{"type":"string"},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"interestRateBps":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":9007199254740991,"description":"Annual simple interest in basis points: 1800 means 18% yearly. Interest accrues daily on unpaid principal using actual calendar days/365, without compounding.","nullable":true},"interestTimeZone":{"type":"string","maxLength":100,"nullable":true}},"additionalProperties":false}},"additionalProperties":false}}}},"description":"Read-only exact loan balance and payment allocation on a selected date. Omit amount for full payoff, including a zero quote for settled loans. proposedTerms previews retroactive corrections without changing receipts and rejects overpayments at any recorded payment date. Simple daily actual/365 interest on unpaid principal; no compounding or advance interest."}},"/v1/me/entitlement":{"get":{"operationId":"get_entitlement","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/me/entitlement/reconcile":{"post":{"operationId":"post_entitlement_reconcile","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/v1/me/clients":{"get":{"operationId":"get_clients","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/me/clients/{clientId}":{"delete":{"operationId":"delete_clients__clientId_","parameters":[{"name":"clientId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/me/devices":{"get":{"operationId":"listNativeDevices","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NativeDevicesResponse"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"The caller's registered native devices and their latest advertised capabilities. A missing advertisement is incompatible for new interest enablement."},"post":{"operationId":"post_devices","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/v1/me/confirmations":{"get":{"operationId":"get_confirmations","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/me/confirmations/{id}/approve":{"post":{"operationId":"post_confirmations__id__approve","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/v1/me/recurrence/preview":{"post":{"operationId":"post_recurrence_preview","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/v1/me/recurrence/resume":{"post":{"operationId":"post_recurrence_resume","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}},"/v1/me/account":{"delete":{"operationId":"delete_account","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/me/sign-in-methods":{"get":{"operationId":"getSignInMethods","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"google":{"type":"object","properties":{"available":{"type":"boolean"},"connected":{"type":"boolean"},"accounts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"}},"required":["id","email"],"additionalProperties":false},"description":"Connected Google accounts, oldest first. email is the address Google reported, which can differ from the OweJar account email."}},"required":["available","connected","accounts"],"additionalProperties":false}},"required":["google"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Sign-in methods for the signed-in account. Email codes always work for the account address. google.available is false when the server has no Google credentials and for the shared demo account. Connect Google with Better Auth POST /api/auth/link-social (provider google; no other provider can be linked). The Google account needs a verified email, which may differ from the OweJar account email but must not be the email of, or a Google address connected to, another OweJar account (error google_email_in_use). A connected address cannot start a new account (email_used_for_google_sign_in). google.accounts lists each connected address."}},"/v1/me/sign-in-methods/google/{id}":{"delete":{"operationId":"disconnectGoogle","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Origin","in":"header","required":false,"schema":{"type":"string"},"description":"Must exactly match the configured public origin when a browser cookie is sent."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"disconnected":{"type":"boolean","enum":[true]}},"required":["disconnected"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Disconnect one of this account's Google accounts (an id from GET /v1/me/sign-in-methods). Requires sign-in within ten minutes (fresh_sign_in_required) and the exact Origin for browser cookies. Email codes for the account address keep working; the Google address can then start or connect elsewhere. 404 sign_in_method_not_found when it is not connected to this account."}},"/v1/public/access":{"get":{"operationId":"getPublicAccess","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"mode":{"type":"string","enum":["free","subscription"]},"google":{"type":"boolean"},"demo":{"type":"boolean","description":"The home page offers the one-click, read-only demo."}},"required":["mode","google","demo"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[],"description":"Public, unauthenticated. mode free: every account gets every feature on web, API and MCP (OWEJAR_ACCESS_MODE=free); subscription: private-book features need OweJar Pro and groups stay free. google: the sign-in page offers Continue with Google. The public home page uses it to describe plans and sign-in."}},"/v1/me/capabilities":{"get":{"operationId":"getAppCapabilities","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Authenticated action inventory for private books and shared groups, with MCP tool names, scopes and direct-user security/recovery handoffs. No Pro entitlement or financial record access is required."}},"/v1/me/images/prepare-delete":{"post":{"operationId":"prepareImageRemoval","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"bookId":{"type":"string","minLength":1,"maxLength":200},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(0|[1-9]\\d*)$","maxLength":19},"kind":{"type":"string","enum":["private","shared"]}},"required":["id","kind"],"additionalProperties":false}}}},"security":[{"oauthAccess":["payback:write","payback:read","payback:destructive"]},{"oauthAccess":["payback:shared:write","payback:shared:read","payback:destructive"]}],"description":"OAuth only. Review deletion of an owned, unreferenced private or shared image. Private kind requires owned activated bookId and private write/read; shared kind requires shared write/read. Both require destructive scope. Returns exact version/epoch-fenced command and a confirmation URL; the user must approve in OweJar. This preparation does not delete the image."}},"/v1/me/images/delete":{"post":{"operationId":"executeImageRemoval","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"kind":{"type":"string","enum":["private","shared"]},"command":{"type":"object","properties":{"operationId":{"type":"string","minLength":1,"maxLength":200},"id":{"type":"string","minLength":1,"maxLength":200},"bookId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(0|[1-9]\\d*)$","maxLength":19},"epoch":{"type":"string","minLength":1,"maxLength":200}},"required":["operationId","id","expectedVersion","epoch"],"additionalProperties":false},"confirmationId":{"type":"string","minLength":1,"maxLength":200}},"required":["kind","command","confirmationId"],"additionalProperties":false}}}},"security":[{"oauthAccess":["payback:write","payback:read","payback:destructive"]},{"oauthAccess":["payback:shared:write","payback:shared:read","payback:destructive"]}],"description":"Execute an exact user-approved image removal. Required scope set depends on kind as in preparation. Own image/book, reference, version, recovery epoch, client-bound approval and durable operation receipt are checked atomically. Reuse the exact command after an uncertain response. No financial records are changed and no money is transferred."}},"/v1/me/devices/{id}":{"delete":{"operationId":"forgetNativeDevice","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Origin","in":"header","required":true,"schema":{"type":"string"},"description":"Must exactly match the configured public origin, including before authentication. Authorization headers are rejected."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"forgotten":{"type":"boolean","enum":[true]}},"required":["forgotten"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"browserSession":[]},{"secureBrowserSession":[]}],"description":"Stop checking this device for updates. Requires a first-party browser cookie, exact Origin and sign-in within ten minutes. Removes only this account's registration metadata; it does not revoke authentication, erase financial records or change local device data. The device re-registers capabilities on its next authenticated native request and old binaries still cannot sync an interest ledger."}},"/v1/me/exchange-rate":{"get":{"operationId":"getExchangeRate","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Z]{3}$"}},{"name":"to","in":"query","required":true,"schema":{"type":"string","pattern":"^[A-Z]{3}$"}},{"name":"amountMinor","in":"query","required":false,"schema":{"type":"string","pattern":"^(?:0|[1-9][0-9]{0,17})$"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"from":{"type":"string","pattern":"^[A-Z]{3}$"},"to":{"type":"string","pattern":"^[A-Z]{3}$"},"rate":{"type":"string"},"date":{"type":"string"},"source":{"type":"string","enum":["market"]},"provider":{"type":"string"},"convertedMinor":{"type":"string"}},"required":["from","to","rate","date","source","provider"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Day rate between two currencies (units of to per unit of from) from a public provider, cached for six hours, with an optional exact conversion of a minor-unit amount (round half up). Use it for group expenses paid in another currency: send conversion {currency, amountMinor, rate, source:\"market\"} with totalAmountMinor set to convertedMinor. 503 exchange_rate_unavailable when the provider cannot be reached; enter a manual rate instead."}},"/v1/me/receipts/scan":{"post":{"operationId":"scanReceipt","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"merchant":{"type":"string","nullable":true},"date":{"type":"string","nullable":true},"currency":{"type":"string","pattern":"^[A-Z]{3}$","nullable":true},"totalMinor":{"type":"string","nullable":true},"items":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"quantity":{"type":"integer","exclusiveMinimum":true,"minimum":0,"nullable":true},"amountMinor":{"type":"string"}},"required":["name","quantity","amountMinor"],"additionalProperties":false}},"adjustmentMinor":{"type":"string"},"category":{"type":"string","nullable":true},"warnings":{"type":"array","items":{"type":"string"}}},"required":["merchant","date","currency","totalMinor","items","adjustmentMinor","category","warnings"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"image":{"type":"string","minLength":100,"maxLength":7000000,"pattern":"^[A-Za-z0-9+/=]+$"},"mediaType":{"type":"string","enum":["image/jpeg","image/png","image/webp"]},"currency":{"type":"string","pattern":"^[A-Z]{3}$"}},"required":["image","mediaType"],"additionalProperties":false}}}},"description":"Read a receipt or bill photo (base64 JPEG, PNG or WebP, up to about 5 MB) and return the shop, date, currency, total, items and the tax/service/tip minus discount adjustment as exact minor units, with warnings such as items_do_not_add_up. The image is sent to an AI service to be read and is not stored. Browser calls need the exact Origin. 503 receipt_scan_unavailable when the server has no reader configured (see /v3/shared/status receiptScanEnabled), 422 receipt_unreadable, 429 receipt_scan_rate_limited (30 per hour)."}},"/v1/me/notification-preferences":{"get":{"operationId":"getNotificationPreferences","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"activityEmail":{"type":"boolean","description":"Email about group activity that needs you: invitations, join requests, guest claims, payments to confirm or that were rejected, requests to undo a payment, disputes and payment reminders. Batched, at most one email every few minutes."},"digest":{"type":"string","enum":["off","daily","weekly"],"description":"Agenda digest by email: off, daily (each morning) or weekly (Monday mornings), in the book time zone. Lists what is overdue, due today and due within 7 days."},"email":{"type":"string","nullable":true,"description":"Where emails go: the account's sign-in email."},"emailAvailable":{"type":"boolean","description":"false when this server cannot send email; preferences are kept but nothing is sent."},"version":{"type":"string"}},"required":["activityEmail","digest","email","emailAvailable","version"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"The email column of GET /v1/me/notifications, kept for released clients: group activity (invitations, join requests, guest claims, payments to confirm or rejected, requests to undo a payment, disputes and payment reminders, batched per account and never repeated) and an opt-in daily or weekly agenda digest in the book time zone. emailAvailable is false when the server cannot send email. Delegated clients need payback:read."},"put":{"operationId":"updateNotificationPreferences","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"activityEmail":{"type":"boolean","description":"Email about group activity that needs you: invitations, join requests, guest claims, payments to confirm or that were rejected, requests to undo a payment, disputes and payment reminders. Batched, at most one email every few minutes."},"digest":{"type":"string","enum":["off","daily","weekly"],"description":"Agenda digest by email: off, daily (each morning) or weekly (Monday mornings), in the book time zone. Lists what is overdue, due today and due within 7 days."},"email":{"type":"string","nullable":true,"description":"Where emails go: the account's sign-in email."},"emailAvailable":{"type":"boolean","description":"false when this server cannot send email; preferences are kept but nothing is sent."},"version":{"type":"string"}},"required":["activityEmail","digest","email","emailAvailable","version"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"activityEmail":{"type":"boolean"},"digest":{"type":"string","enum":["off","daily","weekly"]}},"additionalProperties":false}}}},"description":"Change activityEmail, digest or both; omitted fields keep their value. Browser calls need the exact Origin. Delegated clients need payback:write."}},"/v1/me/notifications":{"get":{"operationId":"getNotificationSettings","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSettings"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Which notifications reach this account and where. choices has a row per kind (group_needs, group_activity, due, digest) and a column per channel (email, telegram, push; push covers every registered phone and browser). Also each channel's state (email address, linked Telegram chat, push devices) with the last successful send and the latest problem, and the 20 latest sends on any channel. Delegated clients need payback:read."},"put":{"operationId":"updateNotificationSettings","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSettings"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"choices":{"type":"object","properties":{"group_needs":{"type":"object","properties":{"email":{"type":"boolean"},"telegram":{"type":"boolean"},"push":{"type":"boolean"}},"additionalProperties":false},"group_activity":{"type":"object","properties":{"email":{"type":"boolean"},"telegram":{"type":"boolean"},"push":{"type":"boolean"}},"additionalProperties":false},"due":{"type":"object","properties":{"email":{"type":"boolean"},"telegram":{"type":"boolean"},"push":{"type":"boolean"}},"additionalProperties":false},"digest":{"type":"object","properties":{"email":{"type":"boolean"},"telegram":{"type":"boolean"},"push":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false},"digestFrequency":{"type":"string","enum":["daily","weekly"]},"pushDetails":{"type":"boolean"}},"additionalProperties":false}}}},"description":"Change any cells of choices, digestFrequency or pushDetails; everything omitted keeps its value. Browser calls need the exact Origin. Delegated clients need payback:write."}},"/v1/me/notifications/push-devices":{"post":{"operationId":"registerPushDevice","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSettings"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","enum":["web"]},"id":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{8,128}$"},"endpoint":{"type":"string","maxLength":2048},"keys":{"type":"object","properties":{"p256dh":{"type":"string","maxLength":200},"auth":{"type":"string","maxLength":100}},"required":["p256dh","auth"],"additionalProperties":false},"label":{"type":"string","maxLength":80},"automatic":{"type":"boolean","description":"true when the app re-registers on its own (on opening); refused with 409 push_device_removed after the person removed this device elsewhere. Leave out when the person turned push on."}},"required":["kind","id","endpoint","keys"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["expo"]},"id":{"type":"string","pattern":"^[A-Za-z0-9_.:-]{8,128}$"},"token":{"type":"string","pattern":"^Expo(?:nent)?PushToken\\[[^\\]\\s]{1,200}\\]$"},"platform":{"type":"string","enum":["ios","android"]},"label":{"type":"string","maxLength":80},"automatic":{"type":"boolean","description":"true when the app re-registers on its own (on opening); refused with 409 push_device_removed after the person removed this device elsewhere. Leave out when the person turned push on."}},"required":["kind","id","token","platform"],"additionalProperties":false}]}}}},"description":"Turn on push for this browser (kind web: the PushSubscription endpoint and keys, subscribed with push.webPublicKey) or this phone (kind expo: an Expo push token). The device is tied to the current sign-in and stops getting pushes when it signs out. Re-registering the same id replaces its old subscription. Send automatic:true when the app re-registers on its own; after the person removed the device elsewhere that is refused with 409 push_device_removed until they turn push on there again. Browser endpoints must belong to a browser push service. OweJar apps only (browser or phone session); delegated clients get 403 first_party_session_required."}},"/v1/me/notifications/push-devices/{id}":{"delete":{"operationId":"removePushDevice","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSettings"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Stop pushes to one phone or browser."}},"/v1/me/notifications/telegram":{"post":{"operationId":"createTelegramLink","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"Open this to start the bot in Telegram; pressing Start connects the chat."},"botUsername":{"type":"string"},"expiresAt":{"type":"number"}},"required":["url","botUsername","expiresAt"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"A one-time link (15 minutes) that opens the OweJar bot in Telegram; pressing Start there connects that chat to this account and replaces any earlier chat. 503 telegram_unavailable when the server has no bot. OweJar apps only (browser or phone session); delegated clients get 403 first_party_session_required."},"delete":{"operationId":"disconnectTelegram","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationSettings"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Disconnect the linked Telegram chat. Sending /stop to the bot does the same."}},"/v1/me/notifications/test":{"post":{"operationId":"sendTestNotification","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["results","settings"],"properties":{"results":{"type":"array","items":{"type":"object","properties":{"channel":{"type":"string","enum":["email","telegram","push"]},"target":{"type":"string","nullable":true},"status":{"type":"string","enum":["sent","failed"]},"error":{"type":"string","nullable":true}},"required":["channel","target","status","error"],"additionalProperties":false}},"settings":{"$ref":"#/components/schemas/NotificationSettings"}}}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"channel":{"type":"string","enum":["email","telegram","push"]},"deviceId":{"type":"string","maxLength":128}},"required":["channel"],"additionalProperties":false}}}},"description":"Send a test now by email, Telegram or push (every device, or one with deviceId) and report per target whether it was sent and why not. Ten tests per ten minutes (429 notification_test_rate_limited). 503 email_unavailable or telegram_unavailable when the server cannot use that channel; 409 telegram_not_connected or push_no_devices when it is not set up. OweJar apps only (browser or phone session); delegated clients get 403 first_party_session_required."}},"/v1/telegram/webhook":{"post":{"operationId":"receiveTelegramUpdate","parameters":[{"name":"X-Telegram-Bot-Api-Secret-Token","in":"header","required":true,"schema":{"type":"string"},"description":"TELEGRAM_WEBHOOK_SECRET."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"security":[],"description":"Telegram bot updates when TELEGRAM_WEBHOOK_SECRET is set (otherwise the worker polls and this answers 404). Handles /start <code> (connect) and /stop (disconnect)."}},"/v1/books/{bookId}/example-records":{"get":{"operationId":"getExampleRecords","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"bookId":{"type":"string"},"present":{"type":"boolean","description":"Whether any example records are still in the book."},"count":{"type":"integer","minimum":0,"description":"Example people, entries, expenses, bills, deliveries and reminders still in the book."}},"required":["bookId","present","count"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Whether the book still holds the removable example records and how many."},"post":{"operationId":"addExampleRecords","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"added":{"type":"integer","minimum":0},"status":{"type":"object","properties":{"bookId":{"type":"string"},"present":{"type":"boolean","description":"Whether any example records are still in the book."},"count":{"type":"integer","minimum":0,"description":"Example people, entries, expenses, bills, deliveries and reminders still in the book."}},"required":["bookId","present","count"],"additionalProperties":false}},"required":["added","status"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Add about a dozen example records (three example people, entries both ways, a personal expense, a split, a monthly bill, a daily delivery and a reminder) in the book currency and time zone. Every name ends in \"(example)\"; no interest loan. 409 example_records_present while examples remain. Needs payback:write."},"delete":{"operationId":"removeExampleRecords","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"removed":{"type":"integer","minimum":0},"kept":{"type":"integer","minimum":0,"description":"Example records left in place: ones you changed (for connected apps) or people who now have your own records."},"status":{"type":"object","properties":{"bookId":{"type":"string"},"present":{"type":"boolean","description":"Whether any example records are still in the book."},"count":{"type":"integer","minimum":0,"description":"Example people, entries, expenses, bills, deliveries and reminders still in the book."}},"required":["bookId","present","count"],"additionalProperties":false}},"required":["removed","kept","status"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Delete the example records in one action. In the OweJar apps every example goes, with anything recorded on the example bill or delivery; connected apps remove only examples nobody changed since they were added. Example people who now have the user's own records stay. Needs payback:write and payback:destructive; no confirmation link, since the user's own records are never touched."}},"/v1/me/web-book":{"post":{"operationId":"createWebBook","parameters":[{"name":"Origin","in":"header","required":true,"schema":{"type":"string"},"description":"Must exactly match the configured public origin, including before authentication. Authorization headers are rejected."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["book"],"properties":{"book":{"$ref":"#/components/schemas/Book"}}}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"timeZone":{"type":"string"}},"required":["currency","timeZone"],"additionalProperties":false}}}},"security":[{"browserSession":[]},{"secureBrowserSession":[]}],"description":"Pro first-party browser session only. Create an activated empty ledger with currency-derived money scale and a validated IANA timezone. Concurrent calls and retries return the same existing activated book without changing its settings. Existing unactivated mobile books must finish mobile setup; this endpoint never imports or overwrites phone data. Account/book metadata remains readable before purchase."}},"/v1/auth/demo-view":{"post":{"operationId":"startPublicDemo","parameters":[{"name":"Origin","in":"header","required":true,"schema":{"type":"string"},"description":"Must exactly match the configured public origin, including before authentication. Authorization headers are rejected."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"signedIn":{"type":"boolean","enum":[true]}},"required":["signedIn"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"additionalProperties":false}}}},"security":[],"description":"One click from the home page: signs this browser into the shared, read-only demo with fictional records (cookies only, no tokens). Requires the exact site Origin and JSON. 409 already_signed_in when another account is signed in; 503 demo_preparing with Retry-After while the demo is first set up; 404 when the operator turned the demo off. Demo sessions can read everything and save nothing: writes answer 403 demo_read_only."}},"/v1/auth/demo-login":{"post":{"operationId":"signInDemo","parameters":[{"name":"Origin","in":"header","required":true,"schema":{"type":"string"},"description":"Must exactly match the configured public origin, including before authentication. Authorization headers are rejected."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"signedIn":{"type":"boolean","enum":[true]}},"required":["signedIn"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"username":{"type":"string","minLength":1,"maxLength":200},"password":{"type":"string","minLength":1,"maxLength":1024}},"required":["username","password"],"additionalProperties":false}}}},"security":[],"description":"Password sign-in only for the operator-provisioned shared synthetic reviewer account. Exact Origin and JSON are required; bearer/mixed authentication is rejected. Rate limited. Issues an independent HttpOnly browser session cookie and returns no authentication token. The public form is at /review/sign-in, separate from ordinary email signup. A browser signed in to a different account must sign out first."}},"/v1/auth/qr-login":{"post":{"operationId":"startQrLogin","parameters":[{"name":"Origin","in":"header","required":true,"schema":{"type":"string"},"description":"Must exactly match the configured public origin, including before authentication. Authorization headers are rejected."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrStartResponse"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrStartRequest"}}}},"security":[],"description":"Create a five-minute QR sign-in request and set an HttpOnly browser-binding cookie. Disabled unless QR_SIGN_IN_ENABLED=true; rate limited. The QR contains a separate approval secret, never a session token."}},"/v1/auth/qr-login/{id}/status":{"post":{"operationId":"statusQrLogin","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Origin","in":"header","required":true,"schema":{"type":"string"},"description":"Must exactly match the configured public origin, including before authentication. Authorization headers are rejected."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrStatusResponse"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"qrBrowserBinding":[]},{"qrDevelopmentBinding":[]}],"description":"Requires the browser-binding cookie that created this request. Expired or terminal requests cannot be approved again."}},"/v1/auth/qr-login/{id}/complete":{"post":{"operationId":"completeQrLogin","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Origin","in":"header","required":true,"schema":{"type":"string"},"description":"Must exactly match the configured public origin, including before authentication. Authorization headers are rejected."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrCompleteResponse"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"qrBrowserBinding":[]},{"qrDevelopmentBinding":[]}],"description":"Consume approval and issue an independent browser session cookie. Identical bound retries for 60 seconds reuse the same active session. Response contains no bearer token."}},"/v1/auth/qr-login/{id}/cancel":{"post":{"operationId":"cancelQrLogin","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"Origin","in":"header","required":true,"schema":{"type":"string"},"description":"Must exactly match the configured public origin, including before authentication. Authorization headers are rejected."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrCancelResponse"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"qrBrowserBinding":[]},{"qrDevelopmentBinding":[]}],"description":"Requires the browser-binding cookie that created this request. Expired or terminal requests cannot be approved again."}},"/v1/me/qr-login/inspect":{"post":{"operationId":"inspectNativeQrLogin","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrNativeInspectResponse"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrNativeInspectRequest"}}}},"security":[{"bearerAuth":[]}],"description":"Native opaque bearer session only; cookie, mixed, and OAuth authentication are rejected. Validate QR origin in the mobile app before sending the scan. Inspection never approves sign-in; decisions require the expected account."}},"/v1/me/qr-login/approve":{"post":{"operationId":"approveNativeQrLogin","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrApproveResponse"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrNativeDecisionRequest"}}}},"security":[{"bearerAuth":[]}],"description":"Native opaque bearer session only; cookie, mixed, and OAuth authentication are rejected. Validate QR origin in the mobile app before sending the scan. Inspection never approves sign-in; decisions require the expected account."}},"/v1/me/qr-login/deny":{"post":{"operationId":"denyNativeQrLogin","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrDenyResponse"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QrNativeDecisionRequest"}}}},"security":[{"bearerAuth":[]}],"description":"Native opaque bearer session only; cookie, mixed, and OAuth authentication are rejected. Validate QR origin in the mobile app before sending the scan. Inspection never approves sign-in; decisions require the expected account."}},"/v3/shared/status":{"get":{"operationId":"getSharedV3Availability","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedV3Availability"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v3/shared/capabilities":{"post":{"operationId":"registerSharedV3Capabilities","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"capabilities":{"type":"array","items":{"type":"string"},"maxItems":20}},"required":["capabilities"],"additionalProperties":false}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v3/shared/clients":{"get":{"operationId":"listSharedV3Clients","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v3/shared/clients/retire":{"post":{"operationId":"retireSharedV3Client","parameters":[{"name":"Origin","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"clientKey":{"type":"string"},"reviewed":{"type":"boolean","enum":[true]}},"required":["clientKey","reviewed"],"additionalProperties":false}}}},"description":"Explicitly retire a reviewed compatibility registration using a same-origin browser session created within ten minutes. Does not revoke authentication. Returning clients are registered again.","security":[{"browserSession":[]},{"secureBrowserSession":[]}]}},"/v3/shared/private-person-links":{"get":{"operationId":"listPrivateParticipantPersonLinks","parameters":[{"name":"bookId","in":"query","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Required for first-party browser/native sessions and must match their account. Optional for OAuth API clients; a supplied mismatch is rejected."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional current recovery epoch; a supplied mismatch is rejected before reading."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["links"],"properties":{"links":{"type":"array","items":{"type":"object","properties":{"bookId":{"type":"string"},"spaceId":{"type":"string"},"participantId":{"type":"string"},"personId":{"type":"string","nullable":true},"version":{"type":"string"},"updatedAt":{"type":"number"},"personAvailable":{"type":"boolean"}},"required":["bookId","spaceId","participantId","personId","version","updatedAt","personAvailable"],"additionalProperties":false}}}}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"browserSession":[]},{"secureBrowserSession":[]},{"nativeSession":[]},{"oauthAccess":["payback:read","payback:shared:read"]}],"description":"Owner-private group participant associations for an owned activated private book. Browser cookies and opaque native sessions may read. OAuth API clients require BOTH payback:read and payback:shared:read. Mixed cookie/bearer authentication is rejected. Links stay absent from group snapshots; no financial records are copied or merged."},"post":{"operationId":"linkPrivateParticipantPerson","parameters":[{"name":"Origin","in":"header","required":false,"schema":{"type":"string"},"description":"Required and must match the public origin for browser writes; optional for OAuth API writes. Mixed cookie/bearer authentication is rejected."},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Required for first-party sessions; optional for OAuth API. A supplied value must match the authenticated owner."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Required current recovery epoch for browser writes; optional for OAuth API. A supplied mismatch is rejected. OAuth execute commands must retain the body epoch from preparation."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operationId":{"type":"string","minLength":1,"maxLength":200},"bookId":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"participantId":{"type":"string","minLength":1,"maxLength":200},"personId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"expectedVersion":{"type":"string","pattern":"^(0|[1-9]\\d*)$","maxLength":19},"epoch":{"type":"string","minLength":1,"maxLength":200},"expectedPersonCreatedAt":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["operationId","bookId","spaceId","participantId","personId","expectedVersion"],"additionalProperties":false}}}},"security":[{"browserSession":[]},{"secureBrowserSession":[]},{"oauthAccess":["payback:write","payback:read","payback:shared:read"]}],"description":"Link or unlink a guest/member to an existing active private Person in an owned activated book. OAuth requires payback:write, payback:read and payback:shared:read. First-party browser guards are preserved; native writes remain unavailable. Execute the exact command from preparation: OAuth requires its body epoch and, when linking, expectedPersonCreatedAt. Reuse the exact operationId/body after an uncertain response; inspect accepted/conflict/rejected even on HTTP 200. Expected version 0 creates a link; null personId unlinks. Does not change group identity, financial balances, membership or private/group records."}},"/v3/shared/private-person-links/prepare":{"post":{"operationId":"preparePrivateParticipantPersonLink","parameters":[{"name":"Origin","in":"header","required":false,"schema":{"type":"string"},"description":"Required and must match the public origin for browser writes; optional for OAuth API writes. Mixed cookie/bearer authentication is rejected."},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Required for first-party sessions; optional for OAuth API. A supplied value must match the authenticated owner."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Required current recovery epoch for browser writes; optional for OAuth API. A supplied mismatch is rejected. OAuth execute commands must retain the body epoch from preparation."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operationId":{"type":"string","minLength":1,"maxLength":200},"bookId":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"participantId":{"type":"string","minLength":1,"maxLength":200},"personId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"expectedVersion":{"type":"string","pattern":"^(0|[1-9]\\d*)$","maxLength":19}},"required":["bookId","spaceId","participantId","personId"],"additionalProperties":false}}}},"security":[{"browserSession":[]},{"secureBrowserSession":[]},{"oauthAccess":["payback:write","payback:read","payback:shared:read"]}],"description":"Read-only preview of your explicit participant/private Person selection. Returns exact command with generated operationId, current link version, recovery epoch and target Person incarnation. Matching names never select a Person implicitly. No record, notification or financial change is made."}},"/v3/shared/private-person-links/operations/{id}":{"get":{"operationId":"getPrivateParticipantPersonLinkOperation","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"bookId","in":"query","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"browserSession":[]},{"secureBrowserSession":[]},{"nativeSession":[]},{"oauthAccess":["payback:read","payback:shared:read"]}],"description":"Read your durable accepted/conflict/rejected result after an uncertain private link response. Requires owned activated book and both OAuth read scopes. Does not re-execute the operation."}},"/v3/shared/commands":{"post":{"operationId":"executeSharedV3Command","parameters":[{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedMutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedV3Command"}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v3/shared/commands/prepare":{"post":{"operationId":"prepareSharedV3Command","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedV3Command"}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v3/shared/sync/snapshot":{"get":{"operationId":"getSharedV3Snapshot","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedV3Snapshot"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v3/shared/sync/changes":{"get":{"operationId":"getSharedV3Changes","parameters":[{"name":"after","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedV3Changes"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v3/shared/sync/ack":{"post":{"operationId":"ackSharedV3Sync","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedSyncAck"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedSyncAck"}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v3/shared/sync/push":{"post":{"operationId":"pushSharedV3Commands","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"commands":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["profile.set"]},"payload":{"type":"object","properties":{"displayName":{"type":"string","minLength":1,"maxLength":100},"enabled":{"type":"boolean"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"upiId":{"type":"string","pattern":"^[A-Za-z0-9._-]{2,100}@[A-Za-z0-9.-]{2,80}$","nullable":true},"paypalMe":{"type":"string","format":"uri","nullable":true},"upiQrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["displayName","enabled"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["profile.rotate"]},"payload":{"type":"object","properties":{},"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.request"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"resolutionId":{"type":"string","minLength":1,"maxLength":200}},"required":["id","resolutionId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.accept"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.reject"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.block"]},"payload":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"blocked":{"type":"boolean"}},"required":["accountId","blocked"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.linkPerson"]},"payload":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"personId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["accountId","personId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","enum":["direct","group"]},"name":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200},"defaultCurrency":{"type":"string","pattern":"^[A-Z]{3}$"},"defaultSplitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"defaultWeights":{"type":"object","additionalProperties":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"simplifyDebts":{"type":"boolean"}},"required":["id","kind","name"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.update"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string","minLength":1,"maxLength":200},"defaultCurrency":{"type":"string","pattern":"^[A-Z]{3}$"},"defaultSplitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"defaultWeights":{"type":"object","additionalProperties":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"simplifyDebts":{"type":"boolean"}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.archive"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"archived":{"type":"boolean"}},"required":["spaceId","archived"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.archiveForMe"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"archived":{"type":"boolean"}},"required":["spaceId","archived"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.mute"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"muted":{"type":"boolean"}},"required":["spaceId","muted"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.leave"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200}},"required":["spaceId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["membership.role"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200},"role":{"type":"string","enum":["admin","member"]}},"required":["spaceId","accountId","role"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200}},"required":["id","spaceId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.accept"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.reject"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.revoke"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.requestJoin"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"resolutionId":{"type":"string","minLength":1,"maxLength":200}},"required":["id","resolutionId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.approve"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["expense.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":300},"subtitle":{"type":"string","maxLength":300,"nullable":true,"description":"Optional second line shown under the title, for example the venue or fee."},"totalAmountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"splitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"payers":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"note":{"type":"string","maxLength":10000,"nullable":true},"category":{"type":"string","maxLength":100,"nullable":true},"attachmentIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":5},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string","minLength":1,"maxLength":200,"description":"What was bought, as written on the bill."},"amountMinor":{"type":"string","description":"The line total in minor units of the bill's currency: conversion.currency when set, otherwise the expense currency."},"quantity":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":10000},"participantIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"minItems":1,"maxItems":100,"description":"Who shares this item. It is split equally between them."}},"required":["id","name","amountMinor","participantIds"],"additionalProperties":false},"minItems":1,"maxItems":200,"nullable":true,"description":"Item-by-item split. Requires splitMethod exact and allocations calculated from the items (use calculate_shared_item_split). null removes items; leaving it out keeps the saved items when the split is unchanged."},"itemsAdjustmentMinor":{"type":"string","pattern":"^(?:0|-?[1-9]\\d{0,17})$","nullable":true,"description":"Tax, service charge and tip (positive) or a discount (negative) on the items, shared in proportion to each person's items."},"conversion":{"type":"object","properties":{"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"amountMinor":{"type":"string","description":"The amount actually paid, in minor units of this currency."},"rate":{"type":"string","pattern":"^(?:0|[1-9]\\d{0,11})(?:\\.\\d{1,12})?$","description":"Units of the expense currency for one unit of this currency, e.g. \"2.4081\" for THB to INR."},"rateDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"source":{"type":"string","enum":["market","manual"],"description":"market: the day's exchange rate; manual: a rate the person entered."}},"required":["currency","amountMinor","rate","source"],"additionalProperties":false,"nullable":true,"description":"Set when the bill was paid in another currency. totalAmountMinor is then the converted amount in the expense currency. null removes it; leaving it out keeps it when the amount and currency are unchanged."}},"required":["id","spaceId","title","totalAmountMinor","currency","date","splitMethod","payers","allocations"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["expense.update"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":300},"subtitle":{"type":"string","maxLength":300,"nullable":true,"description":"Optional second line shown under the title, for example the venue or fee."},"totalAmountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"splitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"payers":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"note":{"type":"string","maxLength":10000,"nullable":true},"category":{"type":"string","maxLength":100,"nullable":true},"attachmentIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":5},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string","minLength":1,"maxLength":200,"description":"What was bought, as written on the bill."},"amountMinor":{"type":"string","description":"The line total in minor units of the bill's currency: conversion.currency when set, otherwise the expense currency."},"quantity":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":10000},"participantIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"minItems":1,"maxItems":100,"description":"Who shares this item. It is split equally between them."}},"required":["id","name","amountMinor","participantIds"],"additionalProperties":false},"minItems":1,"maxItems":200,"nullable":true,"description":"Item-by-item split. Requires splitMethod exact and allocations calculated from the items (use calculate_shared_item_split). null removes items; leaving it out keeps the saved items when the split is unchanged."},"itemsAdjustmentMinor":{"type":"string","pattern":"^(?:0|-?[1-9]\\d{0,17})$","nullable":true,"description":"Tax, service charge and tip (positive) or a discount (negative) on the items, shared in proportion to each person's items."},"conversion":{"type":"object","properties":{"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"amountMinor":{"type":"string","description":"The amount actually paid, in minor units of this currency."},"rate":{"type":"string","pattern":"^(?:0|[1-9]\\d{0,11})(?:\\.\\d{1,12})?$","description":"Units of the expense currency for one unit of this currency, e.g. \"2.4081\" for THB to INR."},"rateDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"source":{"type":"string","enum":["market","manual"],"description":"market: the day's exchange rate; manual: a rate the person entered."}},"required":["currency","amountMinor","rate","source"],"additionalProperties":false,"nullable":true,"description":"Set when the bill was paid in another currency. totalAmountMinor is then the converted amount in the expense currency. null removes it; leaving it out keeps it when the amount and currency are unchanged."}},"required":["id","spaceId","title","totalAmountMinor","currency","date","splitMethod","payers","allocations"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["expense.void"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["id","spaceId","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["refund.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"receivedBy":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"note":{"type":"string","maxLength":10000,"nullable":true}},"required":["id","spaceId","expenseId","amountMinor","receivedBy","allocations","date"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.propose"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"senderParticipantId":{"type":"string","minLength":1,"maxLength":200},"recipientParticipantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"method":{"type":"string","maxLength":80},"reference":{"type":"string","maxLength":300},"note":{"type":"string","maxLength":10000,"nullable":true},"acknowledgeCredit":{"type":"boolean"},"applications":{"type":"array","items":{"type":"object","properties":{"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"expenseVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["expenseId","amountMinor","expenseVersion"],"additionalProperties":false},"maxItems":100}},"required":["id","spaceId","senderParticipantId","recipientParticipantId","amountMinor","currency","date"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.receive"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"senderParticipantId":{"type":"string","minLength":1,"maxLength":200},"recipientParticipantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"method":{"type":"string","maxLength":80},"reference":{"type":"string","maxLength":300},"note":{"type":"string","maxLength":10000,"nullable":true},"acknowledgeCredit":{"type":"boolean"},"applications":{"type":"array","items":{"type":"object","properties":{"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"expenseVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["expenseId","amountMinor","expenseVersion"],"additionalProperties":false},"maxItems":100}},"required":["id","spaceId","senderParticipantId","recipientParticipantId","amountMinor","currency","date"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.confirm"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.reject"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.reverseRequest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["id","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.reverseConfirm"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["comment.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"text":{"type":"string","minLength":1,"maxLength":4000}},"required":["id","spaceId","text"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["dispute.set"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"disputed":{"type":"boolean"},"reason":{"type":"string","minLength":1,"maxLength":1000}},"required":["id","spaceId","expenseId","disputed","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["inbox.read"]},"payload":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"minItems":1,"maxItems":100}},"required":["ids"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["device.register"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"token":{"type":"string","pattern":"^(?:ExponentPushToken|ExpoPushToken)\\[[A-Za-z0-9_-]+\\]$"},"platform":{"type":"string","enum":["ios","android"]},"enabled":{"type":"boolean"}},"required":["id","token","platform","enabled"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["device.unregister"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["reminder.send"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200},"currency":{"type":"string","pattern":"^[A-Z]{3}$"}},"required":["spaceId","accountId","currency"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["report.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"reason":{"type":"string","minLength":1,"maxLength":2000}},"required":["id","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["refund.void"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"description":"The refund to remove."},"spaceId":{"type":"string","minLength":1,"maxLength":200},"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["id","spaceId","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.recordGuest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"senderParticipantId":{"type":"string","minLength":1,"maxLength":200},"recipientParticipantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"method":{"type":"string","maxLength":80},"reference":{"type":"string","maxLength":300},"note":{"type":"string","maxLength":10000,"nullable":true},"acknowledgeCredit":{"type":"boolean"},"applications":{"type":"array","items":{"type":"object","properties":{"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"expenseVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["expenseId","amountMinor","expenseVersion"],"additionalProperties":false},"maxItems":100}},"required":["id","spaceId","senderParticipantId","recipientParticipantId","amountMinor","currency","date"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.assignExpenses"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"applications":{"type":"array","items":{"type":"object","properties":{"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"expenseVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["expenseId","amountMinor","expenseVersion"],"additionalProperties":false},"maxItems":100}},"required":["id","applications"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.reverseGuest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["id","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["participant.createGuest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string","minLength":1,"maxLength":100},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true}},"required":["id","spaceId","displayName"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["participant.renameGuest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string","minLength":1,"maxLength":100},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true}},"required":["id","spaceId","displayName"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["participant.setAvatar"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true}},"required":["id","spaceId","avatarAttachmentId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["participant.deactivateGuest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200}},"required":["id","spaceId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["participant.reactivateGuest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200}},"required":["id","spaceId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["participant.claimRequest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"participantId":{"type":"string","minLength":1,"maxLength":200},"resolutionId":{"type":"string","minLength":1,"maxLength":200,"description":"From resolving the person's profile code or sharing link (resolve_shared_identity). Send this or accountId, not both."},"accountId":{"type":"string","minLength":1,"maxLength":200,"description":"The accountId of an accepted connection (list_shared_connections) who is not in the group. Send this or resolutionId, not both."}},"required":["id","spaceId","participantId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["participant.claimAccept"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"reviewToken":{"type":"string","minLength":1,"maxLength":1000}},"required":["id","reviewToken"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["participant.claimReject"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["participant.claimCancel"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["inviteLink.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"approvalRequired":{"type":"boolean","description":"New people need an admin's approval before they join. Defaults to the current link's setting, or off."},"participantId":{"type":"string","minLength":1,"maxLength":200,"description":"Make a link for this one guest place instead of the whole group: it can only be used to take that place, and stops working once the place is taken. Each guest place has its own working link; the group's general link is unchanged."}},"required":["id","spaceId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["inviteLink.update"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"approvalRequired":{"type":"boolean"}},"required":["id","approvalRequired"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["inviteLink.revoke"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["inviteLink.join"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"displayName":{"type":"string","minLength":1,"maxLength":100,"description":"Your name in groups. Needed only when you have no sharing profile yet."}},"required":["id","token"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["inviteLink.joinAsGuest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"participantId":{"type":"string","minLength":1,"maxLength":200,"description":"A guest place from the invite preview that is this person."},"displayName":{"type":"string","minLength":1,"maxLength":100,"description":"Your name in groups. Needed only when you have no sharing profile yet."}},"required":["id","token","participantId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false}]},"maxItems":50}},"required":["commands"],"additionalProperties":false}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v3/shared/operations/{id}":{"get":{"operationId":"getSharedV3CommandReceipt","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedMutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v3/shared/spaces/{id}":{"get":{"operationId":"getSharedV3Space","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedV3Space"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v3/shared/spaces/{id}/balances":{"get":{"operationId":"getSharedV3Balances","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedV3Balances"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v3/shared/balances":{"get":{"operationId":"listSharedV3Balances","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedV3AllBalances"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Every group and friend space you belong to, archived ones included: your balance per currency, the suggested repayments you send or receive with names, and disputed expenses. The same read as MCP list_shared_v3_balances. Requires payback:shared:read for OAuth clients. Read-only."}},"/v3/shared/spaces/{id}/invite-link":{"get":{"operationId":"getSharedGroupInviteLink","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"participantId","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":200},"description":"A guest place: read the link made for it (inviteLink.create with participantId) instead of the group's general link."},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"link":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"url":{"type":"string","format":"uri"},"approvalRequired":{"type":"boolean"},"joinedCount":{"type":"integer","minimum":0},"pendingRequests":{"type":"integer","minimum":0},"createdAt":{"type":"integer","minimum":0},"createdByName":{"type":"string"},"participantId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["id","url","approvalRequired","joinedCount","pendingRequests","createdAt","createdByName"],"additionalProperties":false,"nullable":true}},"required":["link"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Group admins only (payback:connections). The group's working invite link to copy again, whether new people need approval, how many joined with it and how many requests wait. link is null when there is none. With participantId, the working link for that guest place, which can only be used to take it. Create, change approval and turn off links with the inviteLink.create, inviteLink.update and inviteLink.revoke shared commands."}},"/v3/shared/invite-links/preview":{"post":{"operationId":"previewSharedGroupInvite","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"group":{"type":"object","properties":{"name":{"type":"string"},"tone":{"type":"integer","minimum":1,"maximum":6},"defaultCurrency":{"type":"string","pattern":"^[A-Z]{3}$"}},"required":["name","tone","defaultCurrency"],"additionalProperties":false},"invitedBy":{"type":"string"},"peopleCount":{"type":"integer","minimum":0},"approvalRequired":{"type":"boolean"},"guests":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string"}},"required":["participantId","name"],"additionalProperties":false}},"viewer":{"type":"object","properties":{"status":{"type":"string","enum":["none","member","former_member","requested"]},"spaceId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"hasProfile":{"type":"boolean"}},"required":["status","spaceId","hasProfile"],"additionalProperties":false},"seatOnly":{"type":"boolean"}},"required":["schemaVersion","group","invitedBy","peopleCount","approvalRequired"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"}},"required":["token"],"additionalProperties":false}}}},"description":"Signed-in preview of a group invite link: the anonymous preview plus open guest places and whether you are already in the group or waiting for approval. Join with the inviteLink.join or inviteLink.joinAsGuest shared commands. Rate limited."}},"/v3/public/invite-preview":{"post":{"operationId":"previewPublicGroupInvite","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"group":{"type":"object","properties":{"name":{"type":"string"},"tone":{"type":"integer","minimum":1,"maximum":6},"defaultCurrency":{"type":"string","pattern":"^[A-Z]{3}$"}},"required":["name","tone","defaultCurrency"],"additionalProperties":false},"invitedBy":{"type":"string"},"peopleCount":{"type":"integer","minimum":0},"approvalRequired":{"type":"boolean"},"guests":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string"}},"required":["participantId","name"],"additionalProperties":false}},"viewer":{"type":"object","properties":{"status":{"type":"string","enum":["none","member","former_member","requested"]},"spaceId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"hasProfile":{"type":"boolean"}},"required":["status","spaceId","hasProfile"],"additionalProperties":false},"seatOnly":{"type":"boolean"}},"required":["schemaVersion","group","invitedBy","peopleCount","approvalRequired"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"}},"required":["token"],"additionalProperties":false}}}},"security":[],"description":"Anyone holding an invite link: the group name, who invited them, how many people are in it and its currency. No session is read; the token travels in the body. Unknown, turned-off and replaced links all answer 404 invite_link_unavailable. Rate limited per address."}},"/v3/shared/claims/{id}/preview":{"get":{"operationId":"getGuestClaimPreview","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedClaimPreview"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v3/shared/spaces/{id}/export":{"get":{"operationId":"exportSharedV3Space","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"CSV participant history with payment provenance","content":{"text/csv":{"schema":{"type":"string"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/status":{"get":{"operationId":"getSharedAvailability","parameters":[{"name":"capabilities","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated supported capabilities. personal-archive-v1 opts into personalArchiveEnabled; omitted capabilities retain the shipped two-field envelope."},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedAvailability"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/people":{"get":{"operationId":"listSharedPeople","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedPeople"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/me/profile":{"get":{"operationId":"getSharedProfile","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["profile"],"properties":{"profile":{"allOf":[{"$ref":"#/components/schemas/SharedProfile"}],"nullable":true}}}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/profiles/{id}":{"get":{"operationId":"getRelatedSharedProfile","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedProfile"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/identities/resolve":{"post":{"operationId":"resolveSharedIdentity","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedResolution"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"value":{"type":"string","minLength":1,"maxLength":2000}},"required":["value"],"additionalProperties":false}}}},"description":"Resolve an exact profile code or profile/group invite token. Returns minimal identity and a short-lived resolution handle. Never searches email/phone/name; discovery does not authorize financial access or browser sign-in."}},"/v2/shared/commands":{"post":{"operationId":"executeSharedCommand","parameters":[{"name":"X-OweJar-Confirmation-Id","in":"header","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedMutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedCommand"}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/commands/prepare":{"post":{"operationId":"prepareSharedCommand","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedCommand"}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/sync/snapshot":{"get":{"operationId":"getSharedSnapshot","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedSnapshot"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/sync/changes":{"get":{"operationId":"getSharedChanges","parameters":[{"name":"after","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]+$"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedChanges"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/sync/ack":{"post":{"operationId":"ackSharedSync","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedSyncAck"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedSyncAck"}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/sync/push":{"post":{"operationId":"pushSharedCommands","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"outcomes":{"type":"array","items":{"type":"object","properties":{"operationId":{"type":"string","minLength":1,"maxLength":200},"status":{"type":"string","enum":["accepted","conflict","rejected"]},"retryable":{"type":"boolean","description":"A transient batch failure has no durable receipt; retain and retry this exact operation."},"revision":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"record":{},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["operationId","status"],"additionalProperties":false}}},"required":["outcomes"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"commands":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["profile.set"]},"payload":{"type":"object","properties":{"displayName":{"type":"string","minLength":1,"maxLength":100},"enabled":{"type":"boolean"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"upiId":{"type":"string","pattern":"^[A-Za-z0-9._-]{2,100}@[A-Za-z0-9.-]{2,80}$","nullable":true},"paypalMe":{"type":"string","format":"uri","nullable":true},"upiQrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["displayName","enabled"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["profile.rotate"]},"payload":{"type":"object","properties":{},"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.request"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"resolutionId":{"type":"string","minLength":1,"maxLength":200}},"required":["id","resolutionId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.accept"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.reject"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.block"]},"payload":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"blocked":{"type":"boolean"}},"required":["accountId","blocked"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.linkPerson"]},"payload":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"personId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["accountId","personId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","enum":["direct","group"]},"name":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200},"defaultCurrency":{"type":"string","pattern":"^[A-Z]{3}$"},"defaultSplitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"defaultWeights":{"type":"object","additionalProperties":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"simplifyDebts":{"type":"boolean"}},"required":["id","kind","name"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.update"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string","minLength":1,"maxLength":200},"defaultCurrency":{"type":"string","pattern":"^[A-Z]{3}$"},"defaultSplitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"defaultWeights":{"type":"object","additionalProperties":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"simplifyDebts":{"type":"boolean"}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.archive"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"archived":{"type":"boolean"}},"required":["spaceId","archived"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.archiveForMe"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"archived":{"type":"boolean"}},"required":["spaceId","archived"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.mute"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"muted":{"type":"boolean"}},"required":["spaceId","muted"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.leave"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200}},"required":["spaceId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["membership.role"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200},"role":{"type":"string","enum":["admin","member"]}},"required":["spaceId","accountId","role"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200}},"required":["id","spaceId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.accept"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.reject"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.revoke"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.requestJoin"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"resolutionId":{"type":"string","minLength":1,"maxLength":200}},"required":["id","resolutionId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.approve"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["expense.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":300},"totalAmountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"splitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"payers":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"note":{"type":"string","maxLength":10000,"nullable":true},"category":{"type":"string","maxLength":100,"nullable":true},"attachmentIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":5}},"required":["id","spaceId","title","totalAmountMinor","currency","date","splitMethod","payers","allocations"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["expense.update"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":300},"totalAmountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"splitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"payers":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"note":{"type":"string","maxLength":10000,"nullable":true},"category":{"type":"string","maxLength":100,"nullable":true},"attachmentIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":5}},"required":["id","spaceId","title","totalAmountMinor","currency","date","splitMethod","payers","allocations"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["expense.void"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["id","spaceId","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["refund.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"receivedBy":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"note":{"type":"string","maxLength":10000,"nullable":true}},"required":["id","spaceId","expenseId","amountMinor","receivedBy","allocations","date"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.propose"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"senderAccountId":{"type":"string","minLength":1,"maxLength":200},"recipientAccountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"method":{"type":"string","maxLength":80},"reference":{"type":"string","maxLength":300},"note":{"type":"string","maxLength":10000,"nullable":true},"acknowledgeCredit":{"type":"boolean"}},"required":["id","spaceId","senderAccountId","recipientAccountId","amountMinor","currency","date"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.receive"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"senderAccountId":{"type":"string","minLength":1,"maxLength":200},"recipientAccountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"method":{"type":"string","maxLength":80},"reference":{"type":"string","maxLength":300},"note":{"type":"string","maxLength":10000,"nullable":true},"acknowledgeCredit":{"type":"boolean"}},"required":["id","spaceId","senderAccountId","recipientAccountId","amountMinor","currency","date"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.confirm"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.reject"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.reverseRequest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["id","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.reverseConfirm"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["comment.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"text":{"type":"string","minLength":1,"maxLength":4000}},"required":["id","spaceId","text"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["dispute.set"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"disputed":{"type":"boolean"},"reason":{"type":"string","minLength":1,"maxLength":1000}},"required":["id","spaceId","expenseId","disputed","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["inbox.read"]},"payload":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"minItems":1,"maxItems":100}},"required":["ids"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["device.register"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"token":{"type":"string","pattern":"^(?:ExponentPushToken|ExpoPushToken)\\[[A-Za-z0-9_-]+\\]$"},"platform":{"type":"string","enum":["ios","android"]},"enabled":{"type":"boolean"}},"required":["id","token","platform","enabled"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["device.unregister"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["reminder.send"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200},"currency":{"type":"string","pattern":"^[A-Z]{3}$"}},"required":["spaceId","accountId","currency"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["report.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"reason":{"type":"string","minLength":1,"maxLength":2000}},"required":["id","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false}]},"maxItems":50}},"required":["commands"],"additionalProperties":false}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/operations/{id}":{"get":{"operationId":"getSharedCommandReceipt","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedMutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/connections":{"get":{"operationId":"listSharedconnections","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SharedConnection"}},"nextCursor":{"type":"string","nullable":true}}}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/invitations":{"get":{"operationId":"listSharedinvitations","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SharedInvite"}},"nextCursor":{"type":"string","nullable":true}}}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/spaces":{"get":{"operationId":"listSharedspaces","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SharedSpace"}},"nextCursor":{"type":"string","nullable":true}}}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/inbox":{"get":{"operationId":"listSharedinbox","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SharedInbox"}},"nextCursor":{"type":"string","nullable":true}}}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/spaces/{id}":{"get":{"operationId":"getSharedSpace","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedSpace"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/spaces/{id}/balances":{"get":{"operationId":"getSharedBalances","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedBalances"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/spaces/{id}/expenses":{"get":{"operationId":"listSharedSpaceexpenses","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"expenseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SharedExpense"}},"nextCursor":{"type":"string","nullable":true}}}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/spaces/{id}/refunds":{"get":{"operationId":"listSharedSpacerefunds","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"expenseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SharedRefund"}},"nextCursor":{"type":"string","nullable":true}}}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/spaces/{id}/settlements":{"get":{"operationId":"listSharedSpacesettlements","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"expenseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SharedSettlement"}},"nextCursor":{"type":"string","nullable":true}}}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/spaces/{id}/comments":{"get":{"operationId":"listSharedSpacecomments","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"expenseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SharedComment"}},"nextCursor":{"type":"string","nullable":true}}}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/spaces/{id}/activity":{"get":{"operationId":"listSharedSpaceactivity","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"expenseId","in":"query","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SharedActivity"}},"nextCursor":{"type":"string","nullable":true}}}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v2/shared/spaces/{id}/export":{"get":{"operationId":"exportSharedSpace","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Membership-authorized CSV export","content":{"text/csv":{"schema":{"type":"string"}}}}}}},"/v2/shared/attachments":{"post":{"operationId":"uploadSharedAttachment","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedMutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"purpose":{"type":"string","enum":["receipt","avatar","private_avatar","payment_qr"]},"bookId":{"type":"string","minLength":1,"maxLength":200},"epoch":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"imageBase64":{"type":"string","maxLength":13981018}},"required":["id","purpose","imageBase64"],"additionalProperties":false}}}},"description":"Upload an immutable sanitized raster image. private_avatar requires owner private bookId and its current recovery epoch, plus payback:write/read scopes; contact photos are never returned in group snapshots. Group guest avatar uses purpose avatar + spaceId and group admin authority. Account avatar omits spaceId. Reuse the same ID/body after an uncertain response. No expense or payment is recorded."}},"/v2/shared/attachments/{id}/content":{"get":{"operationId":"readSharedAttachment","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Authorized sanitized image. private_avatar requires payback:read and an active owned private book; shared images require payback:shared:read. Image reads do not require financial capability headers or enroll a shared client. Private photos remain inaccessible to group peers and linked accounts.","content":{"image/jpeg":{"schema":{"type":"string","format":"binary"}}}}}}},"/v2/shared/attachments/{id}":{"delete":{"operationId":"deleteSharedAttachment","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","enum":[true]}},"required":["deleted"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"First-party image removal after references are cleared. OAuth clients must use /v1/me/images/prepare-delete and /v1/me/images/delete with exact owner approval; this legacy route cannot bypass it.","security":[{"nativeSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}]}},"/v1/books/{bookId}/people/{id}/statement":{"get":{"operationId":"getPersonStatement","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"period","in":"query","required":false,"schema":{"type":"string","enum":["all","this_month","last_month","custom"],"default":"all"}},{"name":"from","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","format":"date"}},{"name":"includeNotes","in":"query","required":false,"schema":{"type":"boolean","default":true}},{"name":"includeGroups","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"includeCoveredPeople","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonStatement"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Every record between you and one person in date order with a running balance, for All time, this or last calendar month in the book time zone, or a custom inclusive range (from and to). A later period opens with the balance before it. The All time closing balance equals getPersonBalances; currentBalanceMinor is always that balance now. Positive amounts mean the person owes you. includeGroups adds groups (each shared group's name, the amount between you and the person in it today, and lines: the group's expenses, seller refunds and payments between the two of you in the period with a running balance; other currencies are listed but not added) and includeCoveredPeople adds coveredPeople (the people this person pays for, with their records), exactly as a link with them shows. own is the records plus same-currency groups; overall adds the people they pay for. Read-only."}},"/v1/books/{bookId}/people/{id}/statement-links":{"get":{"operationId":"listPersonStatementLinks","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"links":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"url":{"type":"string","format":"uri"},"includeNotes":{"type":"boolean"},"createdAt":{"type":"integer"},"lastViewedAt":{"type":"integer","nullable":true},"viewCount":{"type":"integer","minimum":0},"paymentMethodIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":12,"nullable":true},"includeGroups":{"type":"boolean"},"includeCoveredPeople":{"type":"boolean"}},"required":["id","url","includeNotes","createdAt","lastViewedAt","viewCount"],"additionalProperties":false}}},"required":["links"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"The person's active secret statement link, if any, with its view count."},"post":{"operationId":"createPersonStatementLink","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"link":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"url":{"type":"string","format":"uri"},"includeNotes":{"type":"boolean"},"createdAt":{"type":"integer"},"lastViewedAt":{"type":"integer","nullable":true},"viewCount":{"type":"integer","minimum":0},"paymentMethodIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":12,"nullable":true},"includeGroups":{"type":"boolean"},"includeCoveredPeople":{"type":"boolean"}},"required":["id","url","includeNotes","createdAt","lastViewedAt","viewCount"],"additionalProperties":false},"replaced":{"type":"boolean"}},"required":["link","replaced"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"includeNotes":{"type":"boolean","default":false},"paymentMethodIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":12,"nullable":true},"includeGroups":{"type":"boolean","default":false},"includeCoveredPeople":{"type":"boolean","default":false}},"additionalProperties":false}}}},"description":"Create a secret read-only link to the statement with this person. Anyone with the link can see both names and every record and amount between you, without signing in; notes are shown only with includeNotes. includeGroups also shows each shared group's name, the amount between you two in it and the expenses, refunds and payments between you two, with their titles, dates and amounts (never other members, their shares or anything either of you has with someone else; OAuth also needs payback:shared:read), and includeCoveredPeople the names and records of the people this person pays for; both are off by default. A person has one link: creating another replaces it and the old link stops working. OAuth requires payback:write and payback:read."}},"/v1/books/{bookId}/people/{id}/statement-links/{linkId}":{"patch":{"operationId":"updatePersonStatementLink","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"linkId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"link":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"url":{"type":"string","format":"uri"},"includeNotes":{"type":"boolean"},"createdAt":{"type":"integer"},"lastViewedAt":{"type":"integer","nullable":true},"viewCount":{"type":"integer","minimum":0},"paymentMethodIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":12,"nullable":true},"includeGroups":{"type":"boolean"},"includeCoveredPeople":{"type":"boolean"}},"required":["id","url","includeNotes","createdAt","lastViewedAt","viewCount"],"additionalProperties":false}},"required":["link"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"paymentMethodIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":12,"nullable":true},"includeGroups":{"type":"boolean"},"includeCoveredPeople":{"type":"boolean"}},"additionalProperties":false}}}},"description":"Choose which of your payment methods the link shows while the person owes you: null for all turned-on methods (including ones added later), a list of method IDs (upi and paypal name the sharing profile's UPI ID and PayPal.Me link), or an empty list for none. includeGroups and includeCoveredPeople turn group amounts and the people this person pays for on or off. Fields left out stay as they are; send at least one. The link stays the same."},"delete":{"operationId":"deletePersonStatementLink","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"linkId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","enum":[true]}},"required":["deleted"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Turn the link off. It stops working at once."}},"/v1/books/{bookId}/person-payers":{"get":{"operationId":"listPersonPayers","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"links":{"type":"array","items":{"type":"object","properties":{"personId":{"type":"string"},"payerPersonId":{"type":"string"},"version":{"type":"string"},"updatedAt":{"type":"integer"}},"required":["personId","payerPersonId","version","updatedAt"],"additionalProperties":false}}},"required":["links"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Who pays for whom in this book (a person's Pays for / Paid for by links). OAuth clients need payback:read; private books need OweJar Pro."}},"/v1/books/{bookId}/people/{id}/payer":{"put":{"operationId":"setPersonPayer","parameters":[{"name":"bookId","in":"path","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"links":{"type":"array","items":{"type":"object","properties":{"personId":{"type":"string"},"payerPersonId":{"type":"string"},"version":{"type":"string"},"updatedAt":{"type":"integer"}},"required":["personId","payerPersonId","version","updatedAt"],"additionalProperties":false}}},"required":["links"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"payerPersonId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["payerPersonId"],"additionalProperties":false}}}},"description":"Set the person who pays for this person, or clear it with payerPersonId null. One level only: a payer cannot also be paid for, and a book holds at most 50 links. OAuth clients need payback:read and payback:write. Returns every link in the book."}},"/v2/shared/spaces/{id}/attachments":{"get":{"operationId":"listSharedSpaceattachments","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"q","in":"query","required":false,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["items","nextCursor"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/SharedAttachment"}},"nextCursor":{"type":"string","nullable":true}}}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Free account-based sharing, independent of personal cloud books and Pro. OAuth requires explicitly granted shared scopes. All records are membership-authorized; no private contacts or history are published."}},"/v3/shared/spaces/{id}/public-links":{"get":{"operationId":"listSharedPublicLinks","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"links":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"label":{"type":"string","nullable":true},"url":{"type":"string","format":"uri"},"createdAt":{"type":"integer","minimum":0},"createdByName":{"type":"string"},"lastViewedAt":{"type":"integer","minimum":0,"nullable":true},"viewCount":{"type":"integer","minimum":0},"mine":{"type":"boolean"},"paymentMethodIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":12,"nullable":true},"allowJoinRequests":{"type":"boolean"}},"required":["id","label","url","createdAt","createdByName","lastViewedAt","viewCount"],"additionalProperties":false}},"limit":{"type":"integer","exclusiveMinimum":true,"minimum":0}},"required":["links","limit"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Active group admins only: the group's secret view-only links and the link limit. Anyone holding a link can read the group's people, costs and balances, nothing else.","security":[{"nativeSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}]},"post":{"operationId":"createSharedPublicLink","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"link":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"label":{"type":"string","nullable":true},"url":{"type":"string","format":"uri"},"createdAt":{"type":"integer","minimum":0},"createdByName":{"type":"string"},"lastViewedAt":{"type":"integer","minimum":0,"nullable":true},"viewCount":{"type":"integer","minimum":0},"mine":{"type":"boolean"},"paymentMethodIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":12,"nullable":true},"allowJoinRequests":{"type":"boolean"}},"required":["id","label","url","createdAt","createdByName","lastViewedAt","viewCount"],"additionalProperties":false}},"required":["link"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":80,"nullable":true},"paymentMethodIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":12,"nullable":true},"allowJoinRequests":{"type":"boolean","description":"Let viewers ask to join: the view offers the group's invite link while it has one. Off by default."}},"additionalProperties":false}}}},"description":"Active group admins only: create a view-only link with an optional label, paymentMethodIds, the creator's payment methods it shows while someone owes them (default none), and allowJoinRequests, which lets viewers ask to join with the group's invite link (default off). The token is shown in the returned URL fragment, which browsers never send to servers.","security":[{"nativeSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}]}},"/v3/shared/spaces/{id}/public-links/{linkId}":{"patch":{"operationId":"updateSharedPublicLink","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"linkId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"link":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"label":{"type":"string","nullable":true},"url":{"type":"string","format":"uri"},"createdAt":{"type":"integer","minimum":0},"createdByName":{"type":"string"},"lastViewedAt":{"type":"integer","minimum":0,"nullable":true},"viewCount":{"type":"integer","minimum":0},"mine":{"type":"boolean"},"paymentMethodIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":12,"nullable":true},"allowJoinRequests":{"type":"boolean"}},"required":["id","label","url","createdAt","createdByName","lastViewedAt","viewCount"],"additionalProperties":false}},"required":["link"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"paymentMethodIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":12,"nullable":true},"allowJoinRequests":{"type":"boolean"}},"additionalProperties":false}}}},"description":"The admin who created the link chooses which of their payment methods it shows while someone owes them: null for all turned-on methods (including ones added later), a list of method IDs (upi and paypal name the sharing profile's UPI ID and PayPal.Me link), or an empty list for none. allowJoinRequests lets the link's viewers ask to join: the view then includes the group's working invite link in join. Send either field or both. Other admins receive 403 public_link_creator_required. The link stays the same.","security":[{"nativeSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}]},"delete":{"operationId":"deleteSharedPublicLink","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"linkId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","enum":[true]}},"required":["deleted"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Active group admins only: turn a view-only link off. It stops working at once.","security":[{"nativeSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}]}},"/v3/shared/spaces/{id}/public-links/{linkId}/regenerate":{"post":{"operationId":"regenerateSharedPublicLink","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"linkId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"link":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"label":{"type":"string","nullable":true},"url":{"type":"string","format":"uri"},"createdAt":{"type":"integer","minimum":0},"createdByName":{"type":"string"},"lastViewedAt":{"type":"integer","minimum":0,"nullable":true},"viewCount":{"type":"integer","minimum":0},"mine":{"type":"boolean"},"paymentMethodIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":12,"nullable":true},"allowJoinRequests":{"type":"boolean"}},"required":["id","label","url","createdAt","createdByName","lastViewedAt","viewCount"],"additionalProperties":false}},"required":["link"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Active group admins only: replace a view-only link's token, keeping its label. The old link stops working.","security":[{"nativeSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}]}},"/v3/public/group-view":{"post":{"operationId":"viewPublicGroup","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"group":{"type":"object","properties":{"name":{"type":"string"},"closed":{"type":"boolean"},"defaultCurrency":{"type":"string","pattern":"^[A-Z]{3}$"},"simplifyDebts":{"type":"boolean"}},"required":["name","closed","defaultCurrency","simplifyDebts"],"additionalProperties":false},"generatedAt":{"type":"integer","minimum":0},"people":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]\\d{1,6}$"},"name":{"type":"string"},"guest":{"type":"boolean"},"active":{"type":"boolean"},"balances":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"paidMinor":{"type":"string","pattern":"^-?\\d+$"},"shareMinor":{"type":"string","pattern":"^-?\\d+$"},"netMinor":{"type":"string","pattern":"^-?\\d+$"}},"required":["currency","paidMinor","shareMinor","netMinor"],"additionalProperties":false}},"paidForBy":{"type":"string","pattern":"^[a-z]\\d{1,6}$","nullable":true,"default":null},"photo":{"type":"string","maxLength":60000,"pattern":"^data:image\\/jpeg;base64,[A-Za-z0-9+/]+={0,2}$","nullable":true,"default":null}},"required":["id","name","guest","active","balances"],"additionalProperties":false}},"expenses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]\\d{1,6}$"},"title":{"type":"string"},"subtitle":{"type":"string","nullable":true},"date":{"type":"integer","minimum":0},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"totalMinor":{"type":"string","pattern":"^-?\\d+$"},"paidBy":{"type":"array","items":{"type":"object","properties":{"person":{"type":"string","pattern":"^[a-z]\\d{1,6}$"},"amountMinor":{"type":"string","pattern":"^-?\\d+$"}},"required":["person","amountMinor"],"additionalProperties":false}},"shares":{"type":"array","items":{"type":"object","properties":{"person":{"type":"string","pattern":"^[a-z]\\d{1,6}$"},"amountMinor":{"type":"string","pattern":"^-?\\d+$"}},"required":["person","amountMinor"],"additionalProperties":false}},"refundedMinor":{"type":"string","pattern":"^-?\\d+$"},"disputed":{"type":"boolean"}},"required":["id","title","date","currency","totalMinor","paidBy","shares","refundedMinor","disputed"],"additionalProperties":false}},"payments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^[a-z]\\d{1,6}$"},"from":{"type":"string","pattern":"^[a-z]\\d{1,6}$"},"to":{"type":"string","pattern":"^[a-z]\\d{1,6}$"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"amountMinor":{"type":"string","pattern":"^-?\\d+$"},"date":{"type":"integer","minimum":0},"status":{"type":"string","enum":["counted","pending"]}},"required":["id","from","to","currency","amountMinor","date","status"],"additionalProperties":false}},"settleUp":{"type":"array","items":{"type":"object","properties":{"from":{"type":"string","pattern":"^[a-z]\\d{1,6}$"},"to":{"type":"string","pattern":"^[a-z]\\d{1,6}$"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"amountMinor":{"type":"string","pattern":"^-?\\d+$"}},"required":["from","to","currency","amountMinor"],"additionalProperties":false}},"pausedCurrencies":{"type":"array","items":{"type":"string","pattern":"^[A-Z]{3}$"},"default":[]},"truncated":{"type":"boolean"},"payTo":{"type":"object","properties":{"person":{"type":"string","pattern":"^[a-z]\\d{1,6}$"},"options":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["upi","paypal","custom"]},"name":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"],"additionalProperties":false},"maxItems":10},"qr":{"type":"string","maxLength":200000,"pattern":"^data:image\\/jpeg;base64,[A-Za-z0-9+/]+={0,2}$","nullable":true,"default":null},"upiId":{"type":"string","nullable":true,"default":null},"paypalMe":{"type":"string","nullable":true,"default":null}},"required":["kind","name","fields"],"additionalProperties":false},"minItems":1,"maxItems":12}},"required":["person","options"],"additionalProperties":false,"nullable":true,"default":null},"join":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"approvalRequired":{"type":"boolean"}},"required":["url","approvalRequired"],"additionalProperties":false,"nullable":true,"default":null}},"required":["schemaVersion","group","generatedAt","people","expenses","payments","settleUp","truncated"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"}},"required":["token"],"additionalProperties":false}}}},"security":[],"description":"Anyone holding a view-only group link: the group's people (by alias), costs, payments and balances, and the group's invite link in join when an admin let viewers ask to join. No session is read; the token travels in the body. Rate limited per IP."}},"/v3/shared/spaces/{id}/people":{"post":{"operationId":"addGroupPersonFromPeople","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operationId":{"type":"string","minLength":1,"maxLength":200},"bookId":{"type":"string","minLength":1,"maxLength":200},"personId":{"type":"string","minLength":1,"maxLength":200},"participantId":{"type":"string","minLength":1,"maxLength":200}},"required":["operationId","bookId","personId","participantId"],"additionalProperties":false}}}},"description":"Add a person from your private People to the group as a guest, creating the guest seat and its private link to the person in one transaction. Assistants use shared_v3_participant_create_guest and private_participant_person_link instead.","security":[{"nativeSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}]}},"/v3/shared/spaces/{id}/participants/{participantId}/account-invite":{"post":{"operationId":"inviteGuestSeatToAccount","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"participantId","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SharedMutationOutcome"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operationId":{"type":"string","minLength":1,"maxLength":200},"claimId":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200}},"required":["operationId","claimId","accountId"],"additionalProperties":false}}}},"description":"Ask an accepted connection to take over a guest's seat. The account still has to review and accept the request in OweJar.","security":[{"nativeSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}]}},"/v3/shared/guest-people/sync":{"post":{"operationId":"syncGuestPeople","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"linked":{"type":"integer"},"created":{"type":"integer"}},"required":["linked","created"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bookId":{"type":"string","minLength":1,"maxLength":200}},"required":["bookId"],"additionalProperties":false}}}},"description":"Give every guest you added a person in your People: an existing link wins, then a person with the same name, otherwise a new person. Safe to repeat.","security":[{"nativeSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}]}},"/v3/shared/guest-people/photos/sync":{"post":{"operationId":"syncGuestPeoplePhotos","parameters":[{"name":"X-OweJar-Account-Id","in":"header","required":false,"schema":{"type":"string"},"description":"Optional reviewed account identity. A mismatch with the authenticated account returns shared_account_mismatch before shared side effects."},{"name":"X-OweJar-Epoch","in":"header","required":false,"schema":{"type":"string"},"description":"Optional recovery generation from the original shared snapshot. A mismatch returns shared_epoch_mismatch before shared side effects; retain the original command for recovery review."},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"updated":{"type":"integer"},"more":{"type":"boolean"}},"required":["updated","more"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"bookId":{"type":"string","minLength":1,"maxLength":200}},"required":["bookId"],"additionalProperties":false}}}},"description":"Keep one photo for a private person and the guest seats linked to them, in groups where you are an admin. Repeat while more is true.","security":[{"nativeSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}]}},"/v1/me/payment-methods":{"get":{"operationId":"listPaymentMethods","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"methods":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"],"additionalProperties":false}},"qrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"enabled":{"type":"boolean"},"position":{"type":"integer","minimum":0},"createdAt":{"type":"integer","minimum":0},"updatedAt":{"type":"integer","minimum":0}},"required":["id","name","fields","qrAttachmentId","enabled","position","createdAt","updatedAt"],"additionalProperties":false}},"limit":{"type":"integer","exclusiveMinimum":true,"minimum":0},"fieldLimit":{"type":"integer","exclusiveMinimum":true,"minimum":0}},"required":["methods","limit","fieldLimit"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"nativeSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"description":"Your custom payment methods in display order. First-party app sessions only; OAuth clients and agents cannot read or change payment details. OweJar never moves money: these are details people use to pay you outside the app."},"post":{"operationId":"createPaymentMethod","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"method":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"],"additionalProperties":false}},"qrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"enabled":{"type":"boolean"},"position":{"type":"integer","minimum":0},"createdAt":{"type":"integer","minimum":0},"updatedAt":{"type":"integer","minimum":0}},"required":["id","name","fields","qrAttachmentId","enabled","position","createdAt","updatedAt"],"additionalProperties":false}},"required":["method"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60,"description":"Shown as the method's title, such as Bank transfer."},"fields":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":40,"description":"What this detail is, such as Account number or IFSC."},"value":{"type":"string","minLength":1,"maxLength":200,"description":"The detail itself, exactly as the payer should enter it."}},"required":["label","value"],"additionalProperties":false},"maxItems":10,"default":[]},"qrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true,"default":null},"enabled":{"type":"boolean","default":true}},"required":["name"],"additionalProperties":false}}}},"security":[{"nativeSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"description":"Add a method with a name, up to 10 labelled details and an optional QR image uploaded as a payment_qr attachment. Up to 10 methods. First-party app sessions only; OAuth clients and agents cannot read or change payment details. OweJar never moves money: these are details people use to pay you outside the app."}},"/v1/me/payment-methods/order":{"put":{"operationId":"orderPaymentMethods","parameters":[{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"methods":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"],"additionalProperties":false}},"qrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"enabled":{"type":"boolean"},"position":{"type":"integer","minimum":0},"createdAt":{"type":"integer","minimum":0},"updatedAt":{"type":"integer","minimum":0}},"required":["id","name","fields","qrAttachmentId","enabled","position","createdAt","updatedAt"],"additionalProperties":false}}},"required":["methods"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":10}},"required":["ids"],"additionalProperties":false}}}},"security":[{"nativeSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"description":"Set the display order. List every method once. First-party app sessions only; OAuth clients and agents cannot read or change payment details. OweJar never moves money: these are details people use to pay you outside the app."}},"/v1/me/payment-methods/{id}":{"put":{"operationId":"updatePaymentMethod","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"method":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"],"additionalProperties":false}},"qrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"enabled":{"type":"boolean"},"position":{"type":"integer","minimum":0},"createdAt":{"type":"integer","minimum":0},"updatedAt":{"type":"integer","minimum":0}},"required":["id","name","fields","qrAttachmentId","enabled","position","createdAt","updatedAt"],"additionalProperties":false}},"required":["method"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":60,"description":"Shown as the method's title, such as Bank transfer."},"fields":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":40,"description":"What this detail is, such as Account number or IFSC."},"value":{"type":"string","minLength":1,"maxLength":200,"description":"The detail itself, exactly as the payer should enter it."}},"required":["label","value"],"additionalProperties":false},"maxItems":10,"default":[]},"qrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true,"default":null},"enabled":{"type":"boolean","default":true}},"required":["name"],"additionalProperties":false}}}},"security":[{"nativeSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"description":"Replace a method's name, details, QR image and on/off state. A turned-off method shows on no link. First-party app sessions only; OAuth clients and agents cannot read or change payment details. OweJar never moves money: these are details people use to pay you outside the app."},"delete":{"operationId":"deletePaymentMethod","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"X-OweJar-Capabilities","in":"header","required":false,"schema":{"type":"string"},"description":"Send private-ledger-v1 for books upgraded to independent private money entries, and loan-interest-v1 for books with interest-bearing loan history. Older clients receive cloud_upgrade_required before reading or changing unsupported financial data."}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean","enum":[true]}},"required":["deleted"],"additionalProperties":false}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"security":[{"nativeSession":[]},{"browserSession":[]},{"secureBrowserSession":[]}],"description":"Delete a method. Links that chose it stop showing it. First-party app sessions only; OAuth clients and agents cannot read or change payment details. OweJar never moves money: these are details people use to pay you outside the app."}},"/v1/public/statement":{"post":{"operationId":"viewSharedStatement","parameters":[],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"countView":{"type":"boolean","default":true},"period":{"type":"string","enum":["all","this_month","last_month","custom"],"default":"all"},"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["token"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonStatement"}}}},"400":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"See error.code and requestId. Conflicts never silently overwrite a record.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"description":"Anyone holding a statement link. Send the secret from the /s/{secret} link in the body. Names and amounts only; no account, book or record IDs. Unknown, turned-off and dead links answer 404 statement_link_unavailable. countView false skips the view count for period changes and refreshes. Rate limited per address."}}},"components":{"securitySchemes":{"nativeSession":{"type":"http","scheme":"bearer","description":"Opaque first-party native application session; resource-bound OAuth JWTs use oauthAccess."},"oauthAccess":{"type":"oauth2","flows":{"authorizationCode":{"authorizationUrl":"https://owejar.com/api/auth/oauth2/authorize","tokenUrl":"https://owejar.com/api/auth/oauth2/token","scopes":{"payback:read":"Read your owned private book","payback:write":"Create and update your private records and contact associations","payback:settle":"Record private repayments, bill payments and deliveries","payback:destructive":"Execute exact destructive changes after owner approval","payback:connections":"Manage accepted sharing relationships and invitations","payback:shared:read":"Read authorized shared groups and participant history","payback:shared:write":"Create and update shared expenses, guests and group records","payback:shared:settle":"Record and acknowledge shared repayments"}}}},"qrBrowserBinding":{"type":"apiKey","in":"cookie","name":"__Host-owejar.qr-browser","description":"Secure HttpOnly SameSite=Strict QR browser-binding cookie; separate from authenticated sessions."},"qrDevelopmentBinding":{"type":"apiKey","in":"cookie","name":"owejar.qr-browser","description":"QR browser-binding cookie on the HTTP development origin."},"bearerAuth":{"type":"http","scheme":"bearer"},"browserSession":{"type":"apiKey","in":"cookie","name":"better-auth.session_token","description":"Browser session on the HTTP development origin."},"secureBrowserSession":{"type":"apiKey","in":"cookie","name":"__Secure-better-auth.session_token","description":"Secure browser session on the HTTPS production origin."}},"schemas":{"PrivateExpenseViewPage":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"ref":{"type":"object","properties":{"source":{"type":"string","enum":["private"]},"bookKey":{"type":"string"},"expenseId":{"type":"string"}},"required":["source","bookKey","expenseId"],"additionalProperties":false},"visibility":{"type":"string","enum":["private"]},"allocationShape":{"type":"string","enum":["single","multiple"]},"viewerIncluded":{"type":"boolean"},"title":{"type":"string"},"currency":{"type":"string"},"totalMinor":{"type":"string"},"yourShareMinor":{"type":"string","nullable":true},"paidByYouMinor":{"type":"string"},"date":{"type":"number"},"sourceVersion":{"type":"string"},"group":{"enum":["null"],"nullable":true},"participants":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"isViewer":{"type":"boolean"},"personId":{"type":"string","nullable":true,"description":"The private person in this split; null for you."}},"required":["id","name","isViewer"],"additionalProperties":false}},"categoryName":{"type":"string","nullable":true},"categoryEmoji":{"type":"string","nullable":true},"state":{"type":"string","enum":["active","settled"]},"syncState":{"type":"string","enum":["accepted"]},"capabilities":{"type":"object","properties":{"edit":{"type":"boolean"},"duplicate":{"type":"boolean","enum":[true]},"share":{"type":"boolean","enum":[true]}},"required":["edit","duplicate","share"],"additionalProperties":false}},"required":["ref","visibility","allocationShape","viewerIncluded","title","currency","totalMinor","yourShareMinor","paidByYouMinor","date","sourceVersion","group","participants","state","syncState","capabilities"],"additionalProperties":false}},"summary":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string"},"spentMinor":{"type":"string"},"expenseCount":{"type":"integer"},"complete":{"type":"boolean"}},"required":["currency","spentMinor","expenseCount","complete"],"additionalProperties":false}},"nextCursor":{"type":"string","nullable":true},"freshness":{"type":"object","properties":{"cloudRevision":{"type":"string"},"asOf":{"type":"number"},"unsyncedDeviceChangesVisible":{"type":"boolean","enum":[false]}},"required":["cloudRevision","asOf","unsyncedDeviceChangesVisible"],"additionalProperties":false}},"required":["items","summary","nextCursor","freshness"],"additionalProperties":false},"SpendingInsights":{"type":"object","properties":{"bookId":{"type":"string"},"currency":{"type":"string"},"timeZone":{"type":"string"},"period":{"type":"object","properties":{"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"startsAt":{"type":"integer"},"endsBefore":{"type":"integer"}},"required":["from","to","startsAt","endsBefore"],"additionalProperties":false},"previousPeriod":{"type":"object","properties":{"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"startsAt":{"type":"integer"},"endsBefore":{"type":"integer"}},"required":["from","to","startsAt","endsBefore"],"additionalProperties":false},"currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"spentMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"previousSpentMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"changeMinor":{"type":"string","pattern":"^(?:0|-?[1-9]\\d*)$"},"personalMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$","description":"Your own private expenses with only you in them."},"splitMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$","description":"Your share of private expenses split with people in your book."},"groupMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$","description":"Your share of group expenses, after your refunds; voided expenses count zero."},"expenseCount":{"type":"integer","minimum":0,"description":"Expenses in the period where your share is more than zero."},"months":{"type":"array","items":{"type":"object","properties":{"month":{"type":"string","pattern":"^\\d{4}-\\d{2}$"},"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"startsAt":{"type":"integer"},"endsBefore":{"type":"integer"},"spentMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"privateMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"groupMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"}},"required":["month","from","to","startsAt","endsBefore","spentMinor","privateMinor","groupMinor"],"additionalProperties":false}},"categories":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","enum":["private","group"],"description":"Private categories and group categories are separate lists, so each links to its own filter."},"id":{"type":"string","nullable":true,"description":"Private category ID or group category text; null means uncategorized."},"name":{"type":"string","nullable":true},"emoji":{"type":"string","nullable":true},"spentMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"expenseCount":{"type":"integer","minimum":0}},"required":["source","id","name","emoji","spentMinor","expenseCount"],"additionalProperties":false}},"groups":{"type":"array","items":{"type":"object","properties":{"groupId":{"type":"string"},"name":{"type":"string","nullable":true},"archived":{"type":"boolean"},"spentMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"expenseCount":{"type":"integer","minimum":0}},"required":["groupId","name","archived","spentMinor","expenseCount"],"additionalProperties":false}},"bills":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string","nullable":true},"name":{"type":"string","nullable":true},"categoryName":{"type":"string","nullable":true},"paidMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"paymentCount":{"type":"integer","exclusiveMinimum":true,"minimum":0},"lastPaidAt":{"type":"integer"}},"required":["ruleId","name","categoryName","paidMinor","paymentCount","lastPaidAt"],"additionalProperties":false}},"billsPaidMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"}},"required":["currency","spentMinor","previousSpentMinor","changeMinor","personalMinor","splitMinor","groupMinor","expenseCount","months","categories","groups","bills","billsPaidMinor"],"additionalProperties":false},"description":"The book currency first, then other currencies with spending. Never add them together."},"owed":{"type":"object","properties":{"currency":{"type":"string"},"owedToYouMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"youOweMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"owedToYouCount":{"type":"integer","minimum":0},"youOweCount":{"type":"integer","minimum":0},"owedToYou":{"type":"array","items":{"type":"object","properties":{"personId":{"type":"string"},"name":{"type":"string"},"amountMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"}},"required":["personId","name","amountMinor"],"additionalProperties":false}},"youOwe":{"type":"array","items":{"type":"object","properties":{"personId":{"type":"string"},"name":{"type":"string"},"amountMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"}},"required":["personId","name","amountMinor"],"additionalProperties":false}}},"required":["currency","owedToYouMinor","youOweMinor","owedToYouCount","youOweCount","owedToYou","youOwe"],"additionalProperties":false,"description":"Current balances with people in your private book, the same totals as the balances endpoint. Not limited to the period."},"groupSource":{"type":"object","properties":{"status":{"type":"string","enum":["included","not_permitted","unavailable"]}},"required":["status"],"additionalProperties":false},"freshness":{"type":"object","properties":{"cloudRevision":{"type":"string"},"sharedRevision":{"type":"string","nullable":true},"asOf":{"type":"integer"},"unsyncedDeviceChangesVisible":{"type":"boolean","enum":[false]}},"required":["cloudRevision","sharedRevision","asOf","unsyncedDeviceChangesVisible"],"additionalProperties":false}},"required":["bookId","currency","timeZone","period","previousPeriod","currencies","owed","groupSource","freshness"],"additionalProperties":false},"Agenda":{"type":"object","properties":{"bookId":{"type":"string"},"currency":{"type":"string"},"timeZone":{"type":"string"},"today":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"counts":{"type":"object","properties":{"overdue":{"type":"integer","minimum":0},"today":{"type":"integer","minimum":0},"soon":{"type":"integer","minimum":0},"upcoming":{"type":"integer","minimum":0},"total":{"type":"integer","minimum":0}},"required":["overdue","today","soon","upcoming","total"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Stable within the agenda: kind plus record IDs and date."},"kind":{"type":"string","enum":["bill","delivery","entry_due","reminder","recurring_entry","recurring_expense"]},"status":{"type":"string","enum":["overdue","today","soon","upcoming"]},"date":{"type":"integer","description":"When it is due: the scheduled time, due date or reminder time, epoch milliseconds."},"localDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"That date in the rule's time zone (bills, deliveries, recurring) or the book's."},"title":{"type":"string","description":"The note, else the category or person name; may be empty."},"amountMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$","nullable":true,"description":"What is due, exact minor units: the scheduled amount, or what is still owed on an entry or share. null when a bill has no fixed amount."},"currency":{"type":"string"},"direction":{"type":"string","enum":["to_receive","to_pay","to_spend"],"description":"Which way money moves when it is done."},"personId":{"type":"string","nullable":true},"personName":{"type":"string","nullable":true},"refs":{"type":"object","properties":{"ruleId":{"type":"string","nullable":true},"ruleType":{"type":"string","enum":["entry","expense"],"nullable":true,"description":"ruleType for occurrence.skip and occurrence.materialize; bills and deliveries are expense rules."},"occurrenceLocalDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"entryId":{"type":"string","nullable":true},"spendShareId":{"type":"string","nullable":true},"reminderId":{"type":"string","nullable":true},"recordId":{"type":"string","nullable":true,"description":"The entry or share to settle, or a reopened bill or delivery record to acknowledge when paying again."},"recordVersion":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$","nullable":true}},"required":["ruleId","ruleType","occurrenceLocalDate","entryId","spendShareId","reminderId","recordId","recordVersion"],"additionalProperties":false},"version":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$","description":"Current version of the rule, entry or reminder, for preconditions."},"actions":{"type":"array","items":{"type":"string","enum":["pay","receive","skip","settle","materialize","snooze","disable","edit"]}}},"required":["id","kind","status","date","localDate","title","amountMinor","currency","direction","personId","personName","refs","version","actions"],"additionalProperties":false},"description":"Sorted by date, kind and id; at most limit."},"truncated":{"type":"boolean","description":"More items exist than limit; counts cover all of them."},"sections":{"type":"object","properties":{"trackers":{"type":"object","properties":{"status":{"type":"string","enum":["included","skipped"]},"rules":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"trackingMode":{"type":"string","enum":["bill","delivery"]},"name":{"type":"string","nullable":true,"description":"The note, else the category name."},"personId":{"type":"string","nullable":true},"currency":{"type":"string"},"timeZone":{"type":"string"},"enabled":{"type":"boolean"},"version":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"status":{"type":"string","enum":["paused","overdue","due_today","upcoming","completed"]},"pendingOccurrenceLocalDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true,"description":"The earliest date not yet paid, received or skipped."},"openDates":{"type":"array","items":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"description":"Unresolved dates up to today, oldest first (at most 31)."},"openCount":{"type":"integer","minimum":0},"nextScheduledLocalDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true,"description":"The first unresolved date on or after today."},"scheduledAmountMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$","nullable":true,"description":"Scheduled amount of the pending date, else of the next date."}},"required":["ruleId","trackingMode","name","personId","currency","timeZone","enabled","version","status","pendingOccurrenceLocalDate","openDates","openCount","nextScheduledLocalDate","scheduledAmountMinor"],"additionalProperties":false}}},"required":["status","rules"],"additionalProperties":false},"entries":{"type":"object","properties":{"status":{"type":"string","enum":["included","skipped"]},"count":{"type":"integer","minimum":0}},"required":["status","count"],"additionalProperties":false},"reminders":{"type":"object","properties":{"status":{"type":"string","enum":["included","skipped"]},"count":{"type":"integer","minimum":0}},"required":["status","count"],"additionalProperties":false},"recurring":{"type":"object","properties":{"status":{"type":"string","enum":["included","skipped"]},"count":{"type":"integer","minimum":0}},"required":["status","count"],"additionalProperties":false},"groups":{"type":"object","properties":{"status":{"type":"string","enum":["included","not_permitted","unavailable","skipped"],"description":"not_permitted: the caller may not read groups; unavailable: groups could not be read; skipped: not requested."},"counts":{"type":"object","properties":{"settlementsToConfirm":{"type":"integer","minimum":0},"reversalRequests":{"type":"integer","minimum":0},"invitations":{"type":"integer","minimum":0},"joinRequests":{"type":"integer","minimum":0},"connectionRequests":{"type":"integer","minimum":0},"guestClaims":{"type":"integer","minimum":0},"unreadInbox":{"type":"integer","minimum":0}},"required":["settlementsToConfirm","reversalRequests","invitations","joinRequests","connectionRequests","guestClaims","unreadInbox"],"additionalProperties":false},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The settlement, invitation, connection or claim ID."},"kind":{"type":"string","enum":["settlement_to_confirm","reversal_request","invitation","join_request","connection_request","guest_claim"]},"spaceId":{"type":"string","nullable":true},"spaceName":{"type":"string","nullable":true},"name":{"type":"string","nullable":true,"description":"The other person."},"amountMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$","nullable":true},"currency":{"type":"string","nullable":true},"date":{"type":"integer"},"version":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"}},"required":["id","kind","spaceId","spaceName","name","amountMinor","currency","date","version"],"additionalProperties":false}}},"required":["status","counts","items"],"additionalProperties":false}},"required":["trackers","entries","reminders","recurring","groups"],"additionalProperties":false},"projection":{"type":"object","properties":{"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Overdue dates are counted from here (the agenda's from); entries due earlier still count."},"today":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"monthEnd":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"The last day of this month in the book time zone."},"currencies":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string"},"overdueToPayMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$","description":"Overdue bills, deliveries, entries you owe, recurring payments and expenses not yet done."},"dueThisMonthToPayMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$","description":"The same, due from today to the end of the month."},"overdueToReceiveMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$","description":"Overdue money owed to you, and recurring money you get."},"expectedToReceiveMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$","description":"Money owed to you or recurring money you get, due from today to the end of the month."},"interestToReceiveMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$","description":"Interest your open loans to others add from now to the end of the month."},"interestToPayMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$","description":"Interest your open loans from others add from now to the end of the month."},"unknownAmountCount":{"type":"integer","minimum":0,"description":"Lines without a fixed amount, such as variable bills."},"lines":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Stable: kind plus record IDs and date."},"kind":{"type":"string","enum":["bill","delivery","entry_due","recurring_entry","recurring_expense","interest"]},"date":{"type":"integer","description":"When it is due, epoch milliseconds; for interest, the end of the month."},"localDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"title":{"type":"string","description":"The note, else the category or person name; may be empty."},"amountMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$","nullable":true,"description":"Exact minor units; null when a bill has no fixed amount (left out of every total)."},"currency":{"type":"string"},"direction":{"type":"string","enum":["to_receive","to_pay","to_spend"]},"overdue":{"type":"boolean","description":"Due before today and still open."},"personId":{"type":"string","nullable":true},"personName":{"type":"string","nullable":true},"ruleId":{"type":"string","nullable":true,"description":"The bill, delivery or recurring rule."},"entryId":{"type":"string","nullable":true,"description":"The entry due, or the interest loan."}},"required":["id","kind","date","localDate","title","amountMinor","currency","direction","overdue","personId","personName","ruleId","entryId"],"additionalProperties":false},"description":"By date; at most the projection line limit across currencies."}},"required":["currency","overdueToPayMinor","dueThisMonthToPayMinor","overdueToReceiveMinor","expectedToReceiveMinor","interestToReceiveMinor","interestToPayMinor","unknownAmountCount","lines"],"additionalProperties":false},"description":"The book currency first, then others by code."},"truncated":{"type":"boolean","description":"Some lines were left out of lines; totals still cover them."}},"required":["from","today","monthEnd","currencies","truncated"],"additionalProperties":false,"description":"Month-ahead cash projection, present when the projection section is read."},"freshness":{"type":"object","properties":{"cloudRevision":{"type":"string"},"sharedRevision":{"type":"string","nullable":true},"asOf":{"type":"integer"},"unsyncedDeviceChangesVisible":{"type":"boolean","enum":[false]}},"required":["cloudRevision","sharedRevision","asOf","unsyncedDeviceChangesVisible"],"additionalProperties":false}},"required":["bookId","currency","timeZone","today","from","to","counts","items","truncated","sections","freshness"],"additionalProperties":false},"CloudCommand":{"anyOf":[{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["privateLedger.upgrade"]},"payload":{"type":"object","properties":{},"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["person.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"name":{"type":"string","minLength":1,"maxLength":500},"category":{"type":"string","maxLength":100,"nullable":true},"phoneRaw":{"type":"string","maxLength":10000,"nullable":true},"phoneNormalized":{"type":"string","maxLength":10000,"nullable":true},"countryCode":{"type":"string","maxLength":3,"nullable":true},"note":{"type":"string","maxLength":10000,"nullable":true},"sourceType":{"type":"string","enum":["manual","contact"]},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true}},"required":["id","name"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["person.update"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"name":{"type":"string","minLength":1,"maxLength":500},"category":{"type":"string","maxLength":100,"nullable":true},"phoneRaw":{"type":"string","maxLength":10000,"nullable":true},"phoneNormalized":{"type":"string","maxLength":10000,"nullable":true},"countryCode":{"type":"string","maxLength":3,"nullable":true},"note":{"type":"string","maxLength":10000,"nullable":true},"sourceType":{"type":"string","enum":["manual","contact"]},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["person.delete"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["person.merge"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"targetPersonId":{"type":"string","minLength":1,"maxLength":512}},"required":["id","targetPersonId"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["entry.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"personId":{"type":"string","minLength":1,"maxLength":512},"direction":{"type":"string","enum":["gave","got"]},"kind":{"type":"string","enum":["money"]},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"dueDate":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds.","nullable":true},"note":{"type":"string","maxLength":10000,"nullable":true},"recurringRuleId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"recurringOccurrenceLocalDate":{"type":"string","nullable":true},"interestRateBps":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":9007199254740991,"description":"Annual simple interest in basis points: 1800 means 18% yearly. Interest accrues daily on unpaid principal using actual calendar days/365, without compounding.","nullable":true},"interestTimeZone":{"type":"string","maxLength":100,"nullable":true}},"required":["id","personId","direction","amountMinor","currency","date"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["entry.update"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"personId":{"type":"string","minLength":1,"maxLength":512},"direction":{"type":"string","enum":["gave","got"]},"kind":{"type":"string","enum":["money"]},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"dueDate":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds.","nullable":true},"note":{"type":"string","maxLength":10000,"nullable":true},"recurringRuleId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"recurringOccurrenceLocalDate":{"type":"string","nullable":true},"interestRateBps":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":9007199254740991,"description":"Annual simple interest in basis points: 1800 means 18% yearly. Interest accrues daily on unpaid principal using actual calendar days/365, without compounding.","nullable":true},"interestTimeZone":{"type":"string","maxLength":100,"nullable":true}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["entry.delete"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["expense.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"totalAmountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"mode":{"type":"string","enum":["personal","split"]},"splitMethod":{"type":"string","enum":["equal","exact","percentage"],"nullable":true},"categoryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"subcategoryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"note":{"type":"string","maxLength":10000,"nullable":true},"quantity":{"type":"number","exclusiveMinimum":true,"minimum":0,"nullable":true},"unit":{"type":"string","maxLength":100,"nullable":true},"origin":{"type":"string","enum":["manual","recurring","bill","delivery"]},"recurringRuleId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"recurringOccurrenceLocalDate":{"type":"string","nullable":true},"shares":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"personId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"isSelf":{"type":"boolean"},"shareAmountMinor":{"type":"string"},"sharePercentage":{"type":"number","minimum":0,"maximum":100,"nullable":true},"role":{"type":"string","enum":["self_expense","receivable"]}},"required":["id","isSelf","shareAmountMinor","role"],"additionalProperties":false},"minItems":1,"maxItems":500}},"required":["id","totalAmountMinor","currency","mode","date","shares"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["expense.update"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"totalAmountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"mode":{"type":"string","enum":["personal","split"]},"splitMethod":{"type":"string","enum":["equal","exact","percentage"],"nullable":true},"categoryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"subcategoryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"note":{"type":"string","maxLength":10000,"nullable":true},"quantity":{"type":"number","exclusiveMinimum":true,"minimum":0,"nullable":true},"unit":{"type":"string","maxLength":100,"nullable":true},"origin":{"type":"string","enum":["manual","recurring","bill","delivery"]},"recurringRuleId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"recurringOccurrenceLocalDate":{"type":"string","nullable":true},"shares":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"personId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"isSelf":{"type":"boolean"},"shareAmountMinor":{"type":"string"},"sharePercentage":{"type":"number","minimum":0,"maximum":100,"nullable":true},"role":{"type":"string","enum":["self_expense","receivable"]}},"required":["id","isSelf","shareAmountMinor","role"],"additionalProperties":false},"minItems":1,"maxItems":500}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["expense.delete"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["settlement.record"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"entryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"spendShareId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"reverseEntryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"amountMinor":{"type":"string"},"interestAmountMinor":{"type":"string","description":"Interest portion of total cash paid. Omit for interest-first allocation on interest loans; equal to amountMinor for interest-only, or zero for principal-only. Advance interest is not allowed."},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"note":{"type":"string","maxLength":10000,"nullable":true}},"required":["id","amountMinor","date"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["settlement.recordLumpSum"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":400,"description":"New ID for this repayment. Settlements default to <id>_1, <id>_2, … in allocation order."},"personId":{"type":"string","minLength":1,"maxLength":512},"direction":{"type":"string","enum":["received","paid"],"description":"received: the person paid you. paid: you paid the person."},"amountMinor":{"type":"string"},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"note":{"type":"string","maxLength":10000,"nullable":true},"allocations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"entryId":{"type":"string","minLength":1,"maxLength":512},"spendShareId":{"type":"string","minLength":1,"maxLength":512},"amountMinor":{"type":"string"},"interestAmountMinor":{"type":"string"},"outstandingMinor":{"type":"string","description":"What was left on this item on the payment date, before this payment."}},"required":["id","amountMinor","interestAmountMinor","outstandingMinor"],"additionalProperties":false},"maxItems":200,"description":"Filled by preparation: one settlement per entry or expense share, oldest first. Execution refuses them if the open items changed."},"deliveryOffset":{"type":"object","properties":{"entryId":{"type":"string","minLength":1,"maxLength":512},"amountMinor":{"type":"string"}},"required":["entryId","amountMinor"],"additionalProperties":false,"nullable":true,"description":"Filled by preparation: when you paid more than the money you got from them, the rest pays for their deliveries and is recorded as money you gave."}},"required":["id","personId","direction","amountMinor","date"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["settlement.reverse"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["share.reopen"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["category.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"name":{"type":"string","minLength":1,"maxLength":200},"emoji":{"type":"string","maxLength":64}},"required":["id","name","emoji"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["category.update"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"name":{"type":"string","minLength":1,"maxLength":200},"emoji":{"type":"string","maxLength":64}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["category.delete"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["subcategory.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"name":{"type":"string","minLength":1,"maxLength":200},"emoji":{"type":"string","maxLength":64},"categoryId":{"type":"string","minLength":1,"maxLength":512}},"required":["id","name","emoji","categoryId"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["subcategory.update"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"name":{"type":"string","minLength":1,"maxLength":200},"emoji":{"type":"string","maxLength":64},"categoryId":{"type":"string","minLength":1,"maxLength":512}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["subcategory.delete"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["rule.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"personId":{"type":"string","minLength":1,"maxLength":512},"direction":{"type":"string","enum":["gave","got"]},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"note":{"type":"string","maxLength":10000,"nullable":true},"startDateLocal":{"type":"string"},"endDateLocal":{"type":"string","nullable":true},"timeOfDayMinutes":{"type":"integer","minimum":0,"maximum":1439},"timeZone":{"type":"string","maxLength":100},"frequency":{"type":"string","enum":["daily","weekly","monthly","yearly"]},"interval":{"type":"integer","minimum":1,"maximum":999},"weekdays":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"maxItems":7},"monthlyDay":{"type":"integer","minimum":1,"maximum":31,"nullable":true},"yearlyMonth":{"type":"integer","minimum":1,"maximum":12,"nullable":true},"yearlyDay":{"type":"integer","minimum":1,"maximum":31,"nullable":true},"enabled":{"type":"boolean"},"autoCreateMissed":{"type":"boolean"},"resumeFromDateLocal":{"type":"string","nullable":true}},"required":["id","personId","direction","amountMinor","currency","startDateLocal","timeOfDayMinutes","timeZone","frequency","interval","weekdays","enabled"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["rule.update"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"personId":{"type":"string","minLength":1,"maxLength":512},"direction":{"type":"string","enum":["gave","got"]},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"note":{"type":"string","maxLength":10000,"nullable":true},"startDateLocal":{"type":"string"},"endDateLocal":{"type":"string","nullable":true},"timeOfDayMinutes":{"type":"integer","minimum":0,"maximum":1439},"timeZone":{"type":"string","maxLength":100},"frequency":{"type":"string","enum":["daily","weekly","monthly","yearly"]},"interval":{"type":"integer","minimum":1,"maximum":999},"weekdays":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"maxItems":7},"monthlyDay":{"type":"integer","minimum":1,"maximum":31,"nullable":true},"yearlyMonth":{"type":"integer","minimum":1,"maximum":12,"nullable":true},"yearlyDay":{"type":"integer","minimum":1,"maximum":31,"nullable":true},"enabled":{"type":"boolean"},"autoCreateMissed":{"type":"boolean"},"resumeFromDateLocal":{"type":"string","nullable":true}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["rule.delete"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["expenseRule.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"trackingMode":{"type":"string","enum":["expense","bill","delivery"]},"amountMinor":{"type":"string","nullable":true},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"note":{"type":"string","maxLength":10000,"nullable":true},"personId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"categoryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"subcategoryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"notifyOnDue":{"type":"boolean"},"deliveryQuantity":{"type":"number","exclusiveMinimum":true,"minimum":0,"nullable":true},"deliveryUnit":{"type":"string","maxLength":100,"nullable":true},"startDateLocal":{"type":"string"},"endDateLocal":{"type":"string","nullable":true},"timeOfDayMinutes":{"type":"integer","minimum":0,"maximum":1439},"timeZone":{"type":"string","maxLength":100},"frequency":{"type":"string","enum":["daily","weekly","monthly","yearly"]},"interval":{"type":"integer","minimum":1,"maximum":999},"weekdays":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"maxItems":7},"monthlyDay":{"type":"integer","minimum":1,"maximum":31,"nullable":true},"yearlyMonth":{"type":"integer","minimum":1,"maximum":12,"nullable":true},"yearlyDay":{"type":"integer","minimum":1,"maximum":31,"nullable":true},"enabled":{"type":"boolean"},"autoCreateMissed":{"type":"boolean"},"resumeFromDateLocal":{"type":"string","nullable":true}},"required":["id","trackingMode","amountMinor","currency","startDateLocal","timeOfDayMinutes","timeZone","frequency","interval","weekdays","enabled"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["expenseRule.update"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"trackingMode":{"type":"string","enum":["expense","bill","delivery"]},"amountMinor":{"type":"string","nullable":true},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"note":{"type":"string","maxLength":10000,"nullable":true},"personId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"categoryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"subcategoryId":{"type":"string","minLength":1,"maxLength":512,"nullable":true},"notifyOnDue":{"type":"boolean"},"deliveryQuantity":{"type":"number","exclusiveMinimum":true,"minimum":0,"nullable":true},"deliveryUnit":{"type":"string","maxLength":100,"nullable":true},"startDateLocal":{"type":"string"},"endDateLocal":{"type":"string","nullable":true},"timeOfDayMinutes":{"type":"integer","minimum":0,"maximum":1439},"timeZone":{"type":"string","maxLength":100},"frequency":{"type":"string","enum":["daily","weekly","monthly","yearly"]},"interval":{"type":"integer","minimum":1,"maximum":999},"weekdays":{"type":"array","items":{"type":"string","enum":["monday","tuesday","wednesday","thursday","friday","saturday","sunday"]},"maxItems":7},"monthlyDay":{"type":"integer","minimum":1,"maximum":31,"nullable":true},"yearlyMonth":{"type":"integer","minimum":1,"maximum":12,"nullable":true},"yearlyDay":{"type":"integer","minimum":1,"maximum":31,"nullable":true},"enabled":{"type":"boolean"},"autoCreateMissed":{"type":"boolean"},"resumeFromDateLocal":{"type":"string","nullable":true}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["expenseRule.delete"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["reminder.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"entityType":{"type":"string","enum":["entry","spend_share"]},"entityId":{"type":"string","minLength":1,"maxLength":512},"type":{"type":"string","enum":["one_time","recurring"]},"recurrence":{"type":"string","enum":["daily","weekly","monthly"],"nullable":true},"interval":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":10000},"nextTriggerAt":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"enabled":{"type":"boolean"},"messageKey":{"type":"string","minLength":1,"maxLength":200},"messageParams":{"type":"object","additionalProperties":{}}},"required":["id","entityType","entityId","type","nextTriggerAt","enabled","messageKey"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["reminder.update"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"entityType":{"type":"string","enum":["entry","spend_share"]},"entityId":{"type":"string","minLength":1,"maxLength":512},"type":{"type":"string","enum":["one_time","recurring"]},"recurrence":{"type":"string","enum":["daily","weekly","monthly"],"nullable":true},"interval":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":10000},"nextTriggerAt":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"enabled":{"type":"boolean"},"messageKey":{"type":"string","minLength":1,"maxLength":200},"messageParams":{"type":"object","additionalProperties":{}}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["reminder.delete"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["bill.pay"]},"payload":{"type":"object","properties":{"ruleId":{"type":"string","minLength":1,"maxLength":512},"occurrenceLocalDate":{"type":"string"},"id":{"type":"string","minLength":1,"maxLength":512},"amountMinor":{"type":"string"},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"note":{"type":"string","maxLength":10000,"nullable":true},"quantity":{"type":"number","exclusiveMinimum":true,"minimum":0},"unit":{"type":"string","maxLength":100}},"required":["ruleId","occurrenceLocalDate"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["bill.reopen"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["bill.skip"]},"payload":{"type":"object","properties":{"ruleId":{"type":"string","minLength":1,"maxLength":512},"occurrenceLocalDate":{"type":"string"},"ruleType":{"type":"string","enum":["entry","expense"]}},"required":["ruleId","occurrenceLocalDate","ruleType"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["bill.amount.set"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"ruleId":{"type":"string","minLength":1,"maxLength":512},"occurrenceLocalDate":{"type":"string"},"amountMinor":{"type":"string"}},"required":["id","ruleId","occurrenceLocalDate","amountMinor"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["bill.amount.clear"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["delivery.receive"]},"payload":{"type":"object","properties":{"ruleId":{"type":"string","minLength":1,"maxLength":512},"occurrenceLocalDate":{"type":"string"},"id":{"type":"string","minLength":1,"maxLength":512},"amountMinor":{"type":"string"},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"note":{"type":"string","maxLength":10000,"nullable":true},"quantity":{"type":"number","exclusiveMinimum":true,"minimum":0},"unit":{"type":"string","maxLength":100}},"required":["ruleId","occurrenceLocalDate"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["delivery.reopen"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["delivery.skip"]},"payload":{"type":"object","properties":{"ruleId":{"type":"string","minLength":1,"maxLength":512},"occurrenceLocalDate":{"type":"string"},"ruleType":{"type":"string","enum":["entry","expense"]}},"required":["ruleId","occurrenceLocalDate","ruleType"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["occurrence.skip"]},"payload":{"type":"object","properties":{"ruleId":{"type":"string","minLength":1,"maxLength":512},"occurrenceLocalDate":{"type":"string"},"ruleType":{"type":"string","enum":["entry","expense"]}},"required":["ruleId","occurrenceLocalDate","ruleType"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["occurrence.unskip"]},"payload":{"type":"object","properties":{"ruleId":{"type":"string","minLength":1,"maxLength":512},"occurrenceLocalDate":{"type":"string"},"ruleType":{"type":"string","enum":["entry","expense"]}},"required":["ruleId","occurrenceLocalDate","ruleType"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["occurrence.materialize"]},"payload":{"type":"object","properties":{"ruleId":{"type":"string","minLength":1,"maxLength":512},"occurrenceLocalDate":{"type":"string"},"ruleType":{"type":"string","enum":["entry","expense"]}},"required":["ruleId","occurrenceLocalDate","ruleType"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"operationId":{"type":"string","minLength":1,"maxLength":512},"bookId":{"type":"string","minLength":1,"maxLength":512},"preconditions":{"type":"object","additionalProperties":{"anyOf":[{"type":"object","properties":{"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["version"],"additionalProperties":false},{"type":"object","properties":{"afterOperationId":{"type":"string","minLength":1,"maxLength":512}},"required":["afterOperationId"],"additionalProperties":false}]}},"dependsOn":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":500},"type":{"type":"string","enum":["settings.update"]},"payload":{"type":"object","properties":{"key":{"type":"string","enum":["user.displayName","user.countryCode"]},"value":{"type":"string","maxLength":500,"nullable":true}},"required":["key","value"],"additionalProperties":false}},"required":["schemaVersion","operationId","bookId","type","payload"],"additionalProperties":false}]},"MutationOutcome":{"type":"object","properties":{"operationId":{"type":"string","minLength":1,"maxLength":512},"status":{"type":"string","enum":["accepted","conflict","rejected","blocked"]},"revision":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"changes":{"type":"array","items":{"type":"object","properties":{"entity":{"type":"string","enum":["people","entries","recurring_rules","recurring_rule_exceptions","spend_events","spend_shares","settlements","reminders","activity_logs","app_settings","expense_categories","expense_subcategories","expense_recurring_rules","expense_recurring_rule_exceptions","expense_recurring_bill_amount_overrides"]},"id":{"type":"string","minLength":1,"maxLength":512},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"record":{"type":"object","additionalProperties":{},"nullable":true}},"required":["entity","id","version","record"],"additionalProperties":false}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["operationId","status"],"additionalProperties":false},"EntityChange":{"type":"object","properties":{"entity":{"type":"string","enum":["people","entries","recurring_rules","recurring_rule_exceptions","spend_events","spend_shares","settlements","reminders","activity_logs","app_settings","expense_categories","expense_subcategories","expense_recurring_rules","expense_recurring_rule_exceptions","expense_recurring_bill_amount_overrides"]},"id":{"type":"string","minLength":1,"maxLength":512},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"record":{"type":"object","additionalProperties":{},"nullable":true}},"required":["entity","id","version","record"],"additionalProperties":false},"ChangesResponse":{"type":"object","properties":{"groups":{"type":"array","items":{"type":"object","properties":{"revision":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"operationId":{"type":"string","minLength":1,"maxLength":512},"changes":{"type":"array","items":{"type":"object","properties":{"entity":{"type":"string","enum":["people","entries","recurring_rules","recurring_rule_exceptions","spend_events","spend_shares","settlements","reminders","activity_logs","app_settings","expense_categories","expense_subcategories","expense_recurring_rules","expense_recurring_rule_exceptions","expense_recurring_bill_amount_overrides"]},"id":{"type":"string","minLength":1,"maxLength":512},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"record":{"type":"object","additionalProperties":{},"nullable":true}},"required":["entity","id","version","record"],"additionalProperties":false}}},"required":["revision","operationId","changes"],"additionalProperties":false}},"cursor":{"type":"string"},"epoch":{"type":"string"},"hasMore":{"type":"boolean"}},"required":["groups","cursor","epoch","hasMore"],"additionalProperties":false},"PushResponse":{"type":"object","properties":{"outcomes":{"type":"array","items":{"type":"object","properties":{"operationId":{"type":"string","minLength":1,"maxLength":512},"status":{"type":"string","enum":["accepted","conflict","rejected","blocked"]},"revision":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"changes":{"type":"array","items":{"type":"object","properties":{"entity":{"type":"string","enum":["people","entries","recurring_rules","recurring_rule_exceptions","spend_events","spend_shares","settlements","reminders","activity_logs","app_settings","expense_categories","expense_subcategories","expense_recurring_rules","expense_recurring_rule_exceptions","expense_recurring_bill_amount_overrides"]},"id":{"type":"string","minLength":1,"maxLength":512},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"record":{"type":"object","additionalProperties":{},"nullable":true}},"required":["entity","id","version","record"],"additionalProperties":false}},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["operationId","status"],"additionalProperties":false}},"epoch":{"type":"string"}},"required":["outcomes","epoch"],"additionalProperties":false},"Book":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"currency":{"type":"string"},"moneyScale":{"type":"integer"},"timeZone":{"type":"string"},"revision":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"activated":{"type":"boolean"},"epoch":{"type":"string"}},"required":["id","currency","moneyScale","timeZone","revision","activated","epoch"],"additionalProperties":false},"ImportPaidBalanceReview":{"type":"object","properties":{"bookId":{"type":"string","minLength":1,"maxLength":512},"importId":{"type":"string","minLength":1,"maxLength":512},"token":{"type":"string","pattern":"^[a-f0-9]{64}$"},"expiresAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"items":{"type":"array","items":{"type":"object","properties":{"entity":{"type":"string","enum":["entries","spend_shares"]},"id":{"type":"string","minLength":1,"maxLength":512},"personName":{"type":"string"},"date":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"currency":{"type":"string"},"amountMinor":{"type":"string","pattern":"^[1-9]\\d*$"},"paidMinor":{"type":"string","pattern":"^[1-9]\\d*$"}},"required":["entity","id","personName","date","currency","amountMinor","paidMinor"],"additionalProperties":false},"maxItems":100},"archivedPayments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"entryId":{"type":"string","minLength":1,"maxLength":512},"reverseEntryId":{"type":"string","minLength":1,"maxLength":512},"personName":{"type":"string"},"date":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"deletedAt":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"currency":{"type":"string"},"amountMinor":{"type":"string","pattern":"^[1-9]\\d*$"}},"required":["id","entryId","reverseEntryId","personName","date","deletedAt","currency","amountMinor"],"additionalProperties":false},"maxItems":100}},"required":["bookId","importId","token","expiresAt","items","archivedPayments"],"additionalProperties":false},"SnapshotManifest":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"revision":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"epoch":{"type":"string"},"cursor":{"type":"string"},"checksum":{"type":"string"},"rowCount":{"type":"integer","minimum":0},"chunkSize":{"type":"number","enum":[500]},"expiresAt":{"type":"string"}},"required":["id","revision","epoch","cursor","checksum","rowCount","chunkSize","expiresAt"],"additionalProperties":false},"SnapshotPage":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":512},"revision":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"epoch":{"type":"string"},"cursor":{"type":"string"},"checksum":{"type":"string"},"rowCount":{"type":"integer","minimum":0},"chunkSize":{"type":"number","enum":[500]},"expiresAt":{"type":"string"},"records":{"type":"array","items":{"type":"object","properties":{"entity":{"type":"string","enum":["people","entries","recurring_rules","recurring_rule_exceptions","spend_events","spend_shares","settlements","reminders","activity_logs","app_settings","expense_categories","expense_subcategories","expense_recurring_rules","expense_recurring_rule_exceptions","expense_recurring_bill_amount_overrides"]},"id":{"type":"string","minLength":1,"maxLength":512},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"record":{"type":"object","additionalProperties":{},"nullable":true}},"required":["entity","id","version","record"],"additionalProperties":false}},"nextOffset":{"type":"integer","minimum":0,"nullable":true}},"required":["id","revision","epoch","cursor","checksum","rowCount","chunkSize","expiresAt","records","nextOffset"],"additionalProperties":false},"RepaymentQuote":{"type":"object","properties":{"principalPaidMinor":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$"},"principalRemainingMinor":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$"},"interestAccruedMinor":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$"},"interestPaidMinor":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$"},"interestRemainingMinor":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$"},"totalRemainingMinor":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$"},"calculationDate":{"type":"string"},"status":{"type":"string","enum":["active","partial","settled"]},"date":{"type":"integer","minimum":0,"maximum":9007199254740991,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"amountMinor":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$"},"principalAmountMinor":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$"},"interestAmountMinor":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$"},"entryId":{"type":"string","minLength":1,"maxLength":512},"entryVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"currency":{"type":"string"},"moneyScale":{"type":"integer"},"currentBalance":{"type":"object","properties":{"principalPaidMinor":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$"},"principalRemainingMinor":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$"},"interestAccruedMinor":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$"},"interestPaidMinor":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$"},"interestRemainingMinor":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$"},"totalRemainingMinor":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$"},"calculationDate":{"type":"string"},"status":{"type":"string","enum":["active","partial","settled"]}},"required":["principalPaidMinor","principalRemainingMinor","interestAccruedMinor","interestPaidMinor","interestRemainingMinor","totalRemainingMinor","calculationDate","status"],"additionalProperties":false}},"required":["principalPaidMinor","principalRemainingMinor","interestAccruedMinor","interestPaidMinor","interestRemainingMinor","totalRemainingMinor","calculationDate","status","date","amountMinor","principalAmountMinor","interestAmountMinor","entryId","entryVersion","currency","moneyScale"],"additionalProperties":false},"LoanInterestCompatibility":{"type":"object","properties":{"requiredCapability":{"type":"string","enum":["loan-interest-v1"]},"enabled":{"type":"boolean"},"requiredForBook":{"type":"boolean"},"clientSupported":{"type":"boolean"},"canEnable":{"type":"boolean"},"reason":{"type":"string","enum":["rollout_pending","devices_incompatible","client_upgrade_required"],"nullable":true},"incompatibleDeviceCount":{"type":"integer","minimum":0}},"required":["requiredCapability","enabled","requiredForBook","clientSupported","canEnable","reason","incompatibleDeviceCount"],"additionalProperties":false},"NativeDevicesResponse":{"type":"object","properties":{"devices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"lastSeenAt":{"type":"string"},"capabilities":{"type":"array","items":{"type":"string"}},"checkedAt":{"type":"string","nullable":true}},"required":["id","name","lastSeenAt"],"additionalProperties":false}}},"required":["devices"],"additionalProperties":false},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"requestId":{"type":"string"},"details":{}}}}},"RecordPage":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","additionalProperties":{}}},"nextCursor":{"type":"string","nullable":true},"freshness":{"type":"object","properties":{"cloudRevision":{"type":"string"},"asOf":{"type":"number"},"unsyncedDeviceChangesVisible":{"type":"boolean","enum":[false]},"nextInterestChangeAt":{"type":"integer","nullable":true}},"required":["cloudRevision","asOf","unsyncedDeviceChangesVisible"],"additionalProperties":false}},"required":["items","nextCursor","freshness"],"additionalProperties":false},"PeopleRecordPage":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"string"},"avatarAttachmentId":{"type":"string","nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"owedToMeMinor":{"type":"string","pattern":"^\\d+$"},"iOweMinor":{"type":"string","pattern":"^\\d+$"},"netMinor":{"type":"string","pattern":"^-?\\d+$"},"lastActivityAt":{"type":"integer","description":"The latest change to an entry or expense share with this person (payments, reversals and deletes included), or when the person was added if later; epoch milliseconds. The recent sort uses it."}},"required":["id","version","owedToMeMinor","iOweMinor","netMinor"],"additionalProperties":true,"description":"Active person with full-ledger balances, netted across entries, receivable expense shares, and delivery debt. Money is returned as exact decimal strings."}},"nextCursor":{"type":"string","nullable":true},"freshness":{"type":"object","properties":{"cloudRevision":{"type":"string"},"asOf":{"type":"number"},"unsyncedDeviceChangesVisible":{"type":"boolean","enum":[false]},"nextInterestChangeAt":{"type":"integer","nullable":true}},"required":["cloudRevision","asOf","unsyncedDeviceChangesVisible"],"additionalProperties":false}},"required":["items","nextCursor","freshness"],"additionalProperties":false},"TrackedOccurrencesPage":{"type":"object","properties":{"items":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string"},"occurrenceLocalDate":{"type":"string"},"scheduledAt":{"type":"number"},"status":{"type":"string","enum":["paid","received","skipped","due","upcoming"]},"currency":{"type":"string"},"scheduledAmountMinor":{"type":"string","nullable":true},"amountMinor":{"type":"string","nullable":true},"unitAmountMinor":{"type":"string","nullable":true},"hasAmountOverride":{"type":"boolean"},"quantity":{"type":"number","nullable":true},"unit":{"type":"string","nullable":true},"recordId":{"type":"string","nullable":true},"recordVersion":{"type":"string","nullable":true},"reopenedRecord":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"string"}},"required":["id","version"],"additionalProperties":false,"nullable":true},"recordedAt":{"type":"number","nullable":true},"scheduled":{"type":"boolean"}},"required":["ruleId","occurrenceLocalDate","scheduledAt","status","currency","scheduledAmountMinor","amountMinor","unitAmountMinor","hasAmountOverride","quantity","unit","recordId","recordVersion","reopenedRecord","recordedAt","scheduled"],"additionalProperties":false}},"nextCursor":{"type":"string","nullable":true},"rule":{"type":"object","properties":{"id":{"type":"string"},"version":{"type":"string"},"timeZone":{"type":"string"},"enabled":{"type":"boolean"},"trackingMode":{"type":"string","enum":["bill","delivery"]}},"required":["id","version","timeZone","enabled","trackingMode"],"additionalProperties":false},"freshness":{"type":"object","properties":{"cloudRevision":{"type":"string"},"asOf":{"type":"number"},"unsyncedDeviceChangesVisible":{"type":"boolean","enum":[false]}},"required":["cloudRevision","asOf","unsyncedDeviceChangesVisible"],"additionalProperties":false},"from":{"type":"string"},"to":{"type":"string"}},"required":["items","nextCursor","rule","freshness","from","to"],"additionalProperties":false},"QrStartRequest":{"type":"object","properties":{},"additionalProperties":false},"QrStartResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"qrImage":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"},"displayCode":{"type":"string"}},"required":["id","qrImage","expiresAt","displayCode"],"additionalProperties":false},"QrStatusResponse":{"type":"object","properties":{"status":{"type":"string","enum":["pending","approved","completed","denied","cancelled","expired"]},"expiresAt":{"type":"string","format":"date-time"}},"required":["status","expiresAt"],"additionalProperties":false},"QrCompleteResponse":{"type":"object","properties":{"signedIn":{"type":"boolean","enum":[true]}},"required":["signedIn"],"additionalProperties":false},"QrCancelResponse":{"type":"object","properties":{"cancelled":{"type":"boolean","enum":[true]}},"required":["cancelled"],"additionalProperties":false},"QrNativeInspectRequest":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid"},"approvalToken":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"expectedAccountId":{"type":"string","minLength":1,"maxLength":512}},"required":["requestId","approvalToken"],"additionalProperties":false},"QrNativeDecisionRequest":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid"},"approvalToken":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"expectedAccountId":{"type":"string","minLength":1,"maxLength":512}},"required":["requestId","approvalToken","expectedAccountId"],"additionalProperties":false},"QrNativeInspectResponse":{"type":"object","properties":{"status":{"type":"string","enum":["pending","approved","completed","denied","cancelled","expired"]},"requestId":{"type":"string","format":"uuid"},"origin":{"type":"string","format":"uri"},"browserDescription":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"displayCode":{"type":"string"},"account":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string","format":"email"}},"required":["id","email"],"additionalProperties":false},"approvedByCurrentAccount":{"type":"boolean"}},"required":["status","requestId","origin","browserDescription","createdAt","expiresAt","displayCode","account","approvedByCurrentAccount"],"additionalProperties":false},"QrApproveResponse":{"type":"object","properties":{"approved":{"type":"boolean","enum":[true]}},"required":["approved"],"additionalProperties":false},"QrDenyResponse":{"type":"object","properties":{"denied":{"type":"boolean","enum":[true]}},"required":["denied"],"additionalProperties":false},"NotificationSettings":{"type":"object","properties":{"choices":{"type":"object","properties":{"group_needs":{"type":"object","properties":{"email":{"type":"boolean"},"telegram":{"type":"boolean"},"push":{"type":"boolean"}},"required":["email","telegram","push"],"additionalProperties":false,"description":"Group requests and payments: invitations, join requests, guest claims, payments to confirm or that didn't arrive, requests to undo a payment, disputes and payment reminders."},"group_activity":{"type":"object","properties":{"email":{"type":"boolean"},"telegram":{"type":"boolean"},"push":{"type":"boolean"}},"required":["email","telegram","push"],"additionalProperties":false,"description":"Other group activity: new, changed and removed expenses, comments, confirmed payments, people joining or leaving."},"due":{"type":"object","properties":{"email":{"type":"boolean"},"telegram":{"type":"boolean"},"push":{"type":"boolean"}},"required":["email","telegram","push"],"additionalProperties":false,"description":"Due now: reminders, bills, deliveries and entries with a due date, at the time they are due. Phones already alert for reminders, bills and deliveries themselves, so push sends those only to browsers."},"digest":{"type":"object","properties":{"email":{"type":"boolean"},"telegram":{"type":"boolean"},"push":{"type":"boolean"}},"required":["email","telegram","push"],"additionalProperties":false,"description":"Agenda summary (digestFrequency): what is overdue, due today and due in the next 7 days, each morning or on Monday mornings in the book time zone."}},"required":["group_needs","group_activity","due","digest"],"additionalProperties":false},"digestFrequency":{"type":"string","enum":["daily","weekly"]},"pushDetails":{"type":"boolean","description":"false: push notifications only say \"Open OweJar\" with no names or amounts."},"email":{"type":"object","properties":{"available":{"type":"boolean","description":"false when this server cannot send email."},"address":{"type":"string","nullable":true},"lastSentAt":{"type":"number","nullable":true,"description":"Last successful send, epoch ms."},"problem":{"type":"string","nullable":true,"description":"Why the latest send failed, when it failed after the last success."},"problemAt":{"type":"number","nullable":true}},"required":["available","address","lastSentAt","problem","problemAt"],"additionalProperties":false},"telegram":{"type":"object","properties":{"available":{"type":"boolean","description":"false when this server has no Telegram bot."},"connected":{"type":"boolean"},"chatName":{"type":"string","nullable":true},"linkedAt":{"type":"number","nullable":true},"lastSentAt":{"type":"number","nullable":true,"description":"Last successful send, epoch ms."},"problem":{"type":"string","nullable":true,"description":"Why the latest send failed, when it failed after the last success."},"problemAt":{"type":"number","nullable":true}},"required":["available","connected","chatName","linkedAt","lastSentAt","problem","problemAt"],"additionalProperties":false},"push":{"type":"object","properties":{"webAvailable":{"type":"boolean"},"webPublicKey":{"type":"string","nullable":true,"description":"applicationServerKey for PushManager.subscribe."},"devices":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string","enum":["web","expo"],"description":"web: a browser (Web Push); expo: the OweJar phone app."},"platform":{"type":"string"},"label":{"type":"string"},"createdAt":{"type":"number","nullable":true},"lastSentAt":{"type":"number","nullable":true,"description":"Last successful send, epoch ms."},"problem":{"type":"string","nullable":true,"description":"Why the latest send failed, when it failed after the last success."},"problemAt":{"type":"number","nullable":true}},"required":["id","kind","platform","label","createdAt","lastSentAt","problem","problemAt"],"additionalProperties":false}}},"required":["webAvailable","webPublicKey","devices"],"additionalProperties":false},"recent":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"channel":{"type":"string","enum":["email","telegram","push"]},"kind":{"type":"string","enum":["group_needs","group_activity","due","digest","test"]},"target":{"type":"string","nullable":true},"title":{"type":"string"},"status":{"type":"string","enum":["sent","failed"]},"error":{"type":"string","nullable":true},"createdAt":{"type":"number"}},"required":["id","channel","kind","target","title","status","error","createdAt"],"additionalProperties":false},"description":"The latest 20 sends on every channel, newest first."},"version":{"type":"string"}},"required":["choices","digestFrequency","pushDetails","email","telegram","push","recent","version"],"additionalProperties":false},"SharedAvailability":{"type":"object","properties":{"enabled":{"type":"boolean"},"mediaEnabled":{"type":"boolean"},"personalArchiveEnabled":{"type":"boolean"}},"required":["enabled","mediaEnabled"],"additionalProperties":false},"SharedSyncAck":{"type":"object","properties":{"revision":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"epoch":{"type":"string","minLength":1,"maxLength":200}},"required":["revision","epoch"],"additionalProperties":false},"SharedCommand":{"anyOf":[{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["profile.set"]},"payload":{"type":"object","properties":{"displayName":{"type":"string","minLength":1,"maxLength":100},"enabled":{"type":"boolean"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"upiId":{"type":"string","pattern":"^[A-Za-z0-9._-]{2,100}@[A-Za-z0-9.-]{2,80}$","nullable":true},"paypalMe":{"type":"string","format":"uri","nullable":true},"upiQrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["displayName","enabled"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["profile.rotate"]},"payload":{"type":"object","properties":{},"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.request"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"resolutionId":{"type":"string","minLength":1,"maxLength":200}},"required":["id","resolutionId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.accept"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.reject"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.block"]},"payload":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"blocked":{"type":"boolean"}},"required":["accountId","blocked"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.linkPerson"]},"payload":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"personId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["accountId","personId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","enum":["direct","group"]},"name":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200},"defaultCurrency":{"type":"string","pattern":"^[A-Z]{3}$"},"defaultSplitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"defaultWeights":{"type":"object","additionalProperties":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"simplifyDebts":{"type":"boolean"}},"required":["id","kind","name"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.update"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string","minLength":1,"maxLength":200},"defaultCurrency":{"type":"string","pattern":"^[A-Z]{3}$"},"defaultSplitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"defaultWeights":{"type":"object","additionalProperties":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"simplifyDebts":{"type":"boolean"}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.archive"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"archived":{"type":"boolean"}},"required":["spaceId","archived"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.archiveForMe"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"archived":{"type":"boolean"}},"required":["spaceId","archived"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.mute"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"muted":{"type":"boolean"}},"required":["spaceId","muted"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.leave"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200}},"required":["spaceId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["membership.role"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200},"role":{"type":"string","enum":["admin","member"]}},"required":["spaceId","accountId","role"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200}},"required":["id","spaceId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.accept"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.reject"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.revoke"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.requestJoin"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"resolutionId":{"type":"string","minLength":1,"maxLength":200}},"required":["id","resolutionId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.approve"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["expense.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":300},"totalAmountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"splitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"payers":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"note":{"type":"string","maxLength":10000,"nullable":true},"category":{"type":"string","maxLength":100,"nullable":true},"attachmentIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":5}},"required":["id","spaceId","title","totalAmountMinor","currency","date","splitMethod","payers","allocations"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["expense.update"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":300},"totalAmountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"splitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"payers":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"note":{"type":"string","maxLength":10000,"nullable":true},"category":{"type":"string","maxLength":100,"nullable":true},"attachmentIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":5}},"required":["id","spaceId","title","totalAmountMinor","currency","date","splitMethod","payers","allocations"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["expense.void"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["id","spaceId","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["refund.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"receivedBy":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"note":{"type":"string","maxLength":10000,"nullable":true}},"required":["id","spaceId","expenseId","amountMinor","receivedBy","allocations","date"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.propose"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"senderAccountId":{"type":"string","minLength":1,"maxLength":200},"recipientAccountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"method":{"type":"string","maxLength":80},"reference":{"type":"string","maxLength":300},"note":{"type":"string","maxLength":10000,"nullable":true},"acknowledgeCredit":{"type":"boolean"}},"required":["id","spaceId","senderAccountId","recipientAccountId","amountMinor","currency","date"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.receive"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"senderAccountId":{"type":"string","minLength":1,"maxLength":200},"recipientAccountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"method":{"type":"string","maxLength":80},"reference":{"type":"string","maxLength":300},"note":{"type":"string","maxLength":10000,"nullable":true},"acknowledgeCredit":{"type":"boolean"}},"required":["id","spaceId","senderAccountId","recipientAccountId","amountMinor","currency","date"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.confirm"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.reject"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.reverseRequest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["id","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.reverseConfirm"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["comment.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"text":{"type":"string","minLength":1,"maxLength":4000}},"required":["id","spaceId","text"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["dispute.set"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"disputed":{"type":"boolean"},"reason":{"type":"string","minLength":1,"maxLength":1000}},"required":["id","spaceId","expenseId","disputed","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["inbox.read"]},"payload":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"minItems":1,"maxItems":100}},"required":["ids"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["device.register"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"token":{"type":"string","pattern":"^(?:ExponentPushToken|ExpoPushToken)\\[[A-Za-z0-9_-]+\\]$"},"platform":{"type":"string","enum":["ios","android"]},"enabled":{"type":"boolean"}},"required":["id","token","platform","enabled"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["device.unregister"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["reminder.send"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200},"currency":{"type":"string","pattern":"^[A-Z]{3}$"}},"required":["spaceId","accountId","currency"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[2]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["report.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"reason":{"type":"string","minLength":1,"maxLength":2000}},"required":["id","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false}]},"SharedResolution":{"type":"object","properties":{"kind":{"type":"string","enum":["profile","group"]},"resolutionId":{"type":"string","minLength":1,"maxLength":200},"profile":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true}},"required":["accountId","displayName"],"additionalProperties":false},"space":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string"},"inviterName":{"type":"string"}},"required":["id","name","inviterName"],"additionalProperties":false},"expiresAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."}},"required":["kind","resolutionId","expiresAt"],"additionalProperties":false},"SharedSnapshot":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"revision":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"epoch":{"type":"string"},"profile":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string"},"enabled":{"type":"boolean"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"code":{"type":"string"},"link":{"type":"string"},"qrDataUrl":{"type":"string"},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"upiId":{"type":"string","nullable":true},"paypalMe":{"type":"string","nullable":true},"upiQrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["accountId","displayName","enabled","version"],"additionalProperties":false,"nullable":true},"connections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"requesterAccountId":{"type":"string","minLength":1,"maxLength":200},"recipientAccountId":{"type":"string","minLength":1,"maxLength":200},"status":{"type":"string","enum":["pending","accepted","rejected"]},"profile":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string"},"enabled":{"type":"boolean"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"code":{"type":"string"},"link":{"type":"string"},"qrDataUrl":{"type":"string"},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"upiId":{"type":"string","nullable":true},"paypalMe":{"type":"string","nullable":true},"upiQrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["accountId","displayName","enabled","version"],"additionalProperties":false},"blocked":{"type":"boolean"},"personId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."}},"required":["id","requesterAccountId","recipientAccountId","status","profile","version","createdAt"],"additionalProperties":false}},"spaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","enum":["direct","group"]},"name":{"type":"string"},"createdBy":{"type":"string","minLength":1,"maxLength":200},"members":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string"},"role":{"type":"string","enum":["admin","member"]},"status":{"type":"string","enum":["active","left","deleted"]},"joinedAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"leftAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds.","nullable":true},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true}},"required":["accountId","displayName","role","status","joinedAt"],"additionalProperties":false}},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"defaultCurrency":{"type":"string","pattern":"^[A-Z]{3}$"},"defaultSplitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"defaultWeights":{"type":"object","additionalProperties":{"type":"string"}},"simplifyDebts":{"type":"boolean"},"archived":{"type":"boolean"},"archivedForMe":{"type":"boolean"},"membershipVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"muted":{"type":"boolean"},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."}},"required":["id","kind","name","createdBy","members","version","defaultCurrency","defaultSplitMethod","simplifyDebts","archived","muted","createdAt"],"additionalProperties":false}},"invitations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"spaceName":{"type":"string"},"inviterAccountId":{"type":"string","minLength":1,"maxLength":200},"inviterName":{"type":"string"},"requesterName":{"type":"string"},"accountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"kind":{"type":"string","enum":["invitation","link","join_request"]},"status":{"type":"string","enum":["pending","accepted","rejected","revoked"]},"expiresAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"link":{"type":"string"},"inviteLinkId":{"type":"string","minLength":1,"maxLength":200,"nullable":true,"description":"Set when someone asked to join with the group invite link."},"participantId":{"type":"string","minLength":1,"maxLength":200,"nullable":true,"description":"The guest place they said is them; approving links it to their account."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","spaceName","inviterAccountId","kind","status","expiresAt","version"],"additionalProperties":false}},"expenses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":300},"totalAmountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"splitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"payers":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"note":{"type":"string","maxLength":10000,"nullable":true},"category":{"type":"string","maxLength":100,"nullable":true},"attachmentIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":5},"createdBy":{"type":"string","minLength":1,"maxLength":200},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"status":{"type":"string","enum":["active","void"]},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"updatedAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"disputed":{"type":"boolean"}},"required":["id","spaceId","title","totalAmountMinor","currency","date","splitMethod","payers","allocations","createdBy","version","status","createdAt","updatedAt","disputed"],"additionalProperties":false}},"refunds":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"receivedBy":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"note":{"type":"string","maxLength":10000,"nullable":true},"createdBy":{"type":"string","minLength":1,"maxLength":200},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","expenseId","amountMinor","receivedBy","allocations","date","createdBy","version"],"additionalProperties":false}},"settlements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"senderAccountId":{"type":"string","minLength":1,"maxLength":200},"recipientAccountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"method":{"type":"string","maxLength":80},"reference":{"type":"string","maxLength":300},"note":{"type":"string","maxLength":10000,"nullable":true},"acknowledgeCredit":{"type":"boolean"},"status":{"type":"string","enum":["pending","confirmed","rejected","reversal_pending","reversed"]},"createdBy":{"type":"string","minLength":1,"maxLength":200},"reversalRequestedBy":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."}},"required":["id","spaceId","senderAccountId","recipientAccountId","amountMinor","currency","date","status","createdBy","version","createdAt"],"additionalProperties":false}},"comments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"text":{"type":"string","minLength":1,"maxLength":4000},"createdBy":{"type":"string","minLength":1,"maxLength":200},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","text","createdBy","createdAt","version"],"additionalProperties":false}},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"actorAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"action":{"type":"string"},"entityId":{"type":"string","minLength":1,"maxLength":200},"before":{},"after":{},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","actorAccountId","action","createdAt","version"],"additionalProperties":false}},"inbox":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"actorAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"action":{"type":"string"},"entityId":{"type":"string","minLength":1,"maxLength":200},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"read":{"type":"boolean"}},"required":["id","actorAccountId","action","createdAt","version","read"],"additionalProperties":false}},"attachments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"expenseId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"ownerAccountId":{"type":"string","minLength":1,"maxLength":200},"bookId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"purpose":{"type":"string","enum":["receipt","avatar","private_avatar","payment_qr"]},"contentType":{"type":"string"},"size":{"type":"integer","minimum":0},"digest":{"type":"string"},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","ownerAccountId","purpose","contentType","size","createdAt","version"],"additionalProperties":false}}},"required":["accountId","revision","epoch","profile","connections","spaces","invitations","expenses","refunds","settlements","comments","activity","inbox","attachments"],"additionalProperties":false},"SharedChanges":{"type":"object","properties":{"revision":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"epoch":{"type":"string"},"changed":{"type":"boolean"},"snapshot":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"revision":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"epoch":{"type":"string"},"profile":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string"},"enabled":{"type":"boolean"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"code":{"type":"string"},"link":{"type":"string"},"qrDataUrl":{"type":"string"},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"upiId":{"type":"string","nullable":true},"paypalMe":{"type":"string","nullable":true},"upiQrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["accountId","displayName","enabled","version"],"additionalProperties":false,"nullable":true},"connections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"requesterAccountId":{"type":"string","minLength":1,"maxLength":200},"recipientAccountId":{"type":"string","minLength":1,"maxLength":200},"status":{"type":"string","enum":["pending","accepted","rejected"]},"profile":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string"},"enabled":{"type":"boolean"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"code":{"type":"string"},"link":{"type":"string"},"qrDataUrl":{"type":"string"},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"upiId":{"type":"string","nullable":true},"paypalMe":{"type":"string","nullable":true},"upiQrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["accountId","displayName","enabled","version"],"additionalProperties":false},"blocked":{"type":"boolean"},"personId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."}},"required":["id","requesterAccountId","recipientAccountId","status","profile","version","createdAt"],"additionalProperties":false}},"spaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","enum":["direct","group"]},"name":{"type":"string"},"createdBy":{"type":"string","minLength":1,"maxLength":200},"members":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string"},"role":{"type":"string","enum":["admin","member"]},"status":{"type":"string","enum":["active","left","deleted"]},"joinedAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"leftAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds.","nullable":true},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true}},"required":["accountId","displayName","role","status","joinedAt"],"additionalProperties":false}},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"defaultCurrency":{"type":"string","pattern":"^[A-Z]{3}$"},"defaultSplitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"defaultWeights":{"type":"object","additionalProperties":{"type":"string"}},"simplifyDebts":{"type":"boolean"},"archived":{"type":"boolean"},"archivedForMe":{"type":"boolean"},"membershipVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"muted":{"type":"boolean"},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."}},"required":["id","kind","name","createdBy","members","version","defaultCurrency","defaultSplitMethod","simplifyDebts","archived","muted","createdAt"],"additionalProperties":false}},"invitations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"spaceName":{"type":"string"},"inviterAccountId":{"type":"string","minLength":1,"maxLength":200},"inviterName":{"type":"string"},"requesterName":{"type":"string"},"accountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"kind":{"type":"string","enum":["invitation","link","join_request"]},"status":{"type":"string","enum":["pending","accepted","rejected","revoked"]},"expiresAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"link":{"type":"string"},"inviteLinkId":{"type":"string","minLength":1,"maxLength":200,"nullable":true,"description":"Set when someone asked to join with the group invite link."},"participantId":{"type":"string","minLength":1,"maxLength":200,"nullable":true,"description":"The guest place they said is them; approving links it to their account."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","spaceName","inviterAccountId","kind","status","expiresAt","version"],"additionalProperties":false}},"expenses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":300},"totalAmountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"splitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"payers":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"note":{"type":"string","maxLength":10000,"nullable":true},"category":{"type":"string","maxLength":100,"nullable":true},"attachmentIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":5},"createdBy":{"type":"string","minLength":1,"maxLength":200},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"status":{"type":"string","enum":["active","void"]},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"updatedAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"disputed":{"type":"boolean"}},"required":["id","spaceId","title","totalAmountMinor","currency","date","splitMethod","payers","allocations","createdBy","version","status","createdAt","updatedAt","disputed"],"additionalProperties":false}},"refunds":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"receivedBy":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"note":{"type":"string","maxLength":10000,"nullable":true},"createdBy":{"type":"string","minLength":1,"maxLength":200},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","expenseId","amountMinor","receivedBy","allocations","date","createdBy","version"],"additionalProperties":false}},"settlements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"senderAccountId":{"type":"string","minLength":1,"maxLength":200},"recipientAccountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"method":{"type":"string","maxLength":80},"reference":{"type":"string","maxLength":300},"note":{"type":"string","maxLength":10000,"nullable":true},"acknowledgeCredit":{"type":"boolean"},"status":{"type":"string","enum":["pending","confirmed","rejected","reversal_pending","reversed"]},"createdBy":{"type":"string","minLength":1,"maxLength":200},"reversalRequestedBy":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."}},"required":["id","spaceId","senderAccountId","recipientAccountId","amountMinor","currency","date","status","createdBy","version","createdAt"],"additionalProperties":false}},"comments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"text":{"type":"string","minLength":1,"maxLength":4000},"createdBy":{"type":"string","minLength":1,"maxLength":200},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","text","createdBy","createdAt","version"],"additionalProperties":false}},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"actorAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"action":{"type":"string"},"entityId":{"type":"string","minLength":1,"maxLength":200},"before":{},"after":{},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","actorAccountId","action","createdAt","version"],"additionalProperties":false}},"inbox":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"actorAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"action":{"type":"string"},"entityId":{"type":"string","minLength":1,"maxLength":200},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"read":{"type":"boolean"}},"required":["id","actorAccountId","action","createdAt","version","read"],"additionalProperties":false}},"attachments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"expenseId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"ownerAccountId":{"type":"string","minLength":1,"maxLength":200},"bookId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"purpose":{"type":"string","enum":["receipt","avatar","private_avatar","payment_qr"]},"contentType":{"type":"string"},"size":{"type":"integer","minimum":0},"digest":{"type":"string"},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","ownerAccountId","purpose","contentType","size","createdAt","version"],"additionalProperties":false}}},"required":["accountId","revision","epoch","profile","connections","spaces","invitations","expenses","refunds","settlements","comments","activity","inbox","attachments"],"additionalProperties":false}},"required":["revision","epoch","changed"],"additionalProperties":false},"SharedMutationOutcome":{"type":"object","properties":{"operationId":{"type":"string","minLength":1,"maxLength":200},"status":{"type":"string","enum":["accepted","conflict","rejected"]},"retryable":{"type":"boolean","description":"A transient batch failure has no durable receipt; retain and retry this exact operation."},"revision":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"record":{},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}},"required":["code","message"],"additionalProperties":false}},"required":["operationId","status"],"additionalProperties":false},"SharedProfile":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string"},"enabled":{"type":"boolean"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"code":{"type":"string"},"link":{"type":"string"},"qrDataUrl":{"type":"string"},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"upiId":{"type":"string","nullable":true},"paypalMe":{"type":"string","nullable":true},"upiQrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["accountId","displayName","enabled","version"],"additionalProperties":false},"SharedSpace":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","enum":["direct","group"]},"name":{"type":"string"},"createdBy":{"type":"string","minLength":1,"maxLength":200},"members":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string"},"role":{"type":"string","enum":["admin","member"]},"status":{"type":"string","enum":["active","left","deleted"]},"joinedAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"leftAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds.","nullable":true},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true}},"required":["accountId","displayName","role","status","joinedAt"],"additionalProperties":false}},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"defaultCurrency":{"type":"string","pattern":"^[A-Z]{3}$"},"defaultSplitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"defaultWeights":{"type":"object","additionalProperties":{"type":"string"}},"simplifyDebts":{"type":"boolean"},"archived":{"type":"boolean"},"archivedForMe":{"type":"boolean"},"membershipVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"muted":{"type":"boolean"},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."}},"required":["id","kind","name","createdBy","members","version","defaultCurrency","defaultSplitMethod","simplifyDebts","archived","muted","createdAt"],"additionalProperties":false},"SharedConnection":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"requesterAccountId":{"type":"string","minLength":1,"maxLength":200},"recipientAccountId":{"type":"string","minLength":1,"maxLength":200},"status":{"type":"string","enum":["pending","accepted","rejected"]},"profile":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string"},"enabled":{"type":"boolean"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"code":{"type":"string"},"link":{"type":"string"},"qrDataUrl":{"type":"string"},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"upiId":{"type":"string","nullable":true},"paypalMe":{"type":"string","nullable":true},"upiQrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["accountId","displayName","enabled","version"],"additionalProperties":false},"blocked":{"type":"boolean"},"personId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."}},"required":["id","requesterAccountId","recipientAccountId","status","profile","version","createdAt"],"additionalProperties":false},"SharedInvite":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"spaceName":{"type":"string"},"inviterAccountId":{"type":"string","minLength":1,"maxLength":200},"inviterName":{"type":"string"},"requesterName":{"type":"string"},"accountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"kind":{"type":"string","enum":["invitation","link","join_request"]},"status":{"type":"string","enum":["pending","accepted","rejected","revoked"]},"expiresAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"link":{"type":"string"},"inviteLinkId":{"type":"string","minLength":1,"maxLength":200,"nullable":true,"description":"Set when someone asked to join with the group invite link."},"participantId":{"type":"string","minLength":1,"maxLength":200,"nullable":true,"description":"The guest place they said is them; approving links it to their account."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","spaceName","inviterAccountId","kind","status","expiresAt","version"],"additionalProperties":false},"SharedExpense":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":300},"totalAmountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"splitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"payers":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"note":{"type":"string","maxLength":10000,"nullable":true},"category":{"type":"string","maxLength":100,"nullable":true},"attachmentIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":5},"createdBy":{"type":"string","minLength":1,"maxLength":200},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"status":{"type":"string","enum":["active","void"]},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"updatedAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"disputed":{"type":"boolean"}},"required":["id","spaceId","title","totalAmountMinor","currency","date","splitMethod","payers","allocations","createdBy","version","status","createdAt","updatedAt","disputed"],"additionalProperties":false},"SharedRefund":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"receivedBy":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["accountId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"note":{"type":"string","maxLength":10000,"nullable":true},"createdBy":{"type":"string","minLength":1,"maxLength":200},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","expenseId","amountMinor","receivedBy","allocations","date","createdBy","version"],"additionalProperties":false},"SharedSettlement":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"senderAccountId":{"type":"string","minLength":1,"maxLength":200},"recipientAccountId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"method":{"type":"string","maxLength":80},"reference":{"type":"string","maxLength":300},"note":{"type":"string","maxLength":10000,"nullable":true},"acknowledgeCredit":{"type":"boolean"},"status":{"type":"string","enum":["pending","confirmed","rejected","reversal_pending","reversed"]},"createdBy":{"type":"string","minLength":1,"maxLength":200},"reversalRequestedBy":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."}},"required":["id","spaceId","senderAccountId","recipientAccountId","amountMinor","currency","date","status","createdBy","version","createdAt"],"additionalProperties":false},"SharedComment":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"text":{"type":"string","minLength":1,"maxLength":4000},"createdBy":{"type":"string","minLength":1,"maxLength":200},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","text","createdBy","createdAt","version"],"additionalProperties":false},"SharedActivity":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"actorAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"action":{"type":"string"},"entityId":{"type":"string","minLength":1,"maxLength":200},"before":{},"after":{},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","actorAccountId","action","createdAt","version"],"additionalProperties":false},"SharedInbox":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"actorAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"action":{"type":"string"},"entityId":{"type":"string","minLength":1,"maxLength":200},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"read":{"type":"boolean"}},"required":["id","actorAccountId","action","createdAt","version","read"],"additionalProperties":false},"SharedAttachment":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"expenseId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"ownerAccountId":{"type":"string","minLength":1,"maxLength":200},"bookId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"purpose":{"type":"string","enum":["receipt","avatar","private_avatar","payment_qr"]},"contentType":{"type":"string"},"size":{"type":"integer","minimum":0},"digest":{"type":"string"},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","ownerAccountId","purpose","contentType","size","createdAt","version"],"additionalProperties":false},"SharedBalances":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"balances":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"netMinor":{"type":"string","pattern":"^-?\\d+$"},"paidMinor":{"type":"string","pattern":"^-?\\d+$"},"owedMinor":{"type":"string","pattern":"^-?\\d+$"}},"required":["accountId","currency","netMinor","paidMinor","owedMinor"],"additionalProperties":false}},"suggestions":{"type":"array","items":{"type":"object","properties":{"senderAccountId":{"type":"string","minLength":1,"maxLength":200},"recipientAccountId":{"type":"string","minLength":1,"maxLength":200},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"amountMinor":{"type":"string","pattern":"^[1-9]\\d*$"}},"required":["senderAccountId","recipientAccountId","currency","amountMinor"],"additionalProperties":false}},"disputedExpenseIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"counterparties":{"type":"array","items":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"owedToYouMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"youOweMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"netMinor":{"type":"string","pattern":"^-?\\d+$"},"disputed":{"type":"boolean"}},"required":["spaceId","accountId","currency","owedToYouMinor","youOweMinor","netMinor","disputed"],"additionalProperties":false}}},"required":["spaceId","version","balances","suggestions","disputedExpenseIds"],"additionalProperties":false},"SharedPeople":{"type":"object","properties":{"people":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"personId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"connected":{"type":"boolean"},"blocked":{"type":"boolean"},"spaceIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"expenseIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200}},"expenseCount":{"type":"integer","minimum":0},"balances":{"type":"array","items":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"owedToYouMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"youOweMinor":{"type":"string","pattern":"^(?:0|[1-9]\\d*)$"},"netMinor":{"type":"string","pattern":"^-?\\d+$"},"disputed":{"type":"boolean"}},"required":["spaceId","accountId","currency","owedToYouMinor","youOweMinor","netMinor","disputed"],"additionalProperties":false}}},"required":["accountId","displayName","personId","connected","blocked","spaceIds","expenseIds","expenseCount","balances"],"additionalProperties":false}}},"required":["people"],"additionalProperties":false},"SharedV3Availability":{"type":"object","properties":{"enabled":{"type":"boolean"},"mediaEnabled":{"type":"boolean"},"guestsEnabled":{"type":"boolean"},"claimsEnabled":{"type":"boolean"},"receiptScanEnabled":{"type":"boolean"},"schemaVersion":{"type":"number","enum":[3]},"capability":{"type":"string","enum":["shared-participants-v3"]}},"required":["enabled","mediaEnabled","guestsEnabled","claimsEnabled","schemaVersion","capability"],"additionalProperties":false},"SharedV3Command":{"anyOf":[{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["profile.set"]},"payload":{"type":"object","properties":{"displayName":{"type":"string","minLength":1,"maxLength":100},"enabled":{"type":"boolean"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"upiId":{"type":"string","pattern":"^[A-Za-z0-9._-]{2,100}@[A-Za-z0-9.-]{2,80}$","nullable":true},"paypalMe":{"type":"string","format":"uri","nullable":true},"upiQrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["displayName","enabled"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["profile.rotate"]},"payload":{"type":"object","properties":{},"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.request"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"resolutionId":{"type":"string","minLength":1,"maxLength":200}},"required":["id","resolutionId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.accept"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.reject"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.block"]},"payload":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"blocked":{"type":"boolean"}},"required":["accountId","blocked"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["connection.linkPerson"]},"payload":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"personId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["accountId","personId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","enum":["direct","group"]},"name":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200},"defaultCurrency":{"type":"string","pattern":"^[A-Z]{3}$"},"defaultSplitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"defaultWeights":{"type":"object","additionalProperties":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"simplifyDebts":{"type":"boolean"}},"required":["id","kind","name"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.update"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string","minLength":1,"maxLength":200},"defaultCurrency":{"type":"string","pattern":"^[A-Z]{3}$"},"defaultSplitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"defaultWeights":{"type":"object","additionalProperties":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"simplifyDebts":{"type":"boolean"}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.archive"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"archived":{"type":"boolean"}},"required":["spaceId","archived"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.archiveForMe"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"archived":{"type":"boolean"}},"required":["spaceId","archived"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.mute"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"muted":{"type":"boolean"}},"required":["spaceId","muted"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["space.leave"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200}},"required":["spaceId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["membership.role"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200},"role":{"type":"string","enum":["admin","member"]}},"required":["spaceId","accountId","role"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200}},"required":["id","spaceId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.accept"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.reject"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.revoke"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.requestJoin"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"resolutionId":{"type":"string","minLength":1,"maxLength":200}},"required":["id","resolutionId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["invite.approve"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["expense.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":300},"subtitle":{"type":"string","maxLength":300,"nullable":true,"description":"Optional second line shown under the title, for example the venue or fee."},"totalAmountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"splitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"payers":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"note":{"type":"string","maxLength":10000,"nullable":true},"category":{"type":"string","maxLength":100,"nullable":true},"attachmentIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":5},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string","minLength":1,"maxLength":200,"description":"What was bought, as written on the bill."},"amountMinor":{"type":"string","description":"The line total in minor units of the bill's currency: conversion.currency when set, otherwise the expense currency."},"quantity":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":10000},"participantIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"minItems":1,"maxItems":100,"description":"Who shares this item. It is split equally between them."}},"required":["id","name","amountMinor","participantIds"],"additionalProperties":false},"minItems":1,"maxItems":200,"nullable":true,"description":"Item-by-item split. Requires splitMethod exact and allocations calculated from the items (use calculate_shared_item_split). null removes items; leaving it out keeps the saved items when the split is unchanged."},"itemsAdjustmentMinor":{"type":"string","pattern":"^(?:0|-?[1-9]\\d{0,17})$","nullable":true,"description":"Tax, service charge and tip (positive) or a discount (negative) on the items, shared in proportion to each person's items."},"conversion":{"type":"object","properties":{"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"amountMinor":{"type":"string","description":"The amount actually paid, in minor units of this currency."},"rate":{"type":"string","pattern":"^(?:0|[1-9]\\d{0,11})(?:\\.\\d{1,12})?$","description":"Units of the expense currency for one unit of this currency, e.g. \"2.4081\" for THB to INR."},"rateDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"source":{"type":"string","enum":["market","manual"],"description":"market: the day's exchange rate; manual: a rate the person entered."}},"required":["currency","amountMinor","rate","source"],"additionalProperties":false,"nullable":true,"description":"Set when the bill was paid in another currency. totalAmountMinor is then the converted amount in the expense currency. null removes it; leaving it out keeps it when the amount and currency are unchanged."}},"required":["id","spaceId","title","totalAmountMinor","currency","date","splitMethod","payers","allocations"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["expense.update"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":300},"subtitle":{"type":"string","maxLength":300,"nullable":true,"description":"Optional second line shown under the title, for example the venue or fee."},"totalAmountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"splitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"payers":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"note":{"type":"string","maxLength":10000,"nullable":true},"category":{"type":"string","maxLength":100,"nullable":true},"attachmentIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":5},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string","minLength":1,"maxLength":200,"description":"What was bought, as written on the bill."},"amountMinor":{"type":"string","description":"The line total in minor units of the bill's currency: conversion.currency when set, otherwise the expense currency."},"quantity":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":10000},"participantIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"minItems":1,"maxItems":100,"description":"Who shares this item. It is split equally between them."}},"required":["id","name","amountMinor","participantIds"],"additionalProperties":false},"minItems":1,"maxItems":200,"nullable":true,"description":"Item-by-item split. Requires splitMethod exact and allocations calculated from the items (use calculate_shared_item_split). null removes items; leaving it out keeps the saved items when the split is unchanged."},"itemsAdjustmentMinor":{"type":"string","pattern":"^(?:0|-?[1-9]\\d{0,17})$","nullable":true,"description":"Tax, service charge and tip (positive) or a discount (negative) on the items, shared in proportion to each person's items."},"conversion":{"type":"object","properties":{"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"amountMinor":{"type":"string","description":"The amount actually paid, in minor units of this currency."},"rate":{"type":"string","pattern":"^(?:0|[1-9]\\d{0,11})(?:\\.\\d{1,12})?$","description":"Units of the expense currency for one unit of this currency, e.g. \"2.4081\" for THB to INR."},"rateDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"source":{"type":"string","enum":["market","manual"],"description":"market: the day's exchange rate; manual: a rate the person entered."}},"required":["currency","amountMinor","rate","source"],"additionalProperties":false,"nullable":true,"description":"Set when the bill was paid in another currency. totalAmountMinor is then the converted amount in the expense currency. null removes it; leaving it out keeps it when the amount and currency are unchanged."}},"required":["id","spaceId","title","totalAmountMinor","currency","date","splitMethod","payers","allocations"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["expense.void"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["id","spaceId","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["refund.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"receivedBy":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"note":{"type":"string","maxLength":10000,"nullable":true}},"required":["id","spaceId","expenseId","amountMinor","receivedBy","allocations","date"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.propose"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"senderParticipantId":{"type":"string","minLength":1,"maxLength":200},"recipientParticipantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"method":{"type":"string","maxLength":80},"reference":{"type":"string","maxLength":300},"note":{"type":"string","maxLength":10000,"nullable":true},"acknowledgeCredit":{"type":"boolean"},"applications":{"type":"array","items":{"type":"object","properties":{"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"expenseVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["expenseId","amountMinor","expenseVersion"],"additionalProperties":false},"maxItems":100}},"required":["id","spaceId","senderParticipantId","recipientParticipantId","amountMinor","currency","date"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.receive"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"senderParticipantId":{"type":"string","minLength":1,"maxLength":200},"recipientParticipantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"method":{"type":"string","maxLength":80},"reference":{"type":"string","maxLength":300},"note":{"type":"string","maxLength":10000,"nullable":true},"acknowledgeCredit":{"type":"boolean"},"applications":{"type":"array","items":{"type":"object","properties":{"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"expenseVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["expenseId","amountMinor","expenseVersion"],"additionalProperties":false},"maxItems":100}},"required":["id","spaceId","senderParticipantId","recipientParticipantId","amountMinor","currency","date"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.confirm"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.reject"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.reverseRequest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["id","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.reverseConfirm"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["comment.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"text":{"type":"string","minLength":1,"maxLength":4000}},"required":["id","spaceId","text"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["dispute.set"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"disputed":{"type":"boolean"},"reason":{"type":"string","minLength":1,"maxLength":1000}},"required":["id","spaceId","expenseId","disputed","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["inbox.read"]},"payload":{"type":"object","properties":{"ids":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"minItems":1,"maxItems":100}},"required":["ids"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["device.register"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"token":{"type":"string","pattern":"^(?:ExponentPushToken|ExpoPushToken)\\[[A-Za-z0-9_-]+\\]$"},"platform":{"type":"string","enum":["ios","android"]},"enabled":{"type":"boolean"}},"required":["id","token","platform","enabled"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["device.unregister"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["reminder.send"]},"payload":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200},"currency":{"type":"string","pattern":"^[A-Z]{3}$"}},"required":["spaceId","accountId","currency"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["report.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"accountId":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"reason":{"type":"string","minLength":1,"maxLength":2000}},"required":["id","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["refund.void"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200,"description":"The refund to remove."},"spaceId":{"type":"string","minLength":1,"maxLength":200},"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["id","spaceId","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.recordGuest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"senderParticipantId":{"type":"string","minLength":1,"maxLength":200},"recipientParticipantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"method":{"type":"string","maxLength":80},"reference":{"type":"string","maxLength":300},"note":{"type":"string","maxLength":10000,"nullable":true},"acknowledgeCredit":{"type":"boolean"},"applications":{"type":"array","items":{"type":"object","properties":{"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"expenseVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["expenseId","amountMinor","expenseVersion"],"additionalProperties":false},"maxItems":100}},"required":["id","spaceId","senderParticipantId","recipientParticipantId","amountMinor","currency","date"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.assignExpenses"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"applications":{"type":"array","items":{"type":"object","properties":{"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"expenseVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["expenseId","amountMinor","expenseVersion"],"additionalProperties":false},"maxItems":100}},"required":["id","applications"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["settlement.reverseGuest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["id","reason"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["participant.createGuest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string","minLength":1,"maxLength":100},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true}},"required":["id","spaceId","displayName"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["participant.renameGuest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string","minLength":1,"maxLength":100},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true}},"required":["id","spaceId","displayName"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["participant.setAvatar"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true}},"required":["id","spaceId","avatarAttachmentId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["participant.deactivateGuest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200}},"required":["id","spaceId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["participant.reactivateGuest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200}},"required":["id","spaceId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["participant.claimRequest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"participantId":{"type":"string","minLength":1,"maxLength":200},"resolutionId":{"type":"string","minLength":1,"maxLength":200,"description":"From resolving the person's profile code or sharing link (resolve_shared_identity). Send this or accountId, not both."},"accountId":{"type":"string","minLength":1,"maxLength":200,"description":"The accountId of an accepted connection (list_shared_connections) who is not in the group. Send this or resolutionId, not both."}},"required":["id","spaceId","participantId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["participant.claimAccept"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"reviewToken":{"type":"string","minLength":1,"maxLength":1000}},"required":["id","reviewToken"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["participant.claimReject"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["participant.claimCancel"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["inviteLink.create"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"approvalRequired":{"type":"boolean","description":"New people need an admin's approval before they join. Defaults to the current link's setting, or off."},"participantId":{"type":"string","minLength":1,"maxLength":200,"description":"Make a link for this one guest place instead of the whole group: it can only be used to take that place, and stops working once the place is taken. Each guest place has its own working link; the group's general link is unchanged."}},"required":["id","spaceId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["inviteLink.update"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"approvalRequired":{"type":"boolean"}},"required":["id","approvalRequired"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["inviteLink.revoke"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200}},"required":["id"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["inviteLink.join"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"displayName":{"type":"string","minLength":1,"maxLength":100,"description":"Your name in groups. Needed only when you have no sharing profile yet."}},"required":["id","token"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false},{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[3]},"operationId":{"type":"string","minLength":1,"maxLength":200},"expectedVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"type":{"type":"string","enum":["inviteLink.joinAsGuest"]},"payload":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"token":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"participantId":{"type":"string","minLength":1,"maxLength":200,"description":"A guest place from the invite preview that is this person."},"displayName":{"type":"string","minLength":1,"maxLength":100,"description":"Your name in groups. Needed only when you have no sharing profile yet."}},"required":["id","token","participantId"],"additionalProperties":false}},"required":["schemaVersion","operationId","type","payload"],"additionalProperties":false}]},"SharedV3Snapshot":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"revision":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"epoch":{"type":"string"},"profile":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string"},"enabled":{"type":"boolean"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"code":{"type":"string"},"link":{"type":"string"},"qrDataUrl":{"type":"string"},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"upiId":{"type":"string","nullable":true},"paypalMe":{"type":"string","nullable":true},"upiQrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["accountId","displayName","enabled","version"],"additionalProperties":false,"nullable":true},"connections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"requesterAccountId":{"type":"string","minLength":1,"maxLength":200},"recipientAccountId":{"type":"string","minLength":1,"maxLength":200},"status":{"type":"string","enum":["pending","accepted","rejected"]},"profile":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string"},"enabled":{"type":"boolean"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"code":{"type":"string"},"link":{"type":"string"},"qrDataUrl":{"type":"string"},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"upiId":{"type":"string","nullable":true},"paypalMe":{"type":"string","nullable":true},"upiQrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["accountId","displayName","enabled","version"],"additionalProperties":false},"blocked":{"type":"boolean"},"personId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."}},"required":["id","requesterAccountId","recipientAccountId","status","profile","version","createdAt"],"additionalProperties":false}},"spaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","enum":["direct","group"]},"name":{"type":"string"},"createdBy":{"type":"string","minLength":1,"maxLength":200},"members":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string"},"role":{"type":"string","enum":["admin","member"]},"status":{"type":"string","enum":["active","left","deleted"]},"joinedAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"leftAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds.","nullable":true},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true}},"required":["accountId","displayName","role","status","joinedAt"],"additionalProperties":false}},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"defaultCurrency":{"type":"string","pattern":"^[A-Z]{3}$"},"defaultSplitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"defaultWeights":{"type":"object","additionalProperties":{"type":"string"}},"simplifyDebts":{"type":"boolean"},"archived":{"type":"boolean"},"archivedForMe":{"type":"boolean"},"membershipVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"muted":{"type":"boolean"},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"participants":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"identityState":{"type":"string","enum":["guest","linked","deleted"]},"participationState":{"type":"string","enum":["active","inactive"]},"linkedAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"guestDisplayName":{"type":"string","nullable":true},"displayName":{"type":"string"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"createdByAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"linkedAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"nullable":true},"linkedByClaimId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"splitOrderKey":{"type":"string","minLength":1,"maxLength":300},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","identityState","participationState","linkedAccountId","guestDisplayName","displayName","createdByAccountId","createdAt","linkedAt","linkedByClaimId","splitOrderKey","version"],"additionalProperties":false}},"requiredProtocol":{"anyOf":[{"type":"number","enum":[2]},{"type":"number","enum":[3]}]}},"required":["id","kind","name","createdBy","members","version","defaultCurrency","defaultSplitMethod","simplifyDebts","archived","muted","createdAt","participants","requiredProtocol"],"additionalProperties":false}},"invitations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"spaceName":{"type":"string"},"inviterAccountId":{"type":"string","minLength":1,"maxLength":200},"inviterName":{"type":"string"},"requesterName":{"type":"string"},"accountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"kind":{"type":"string","enum":["invitation","link","join_request"]},"status":{"type":"string","enum":["pending","accepted","rejected","revoked"]},"expiresAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"link":{"type":"string"},"inviteLinkId":{"type":"string","minLength":1,"maxLength":200,"nullable":true,"description":"Set when someone asked to join with the group invite link."},"participantId":{"type":"string","minLength":1,"maxLength":200,"nullable":true,"description":"The guest place they said is them; approving links it to their account."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","spaceName","inviterAccountId","kind","status","expiresAt","version"],"additionalProperties":false}},"expenses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":300},"subtitle":{"type":"string","maxLength":300,"nullable":true,"description":"Optional second line shown under the title, for example the venue or fee."},"totalAmountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"splitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"payers":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"note":{"type":"string","maxLength":10000,"nullable":true},"category":{"type":"string","maxLength":100,"nullable":true},"attachmentIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":5},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string","minLength":1,"maxLength":200,"description":"What was bought, as written on the bill."},"amountMinor":{"type":"string","description":"The line total in minor units of the bill's currency: conversion.currency when set, otherwise the expense currency."},"quantity":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":10000},"participantIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"minItems":1,"maxItems":100,"description":"Who shares this item. It is split equally between them."}},"required":["id","name","amountMinor","participantIds"],"additionalProperties":false},"minItems":1,"maxItems":200,"nullable":true,"description":"Item-by-item split. Requires splitMethod exact and allocations calculated from the items (use calculate_shared_item_split). null removes items; leaving it out keeps the saved items when the split is unchanged."},"itemsAdjustmentMinor":{"type":"string","pattern":"^(?:0|-?[1-9]\\d{0,17})$","nullable":true,"description":"Tax, service charge and tip (positive) or a discount (negative) on the items, shared in proportion to each person's items."},"conversion":{"type":"object","properties":{"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"amountMinor":{"type":"string","description":"The amount actually paid, in minor units of this currency."},"rate":{"type":"string","pattern":"^(?:0|[1-9]\\d{0,11})(?:\\.\\d{1,12})?$","description":"Units of the expense currency for one unit of this currency, e.g. \"2.4081\" for THB to INR."},"rateDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"source":{"type":"string","enum":["market","manual"],"description":"market: the day's exchange rate; manual: a rate the person entered."}},"required":["currency","amountMinor","rate","source"],"additionalProperties":false,"nullable":true,"description":"Set when the bill was paid in another currency. totalAmountMinor is then the converted amount in the expense currency. null removes it; leaving it out keeps it when the amount and currency are unchanged."},"createdBy":{"type":"string","minLength":1,"maxLength":200},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"status":{"type":"string","enum":["active","void"]},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"updatedAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"disputed":{"type":"boolean"},"ledgerSchemaVersion":{"type":"number","enum":[3]}},"required":["id","spaceId","title","totalAmountMinor","currency","date","splitMethod","payers","allocations","createdBy","version","status","createdAt","updatedAt","disputed"],"additionalProperties":false}},"refunds":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"receivedBy":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"note":{"type":"string","maxLength":10000,"nullable":true},"createdBy":{"type":"string","minLength":1,"maxLength":200},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"status":{"type":"string","enum":["active","void"]}},"required":["id","spaceId","expenseId","amountMinor","receivedBy","allocations","date","createdBy","version"],"additionalProperties":false}},"settlements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"senderParticipantId":{"type":"string","minLength":1,"maxLength":200},"recipientParticipantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"method":{"type":"string","maxLength":80},"reference":{"type":"string","maxLength":300},"note":{"type":"string","maxLength":10000,"nullable":true},"acknowledgeCredit":{"type":"boolean"},"applications":{"type":"array","items":{"type":"object","properties":{"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"expenseVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["expenseId","amountMinor","expenseVersion"],"additionalProperties":false},"maxItems":100},"status":{"type":"string","enum":["pending","recorded","confirmed","rejected","reversal_pending","reversed"]},"confirmationBasis":{"type":"string","enum":["recipient_acknowledgment","guest_manual_record"],"nullable":true},"recordedByAccountId":{"type":"string","minLength":1,"maxLength":200},"confirmedByAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"confirmedAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"nullable":true},"createdBy":{"type":"string","minLength":1,"maxLength":200},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"reversalRequestedBy":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["id","spaceId","senderParticipantId","recipientParticipantId","amountMinor","currency","date","status","confirmationBasis","recordedByAccountId","confirmedByAccountId","confirmedAt","createdBy","createdAt","version"],"additionalProperties":false}},"comments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"text":{"type":"string","minLength":1,"maxLength":4000},"createdBy":{"type":"string","minLength":1,"maxLength":200},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","text","createdBy","createdAt","version"],"additionalProperties":false}},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"actorAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"action":{"type":"string"},"entityId":{"type":"string","minLength":1,"maxLength":200},"before":{},"after":{},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","actorAccountId","action","createdAt","version"],"additionalProperties":false}},"inbox":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"actorAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"action":{"type":"string"},"entityId":{"type":"string","minLength":1,"maxLength":200},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"read":{"type":"boolean"}},"required":["id","actorAccountId","action","createdAt","version","read"],"additionalProperties":false}},"attachments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"expenseId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"ownerAccountId":{"type":"string","minLength":1,"maxLength":200},"bookId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"purpose":{"type":"string","enum":["receipt","avatar","private_avatar","payment_qr"]},"contentType":{"type":"string"},"size":{"type":"integer","minimum":0},"digest":{"type":"string"},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","ownerAccountId","purpose","contentType","size","createdAt","version"],"additionalProperties":false}},"schemaVersion":{"type":"number","enum":[3]},"claims":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"participantId":{"type":"string","minLength":1,"maxLength":200},"requesterAccountId":{"type":"string","minLength":1,"maxLength":200},"targetAccountId":{"type":"string","minLength":1,"maxLength":200},"status":{"type":"string","enum":["pending","accepted","rejected","canceled","expired"]},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"expiresAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","participantId","requesterAccountId","targetAccountId","status","createdAt","expiresAt","version"],"additionalProperties":false}}},"required":["accountId","revision","epoch","profile","connections","spaces","invitations","expenses","refunds","settlements","comments","activity","inbox","attachments","schemaVersion","claims"],"additionalProperties":false},"SharedV3Changes":{"type":"object","properties":{"revision":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"epoch":{"type":"string"},"changed":{"type":"boolean"},"snapshot":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"revision":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"epoch":{"type":"string"},"profile":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string"},"enabled":{"type":"boolean"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"code":{"type":"string"},"link":{"type":"string"},"qrDataUrl":{"type":"string"},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"upiId":{"type":"string","nullable":true},"paypalMe":{"type":"string","nullable":true},"upiQrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["accountId","displayName","enabled","version"],"additionalProperties":false,"nullable":true},"connections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"requesterAccountId":{"type":"string","minLength":1,"maxLength":200},"recipientAccountId":{"type":"string","minLength":1,"maxLength":200},"status":{"type":"string","enum":["pending","accepted","rejected"]},"profile":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string"},"enabled":{"type":"boolean"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"code":{"type":"string"},"link":{"type":"string"},"qrDataUrl":{"type":"string"},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"upiId":{"type":"string","nullable":true},"paypalMe":{"type":"string","nullable":true},"upiQrAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["accountId","displayName","enabled","version"],"additionalProperties":false},"blocked":{"type":"boolean"},"personId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."}},"required":["id","requesterAccountId","recipientAccountId","status","profile","version","createdAt"],"additionalProperties":false}},"spaces":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","enum":["direct","group"]},"name":{"type":"string"},"createdBy":{"type":"string","minLength":1,"maxLength":200},"members":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string"},"role":{"type":"string","enum":["admin","member"]},"status":{"type":"string","enum":["active","left","deleted"]},"joinedAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"leftAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds.","nullable":true},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true}},"required":["accountId","displayName","role","status","joinedAt"],"additionalProperties":false}},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"defaultCurrency":{"type":"string","pattern":"^[A-Z]{3}$"},"defaultSplitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"defaultWeights":{"type":"object","additionalProperties":{"type":"string"}},"simplifyDebts":{"type":"boolean"},"archived":{"type":"boolean"},"archivedForMe":{"type":"boolean"},"membershipVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"muted":{"type":"boolean"},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"participants":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"identityState":{"type":"string","enum":["guest","linked","deleted"]},"participationState":{"type":"string","enum":["active","inactive"]},"linkedAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"guestDisplayName":{"type":"string","nullable":true},"displayName":{"type":"string"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"createdByAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"linkedAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"nullable":true},"linkedByClaimId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"splitOrderKey":{"type":"string","minLength":1,"maxLength":300},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","identityState","participationState","linkedAccountId","guestDisplayName","displayName","createdByAccountId","createdAt","linkedAt","linkedByClaimId","splitOrderKey","version"],"additionalProperties":false}},"requiredProtocol":{"anyOf":[{"type":"number","enum":[2]},{"type":"number","enum":[3]}]}},"required":["id","kind","name","createdBy","members","version","defaultCurrency","defaultSplitMethod","simplifyDebts","archived","muted","createdAt","participants","requiredProtocol"],"additionalProperties":false}},"invitations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"spaceName":{"type":"string"},"inviterAccountId":{"type":"string","minLength":1,"maxLength":200},"inviterName":{"type":"string"},"requesterName":{"type":"string"},"accountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"kind":{"type":"string","enum":["invitation","link","join_request"]},"status":{"type":"string","enum":["pending","accepted","rejected","revoked"]},"expiresAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"link":{"type":"string"},"inviteLinkId":{"type":"string","minLength":1,"maxLength":200,"nullable":true,"description":"Set when someone asked to join with the group invite link."},"participantId":{"type":"string","minLength":1,"maxLength":200,"nullable":true,"description":"The guest place they said is them; approving links it to their account."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","spaceName","inviterAccountId","kind","status","expiresAt","version"],"additionalProperties":false}},"expenses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":300},"subtitle":{"type":"string","maxLength":300,"nullable":true,"description":"Optional second line shown under the title, for example the venue or fee."},"totalAmountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"splitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"payers":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"note":{"type":"string","maxLength":10000,"nullable":true},"category":{"type":"string","maxLength":100,"nullable":true},"attachmentIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":5},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string","minLength":1,"maxLength":200,"description":"What was bought, as written on the bill."},"amountMinor":{"type":"string","description":"The line total in minor units of the bill's currency: conversion.currency when set, otherwise the expense currency."},"quantity":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":10000},"participantIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"minItems":1,"maxItems":100,"description":"Who shares this item. It is split equally between them."}},"required":["id","name","amountMinor","participantIds"],"additionalProperties":false},"minItems":1,"maxItems":200,"nullable":true,"description":"Item-by-item split. Requires splitMethod exact and allocations calculated from the items (use calculate_shared_item_split). null removes items; leaving it out keeps the saved items when the split is unchanged."},"itemsAdjustmentMinor":{"type":"string","pattern":"^(?:0|-?[1-9]\\d{0,17})$","nullable":true,"description":"Tax, service charge and tip (positive) or a discount (negative) on the items, shared in proportion to each person's items."},"conversion":{"type":"object","properties":{"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"amountMinor":{"type":"string","description":"The amount actually paid, in minor units of this currency."},"rate":{"type":"string","pattern":"^(?:0|[1-9]\\d{0,11})(?:\\.\\d{1,12})?$","description":"Units of the expense currency for one unit of this currency, e.g. \"2.4081\" for THB to INR."},"rateDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"source":{"type":"string","enum":["market","manual"],"description":"market: the day's exchange rate; manual: a rate the person entered."}},"required":["currency","amountMinor","rate","source"],"additionalProperties":false,"nullable":true,"description":"Set when the bill was paid in another currency. totalAmountMinor is then the converted amount in the expense currency. null removes it; leaving it out keeps it when the amount and currency are unchanged."},"createdBy":{"type":"string","minLength":1,"maxLength":200},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"status":{"type":"string","enum":["active","void"]},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"updatedAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"disputed":{"type":"boolean"},"ledgerSchemaVersion":{"type":"number","enum":[3]}},"required":["id","spaceId","title","totalAmountMinor","currency","date","splitMethod","payers","allocations","createdBy","version","status","createdAt","updatedAt","disputed"],"additionalProperties":false}},"refunds":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"receivedBy":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"note":{"type":"string","maxLength":10000,"nullable":true},"createdBy":{"type":"string","minLength":1,"maxLength":200},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"status":{"type":"string","enum":["active","void"]}},"required":["id","spaceId","expenseId","amountMinor","receivedBy","allocations","date","createdBy","version"],"additionalProperties":false}},"settlements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"senderParticipantId":{"type":"string","minLength":1,"maxLength":200},"recipientParticipantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"method":{"type":"string","maxLength":80},"reference":{"type":"string","maxLength":300},"note":{"type":"string","maxLength":10000,"nullable":true},"acknowledgeCredit":{"type":"boolean"},"applications":{"type":"array","items":{"type":"object","properties":{"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"expenseVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["expenseId","amountMinor","expenseVersion"],"additionalProperties":false},"maxItems":100},"status":{"type":"string","enum":["pending","recorded","confirmed","rejected","reversal_pending","reversed"]},"confirmationBasis":{"type":"string","enum":["recipient_acknowledgment","guest_manual_record"],"nullable":true},"recordedByAccountId":{"type":"string","minLength":1,"maxLength":200},"confirmedByAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"confirmedAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"nullable":true},"createdBy":{"type":"string","minLength":1,"maxLength":200},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"reversalRequestedBy":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["id","spaceId","senderParticipantId","recipientParticipantId","amountMinor","currency","date","status","confirmationBasis","recordedByAccountId","confirmedByAccountId","confirmedAt","createdBy","createdAt","version"],"additionalProperties":false}},"comments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"text":{"type":"string","minLength":1,"maxLength":4000},"createdBy":{"type":"string","minLength":1,"maxLength":200},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","text","createdBy","createdAt","version"],"additionalProperties":false}},"activity":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"actorAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"action":{"type":"string"},"entityId":{"type":"string","minLength":1,"maxLength":200},"before":{},"after":{},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","actorAccountId","action","createdAt","version"],"additionalProperties":false}},"inbox":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"actorAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"action":{"type":"string"},"entityId":{"type":"string","minLength":1,"maxLength":200},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"read":{"type":"boolean"}},"required":["id","actorAccountId","action","createdAt","version","read"],"additionalProperties":false}},"attachments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"expenseId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"ownerAccountId":{"type":"string","minLength":1,"maxLength":200},"bookId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"purpose":{"type":"string","enum":["receipt","avatar","private_avatar","payment_qr"]},"contentType":{"type":"string"},"size":{"type":"integer","minimum":0},"digest":{"type":"string"},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","ownerAccountId","purpose","contentType","size","createdAt","version"],"additionalProperties":false}},"schemaVersion":{"type":"number","enum":[3]},"claims":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"participantId":{"type":"string","minLength":1,"maxLength":200},"requesterAccountId":{"type":"string","minLength":1,"maxLength":200},"targetAccountId":{"type":"string","minLength":1,"maxLength":200},"status":{"type":"string","enum":["pending","accepted","rejected","canceled","expired"]},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"expiresAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","participantId","requesterAccountId","targetAccountId","status","createdAt","expiresAt","version"],"additionalProperties":false}}},"required":["accountId","revision","epoch","profile","connections","spaces","invitations","expenses","refunds","settlements","comments","activity","inbox","attachments","schemaVersion","claims"],"additionalProperties":false}},"required":["revision","epoch","changed"],"additionalProperties":false},"SharedV3Space":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"kind":{"type":"string","enum":["direct","group"]},"name":{"type":"string"},"createdBy":{"type":"string","minLength":1,"maxLength":200},"members":{"type":"array","items":{"type":"object","properties":{"accountId":{"type":"string","minLength":1,"maxLength":200},"displayName":{"type":"string"},"role":{"type":"string","enum":["admin","member"]},"status":{"type":"string","enum":["active","left","deleted"]},"joinedAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"leftAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds.","nullable":true},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true}},"required":["accountId","displayName","role","status","joinedAt"],"additionalProperties":false}},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"defaultCurrency":{"type":"string","pattern":"^[A-Z]{3}$"},"defaultSplitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"defaultWeights":{"type":"object","additionalProperties":{"type":"string"}},"simplifyDebts":{"type":"boolean"},"archived":{"type":"boolean"},"archivedForMe":{"type":"boolean"},"membershipVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"muted":{"type":"boolean"},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"description":"Epoch milliseconds (UTC), for example 1791417600000; not seconds."},"participants":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"identityState":{"type":"string","enum":["guest","linked","deleted"]},"participationState":{"type":"string","enum":["active","inactive"]},"linkedAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"guestDisplayName":{"type":"string","nullable":true},"displayName":{"type":"string"},"avatarAttachmentId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"gender":{"type":"string","enum":["male","female"],"nullable":true},"createdByAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"linkedAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"nullable":true},"linkedByClaimId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"splitOrderKey":{"type":"string","minLength":1,"maxLength":300},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","identityState","participationState","linkedAccountId","guestDisplayName","displayName","createdByAccountId","createdAt","linkedAt","linkedByClaimId","splitOrderKey","version"],"additionalProperties":false}},"requiredProtocol":{"anyOf":[{"type":"number","enum":[2]},{"type":"number","enum":[3]}]}},"required":["id","kind","name","createdBy","members","version","defaultCurrency","defaultSplitMethod","simplifyDebts","archived","muted","createdAt","participants","requiredProtocol"],"additionalProperties":false},"SharedV3Balances":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"balances":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"paidMinor":{"type":"string","pattern":"^-?\\d+$"},"owedMinor":{"type":"string","pattern":"^-?\\d+$"},"netMinor":{"type":"string","pattern":"^-?\\d+$"}},"required":["participantId","currency","paidMinor","owedMinor","netMinor"],"additionalProperties":false}},"suggestions":{"type":"array","items":{"type":"object","properties":{"senderParticipantId":{"type":"string","minLength":1,"maxLength":200},"recipientParticipantId":{"type":"string","minLength":1,"maxLength":200},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"amountMinor":{"type":"string"}},"required":["senderParticipantId","recipientParticipantId","currency","amountMinor"],"additionalProperties":false}},"disputedExpenseIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200}}},"required":["spaceId","version","balances","suggestions","disputedExpenseIds"],"additionalProperties":false},"SharedV3AllBalances":{"type":"object","properties":{"groups":{"type":"array","items":{"type":"object","properties":{"spaceId":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string"},"kind":{"type":"string","enum":["direct","group"]},"archived":{"type":"boolean"},"myParticipantId":{"type":"string","minLength":1,"maxLength":200,"nullable":true,"description":"Your seat in the group; null when you have none."},"myBalances":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"paidMinor":{"type":"string","pattern":"^-?\\d+$"},"owedMinor":{"type":"string","pattern":"^-?\\d+$"},"netMinor":{"type":"string","pattern":"^-?\\d+$"}},"required":["participantId","currency","paidMinor","owedMinor","netMinor"],"additionalProperties":false},"description":"Your balance per currency. Positive netMinor: the group owes you."},"repayments":{"type":"array","items":{"type":"object","properties":{"senderParticipantId":{"type":"string","minLength":1,"maxLength":200},"recipientParticipantId":{"type":"string","minLength":1,"maxLength":200},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"amountMinor":{"type":"string"},"senderName":{"type":"string","nullable":true},"recipientName":{"type":"string","nullable":true}},"required":["senderParticipantId","recipientParticipantId","currency","amountMinor","senderName","recipientName"],"additionalProperties":false},"description":"Suggested repayments you send or receive, with names."},"disputedExpenseIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200}}},"required":["spaceId","name","kind","archived","myParticipantId","myBalances","repayments","disputedExpenseIds"],"additionalProperties":false}}},"required":["groups"],"additionalProperties":false},"SharedClaimPreview":{"type":"object","properties":{"claim":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"participantId":{"type":"string","minLength":1,"maxLength":200},"requesterAccountId":{"type":"string","minLength":1,"maxLength":200},"targetAccountId":{"type":"string","minLength":1,"maxLength":200},"status":{"type":"string","enum":["pending","accepted","rejected","canceled","expired"]},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"expiresAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["id","spaceId","participantId","requesterAccountId","targetAccountId","status","createdAt","expiresAt","version"],"additionalProperties":false},"groupName":{"type":"string"},"guestName":{"type":"string"},"balances":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"paidMinor":{"type":"string","pattern":"^-?\\d+$"},"owedMinor":{"type":"string","pattern":"^-?\\d+$"},"netMinor":{"type":"string","pattern":"^-?\\d+$"}},"required":["participantId","currency","paidMinor","owedMinor","netMinor"],"additionalProperties":false}},"expenses":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"title":{"type":"string","minLength":1,"maxLength":300},"subtitle":{"type":"string","maxLength":300,"nullable":true,"description":"Optional second line shown under the title, for example the venue or fee."},"totalAmountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"splitMethod":{"type":"string","enum":["equal","exact","percentage","weights"]},"payers":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"note":{"type":"string","maxLength":10000,"nullable":true},"category":{"type":"string","maxLength":100,"nullable":true},"attachmentIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"maxItems":5},"items":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"name":{"type":"string","minLength":1,"maxLength":200,"description":"What was bought, as written on the bill."},"amountMinor":{"type":"string","description":"The line total in minor units of the bill's currency: conversion.currency when set, otherwise the expense currency."},"quantity":{"type":"integer","exclusiveMinimum":true,"minimum":0,"maximum":10000},"participantIds":{"type":"array","items":{"type":"string","minLength":1,"maxLength":200},"minItems":1,"maxItems":100,"description":"Who shares this item. It is split equally between them."}},"required":["id","name","amountMinor","participantIds"],"additionalProperties":false},"minItems":1,"maxItems":200,"nullable":true,"description":"Item-by-item split. Requires splitMethod exact and allocations calculated from the items (use calculate_shared_item_split). null removes items; leaving it out keeps the saved items when the split is unchanged."},"itemsAdjustmentMinor":{"type":"string","pattern":"^(?:0|-?[1-9]\\d{0,17})$","nullable":true,"description":"Tax, service charge and tip (positive) or a discount (negative) on the items, shared in proportion to each person's items."},"conversion":{"type":"object","properties":{"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"amountMinor":{"type":"string","description":"The amount actually paid, in minor units of this currency."},"rate":{"type":"string","pattern":"^(?:0|[1-9]\\d{0,11})(?:\\.\\d{1,12})?$","description":"Units of the expense currency for one unit of this currency, e.g. \"2.4081\" for THB to INR."},"rateDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"source":{"type":"string","enum":["market","manual"],"description":"market: the day's exchange rate; manual: a rate the person entered."}},"required":["currency","amountMinor","rate","source"],"additionalProperties":false,"nullable":true,"description":"Set when the bill was paid in another currency. totalAmountMinor is then the converted amount in the expense currency. null removes it; leaving it out keeps it when the amount and currency are unchanged."},"createdBy":{"type":"string","minLength":1,"maxLength":200},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"status":{"type":"string","enum":["active","void"]},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"updatedAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"disputed":{"type":"boolean"},"ledgerSchemaVersion":{"type":"number","enum":[3]}},"required":["id","spaceId","title","totalAmountMinor","currency","date","splitMethod","payers","allocations","createdBy","version","status","createdAt","updatedAt","disputed"],"additionalProperties":false}},"refunds":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"receivedBy":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"allocations":{"type":"array","items":{"type":"object","properties":{"participantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"weight":{"type":"string","pattern":"^\\d+(?:\\.\\d{1,6})?$","maxLength":30}},"required":["participantId","amountMinor"],"additionalProperties":false},"minItems":1,"maxItems":100},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"note":{"type":"string","maxLength":10000,"nullable":true},"createdBy":{"type":"string","minLength":1,"maxLength":200},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"status":{"type":"string","enum":["active","void"]}},"required":["id","spaceId","expenseId","amountMinor","receivedBy","allocations","date","createdBy","version"],"additionalProperties":false}},"settlements":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":200},"spaceId":{"type":"string","minLength":1,"maxLength":200},"senderParticipantId":{"type":"string","minLength":1,"maxLength":200},"recipientParticipantId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"date":{"type":"integer","minimum":0,"maximum":8640000000000000},"method":{"type":"string","maxLength":80},"reference":{"type":"string","maxLength":300},"note":{"type":"string","maxLength":10000,"nullable":true},"acknowledgeCredit":{"type":"boolean"},"applications":{"type":"array","items":{"type":"object","properties":{"expenseId":{"type":"string","minLength":1,"maxLength":200},"amountMinor":{"type":"string"},"expenseVersion":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19}},"required":["expenseId","amountMinor","expenseVersion"],"additionalProperties":false},"maxItems":100},"status":{"type":"string","enum":["pending","recorded","confirmed","rejected","reversal_pending","reversed"]},"confirmationBasis":{"type":"string","enum":["recipient_acknowledgment","guest_manual_record"],"nullable":true},"recordedByAccountId":{"type":"string","minLength":1,"maxLength":200},"confirmedByAccountId":{"type":"string","minLength":1,"maxLength":200,"nullable":true},"confirmedAt":{"type":"integer","minimum":0,"maximum":8640000000000000,"nullable":true},"createdBy":{"type":"string","minLength":1,"maxLength":200},"createdAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"version":{"type":"string","pattern":"^(?:0|[1-9][0-9]*)$","maxLength":19},"reversalRequestedBy":{"type":"string","minLength":1,"maxLength":200,"nullable":true}},"required":["id","spaceId","senderParticipantId","recipientParticipantId","amountMinor","currency","date","status","confirmationBasis","recordedByAccountId","confirmedByAccountId","confirmedAt","createdBy","createdAt","version"],"additionalProperties":false}},"reviewToken":{"type":"string"},"expiresAt":{"type":"integer","minimum":0,"maximum":8640000000000000},"fullHistoryVisibleAfterAcceptance":{"type":"boolean","enum":[true]}},"required":["claim","groupName","guestName","balances","expenses","refunds","settlements","reviewToken","expiresAt","fullHistoryVisibleAfterAcceptance"],"additionalProperties":false},"PersonStatement":{"type":"object","properties":{"schemaVersion":{"type":"number","enum":[1]},"ownerName":{"type":"string","nullable":true},"personName":{"type":"string"},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"moneyScale":{"type":"integer","minimum":0,"maximum":4},"timeZone":{"type":"string"},"period":{"type":"object","properties":{"kind":{"type":"string","enum":["all","this_month","last_month","custom"]},"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","nullable":true}},"required":["kind","from","to"],"additionalProperties":false},"openingBalanceMinor":{"type":"string","pattern":"^-?\\d+$"},"lines":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["gave","got","share","delivery","payment_in","payment_out","interest","adjustment"]},"date":{"type":"integer"},"amountMinor":{"type":"string","pattern":"^\\d+$"},"changeMinor":{"type":"string","pattern":"^-?\\d+$"},"balanceMinor":{"type":"string","pattern":"^-?\\d+$"},"note":{"type":"string","nullable":true,"default":null},"interestRateBps":{"type":"integer","exclusiveMinimum":true,"minimum":0,"nullable":true,"default":null},"since":{"type":"integer","nullable":true,"default":null},"expenseTotalMinor":{"type":"string","pattern":"^\\d+$","nullable":true,"default":null},"bill":{"type":"boolean","default":false},"quantity":{"type":"string","nullable":true,"default":null},"unit":{"type":"string","nullable":true,"default":null}},"required":["kind","date","amountMinor","changeMinor","balanceMinor"],"additionalProperties":false}},"olderLinesInOpening":{"type":"integer","minimum":0},"addedMinor":{"type":"string","pattern":"^\\d+$"},"reducedMinor":{"type":"string","pattern":"^\\d+$"},"closingBalanceMinor":{"type":"string","pattern":"^-?\\d+$"},"currentBalanceMinor":{"type":"string","pattern":"^-?\\d+$"},"notesIncluded":{"type":"boolean"},"generatedAt":{"type":"integer"},"pay":{"type":"object","properties":{"upiId":{"type":"string"},"upiUrl":{"type":"string"},"amountMinor":{"type":"string","pattern":"^\\d+$"},"amounts":{"type":"object","properties":{"own":{"type":"string","pattern":"^\\d+$"},"overall":{"type":"string","pattern":"^\\d+$"}},"required":["own","overall"],"additionalProperties":false}},"required":["upiId","upiUrl","amountMinor"],"additionalProperties":false,"nullable":true},"paymentOptions":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["upi","paypal","custom"]},"name":{"type":"string"},"fields":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"value":{"type":"string"}},"required":["label","value"],"additionalProperties":false},"maxItems":10},"qr":{"type":"string","maxLength":200000,"pattern":"^data:image\\/jpeg;base64,[A-Za-z0-9+/]+={0,2}$","nullable":true,"default":null},"upiId":{"type":"string","nullable":true,"default":null},"paypalMe":{"type":"string","nullable":true,"default":null}},"required":["kind","name","fields"],"additionalProperties":false},"maxItems":12},"own":{"type":"object","properties":{"privateMinor":{"type":"string","pattern":"^-?\\d+$"},"groupsMinor":{"type":"string","pattern":"^-?\\d+$"},"totalMinor":{"type":"string","pattern":"^-?\\d+$"}},"required":["privateMinor","groupsMinor","totalMinor"],"additionalProperties":false},"groups":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"kind":{"type":"string","enum":["group","friend"]},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"netMinor":{"type":"string","pattern":"^-?\\d+$"},"sameCurrency":{"type":"boolean"},"openingBalanceMinor":{"type":"string","pattern":"^-?\\d+$"},"lines":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["expense","refund","payment_in","payment_out"]},"date":{"type":"integer"},"title":{"type":"string","nullable":true},"amountMinor":{"type":"string","pattern":"^\\d+$"},"changeMinor":{"type":"string","pattern":"^-?\\d+$"},"balanceMinor":{"type":"string","pattern":"^-?\\d+$"},"totalMinor":{"type":"string","pattern":"^\\d+$","nullable":true},"disputed":{"type":"boolean"}},"required":["kind","date","title","amountMinor","changeMinor","balanceMinor","totalMinor","disputed"],"additionalProperties":false}},"olderLinesInOpening":{"type":"integer","minimum":0},"closingBalanceMinor":{"type":"string","pattern":"^-?\\d+$"}},"required":["name","kind","currency","netMinor","sameCurrency"],"additionalProperties":false}},"coveredPeople":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"privateMinor":{"type":"string","pattern":"^-?\\d+$"},"groupsMinor":{"type":"string","pattern":"^-?\\d+$"},"totalMinor":{"type":"string","pattern":"^-?\\d+$"},"openingBalanceMinor":{"type":"string","pattern":"^-?\\d+$"},"closingBalanceMinor":{"type":"string","pattern":"^-?\\d+$"},"olderLinesInOpening":{"type":"integer","minimum":0},"lines":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["gave","got","share","delivery","payment_in","payment_out","interest","adjustment"]},"date":{"type":"integer"},"amountMinor":{"type":"string","pattern":"^\\d+$"},"changeMinor":{"type":"string","pattern":"^-?\\d+$"},"balanceMinor":{"type":"string","pattern":"^-?\\d+$"},"note":{"type":"string","nullable":true,"default":null},"interestRateBps":{"type":"integer","exclusiveMinimum":true,"minimum":0,"nullable":true,"default":null},"since":{"type":"integer","nullable":true,"default":null},"expenseTotalMinor":{"type":"string","pattern":"^\\d+$","nullable":true,"default":null},"bill":{"type":"boolean","default":false},"quantity":{"type":"string","nullable":true,"default":null},"unit":{"type":"string","nullable":true,"default":null}},"required":["kind","date","amountMinor","changeMinor","balanceMinor"],"additionalProperties":false}},"groups":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"kind":{"type":"string","enum":["group","friend"]},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"netMinor":{"type":"string","pattern":"^-?\\d+$"},"sameCurrency":{"type":"boolean"},"openingBalanceMinor":{"type":"string","pattern":"^-?\\d+$"},"lines":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","enum":["expense","refund","payment_in","payment_out"]},"date":{"type":"integer"},"title":{"type":"string","nullable":true},"amountMinor":{"type":"string","pattern":"^\\d+$"},"changeMinor":{"type":"string","pattern":"^-?\\d+$"},"balanceMinor":{"type":"string","pattern":"^-?\\d+$"},"totalMinor":{"type":"string","pattern":"^\\d+$","nullable":true},"disputed":{"type":"boolean"}},"required":["kind","date","title","amountMinor","changeMinor","balanceMinor","totalMinor","disputed"],"additionalProperties":false}},"olderLinesInOpening":{"type":"integer","minimum":0},"closingBalanceMinor":{"type":"string","pattern":"^-?\\d+$"}},"required":["name","kind","currency","netMinor","sameCurrency"],"additionalProperties":false}}},"required":["name","privateMinor","groupsMinor","totalMinor","openingBalanceMinor","closingBalanceMinor","olderLinesInOpening","lines"],"additionalProperties":false}},"overall":{"type":"object","properties":{"ownMinor":{"type":"string","pattern":"^-?\\d+$"},"coveredMinor":{"type":"string","pattern":"^-?\\d+$"},"totalMinor":{"type":"string","pattern":"^-?\\d+$"}},"required":["ownMinor","coveredMinor","totalMinor"],"additionalProperties":false},"scope":{"type":"object","properties":{"groups":{"type":"boolean"},"coveredPeople":{"type":"boolean"},"groupsUnavailable":{"type":"boolean","enum":[true]},"coveredUnavailable":{"type":"boolean","enum":[true]}},"required":["groups","coveredPeople"],"additionalProperties":false}},"required":["schemaVersion","ownerName","personName","currency","moneyScale","timeZone","period","openingBalanceMinor","lines","olderLinesInOpening","addedMinor","reducedMinor","closingBalanceMinor","currentBalanceMinor","notesIncluded","generatedAt","pay"],"additionalProperties":false}}}}