Openapi
interfaces.openapi
Summary
All handler functions — names must match openapi.yaml operationId values. The OpenAPI-first router resolves each operation to a handler by name, so this module re-exports every route handler from the subpackages into one flat namespace.
Classes
AccountCrudsService
Bases: CrudsServiceAdaptor[Account, AccountDocument]
Account CRUD service resolving :class:Account documents from a repo.
Notes
Instances are created by :func:get_account_service. The model
and schema class attributes bind the domain model and its document
type.
Initialize the adaptor with a backing repository.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
repo |
BaseRepository
|
Repository used for all operations. |
None
|
Functions
create
async
Create a document from a model or raw mapping.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data |
Model | dict
|
Model instance or field mapping to persist. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Schema |
Schema
|
Persisted document. |
delete
async
Delete a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
bool |
bool
|
|
model_to_dict
staticmethod
Serialize a model into a sparse dictionary.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_obj |
Model
|
Model instance to serialize. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Fields that are set and not |
patch
async
Partially update a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
data |
dict
|
Fields to patch. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Updated document, or |
read
async
Read a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Matching document, or |
search
async
List documents matching an optional filter.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
filter |
dict | None
|
Query filter passed to the repository. |
None
|
Returns:
| Type | Description |
|---|---|
list[Schema]
|
list[Schema]: Matching documents. |
Notes
Extra positional and keyword arguments are forwarded to the repository.
update
async
Replace a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
data |
Model | dict
|
Replacement model or field mapping. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Updated document, or |
EntityCrudsService
Bases: CrudsServiceAdaptor[Entity, EntityDocument]
Entity CRUD service resolving :class:Entity documents from a repo.
Notes
Instances are created by :func:get_entity_service. The model
and schema class attributes bind the domain model and its document
type.
Initialize the adaptor with a backing repository.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
repo |
BaseRepository
|
Repository used for all operations. |
None
|
Functions
create
async
Create a document from a model or raw mapping.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data |
Model | dict
|
Model instance or field mapping to persist. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Schema |
Schema
|
Persisted document. |
delete
async
Delete a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
bool |
bool
|
|
model_to_dict
staticmethod
Serialize a model into a sparse dictionary.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_obj |
Model
|
Model instance to serialize. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Fields that are set and not |
patch
async
Partially update a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
data |
dict
|
Fields to patch. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Updated document, or |
read
async
Read a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Matching document, or |
search
async
List documents matching an optional filter.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
filter |
dict | None
|
Query filter passed to the repository. |
None
|
Returns:
| Type | Description |
|---|---|
list[Schema]
|
list[Schema]: Matching documents. |
Notes
Extra positional and keyword arguments are forwarded to the repository.
update
async
Replace a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
data |
Model | dict
|
Replacement model or field mapping. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Updated document, or |
ExpenseCrudsService
Bases: CrudsServiceAdaptor[Expense, ExpenseDocument]
Expense CRUD service resolving :class:Expense documents from a repo.
Notes
Instances are created by :func:get_expense_service. The model
and schema class attributes bind the domain model and its document
type.
Initialize the adaptor with a backing repository.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
repo |
BaseRepository
|
Repository used for all operations. |
None
|
Functions
create
async
Create a document from a model or raw mapping.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data |
Model | dict
|
Model instance or field mapping to persist. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Schema |
Schema
|
Persisted document. |
delete
async
Delete a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
bool |
bool
|
|
model_to_dict
staticmethod
Serialize a model into a sparse dictionary.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_obj |
Model
|
Model instance to serialize. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Fields that are set and not |
patch
async
Partially update a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
data |
dict
|
Fields to patch. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Updated document, or |
read
async
Read a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Matching document, or |
search
async
List documents matching an optional filter.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
filter |
dict | None
|
Query filter passed to the repository. |
None
|
Returns:
| Type | Description |
|---|---|
list[Schema]
|
list[Schema]: Matching documents. |
Notes
Extra positional and keyword arguments are forwarded to the repository.
update
async
Replace a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
data |
Model | dict
|
Replacement model or field mapping. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Updated document, or |
FetchRequestCrudsService
Bases: CrudsServiceAdaptor[FetchRequest, FetchRequestDocument]
CRUD service for fetch requests with pipeline stage helpers.
Attributes:
| Name | Type | Description |
|---|---|---|
model |
FetchRequest
|
Domain model class. |
schema |
FetchRequestDocument
|
Persistence document class. |
Initialize the adaptor with a backing repository.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
repo |
BaseRepository
|
Repository used for all operations. |
None
|
Functions
create
async
Create a document from a model or raw mapping.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data |
Model | dict
|
Model instance or field mapping to persist. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Schema |
Schema
|
Persisted document. |
delete
async
Delete a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
bool |
bool
|
|
model_to_dict
staticmethod
Serialize a model into a sparse dictionary.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_obj |
Model
|
Model instance to serialize. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Fields that are set and not |
patch
async
Partially update a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
data |
dict
|
Fields to patch. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Updated document, or |
read
async
Read a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Matching document, or |
save_enrichment
async
Persist the enriched expense dicts on the request source.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Fetch request id. |
required |
enrichment_dicts |
list
|
Enriched expense dicts. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
None |
None
|
Nothing. |
save_raw_lines
async
Persist the extracted raw lines on the request source.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Fetch request id. |
required |
raw_lines |
list
|
Raw OCR/text lines. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
None |
None
|
Nothing. |
save_txn_blocks
async
Persist the extracted transaction blocks on the request source.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Fetch request id. |
required |
txn_blocks |
dict
|
Transaction blocks keyed by order id. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
None |
None
|
Nothing. |
save_txn_dicts
async
Persist the parsed transaction dicts and count on the request source.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Fetch request id. |
required |
txn_dicts |
list
|
Raw expense dicts. |
required |
txn_dicts_count |
int
|
Number of parsed transaction dicts. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
None |
None
|
Nothing. |
search
async
List documents matching an optional filter.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
filter |
dict | None
|
Query filter passed to the repository. |
None
|
Returns:
| Type | Description |
|---|---|
list[Schema]
|
list[Schema]: Matching documents. |
Notes
Extra positional and keyword arguments are forwarded to the repository.
update
async
Replace a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
data |
Model | dict
|
Replacement model or field mapping. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Updated document, or |
update_status
async
Update the request status, optionally carrying failure detail.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Fetch request id. |
required |
status |
str
|
New status value. |
required |
error_message |
Optional[str]
|
Message recorded when failing. |
None
|
retry_count |
Optional[int]
|
Retry counter recorded when failing. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
bool |
bool
|
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If |
ReportQuery
Bases: BaseModel
Definition of a report snapshot. Bounds the data set; dimensions are sliced at read time.
Attributes:
| Name | Type | Description |
|---|---|---|
name |
str
|
Snapshot name; empty for an auto-generated name. |
granularities |
List[str]
|
Granularities to precompute in the cube. |
group_dims |
List[str]
|
Dimensions to group by, e.g. |
flow |
str
|
Flow filter: inflows, outflows, or both. |
accounts |
Optional[List[str]]
|
Account names to include; all when |
ignore_self |
bool
|
Exclude self-transfer tagged expenses. |
start_date |
str
|
Inclusive start boundary, DD-MM-YYYY. |
end_date |
str
|
Inclusive end boundary, DD-MM-YYYY. |
min_amount |
Optional[float]
|
Minimum absolute amount to include. |
max_amount |
Optional[float]
|
Maximum absolute amount to include. |
ReportService
Build, persist, and serve precomputed report snapshots.
Notes
Instances are created by :func:get_report_service. The service scans
expenses in batches, expands tag hierarchies, and persists period
series into the configured :class:ReportStore.
Initialize the report service with its dependencies.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
expense_svc |
ExpenseCrudsService
|
Expense CRUD service used as the cube source. |
required |
tag_svc |
TagCrudsService
|
Tag CRUD service used to expand tag hierarchies and resolve ignore tags. |
required |
store |
ReportStore
|
Key-value store for cube period data. |
required |
report_repo |
Any
|
Report snapshot repository; defaults to
:func: |
None
|
Functions
delete_snapshot
async
Delete a snapshot and all of its cube keys from the store.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
report_id |
str
|
Snapshot ID to delete. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
bool |
bool
|
|
fetch_report
async
Slice a stored snapshot into a report API response.
"*" in payees or tags expands to every value stored in the
cube meta.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
report_id |
str
|
Snapshot ID to slice. |
required |
granularities |
Optional[List[str]]
|
Granularities to include; defaults to the snapshot's own. |
None
|
period_ids |
Optional[List[str]]
|
Period labels to filter to. |
None
|
flow |
str
|
Flow to serve; |
'outflows'
|
payees |
Optional[List[str]]
|
Payee filters applied per bucket. |
None
|
tags |
Optional[List[str]]
|
Tag path filters applied per bucket. |
None
|
Returns:
| Type | Description |
|---|---|
Optional[Report]
|
Optional[Report]: The sliced report view, or |
generate_snapshot
async
Validate a query and return an existing or newly built snapshot.
If a snapshot with the same canonical signature already exists it is returned directly; otherwise a fresh cube is built and persisted.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
query |
ReportQuery
|
Raw snapshot definition. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
ReportSnapshotDocument |
ReportSnapshotDocument
|
The existing or newly created snapshot. |
list_snapshots
async
List stored snapshots, newest first.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
offset |
int
|
Number of snapshots to skip. |
0
|
limit |
int
|
Maximum number of snapshots to return. |
DEFAULT_LIMIT
|
Returns:
| Type | Description |
|---|---|
List[ReportSnapshotDocument]
|
List[ReportSnapshotDocument]: Snapshots ordered by creation time, newest first. |
TagCrudsService
Bases: CrudsServiceAdaptor[Tag, TagDocument]
Tag CRUD service resolving :class:Tag documents from a repo.
Notes
Instances are created by :func:get_tag_service. The model
and schema class attributes bind the domain model and its document
type. An additional lookup helper get_by_names is provided.
Initialize the adaptor with a backing repository.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
repo |
BaseRepository
|
Repository used for all operations. |
None
|
Functions
create
async
Create a document from a model or raw mapping.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data |
Model | dict
|
Model instance or field mapping to persist. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Schema |
Schema
|
Persisted document. |
delete
async
Delete a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
bool |
bool
|
|
get_by_names
async
Return tags whose names match any of the provided values.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
names |
list[str]
|
Tag names to look up. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
list |
Matching tag documents. |
model_to_dict
staticmethod
Serialize a model into a sparse dictionary.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_obj |
Model
|
Model instance to serialize. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Fields that are set and not |
patch
async
Partially update a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
data |
dict
|
Fields to patch. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Updated document, or |
read
async
Read a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Matching document, or |
search
async
List documents matching an optional filter.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
filter |
dict | None
|
Query filter passed to the repository. |
None
|
Returns:
| Type | Description |
|---|---|
list[Schema]
|
list[Schema]: Matching documents. |
Notes
Extra positional and keyword arguments are forwarded to the repository.
update
async
Replace a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
data |
Model | dict
|
Replacement model or field mapping. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Updated document, or |
UploadCrudsService
Bases: CrudsServiceAdaptor[UploadResult, UploadResultDocument]
Upload result CRUD service resolving :class:UploadResult documents.
Notes
Instances are created by :func:get_upload_service. The model
and schema class attributes bind the domain model and its document
type.
Initialize the adaptor with a backing repository.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
repo |
BaseRepository
|
Repository used for all operations. |
None
|
Functions
create
async
Create a document from a model or raw mapping.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data |
Model | dict
|
Model instance or field mapping to persist. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Schema |
Schema
|
Persisted document. |
delete
async
Delete a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
bool |
bool
|
|
model_to_dict
staticmethod
Serialize a model into a sparse dictionary.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_obj |
Model
|
Model instance to serialize. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Fields that are set and not |
patch
async
Partially update a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
data |
dict
|
Fields to patch. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Updated document, or |
read
async
Read a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Matching document, or |
search
async
List documents matching an optional filter.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
filter |
dict | None
|
Query filter passed to the repository. |
None
|
Returns:
| Type | Description |
|---|---|
list[Schema]
|
list[Schema]: Matching documents. |
Notes
Extra positional and keyword arguments are forwarded to the repository.
update
async
Replace a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
data |
Model | dict
|
Replacement model or field mapping. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Updated document, or |
UploadResult
Bases: BaseModel
Metadata describing a stored file upload.
Attributes:
| Name | Type | Description |
|---|---|---|
original_filename |
str
|
Name of the file as uploaded by the client. |
saved_as |
str
|
Name the file was stored under on disk. |
content_type |
str
|
MIME type of the uploaded file. |
url |
str
|
Public URL serving the stored file. |
absolute_path |
str
|
Absolute filesystem path of the stored file. |
UserCrudsService
Bases: CrudsServiceAdaptor[User, UserDocument]
User CRUD service resolving :class:User documents from a repo.
Notes
Instances are created by :func:get_user_service. The model
and schema class attributes bind the domain model and its document
type.
Initialize the adaptor with a backing repository.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
repo |
BaseRepository
|
Repository used for all operations. |
None
|
Functions
create
async
Create a document from a model or raw mapping.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
data |
Model | dict
|
Model instance or field mapping to persist. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Schema |
Schema
|
Persisted document. |
delete
async
Delete a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
bool |
bool
|
|
model_to_dict
staticmethod
Serialize a model into a sparse dictionary.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model_obj |
Model
|
Model instance to serialize. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
dict
|
Fields that are set and not |
patch
async
Partially update a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
data |
dict
|
Fields to patch. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Updated document, or |
read
async
Read a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Matching document, or |
search
async
List documents matching an optional filter.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
filter |
dict | None
|
Query filter passed to the repository. |
None
|
Returns:
| Type | Description |
|---|---|
list[Schema]
|
list[Schema]: Matching documents. |
Notes
Extra positional and keyword arguments are forwarded to the repository.
update
async
Replace a document by primary key.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
id |
PyObjectId
|
Document identifier. |
required |
data |
Model | dict
|
Replacement model or field mapping. |
required |
Returns:
| Type | Description |
|---|---|
Schema | None
|
Schema | None: Updated document, or |
Functions
cache_response
Decorate a GET-style route handler to cache its JSON response.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ttl |
Optional[int]
|
Cache lifetime in seconds; defaults to
|
None
|
Returns:
| Name | Type | Description |
|---|---|---|
Callable |
Callable
|
Decorator that wraps the route handler. |
Notes
The wrapped handler must accept a request: Request parameter (as
every openapi_first handler does). Responses that are already a
fastapi.Response (for example 204) are returned untouched and
never cached. When no http_cache_store is wired on
request.app.state.db_resources the decorator passes through to the
handler without caching.
create_account
async
Create a new account.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
body |
dict
|
Account payload forwarded to the service. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
AccountDocument |
The created account. |
create_entity
async
Create a new entity.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
body |
dict
|
Entity payload forwarded to the service. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
EntityDocument |
The created entity. |
create_expense
async
Create a new expense.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
body |
dict
|
Expense payload forwarded to the service. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
ExpenseDocument |
The created expense. |
create_fetch_request
async
Create a new fetch request.
A stable fingerprint is derived from the source payload and stored on the document when the payload does not already provide one.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
body |
dict
|
Fetch request payload forwarded to the service. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
FetchRequestDocument |
The created fetch request. |
create_report
async
Generate a report snapshot from a query definition.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
body |
dict
|
Report query payload; validated into a ReportQuery. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
ReportSnapshotDocument |
The generated snapshot. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
400 when the query payload is invalid. |
create_tag
async
Create a new tag.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
body |
dict
|
Tag payload forwarded to the service. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
TagDocument |
The created tag. |
create_user
async
Create a new user.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
body |
dict
|
User payload forwarded to the service. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
UserDocument |
The created user. |
delete_account
async
Delete an account by id.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Account id. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Response |
Empty 204 response on successful delete. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when no account matches the id. |
delete_entity
async
Delete an entity by id.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Entity id. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Response |
Empty 204 response on successful delete. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when no entity matches the id. |
delete_expense
async
Delete an expense by id.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Expense id. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Response |
Empty 204 response on successful delete. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when no expense matches the id. |
delete_fetch_request
async
Delete a fetch request and its dependent data.
Cascades deletes to related expenses and ambiguities, removes the fetch request, and invalidates the expenses HTTP cache.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Fetch request id. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Response |
Empty 204 response on successful delete. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when no fetch request matches the id. |
delete_report
async
Delete a report snapshot by id.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Report snapshot id. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Response |
Empty 204 response on successful delete. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when the snapshot does not exist. |
delete_tag
async
Delete a tag by id.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Tag id. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Response |
Empty 204 response on successful delete. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when no tag matches the id. |
get_account
async
Get an account by id.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Account id. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
AccountDocument |
The matching account. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when no account matches the id. |
get_current_user
async
Get the profile of the authenticated user.
Reads the principal from request.state and creates the profile on first access when it does not exist yet.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries the authenticated user and app.state.db_resources. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
UserDocument |
The current user's profile. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
401 when the request is not authenticated. |
get_entity
async
Get an entity by id.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Entity id. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
EntityDocument |
The matching entity. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when no entity matches the id. |
get_expense
async
Get an expense by id.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Expense id. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
ExpenseDocument |
The matching expense. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when no expense matches the id. |
get_fetch_request
async
Get a fetch request by id.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Fetch request id. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
FetchRequestDocument |
The matching fetch request. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when no fetch request matches the id. |
get_report
async
Fetch a report snapshot with optional granularity, flow, and filter overrides.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Report snapshot id. |
required |
granularity |
Optional[List[str]]
|
Granularities to materialize; empty means the snapshot's default set. |
Query(None)
|
period_ids |
Optional[List[str]]
|
Period labels to constrain output. |
Query(None)
|
flow |
str
|
Flow filter of inflows, outflows, or both. Defaults to outflows. |
'outflows'
|
payee |
Optional[List[str]]
|
Payee names to include. |
Query(None)
|
tags |
Optional[List[str]]
|
Tag paths to include. |
Query(None)
|
Returns:
| Name | Type | Description |
|---|---|---|
Report |
The fetched report. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
400 when the report arguments are invalid. |
HTTPException
|
404 when the snapshot does not exist. |
get_tag
async
Get a tag by id.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Tag id. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
TagDocument |
The matching tag. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when no tag matches the id. |
get_uploaded_file
async
Serve an uploaded file from disk.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request. |
required |
filepath |
str
|
Relative path of the file under UPLOAD_DIR. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
FileResponse |
The requested file with its original filename. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when the file does not exist. |
get_user
async
Get a user by id.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
User id. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
UserDocument |
The matching user. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when no user matches the id. |
list_accounts
async
List accounts with pagination.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
skip |
int
|
Number of accounts to skip (offset). Defaults to 0. |
0
|
limit |
int
|
Maximum number of accounts to return. Defaults to 100. |
100
|
Returns:
| Type | Description |
|---|---|
|
list[AccountDocument]: Matching accounts from AccountCrudsService.search. |
list_ambiguities
async
List pending ambiguities for a fetch request.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Fetch request id. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
list |
Pending ambiguity documents from the ambiguity service. |
list_entities
async
List entities with pagination.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
skip |
int
|
Number of entities to skip (offset). Defaults to 0. |
0
|
limit |
int
|
Maximum number of entities to return. Defaults to 100. |
100
|
Returns:
| Type | Description |
|---|---|
|
list[EntityDocument]: Matching entities from EntityCrudsService.search. |
list_expenses
async
List expenses with pagination, excluding self-transfers.
Expenses tagged with a self-transfer tag are filtered out. The start_date and end_date parameters are accepted by the signature but not applied to the underlying search filter.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
offset |
int
|
Number of expenses to skip (offset). Defaults to 0. |
0
|
limit |
int
|
Maximum number of expenses to return. Defaults to 10. |
10
|
start_date |
str
|
Accepted date-range start; not applied to the search. |
''
|
end_date |
str
|
Accepted date-range end; not applied to the search. |
''
|
Returns:
| Type | Description |
|---|---|
|
list[ExpenseDocument]: Matching expenses from ExpenseCrudsService.search. |
list_fetch_requests
async
List fetch requests with pagination.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
offset |
int
|
Number of fetch requests to skip (offset). Defaults to 0. |
0
|
limit |
int
|
Maximum number of fetch requests to return. Defaults to 100. |
100
|
Returns:
| Type | Description |
|---|---|
|
list[FetchRequestDocument]: Matching fetch requests from the service. |
list_reports
async
List report snapshots with pagination.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
offset |
int
|
Number of snapshots to skip (offset). Defaults to 0. |
0
|
limit |
int
|
Maximum number of snapshots to return. Defaults to 100. |
100
|
Returns:
| Type | Description |
|---|---|
|
list[ReportSnapshotDocument]: Matching snapshots from the report service. |
list_tags
async
List tags with pagination.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
skip |
int
|
Number of tags to skip (offset). Defaults to 0. |
0
|
limit |
int
|
Maximum number of tags to return. Defaults to 1000. |
1000
|
Returns:
| Type | Description |
|---|---|
|
list[TagDocument]: Matching tags from TagCrudsService.search. |
list_uploads
async
List all upload records.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
Returns:
| Type | Description |
|---|---|
|
list[UploadDocument]: All uploads from the upload service. |
list_users
async
List users with pagination.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
skip |
int
|
Number of users to skip (offset). Defaults to 0. |
0
|
limit |
int
|
Maximum number of users to return. Defaults to 100. |
100
|
Returns:
| Type | Description |
|---|---|
|
list[UserDocument]: Matching users from UserCrudsService.search. |
resolve_ambiguity
async
Resolve an ambiguity by choosing one of its candidates.
Marks the ambiguity resolved, then requeues the parent fetch request when no pending ambiguities remain and the fetch request is paused.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Ambiguity id. |
required |
body |
dict
|
Resolution payload; must contain the chosen candidate. |
required |
Returns:
| Type | Description |
|---|---|
|
Updated ambiguity document. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
400 when the chosen candidate is missing. |
HTTPException
|
404 when the ambiguity is not found. |
stream_fetch_events
async
Stream progress events for a fetch request as server-sent events.
If the SSE bus is not configured on app.state.db_resources an empty events
list is returned. Otherwise a text/event-stream response is yielded,
polling the bus every 500 ms until the client disconnects.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Fetch request id. |
required |
Returns:
| Type | Description |
|---|---|
|
StreamingResponse | dict: SSE stream, or |
|
|
is unavailable. |
update_account
async
Update an account by id.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Account id. |
required |
body |
dict
|
Fields to update, forwarded to the service. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
AccountDocument |
The updated account. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when no account matches the id. |
update_current_user
async
Update the profile of the authenticated user.
Creates the profile on first access, then applies the update payload.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries the authenticated user and app.state.db_resources. |
required |
body |
dict
|
Fields to update on the current user's profile. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
UserDocument |
The updated profile. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
401 when the request is not authenticated. |
update_entity
async
Update an entity by id.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Entity id. |
required |
body |
dict
|
Fields to update, forwarded to the service. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
EntityDocument |
The updated entity. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when no entity matches the id. |
update_expense
async
Update an expense by id.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Expense id. |
required |
body |
dict
|
Fields to update, forwarded to the service. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
ExpenseDocument |
The updated expense. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when no expense matches the id. |
update_fetch_request
async
Patch a fetch request's status and retry bookkeeping.
Delegates to FetchRequestCrudsService.update_status with the status, error_message, and retry_count fields from the payload, then returns the refreshed document.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Fetch request id. |
required |
body |
dict
|
Payload with status, error_message, and retry_count fields. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
FetchRequestDocument |
The refreshed fetch request. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when no fetch request matches the id. |
update_fetch_request_put
async
Replace a fetch request by id.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Fetch request id. |
required |
body |
dict
|
Full fetch request payload forwarded to the service. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
FetchRequestDocument |
The updated fetch request. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when no fetch request matches the id. |
update_tag
async
Update a tag by id.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Tag id. |
required |
body |
dict
|
Fields to update, forwarded to the service. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
TagDocument |
The updated tag. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when no tag matches the id. |
upload_entity_logo
async
Upload a logo for an entity and persist it to the logo directory.
The file contents are hashed to derive a stable filename, written under LOGO_DIR, and the entity's logo field is updated with the served URL.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries app.state.db_resources. |
required |
id |
str
|
Entity id. |
required |
file |
UploadFile
|
Uploaded logo image. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
dict |
A mapping with keys id, url, logo, and status. |
Raises:
| Type | Description |
|---|---|
HTTPException
|
404 when no entity matches the id. |
upload_file
async
Upload a raw request body as a file.
The filename is parsed from the content-disposition header (defaulting to
upload) and combined with a content hash to form the stored filename
under UPLOAD_DIR. The resulting UploadResult is persisted via the upload
service.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
request |
Request
|
Incoming HTTP request; carries the body, content type, and app.state.db_resources. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
UploadDocument |
The created upload record. |