Skip to content

Routes

interfaces.expense.routes

Summary

Expense REST handlers — thin API entry points for the expense resource, wired to openapi.yaml operationIds by the OpenAPI-first router. All handlers delegate to ExpenseCrudsService via request.app.state.db_resources.

Classes

Functions

create_expense async

create_expense(request: Request, body: dict)

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.

delete_expense async

delete_expense(request: Request, id: str)

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.

get_expense async

get_expense(request: Request, id: str)

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.

list_expenses async

1
2
3
4
5
6
7
list_expenses(
    request: Request,
    offset: int = 0,
    limit: int = 10,
    start_date: str = "",
    end_date: str = "",
)

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.

update_expense async

update_expense(request: Request, id: str, body: dict)

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.