diff --git a/firefly-iii-6.2.21-v1.yaml b/firefly-iii-6.4.8-v1.yaml
similarity index 74%
rename from firefly-iii-6.2.21-v1.yaml
rename to firefly-iii-6.4.8-v1.yaml
index 840a47d..6acd2be 100644
--- a/firefly-iii-6.2.21-v1.yaml
+++ b/firefly-iii-6.4.8-v1.yaml
@@ -5,104 +5,133 @@ servers:
- description: "Local development server (do not use)"
url: http://firefly.sd.internal/api
info:
- title: Firefly III API v6.2.21
+ title: Firefly III API v6.4.8
description: |
- This is the documentation of the Firefly III API. You can find accompanying documentation on the website of Firefly III itself (see below). Please report any bugs or issues. You may use the "Authorize" button to try the API below. This file was last generated on 2025-07-31T17:40:58+00:00
- Please keep in mind that the demo site does not accept requests from curl, colly, wget, etc. You must use a browser or a tool like Postman to make requests. Too many script kiddies out there, sorry about that.
-
- version: "v6.2.21"
+ This is the documentation of the Firefly III API. Please report any bugs or issues. You may use the "Authorize" button to try the API below.
+
+ Please keep in mind that the demo site does **not** accept requests from `curl`, `colly`, `wget`, etc. You must use a browser or a tool like Insomnia to make your test requests.
+
+ To learn more about the idiosyncrasies of this API, please read about the API in the [Firefly III API documentation](https://docs.firefly-iii.org/references/firefly-iii/api/).
+
+ This file was last generated on 2025-11-23 @ 08:51:43 (Europe/Amsterdam)
+
+ version: "v6.4.8"
contact:
name: James Cole
email: james@firefly-iii.org
url: https://firefly-iii.org
license:
name: AGPLv3
- url: 'https://www.gnu.org/licenses/agpl-3.0.en.html'
+ url: "https://www.gnu.org/licenses/agpl-3.0.en.html"
tags:
-- name: about
- description: These endpoints deliver general system information, version- and meta
- information.
-- name: accounts
- description: Endpoints that deliver all of the user's asset, expense and other accounts
- (and the metadata) together with related transactions, piggy banks and other objects.
- Also delivers endpoints for CRUD operations for accounts.
-- name: attachments
- description: Endpoints to manage the attachments of the authenticated user, including
- up- and downloading of the files.
-- name: autocomplete
- description: Auto-complete endpoints show basic information about Firefly III models,
- like the name and maybe some amounts. They all support a search query and can
- be used to autocomplete data in forms. Autocomplete return values always have
- a "name"-field.
-- name: available_budgets
- description: Endpoints to manage the total available amount that the user has made
- available to themselves. Used in periodic budgeting.
-- name: bills
- description: Endpoints to manage a user's bills and all related objects.
-- name: budgets
- description: Endpoints to manage a user's budgets and get info on the related objects,
- like limits.
-- name: categories
- description: Endpoints to manage a user's categories and get information on transactions
- and other related objects.
-- name: charts
- description: The "charts" endpoints deliver optimised data for charts and graphs.
-- name: configuration
- description: These endpoints allow you to manage and update the Firefly III configuration.
- You need to have the "owner" role to update configuration.
-- name: currencies
- description: Endpoints to manage the currencies in Firefly III. Depending on the
- user's role you can also disable and enable them, or add new ones.
-- name: currency_exchange_rates
- description: All currency exchange rates.
-- name: data
- description: The "data"-endpoints manage generic Firefly III and user-specific data.
-- name: insight
- description: The "insight" endpoints try to deliver sums, balances and insightful
- information in the broadest sense of the word.
-- name: links
- description: Endpoints to manage links between transactions, and manage the type
- of links available.
-- name: object_groups
- description: Endpoints to control and manage all of the user's object groups. Can
- only be created in conjunction with another object (for example a piggy bank)
- and will auto-delete when no other items are linked to it.
-- name: piggy_banks
- description: Endpoints to control and manage all of the user's piggy banks and related
- objects and information.
-- name: preferences
- description: These endpoints can be used to manage the user's preferences, including
- some hidden ones.
-- name: recurrences
- description: Use these endpoints to manage the user's recurring transactions, trigger
- the creation of transactions and manage the settings.
-- name: rule_groups
- description: Manage all of the user's groups of rules and trigger the execution
- of entire groups.
-- name: rules
- description: These endpoints can be used to manage all of the user's rules. Also
- includes triggers to execute or test rules and individual triggers.
-- name: search
- description: Endpoints that allow you to search through the user's financial data.
- Different from the autocomplete endpoints, the search accepts more advanced arguments.
-- name: summary
- description: These endpoints deliver summaries, like sums, lists of numbers and
- other processed information. Mainly used for the main dashboard and pretty specific
- for Firefly III itself.
-- name: tags
- description: This endpoint manages all of the user's tags.
-- name: transactions
- description: The most-used endpoints in Firefly III, these endpoints are used to
- manage the user's transactions.
-- name: user_groups
- description: User groups are the objects around which "financial administrations"
- are built.
-- name: users
- description: Use these endpoints to manage the users registered within Firefly III.
- You need to have the "owner" role to access these endpoints.
-- name: webhooks
- description: These endpoints can be used to manage the user's webhooks and triggers
- them if necessary.
+ - name: about
+ description:
+ These endpoints deliver general system information, version- and meta
+ information.
+ - name: accounts
+ description:
+ Endpoints that deliver all of the user's asset, expense and other accounts
+ (and the metadata) together with related transactions, piggy banks and other objects.
+ Also delivers endpoints for CRUD operations for accounts.
+ - name: attachments
+ description:
+ Endpoints to manage the attachments of the authenticated user, including
+ up- and downloading of the files.
+ - name: autocomplete
+ description:
+ Auto-complete endpoints show basic information about Firefly III models,
+ like the name and maybe some amounts. They all support a search query and can
+ be used to autocomplete data in forms. Autocomplete return values always have
+ a "name"-field.
+ - name: available_budgets
+ description:
+ Endpoints to manage the total available amount that the user has made
+ available to themselves. Used in periodic budgeting.
+ - name: bills
+ description: Endpoints to manage a user's bills and all related objects.
+ - name: budgets
+ description:
+ Endpoints to manage a user's budgets and get info on the related objects,
+ like limits.
+ - name: categories
+ description:
+ Endpoints to manage a user's categories and get information on transactions
+ and other related objects.
+ - name: charts
+ description: The "charts" endpoints deliver optimised data for charts and graphs.
+ - name: configuration
+ description:
+ These endpoints allow you to manage and update the Firefly III configuration.
+ You need to have the "owner" role to update configuration.
+ - name: currencies
+ description:
+ Endpoints to manage the currencies in Firefly III. Depending on the
+ user's role you can also disable and enable them, or add new ones.
+ - name: currency_exchange_rates
+ description: All currency exchange rates.
+ - name: data
+ description: The "data"-endpoints manage generic Firefly III and user-specific data.
+ - name: insight
+ description:
+ The "insight" endpoints try to deliver sums, balances and insightful
+ information in the broadest sense of the word.
+ - name: links
+ description:
+ Endpoints to manage links between transactions, and manage the type
+ of links available.
+ - name: object_groups
+ description:
+ Endpoints to control and manage all of the user's object groups. Can
+ only be created in conjunction with another object (for example a piggy bank)
+ and will auto-delete when no other items are linked to it.
+ - name: piggy_banks
+ description:
+ Endpoints to control and manage all of the user's piggy banks and related
+ objects and information.
+ - name: preferences
+ description:
+ These endpoints can be used to manage the user's preferences, including
+ some hidden ones.
+ - name: recurrences
+ description:
+ Use these endpoints to manage the user's recurring transactions, trigger
+ the creation of transactions and manage the settings.
+ - name: rule_groups
+ description:
+ Manage all of the user's groups of rules and trigger the execution
+ of entire groups.
+ - name: rules
+ description:
+ These endpoints can be used to manage all of the user's rules. Also
+ includes triggers to execute or test rules and individual triggers.
+ - name: search
+ description:
+ Endpoints that allow you to search through the user's financial data.
+ Different from the autocomplete endpoints, the search accepts more advanced arguments.
+ - name: summary
+ description:
+ These endpoints deliver summaries, like sums, lists of numbers and
+ other processed information. Mainly used for the main dashboard and pretty specific
+ for Firefly III itself.
+ - name: tags
+ description: This endpoint manages all of the user's tags.
+ - name: transactions
+ description:
+ The most-used endpoints in Firefly III, these endpoints are used to
+ manage the user's transactions.
+ - name: user_groups
+ description:
+ User groups are the objects around which "financial administrations"
+ are built.
+ - name: users
+ description:
+ Use these endpoints to manage the users registered within Firefly III.
+ You need to have the "owner" role to access these endpoints.
+ - name: webhooks
+ description:
+ These endpoints can be used to manage the user's webhooks and triggers
+ them if necessary.
+
paths:
/v1/autocomplete/accounts:
get:
@@ -119,6 +148,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: query
description: The autocomplete search query.
@@ -141,7 +171,7 @@ paths:
schema:
type: string
format: string
- example: "2020-09-17"
+ example: "2025-11-01"
description: If the account is an asset account or a liability, the autocomplete will also return the balance of the account on this date.
- in: query
name: types
@@ -151,7 +181,7 @@ paths:
schema:
type: array
items:
- $ref: '#/components/schemas/AccountTypeFilter'
+ $ref: "#/components/schemas/AccountTypeFilter"
summary: Returns all accounts of the user returned in a basic auto-complete array.
responses:
"401":
@@ -159,37 +189,42 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of accounts with very basic information.
content:
application/json:
schema:
- $ref: '#/components/schemas/AutocompleteAccountArray'
+ $ref: "#/components/schemas/AutocompleteAccountArray"
/v1/autocomplete/bills:
get:
tags:
@@ -205,6 +240,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: query
description: The autocomplete search query.
@@ -228,37 +264,42 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of bills with very basic information.
content:
application/json:
schema:
- $ref: '#/components/schemas/AutocompleteBillArray'
+ $ref: "#/components/schemas/AutocompleteBillArray"
/v1/autocomplete/budgets:
get:
tags:
@@ -274,6 +315,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: query
description: The autocomplete search query.
@@ -297,37 +339,42 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
description: A list of budgets with very basic information.
content:
application/json:
schema:
- $ref: '#/components/schemas/AutocompleteBudgetArray'
+ $ref: "#/components/schemas/AutocompleteBudgetArray"
/v1/autocomplete/categories:
get:
tags:
@@ -343,6 +390,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: query
description: The autocomplete search query.
@@ -366,37 +414,42 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of categories with very basic information.
content:
application/json:
schema:
- $ref: '#/components/schemas/AutocompleteCategoryArray'
+ $ref: "#/components/schemas/AutocompleteCategoryArray"
/v1/autocomplete/currencies:
get:
tags:
@@ -412,6 +465,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: query
description: The autocomplete search query.
@@ -435,37 +489,42 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
description: A list of currencies with very basic information.
content:
application/json:
schema:
- $ref: '#/components/schemas/AutocompleteCurrencyArray'
+ $ref: "#/components/schemas/AutocompleteCurrencyArray"
/v1/autocomplete/currencies-with-code:
get:
tags:
@@ -481,6 +540,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: query
description: The autocomplete search query.
@@ -504,31 +564,35 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of currencies with very basic information and the currency code between brackets. This endpoint is DEPRECATED and I suggest you DO NOT use it.
content:
application/json:
schema:
- $ref: '#/components/schemas/AutocompleteCurrencyCodeArray'
+ $ref: "#/components/schemas/AutocompleteCurrencyCodeArray"
/v1/autocomplete/object-groups:
get:
tags:
@@ -544,6 +608,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: query
description: The autocomplete search query.
@@ -567,37 +632,42 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
description: A list of object groups with very basic information.
content:
application/json:
schema:
- $ref: '#/components/schemas/AutocompleteObjectGroupArray'
+ $ref: "#/components/schemas/AutocompleteObjectGroupArray"
/v1/autocomplete/piggy-banks:
get:
tags:
@@ -613,6 +683,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: query
description: The autocomplete search query.
@@ -636,37 +707,42 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
description: A list of piggy banks with very basic information.
content:
application/json:
schema:
- $ref: '#/components/schemas/AutocompletePiggyArray'
+ $ref: "#/components/schemas/AutocompletePiggyArray"
/v1/autocomplete/piggy-banks-with-balance:
get:
tags:
@@ -682,6 +758,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: query
description: The autocomplete search query.
@@ -705,31 +782,35 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of piggy banks with very basic balance information.
content:
application/json:
schema:
- $ref: '#/components/schemas/AutocompletePiggyBalanceArray'
+ $ref: "#/components/schemas/AutocompletePiggyBalanceArray"
/v1/autocomplete/recurring:
get:
tags:
@@ -745,6 +826,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: query
description: The autocomplete search query.
@@ -768,37 +850,42 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
description: A list of recurring transactions with very basic information.
content:
application/json:
schema:
- $ref: '#/components/schemas/AutocompleteRecurrenceArray'
+ $ref: "#/components/schemas/AutocompleteRecurrenceArray"
/v1/autocomplete/rule-groups:
get:
tags:
@@ -814,6 +901,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: query
description: The autocomplete search query.
@@ -837,37 +925,42 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
description: A list of rule groups with very basic information.
content:
application/json:
schema:
- $ref: '#/components/schemas/AutocompleteRuleGroupArray'
+ $ref: "#/components/schemas/AutocompleteRuleGroupArray"
/v1/autocomplete/rules:
get:
tags:
@@ -883,6 +976,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: query
description: The autocomplete search query.
@@ -906,37 +1000,117 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
description: A list of rules with very basic information.
content:
application/json:
schema:
- $ref: '#/components/schemas/AutocompleteRuleArray'
+ $ref: "#/components/schemas/AutocompleteRuleArray"
+ /v1/autocomplete/subscriptions:
+ get:
+ tags:
+ - autocomplete
+ operationId: getSubscriptionsAC
+ parameters:
+ - name: X-Trace-Id
+ in: header
+ description: Unique identifier associated with this request.
+ required: false
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+ schema:
+ type: string
+ format: uuid
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: query
+ name: query
+ description: The autocomplete search query.
+ required: false
+ schema:
+ type: string
+ format: string
+ example: "string"
+ - in: query
+ name: limit
+ description: The number of items returned.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 10
+ summary: Returns all subscriptions of the user returned in a basic auto-complete array.
+ responses:
+ "401":
+ description: Unauthenticated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
+ "404":
+ description: Page not found
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/NotFoundResponse"
+
+ "400":
+ description: Bad request
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ "422":
+ description: "Validation error. The body will have the exact details."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
+ "500":
+ description: Internal exception
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ "200":
+ description: A list of subscriptions with very basic information.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/AutocompleteBillArray"
/v1/autocomplete/tags:
get:
tags:
@@ -952,6 +1126,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: query
description: The autocomplete search query.
@@ -975,37 +1150,42 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of tags with very basic information.
content:
application/json:
schema:
- $ref: '#/components/schemas/AutocompleteTagArray'
+ $ref: "#/components/schemas/AutocompleteTagArray"
/v1/autocomplete/transaction-types:
get:
tags:
@@ -1021,6 +1201,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: query
description: The autocomplete search query.
@@ -1044,37 +1225,42 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of transaction types with very basic information.
content:
application/json:
schema:
- $ref: '#/components/schemas/AutocompleteTransactionTypeArray'
+ $ref: "#/components/schemas/AutocompleteTransactionTypeArray"
/v1/autocomplete/transactions:
get:
tags:
@@ -1090,6 +1276,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: query
description: The autocomplete search query.
@@ -1113,37 +1300,42 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of transaction descriptions with very basic information.
content:
application/json:
schema:
- $ref: '#/components/schemas/AutocompleteTransactionArray'
+ $ref: "#/components/schemas/AutocompleteTransactionArray"
/v1/autocomplete/transactions-with-id:
get:
tags:
@@ -1159,6 +1351,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: query
description: The autocomplete search query.
@@ -1182,44 +1375,49 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of transactions with very basic information. This endpoint is DEPRECATED and I suggest you DO NOT use it.
content:
application/json:
schema:
- $ref: '#/components/schemas/AutocompleteTransactionIDArray'
+ $ref: "#/components/schemas/AutocompleteTransactionIDArray"
/v1/chart/account/overview:
get:
tags:
- charts
summary: Dashboard chart with asset account balance information.
description: |
- This endpoint returns the data required to generate a chart with basic asset account balance information.
+ This endpoint returns the data required to generate a chart with basic asset account balance information. This is used on the dashboard.
operationId: getChartAccountOverview
parameters:
- name: X-Trace-Id
@@ -1231,6 +1429,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -1247,51 +1446,95 @@ paths:
schema:
type: string
format: date
+
+ - in: query
+ name: period
+ description: |
+ Optional period to group the data by. If not provided, it will default to '1M' or whatever is deemed relevant for the range provided.
+
+ If you want to know which periods are available, see the enums or get the configuration value: `GET /api/v1/configuration/firefly.valid_view_ranges`
+ required: false
+ schema:
+ type: string
+ enum:
+ - 1D
+ - 1W
+ - 1M
+ - 3M
+ - 6M
+ - 1Y
+ example: 1M
+ - in: query
+ name: preselected
+ description: |
+ Optional set of preselected accounts to limit the chart to. This may be easier than submitting all asset accounts manually, for example.
+ If you want to know which selection are available, see the enums here or get the configuration value: `GET /api/v1/configuration/firefly.preselected_accounts`
+
+ - `empty`: do not do a pre-selection
+ - `all`: select all asset and all liability accounts
+ - `assets`: select all asset accounts
+ - `liabilities`: select all liability accounts
+
+ If no accounts are found, the user's "frontpage accounts" preference will be used. If that is empty, all asset accounts will be used.
+ required: false
+ schema:
+ type: string
+ enum:
+ - empty
+ - all
+ - assets
+ - liabilities
+ example: all
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: Line chart oriented chart information. Check out the model for more details. Each entry is a line (or bar) in the chart.
content:
application/json:
schema:
- $ref: '#/components/schemas/ChartLine'
- /v1/data/bulk/transactions:
- post:
- summary: Bulk update transaction properties. For more information, see https://docs.firefly-iii.org/references/firefly-iii/api/specials/
- description: |
- Allows you to update transactions in bulk.
- operationId: bulkUpdateTransactions
+ $ref: "#/components/schemas/ChartLine"
+ /v1/chart/balance/balance:
+ get:
tags:
- - data
+ - charts
+ summary: Dashboard chart with balance information.
+ description: |
+ This endpoint returns the data required to generate a chart with balance information.
+ operationId: getChartBalance
parameters:
- name: X-Trace-Id
in: header
@@ -1302,76 +1545,126 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
- name: query
- description: The JSON query.
+ name: start
+ description: |
+ A date formatted YYYY-MM-DD.
required: true
schema:
type: string
- format: json
+ format: date
+ - in: query
+ name: end
+ description: |
+ A date formatted YYYY-MM-DD.
+ required: true
+ schema:
+ type: string
+ format: date
+
+ - in: query
+ name: period
+ description: |
+ Optional period to group the data by. If not provided, it will default to '1M' or whatever is deemed relevant for the range provided.
+
+ If you want to know which periods are available, see the enums or get the configuration value: `GET /api/v1/configuration/firefly.valid_view_ranges`
+ required: false
+ schema:
+ type: string
+ enum:
+ - 1D
+ - 1W
+ - 1M
+ - 3M
+ - 6M
+ - 1Y
+ example: 1M
+ - in: query
+ name: preselected
+ description: |
+ Optional set of preselected accounts to limit the chart to. This may be easier than submitting all asset accounts manually, for example.
+ If you want to know which selection are available, see the enums here or get the configuration value: `GET /api/v1/configuration/firefly.preselected_accounts`
+
+ - `empty`: do not do a pre-selection
+ - `all`: select all asset and all liability accounts
+ - `assets`: select all asset accounts
+ - `liabilities`: select all liability accounts
+
+ If no accounts are found, the user's "frontpage accounts" preference will be used. If that is empty, all asset accounts will be used.
+ required: false
+ schema:
+ type: string
+ enum:
+ - empty
+ - all
+ - assets
+ - liabilities
+ example: all
+ - in: query
+ name: accounts[]
+ description: |
+ Limit the chart to these asset accounts or liabilities. Only asset accounts and liabilities will be accepted. Other types will be silently dropped.
+
+ This list of accounts will be OVERRULED by the `preselected` parameter.
+ required: false
+ explode: true
+ schema:
+ type: array
+ items:
+ type: integer
+ format: int64
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
- "500":
- description: Internal exception
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- "204":
- description: Empty response when the update was successful. A future improvement is to include the changed transactions.
- /v1/data/destroy:
- delete:
- tags:
- - data
- operationId: destroyData
- summary: Endpoint to destroy user data
- description: |
- A call to this endpoint deletes the requested data type. Use it with care and always with user permission.
- The demo user is incapable of using this endpoint.
- responses:
- "401":
- description: Unauthenticated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
- "404":
- description: Page not found
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ "422":
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
- "400":
- description: Bad request
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
+ "500":
+ description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
- "500":
- description: Internal exception
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ "200":
+ description: Line chart oriented chart information. Check out the model for more details. Each entry is a line (or bar) in the chart.
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- "204":
- description: Empty response when data has been destroyed.
+ $ref: "#/components/schemas/ChartLine"
+ /v1/chart/budget/overview:
+ get:
+ tags:
+ - charts
+ summary: Dashboard chart with budget information.
+ description: |
+ This endpoint returns the data required to generate a chart with basic budget information.
+ operationId: getChartBudgetOverview
parameters:
- name: X-Trace-Id
in: header
@@ -1382,82 +1675,74 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
- name: objects
- description: The type of data that you wish to destroy. You can only use one at a time.
+ name: start
+ description: |
+ A date formatted YYYY-MM-DD.
required: true
- schema:
- $ref: '#/components/schemas/DataDestroyObject'
- /v1/data/export/accounts:
- get:
- summary: Export account data from Firefly III
- description: |
- This endpoint allows you to export your accounts from Firefly III into a file. Currently supports CSV exports only.
- operationId: exportAccounts
- tags:
- - data
- parameters:
- - name: X-Trace-Id
- in: header
- description: Unique identifier associated with this request.
- required: false
- example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
schema:
type: string
- format: uuid
- example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+ format: date
- in: query
- name: type
- description: The file type the export file (CSV is currently the only option).
- required: false
+ name: end
+ description: |
+ A date formatted YYYY-MM-DD.
+ required: true
schema:
- $ref: '#/components/schemas/ExportFileFilter'
+ type: string
+ format: date
+
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
- "500":
- description: Internal exception
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ "422":
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- "422":
- description: 'Validation error. The body will have the exact details.'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
+ "500":
+ description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'The exported transaction in a file.'
+ description: Bar chart oriented chart information. Check out the model for more details. Each entry is a line (or bar) in the chart.
content:
- application/octet-stream:
+ application/json:
schema:
- type: string
- format: binary
- /v1/data/export/bills:
+ $ref: "#/components/schemas/ChartLine"
+ /v1/chart/category/overview:
get:
- summary: Export bills from Firefly III
- description: |
- This endpoint allows you to export your bills from Firefly III into a file. Currently supports CSV exports only.
- operationId: exportBills
tags:
- - data
+ - charts
+ summary: Dashboard chart with category information.
+ description: |
+ This endpoint returns the data required to generate a chart with basic category information.
+ operationId: getChartCategoryOverview
parameters:
- name: X-Trace-Id
in: header
@@ -1468,50 +1753,72 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
- name: type
- description: The file type the export file (CSV is currently the only option).
- required: false
+ name: start
+ description: |
+ A date formatted YYYY-MM-DD.
+ required: true
+ schema:
+ type: string
+ format: date
+ - in: query
+ name: end
+ description: |
+ A date formatted YYYY-MM-DD.
+ required: true
schema:
- $ref: '#/components/schemas/ExportFileFilter'
+ type: string
+ format: date
+
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ "422":
+ description: "Validation error. The body will have the exact details."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'The exported transaction in a file.'
+ description: Line chart oriented chart information. Check out the model for more details. Each entry is a line (or bar) in the chart.
content:
- application/octet-stream:
+ application/json:
schema:
- type: string
- format: binary
- /v1/data/export/budgets:
- get:
- summary: Export budgets and budget amount data from Firefly III
+ $ref: "#/components/schemas/ChartLine"
+ /v1/data/bulk/transactions:
+ post:
+ summary: Bulk update transaction properties. For more information, see https://docs.firefly-iii.org/references/firefly-iii/api/specials/
description: |
- This endpoint allows you to export your budgets and associated budget data from Firefly III into a file. Currently supports CSV exports only.
- operationId: exportBudgets
+ Allows you to update transactions in bulk.
+ operationId: bulkUpdateTransactions
tags:
- data
parameters:
@@ -1524,51 +1831,299 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
- name: type
- description: The file type the export file (CSV is currently the only option).
- required: false
+ name: query
+ description: The JSON query.
+ required: true
schema:
- $ref: '#/components/schemas/ExportFileFilter'
+ type: string
+ format: json
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- "200":
- description: 'The exported transaction in a file.'
- content:
- application/octet-stream:
- schema:
- type: string
- format: binary
- /v1/data/export/categories:
- get:
- summary: Export category data from Firefly III
- description: |
- This endpoint allows you to export your categories from Firefly III into a file. Currently supports CSV exports only.
- operationId: exportCategories
- tags:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ "204":
+ description: Empty response when the update was successful. A future improvement is to include the changed transactions.
+ /v1/data/destroy:
+ delete:
+ tags:
+ - data
+ operationId: destroyData
+ summary: Endpoint to destroy user data
+ description: |
+ A call to this endpoint deletes the requested data type. Use it with care and always with user permission.
+ The demo user is incapable of using this endpoint.
+ responses:
+ "401":
+ description: Unauthenticated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
+ "404":
+ description: Page not found
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/NotFoundResponse"
+
+ "400":
+ description: Bad request
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ "500":
+ description: Internal exception
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ "204":
+ description: Empty response when data has been destroyed.
+ parameters:
+ - name: X-Trace-Id
+ in: header
+ description: Unique identifier associated with this request.
+ required: false
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+ schema:
+ type: string
+ format: uuid
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: query
+ name: objects
+ description: The type of data that you wish to destroy. You can only use one at a time.
+ required: true
+ schema:
+ $ref: "#/components/schemas/DataDestroyObject"
+ /v1/data/export/accounts:
+ get:
+ summary: Export account data from Firefly III
+ description: |
+ This endpoint allows you to export your accounts from Firefly III into a file. Currently supports CSV exports only.
+ operationId: exportAccounts
+ tags:
+ - data
+ parameters:
+ - name: X-Trace-Id
+ in: header
+ description: Unique identifier associated with this request.
+ required: false
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+ schema:
+ type: string
+ format: uuid
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: query
+ name: type
+ description: The file type the export file (CSV is currently the only option).
+ required: false
+ schema:
+ $ref: "#/components/schemas/ExportFileFilter"
+ responses:
+ "401":
+ description: Unauthenticated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
+ "404":
+ description: Page not found
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/NotFoundResponse"
+
+ "400":
+ description: Bad request
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ "500":
+ description: Internal exception
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ "422":
+ description: "Validation error. The body will have the exact details."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
+ "200":
+ description: "The exported transaction in a file."
+ content:
+ application/octet-stream:
+ schema:
+ type: string
+ format: binary
+ /v1/data/export/bills:
+ get:
+ summary: Export bills from Firefly III
+ description: |
+ This endpoint allows you to export your bills from Firefly III into a file. Currently supports CSV exports only.
+ operationId: exportBills
+ tags:
+ - data
+ parameters:
+ - name: X-Trace-Id
+ in: header
+ description: Unique identifier associated with this request.
+ required: false
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+ schema:
+ type: string
+ format: uuid
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: query
+ name: type
+ description: The file type the export file (CSV is currently the only option).
+ required: false
+ schema:
+ $ref: "#/components/schemas/ExportFileFilter"
+ responses:
+ "401":
+ description: Unauthenticated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
+ "404":
+ description: Page not found
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/NotFoundResponse"
+
+ "400":
+ description: Bad request
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ "500":
+ description: Internal exception
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ "200":
+ description: "The exported transaction in a file."
+ content:
+ application/octet-stream:
+ schema:
+ type: string
+ format: binary
+ /v1/data/export/budgets:
+ get:
+ summary: Export budgets and budget amount data from Firefly III
+ description: |
+ This endpoint allows you to export your budgets and associated budget data from Firefly III into a file. Currently supports CSV exports only.
+ operationId: exportBudgets
+ tags:
+ - data
+ parameters:
+ - name: X-Trace-Id
+ in: header
+ description: Unique identifier associated with this request.
+ required: false
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+ schema:
+ type: string
+ format: uuid
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: query
+ name: type
+ description: The file type the export file (CSV is currently the only option).
+ required: false
+ schema:
+ $ref: "#/components/schemas/ExportFileFilter"
+ responses:
+ "401":
+ description: Unauthenticated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
+ "404":
+ description: Page not found
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/NotFoundResponse"
+
+ "400":
+ description: Bad request
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ "500":
+ description: Internal exception
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ "200":
+ description: "The exported transaction in a file."
+ content:
+ application/octet-stream:
+ schema:
+ type: string
+ format: binary
+ /v1/data/export/categories:
+ get:
+ summary: Export category data from Firefly III
+ description: |
+ This endpoint allows you to export your categories from Firefly III into a file. Currently supports CSV exports only.
+ operationId: exportCategories
+ tags:
- data
parameters:
- name: X-Trace-Id
@@ -1580,39 +2135,44 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: type
description: The file type the export file (CSV is currently the only option).
required: false
schema:
- $ref: '#/components/schemas/ExportFileFilter'
+ $ref: "#/components/schemas/ExportFileFilter"
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'The exported transaction in a file.'
+ description: "The exported transaction in a file."
content:
application/octet-stream:
schema:
@@ -1636,39 +2196,44 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: type
description: The file type the export file (CSV is currently the only option).
required: false
schema:
- $ref: '#/components/schemas/ExportFileFilter'
+ $ref: "#/components/schemas/ExportFileFilter"
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'The exported transaction in a file.'
+ description: "The exported transaction in a file."
content:
application/octet-stream:
schema:
@@ -1692,39 +2257,44 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: type
description: The file type the export file (CSV is currently the only option).
required: false
schema:
- $ref: '#/components/schemas/ExportFileFilter'
+ $ref: "#/components/schemas/ExportFileFilter"
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'The exported transaction in a file.'
+ description: "The exported transaction in a file."
content:
application/octet-stream:
schema:
@@ -1748,39 +2318,44 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: type
description: The file type the export file (CSV is currently the only option).
required: false
schema:
- $ref: '#/components/schemas/ExportFileFilter'
+ $ref: "#/components/schemas/ExportFileFilter"
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'The exported transaction in a file.'
+ description: "The exported transaction in a file."
content:
application/octet-stream:
schema:
@@ -1804,39 +2379,44 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: type
description: The file type the export file (CSV is currently the only option).
required: false
schema:
- $ref: '#/components/schemas/ExportFileFilter'
+ $ref: "#/components/schemas/ExportFileFilter"
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'The exported transaction in a file.'
+ description: "The exported transaction in a file."
content:
application/octet-stream:
schema:
@@ -1860,6 +2440,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -1891,34 +2472,38 @@ paths:
description: The file type the export file (CSV is currently the only option).
required: false
schema:
- $ref: '#/components/schemas/ExportFileFilter'
+ $ref: "#/components/schemas/ExportFileFilter"
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'The exported transaction in a file.'
+ description: "The exported transaction in a file."
content:
application/octet-stream:
schema:
@@ -1939,25 +2524,29 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"204":
description: Empty response when data has been purged.
parameters:
@@ -1970,6 +2559,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
/v1/insight/expense/expense:
get:
summary: Insight into expenses, grouped by expense account.
@@ -1988,6 +2578,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -2004,6 +2595,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: accounts[]
description: |
@@ -2018,44 +2610,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of expense accounts and expense details. Each expense acccount has one row per currency.'
+ description: "A list of expense accounts and expense details. Each expense account has one row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightGroup'
+ $ref: "#/components/schemas/InsightGroup"
/v1/insight/expense/asset:
get:
summary: Insight into expenses, grouped by asset account.
@@ -2074,6 +2671,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -2090,6 +2688,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: accounts[]
description: |
@@ -2102,44 +2701,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of asset accounts and expense details. Each asset account has one row per currency.'
+ description: "A list of asset accounts and expense details. Each asset account has one row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightGroup'
+ $ref: "#/components/schemas/InsightGroup"
/v1/insight/income/revenue:
get:
summary: Insight into income, grouped by revenue account.
@@ -2158,6 +2762,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -2174,6 +2779,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: accounts[]
description: |
@@ -2188,44 +2794,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of revenue accounts and income details. Each revenue acccount has one row per currency.'
+ description: "A list of revenue accounts and income details. Each revenue account has one row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightGroup'
+ $ref: "#/components/schemas/InsightGroup"
/v1/insight/income/asset:
get:
summary: Insight into income, grouped by asset account.
@@ -2244,6 +2855,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -2260,6 +2872,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: accounts[]
description: |
@@ -2272,44 +2885,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of asset accounts and income details. Each asset account has one row per currency.'
+ description: "A list of asset accounts and income details. Each asset account has one row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightGroup'
+ $ref: "#/components/schemas/InsightGroup"
/v1/insight/transfer/asset:
get:
summary: Insight into transfers, grouped by account.
@@ -2328,6 +2946,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -2344,6 +2963,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: accounts[]
description: |
@@ -2356,44 +2976,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of asset accounts and transfer details. Each asset account has one row per currency.'
+ description: "A list of asset accounts and transfer details. Each asset account has one row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightTransfer'
+ $ref: "#/components/schemas/InsightTransfer"
/v1/insight/expense/bill:
get:
summary: Insight into expenses, grouped by bill.
@@ -2412,6 +3037,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -2428,6 +3054,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: bills[]
description: |
@@ -2439,7 +3066,7 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
- in: query
name: accounts[]
description: |
@@ -2452,44 +3079,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of budget and expense details. Each budget has one row per currency.'
+ description: "A list of budget and expense details. Each budget has one row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightGroup'
+ $ref: "#/components/schemas/InsightGroup"
/v1/insight/expense/no-bill:
get:
summary: Insight into expenses, without bill.
@@ -2508,6 +3140,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -2524,6 +3157,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: accounts[]
description: |
@@ -2536,44 +3170,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of expense details. One row per currency.'
+ description: "A list of expense details. One row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightTotal'
+ $ref: "#/components/schemas/InsightTotal"
/v1/insight/expense/budget:
get:
summary: Insight into expenses, grouped by budget.
@@ -2592,6 +3231,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -2608,6 +3248,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: budgets[]
description: |
@@ -2619,7 +3260,7 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
- in: query
name: accounts[]
description: |
@@ -2632,44 +3273,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of budget and expense details. Each budget has one row per currency.'
+ description: "A list of budget and expense details. Each budget has one row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightGroup'
+ $ref: "#/components/schemas/InsightGroup"
/v1/insight/expense/no-budget:
get:
summary: Insight into expenses, without budget.
@@ -2688,6 +3334,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -2704,6 +3351,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: accounts[]
description: |
@@ -2716,44 +3364,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of expense details. One row per currency.'
+ description: "A list of expense details. One row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightTotal'
+ $ref: "#/components/schemas/InsightTotal"
/v1/insight/expense/category:
get:
summary: Insight into expenses, grouped by category.
@@ -2772,6 +3425,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -2788,6 +3442,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: categories[]
description: |
@@ -2799,7 +3454,7 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
- in: query
name: accounts[]
description: |
@@ -2812,44 +3467,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of category and expense details. Each category has one row per currency.'
+ description: "A list of category and expense details. Each category has one row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightGroup'
+ $ref: "#/components/schemas/InsightGroup"
/v1/insight/expense/no-category:
get:
summary: Insight into expenses, without category.
@@ -2868,6 +3528,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -2884,6 +3545,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: accounts[]
description: |
@@ -2896,44 +3558,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of expense details. One row per currency.'
+ description: "A list of expense details. One row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightTotal'
+ $ref: "#/components/schemas/InsightTotal"
/v1/insight/income/category:
get:
summary: Insight into income, grouped by category.
@@ -2952,6 +3619,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -2968,6 +3636,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: categories[]
description: |
@@ -2979,7 +3648,7 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
- in: query
name: accounts[]
description: |
@@ -2992,44 +3661,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of category and income details. Each category has one row per currency.'
+ description: "A list of category and income details. Each category has one row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightGroup'
+ $ref: "#/components/schemas/InsightGroup"
/v1/insight/income/no-category:
get:
summary: Insight into income, without category.
@@ -3048,6 +3722,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -3064,6 +3739,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: accounts[]
description: |
@@ -3076,44 +3752,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of income details. One row per currency.'
+ description: "A list of income details. One row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightTotal'
+ $ref: "#/components/schemas/InsightTotal"
/v1/insight/transfer/category:
get:
summary: Insight into transfers, grouped by category.
@@ -3132,6 +3813,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -3148,6 +3830,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: categories[]
description: |
@@ -3159,7 +3842,7 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
- in: query
name: accounts[]
description: |
@@ -3172,44 +3855,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of category and transfer details. Each category has one row per currency.'
+ description: "A list of category and transfer details. Each category has one row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightGroup'
+ $ref: "#/components/schemas/InsightGroup"
/v1/insight/transfer/no-category:
get:
summary: Insight into transfers, without category.
@@ -3228,6 +3916,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -3244,6 +3933,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: accounts[]
description: |
@@ -3256,44 +3946,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of transfer details. One row per currency.'
+ description: "A list of transfer details. One row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightTotal'
+ $ref: "#/components/schemas/InsightTotal"
/v1/insight/expense/tag:
get:
summary: Insight into expenses, grouped by tag.
@@ -3312,6 +4007,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -3328,6 +4024,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: tags[]
description: |
@@ -3339,7 +4036,7 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
- in: query
name: accounts[]
description: |
@@ -3352,44 +4049,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of tag and expense details. Each tag has one row per currency.'
+ description: "A list of tag and expense details. Each tag has one row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightGroup'
+ $ref: "#/components/schemas/InsightGroup"
/v1/insight/expense/no-tag:
get:
summary: Insight into expenses, without tag.
@@ -3408,6 +4110,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -3424,6 +4127,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: accounts[]
description: |
@@ -3436,44 +4140,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of expense details. One row per currency.'
+ description: "A list of expense details. One row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightTotal'
+ $ref: "#/components/schemas/InsightTotal"
/v1/insight/income/tag:
get:
summary: Insight into income, grouped by tag.
@@ -3492,6 +4201,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -3508,6 +4218,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: tags[]
description: |
@@ -3519,7 +4230,7 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
- in: query
name: accounts[]
description: |
@@ -3532,44 +4243,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of tag and income details. Each tag has one row per currency.'
+ description: "A list of tag and income details. Each tag has one row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightGroup'
+ $ref: "#/components/schemas/InsightGroup"
/v1/insight/income/no-tag:
get:
summary: Insight into income, without tag.
@@ -3588,6 +4304,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -3604,6 +4321,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: accounts[]
description: |
@@ -3616,44 +4334,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of income details. One row per currency.'
+ description: "A list of income details. One row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightTotal'
+ $ref: "#/components/schemas/InsightTotal"
/v1/insight/transfer/tag:
get:
summary: Insight into transfers, grouped by tag.
@@ -3672,6 +4395,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -3688,6 +4412,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: tags[]
description: |
@@ -3699,7 +4424,7 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
- in: query
name: accounts[]
description: |
@@ -3712,44 +4437,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of tag and transfer details. Each tag has one row per currency.'
+ description: "A list of tag and transfer details. Each tag has one row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightGroup'
+ $ref: "#/components/schemas/InsightGroup"
/v1/insight/transfer/no-tag:
get:
summary: Insight into expenses, without tag.
@@ -3768,6 +4498,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -3784,6 +4515,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: accounts[]
description: |
@@ -3796,44 +4528,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of transfer details. One row per currency.'
+ description: "A list of transfer details. One row per currency."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightTotal'
+ $ref: "#/components/schemas/InsightTotal"
/v1/insight/expense/total:
get:
summary: Insight into total expenses.
@@ -3852,6 +4589,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -3868,6 +4606,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: accounts[]
description: |
@@ -3880,44 +4619,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'A list of sums in different currencies.'
+ description: "A list of sums in different currencies."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightTotal'
+ $ref: "#/components/schemas/InsightTotal"
/v1/insight/income/total:
get:
summary: Insight into total income.
@@ -3936,6 +4680,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -3952,6 +4697,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: accounts[]
description: |
@@ -3964,44 +4710,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of sums in different currencies.'
+ description: "A list of sums in different currencies."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightTotal'
+ $ref: "#/components/schemas/InsightTotal"
/v1/insight/transfer/total:
get:
summary: Insight into total transfers.
@@ -4020,6 +4771,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -4036,6 +4788,7 @@ paths:
schema:
type: string
format: date
+
- in: query
name: accounts[]
description: |
@@ -4048,44 +4801,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'A list of sums in different currencies.'
+ description: "A list of sums in different currencies."
content:
application/json:
schema:
- $ref: '#/components/schemas/InsightTotal'
+ $ref: "#/components/schemas/InsightTotal"
/v1/accounts/{id}/transactions:
get:
tags:
@@ -4104,6 +4862,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -4112,6 +4871,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -4120,6 +4880,7 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
name: id
required: true
@@ -4135,7 +4896,7 @@ paths:
schema:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
- in: query
name: end
description: |
@@ -4144,44 +4905,48 @@ paths:
schema:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-30"
- in: query
name: type
description: Optional filter on the transaction type(s) returned.
required: false
schema:
- $ref: '#/components/schemas/TransactionTypeFilter'
+ $ref: "#/components/schemas/TransactionTypeFilter"
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of transactions
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionArray'
+ $ref: "#/components/schemas/TransactionArray"
/v1/accounts/{id}/attachments:
get:
summary: Lists all attachments.
@@ -4199,6 +4964,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -4207,6 +4973,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -4215,6 +4982,7 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
name: id
required: true
@@ -4228,31 +4996,35 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of attachments
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AttachmentArray'
+ $ref: "#/components/schemas/AttachmentArray"
/v1/accounts/{id}/piggy-banks:
get:
tags:
@@ -4271,6 +5043,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -4279,6 +5052,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -4287,6 +5061,7 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
name: id
required: true
@@ -4300,31 +5075,35 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of piggy banks
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/PiggyBankArray'
+ $ref: "#/components/schemas/PiggyBankArray"
/v1/accounts:
get:
tags:
@@ -4343,6 +5122,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -4351,6 +5131,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -4359,6 +5140,24 @@ paths:
type: integer
format: int32
example: 1
+
+ - in: query
+ name: start
+ description: |
+ A date formatted YYYY-MM-DD. May be omitted.
+ required: false
+ schema:
+ type: string
+ format: date
+ - in: query
+ name: end
+ description: |
+ A date formatted YYYY-MM-DD. Must be after "start". Can not be the same as "start". May be omitted.
+ required: false
+ schema:
+ type: string
+ format: date
+
- in: query
name: date
description: |
@@ -4372,38 +5171,42 @@ paths:
description: Optional filter on the account type(s) returned
required: false
schema:
- $ref: '#/components/schemas/AccountTypeFilter'
+ $ref: "#/components/schemas/AccountTypeFilter"
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of accounts
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AccountArray'
+ $ref: "#/components/schemas/AccountArray"
post:
tags:
- accounts
@@ -4419,6 +5222,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
description: Creates a new account. The data required can be submitted as a JSON body or as a list of parameters (in key=value pairs, like a webform).
responses:
"401":
@@ -4426,51 +5230,56 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'New account stored, result in response.'
+ description: "New account stored, result in response."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AccountSingle'
+ $ref: "#/components/schemas/AccountSingle"
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/AccountStore'
+ $ref: "#/components/schemas/AccountStore"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/AccountStore'
+ $ref: "#/components/schemas/AccountStore"
description: JSON array with the necessary account information or key=value pairs. See the model for the exact specifications.
required: true
/v1/accounts/{id}:
get:
tags:
- - accounts
+ - accounts
summary: Get single account.
description: |
Returns a single account by its ID.
@@ -4485,6 +5294,24 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: query
+ name: start
+ description: |
+ A date formatted YYYY-MM-DD. May be omitted.
+ required: false
+ schema:
+ type: string
+ format: date
+ - in: query
+ name: end
+ description: |
+ A date formatted YYYY-MM-DD. Must be after "start". Can not be the same as "start". May be omitted.
+ required: false
+ schema:
+ type: string
+ format: date
+
- in: path
name: id
required: true
@@ -4506,31 +5333,35 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'The requested account'
+ description: "The requested account"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AccountSingle'
+ $ref: "#/components/schemas/AccountSingle"
put:
summary: Update existing account.
description: |
@@ -4546,6 +5377,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -4559,11 +5391,11 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/AccountUpdate'
+ $ref: "#/components/schemas/AccountUpdate"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/AccountUpdate'
- description: JSON array or formdata with updated account information. See the model for the exact specifications.
+ $ref: "#/components/schemas/AccountUpdate"
+ description: JSON array or form-data with updated account information. See the model for the exact specifications.
required: true
responses:
"401":
@@ -4571,37 +5403,42 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"200":
- description: 'Updated account stored, result in response'
+ description: "Updated account stored, result in response"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AccountSingle'
+ $ref: "#/components/schemas/AccountSingle"
delete:
summary: Permanently delete account.
description: |
@@ -4617,6 +5454,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -4632,25 +5470,29 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"204":
description: Account deleted
/v1/attachments:
@@ -4671,6 +5513,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -4679,6 +5522,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -4687,37 +5531,42 @@ paths:
type: integer
format: int32
example: 1
+
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of attachments.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AttachmentArray'
+ $ref: "#/components/schemas/AttachmentArray"
post:
summary: Store a new attachment.
description: |
@@ -4733,16 +5582,17 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
tags:
- attachments
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/AttachmentStore'
+ $ref: "#/components/schemas/AttachmentStore"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/AttachmentStore'
+ $ref: "#/components/schemas/AttachmentStore"
description: "JSON array or key=value pairs with the necessary attachment information. See the model for the exact specifications."
required: true
responses:
@@ -4751,37 +5601,42 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'New attachment stored, result in response.'
+ description: "New attachment stored, result in response."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AttachmentSingle'
+ $ref: "#/components/schemas/AttachmentSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
/v1/attachments/{id}:
get:
summary: Get a single attachment.
@@ -4798,6 +5653,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -4813,31 +5669,35 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'The requested attachment'
+ description: "The requested attachment"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AttachmentSingle'
+ $ref: "#/components/schemas/AttachmentSingle"
put:
operationId: updateAttachment
tags:
@@ -4855,6 +5715,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -4866,10 +5727,10 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/AttachmentUpdate'
+ $ref: "#/components/schemas/AttachmentUpdate"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/AttachmentUpdate'
+ $ref: "#/components/schemas/AttachmentUpdate"
description: JSON array with updated attachment information. See the model for the exact specifications.
required: true
responses:
@@ -4878,37 +5739,42 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'Updated attachment stored, result in response'
+ description: "Updated attachment stored, result in response"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AttachmentSingle'
+ $ref: "#/components/schemas/AttachmentSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
delete:
operationId: deleteAttachment
summary: Delete an attachment.
@@ -4926,6 +5792,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -4939,25 +5806,29 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"204":
description: Attachment deleted.
/v1/attachments/{id}/download:
@@ -4976,6 +5847,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -4998,25 +5870,29 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
/v1/attachments/{id}/upload:
post:
summary: Upload an attachment.
@@ -5033,6 +5909,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -5044,37 +5921,42 @@ paths:
- attachments
responses:
"204":
- description: 'Upload was a success'
+ description: "Upload was a success"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
requestBody:
content:
application/octet-stream:
@@ -5085,8 +5967,8 @@ paths:
get:
summary: List all available budget amounts.
description: |
- Firefly III allows users to set the amount that is available to be budgeted in so-called "available budgets". For example, the user could have 1200,- available to be divided during the coming month. This amount is used on the /budgets page. This endpoint returns all of these amounts and the periods for which they are set.
- operationId: listAvailableBudget
+ Firefly III calculates the total amount of money budgeted in so-called "available budgets". This endpoint returns all of these amounts and the periods for which they are calculated.
+ operationId: listAvailableBudgets
tags:
- available_budgets
parameters:
@@ -5099,6 +5981,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -5107,6 +5990,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -5115,6 +5999,7 @@ paths:
type: integer
format: int32
example: 1
+
- in: query
name: start
description: |
@@ -5123,7 +6008,7 @@ paths:
schema:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
- in: query
name: end
description: |
@@ -5132,38 +6017,42 @@ paths:
schema:
type: string
format: date
- example: "2018-12-31"
+ example: "2025-11-30"
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of available budget amounts.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AvailableBudgetArray'
+ $ref: "#/components/schemas/AvailableBudgetArray"
/v1/available-budgets/{id}:
get:
summary: Get a single available budget.
@@ -5179,6 +6068,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -5194,31 +6084,35 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'The requested available budget'
+ description: "The requested available budget"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AvailableBudgetSingle'
+ $ref: "#/components/schemas/AvailableBudgetSingle"
/v1/bills/{id}/attachments:
get:
summary: List all attachments uploaded to the bill.
@@ -5236,6 +6130,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -5244,6 +6139,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -5252,6 +6148,7 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
name: id
required: true
@@ -5265,31 +6162,35 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of attachments
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AttachmentArray'
+ $ref: "#/components/schemas/AttachmentArray"
/v1/bills/{id}/rules:
get:
summary: List all rules associated with the bill.
@@ -5307,6 +6208,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -5320,31 +6222,35 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of rules
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/RuleArray'
+ $ref: "#/components/schemas/RuleArray"
/v1/bills/{id}/transactions:
get:
summary: List all transactions associated with the bill.
@@ -5362,6 +6268,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -5370,6 +6277,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -5378,6 +6286,7 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
name: id
required: true
@@ -5393,7 +6302,7 @@ paths:
schema:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
- in: query
name: end
description: |
@@ -5402,44 +6311,48 @@ paths:
schema:
type: string
format: date
- example: "2018-12-31"
+ example: "2025-11-30"
- in: query
name: type
description: Optional filter on the transaction type(s) returned
required: false
schema:
- $ref: '#/components/schemas/TransactionTypeFilter'
+ $ref: "#/components/schemas/TransactionTypeFilter"
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of transactions
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionArray'
+ $ref: "#/components/schemas/TransactionArray"
/v1/bills:
get:
summary: List all bills.
@@ -5457,6 +6370,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -5465,6 +6379,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -5473,6 +6388,7 @@ paths:
type: integer
format: int32
example: 1
+
- in: query
name: start
description: |
@@ -5481,7 +6397,7 @@ paths:
schema:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
- in: query
name: end
description: |
@@ -5490,38 +6406,42 @@ paths:
schema:
type: string
format: date
- example: "2018-12-31"
+ example: "2025-11-01"
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
description: A list of bills
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/BillArray'
+ $ref: "#/components/schemas/BillArray"
post:
summary: Store a new bill
description: Creates a new bill. The data required can be submitted as a JSON body or as a list of parameters.
@@ -5536,16 +6456,17 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
tags:
- bills
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/BillStore'
+ $ref: "#/components/schemas/BillStore"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/BillStore'
+ $ref: "#/components/schemas/BillStore"
description: "JSON array or key=value pairs with the necessary bill information. See the model for the exact specifications."
required: true
responses:
@@ -5554,37 +6475,42 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'New bill stored, result in response.'
+ description: "New bill stored, result in response."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/BillSingle'
+ $ref: "#/components/schemas/BillSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
/v1/bills/{id}:
get:
summary: Get a single bill.
@@ -5600,6 +6526,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -5615,7 +6542,7 @@ paths:
schema:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
- in: query
name: end
description: |
@@ -5624,7 +6551,7 @@ paths:
schema:
type: string
format: date
- example: "2018-12-31"
+ example: "2025-11-30"
tags:
- bills
responses:
@@ -5633,31 +6560,35 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'The requested bill'
+ description: "The requested bill"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/BillSingle'
+ $ref: "#/components/schemas/BillSingle"
put:
operationId: updateBill
tags:
@@ -5674,6 +6605,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -5685,10 +6617,10 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/BillUpdate'
+ $ref: "#/components/schemas/BillUpdate"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/BillUpdate'
+ $ref: "#/components/schemas/BillUpdate"
description: JSON array or key=value pairs with updated bill information. See the model for the exact specifications.
required: true
responses:
@@ -5697,37 +6629,42 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'Updated bill stored, result in response'
+ description: "Updated bill stored, result in response"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/BillSingle'
+ $ref: "#/components/schemas/BillSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
delete:
operationId: deleteBill
description: Delete a bill. This will not delete any associated rules. Will not remove associated transactions. WILL remove all associated attachments.
@@ -5744,6 +6681,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -5759,25 +6697,29 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
/v1/budgets/{id}/limits/{limitId}/transactions:
get:
summary: List all transactions by a budget limit ID.
@@ -5795,6 +6737,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -5803,6 +6746,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -5811,6 +6755,7 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
name: id
required: true
@@ -5830,38 +6775,42 @@ paths:
description: Optional filter on the transaction type(s) returned
required: false
schema:
- $ref: '#/components/schemas/TransactionTypeFilter'
+ $ref: "#/components/schemas/TransactionTypeFilter"
responses:
"200":
description: A list of transactions.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionArray'
+ $ref: "#/components/schemas/TransactionArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
/v1/budgets/{id}/limits:
get:
operationId: listBudgetLimitByBudget
@@ -5880,6 +6829,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -5895,7 +6845,7 @@ paths:
schema:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
- in: query
name: end
description: |
@@ -5904,38 +6854,42 @@ paths:
schema:
type: string
format: date
- example: "2018-12-31"
+ example: "2025-11-30"
responses:
"200":
description: A list of budget limits applicable to this budget.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/BudgetLimitArray'
+ $ref: "#/components/schemas/BudgetLimitArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
post:
operationId: storeBudgetLimit
description: Store a new budget limit under this budget.
@@ -5952,6 +6906,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -5963,49 +6918,54 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/BudgetLimitStore'
+ $ref: "#/components/schemas/BudgetLimitStore"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/BudgetLimitStore'
+ $ref: "#/components/schemas/BudgetLimitStore"
description: "JSON array or key=value pairs with the necessary budget information. See the model for the exact specifications."
required: true
responses:
"200":
- description: 'New budget limit stored, result in response.'
+ description: "New budget limit stored, result in response."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/BudgetLimitSingle'
+ $ref: "#/components/schemas/BudgetLimitSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
/v1/budgets/{id}/limits/{limitId}:
get:
summary: Get single budget limit.
@@ -6022,6 +6982,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -6039,35 +7000,39 @@ paths:
description: The ID of the budget limit. The budget limit MUST be associated to the budget ID.
responses:
"200":
- description: 'The requested budget limit'
+ description: "The requested budget limit"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/BudgetLimitSingle'
+ $ref: "#/components/schemas/BudgetLimitSingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
put:
operationId: updateBudgetLimit
tags:
@@ -6084,6 +7049,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -6102,49 +7068,54 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/BudgetLimit'
+ $ref: "#/components/schemas/BudgetLimitUpdate"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/BudgetLimit'
+ $ref: "#/components/schemas/BudgetLimitUpdate"
description: JSON array with updated budget limit information. See the model for the exact specifications.
required: true
responses:
"200":
- description: 'Updated budget limit stored, result in response'
+ description: "Updated budget limit stored, result in response"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/BudgetLimitSingle'
+ $ref: "#/components/schemas/BudgetLimitSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
delete:
operationId: deleteBudgetLimit
description: Delete a budget limit.
@@ -6161,6 +7132,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -6183,25 +7155,29 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
/v1/budget-limits:
get:
operationId: listBudgetLimit
@@ -6220,6 +7196,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: start
description: |
@@ -6228,7 +7205,7 @@ paths:
schema:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
- in: query
name: end
description: |
@@ -6237,38 +7214,42 @@ paths:
schema:
type: string
format: date
- example: "2018-12-31"
+ example: "2025-11-30"
responses:
"200":
description: A list of budget limits.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/BudgetLimitArray'
+ $ref: "#/components/schemas/BudgetLimitArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
/v1/budgets/{id}/transactions:
get:
summary: All transactions to a budget.
@@ -6286,6 +7267,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -6294,6 +7276,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -6302,6 +7285,7 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
name: id
required: true
@@ -6317,7 +7301,7 @@ paths:
schema:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
- in: query
name: end
description: |
@@ -6326,44 +7310,48 @@ paths:
schema:
type: string
format: date
- example: "2018-12-31"
+ example: "2025-11-30"
- in: query
name: type
description: Optional filter on the transaction type(s) returned
required: false
schema:
- $ref: '#/components/schemas/TransactionTypeFilter'
+ $ref: "#/components/schemas/TransactionTypeFilter"
responses:
"200":
description: A list of transactions.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionArray'
+ $ref: "#/components/schemas/TransactionArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
/v1/budgets/{id}/attachments:
get:
summary: Lists all attachments of a budget.
@@ -6381,6 +7369,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -6389,6 +7378,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -6397,6 +7387,7 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
name: id
required: true
@@ -6410,37 +7401,42 @@ paths:
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AttachmentArray'
+ $ref: "#/components/schemas/AttachmentArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
/v1/budgets/transactions-without-budget:
get:
summary: All transactions without a budget.
@@ -6458,6 +7454,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -6466,6 +7463,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -6474,6 +7472,7 @@ paths:
type: integer
format: int32
example: 1
+
- in: query
name: start
description: |
@@ -6482,7 +7481,7 @@ paths:
schema:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
- in: query
name: end
description: |
@@ -6491,44 +7490,49 @@ paths:
schema:
type: string
format: date
- example: "2018-12-31"
+ example: "2025-11-30"
responses:
"200":
description: A list of transactions.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionArray'
+ $ref: "#/components/schemas/TransactionArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
/v1/budgets:
get:
summary: List all budgets.
@@ -6546,6 +7550,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -6554,6 +7559,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -6562,6 +7568,7 @@ paths:
type: integer
format: int32
example: 1
+
- in: query
name: start
description: |
@@ -6570,7 +7577,7 @@ paths:
schema:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
- in: query
name: end
description: |
@@ -6579,38 +7586,42 @@ paths:
schema:
type: string
format: date
- example: "2018-12-31"
+ example: "2025-11-30"
responses:
"200":
description: A list of budgets.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/BudgetArray'
+ $ref: "#/components/schemas/BudgetArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
post:
summary: Store a new budget
description: Creates a new budget. The data required can be submitted as a JSON body or as a list of parameters.
@@ -6625,55 +7636,61 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
tags:
- budgets
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/BudgetStore'
+ $ref: "#/components/schemas/BudgetStore"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/BudgetStore'
+ $ref: "#/components/schemas/BudgetStore"
description: "JSON array or key=value pairs with the necessary budget information. See the model for the exact specifications."
required: true
responses:
"200":
- description: 'New budget stored, result in response.'
+ description: "New budget stored, result in response."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/BudgetSingle'
+ $ref: "#/components/schemas/BudgetSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
/v1/budgets/{id}:
get:
summary: Get a single budget.
@@ -6689,6 +7706,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -6704,7 +7722,7 @@ paths:
schema:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
- in: query
name: end
description: |
@@ -6713,40 +7731,44 @@ paths:
schema:
type: string
format: date
- example: "2018-12-31"
+ example: "2025-11-30"
tags:
- budgets
responses:
"200":
- description: 'The requested budget'
+ description: "The requested budget"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/BudgetSingle'
+ $ref: "#/components/schemas/BudgetSingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
put:
operationId: updateBudget
tags:
@@ -6763,6 +7785,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -6774,49 +7797,54 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/BudgetUpdate'
+ $ref: "#/components/schemas/BudgetUpdate"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/BudgetUpdate'
+ $ref: "#/components/schemas/BudgetUpdate"
description: JSON array with updated budget information. See the model for the exact specifications.
required: true
responses:
"200":
- description: 'Updated budget stored, result in response'
+ description: "Updated budget stored, result in response"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/BudgetSingle'
+ $ref: "#/components/schemas/BudgetSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
delete:
operationId: deleteBudget
description: Delete a budget. Transactions will not be deleted.
@@ -6833,6 +7861,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -6848,25 +7877,29 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
/v1/categories/{id}/transactions:
get:
summary: List all transactions in a category.
@@ -6884,6 +7917,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -6892,6 +7926,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -6900,6 +7935,7 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
name: id
required: true
@@ -6915,7 +7951,7 @@ paths:
schema:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
- in: query
name: end
description: |
@@ -6924,44 +7960,48 @@ paths:
schema:
type: string
format: date
- example: "2018-12-31"
+ example: "2025-11-30"
- in: query
name: type
description: Optional filter on the transaction type(s) returned
required: false
schema:
- $ref: '#/components/schemas/TransactionTypeFilter'
+ $ref: "#/components/schemas/TransactionTypeFilter"
responses:
"200":
description: A list of transactions.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionArray'
+ $ref: "#/components/schemas/TransactionArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
/v1/categories/{id}/attachments:
get:
summary: Lists all attachments.
@@ -6979,6 +8019,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -6987,6 +8028,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -6995,6 +8037,7 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
name: id
required: true
@@ -7002,37 +8045,42 @@ paths:
type: string
example: "123"
description: The ID of the category.
+
responses:
"200":
description: A list of attachments
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AttachmentArray'
+ $ref: "#/components/schemas/AttachmentArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
/v1/categories:
get:
summary: List all categories.
@@ -7050,6 +8098,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -7058,6 +8107,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -7066,37 +8116,42 @@ paths:
type: integer
format: int32
example: 1
+
responses:
"200":
description: A list of categories.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/CategoryArray'
+ $ref: "#/components/schemas/CategoryArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
post:
summary: Store a new category
description: Creates a new category. The data required can be submitted as a JSON body or as a list of parameters.
@@ -7111,55 +8166,61 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
tags:
- categories
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/Category'
+ $ref: "#/components/schemas/CategoryStore"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/Category'
+ $ref: "#/components/schemas/CategoryStore"
description: "JSON array or key=value pairs with the necessary category information. See the model for the exact specifications."
required: true
responses:
"200":
- description: 'New category stored, result in response.'
+ description: "New category stored, result in response."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/CategorySingle'
+ $ref: "#/components/schemas/CategorySingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
/v1/categories/{id}:
get:
summary: Get a single category.
@@ -7175,6 +8236,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -7190,7 +8252,7 @@ paths:
schema:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
- in: query
name: end
description: |
@@ -7199,40 +8261,44 @@ paths:
schema:
type: string
format: date
- example: "2018-12-31"
+ example: "2025-11-30"
tags:
- categories
responses:
"200":
- description: 'The requested category'
+ description: "The requested category"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/CategorySingle'
+ $ref: "#/components/schemas/CategorySingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
put:
operationId: updateCategory
tags:
@@ -7249,6 +8315,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -7260,49 +8327,54 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/CategoryUpdate'
+ $ref: "#/components/schemas/CategoryUpdate"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/CategoryUpdate'
+ $ref: "#/components/schemas/CategoryUpdate"
description: JSON array with updated category information. See the model for the exact specifications.
required: true
responses:
"200":
- description: 'Updated category stored, result in response'
+ description: "Updated category stored, result in response"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/CategorySingle'
+ $ref: "#/components/schemas/CategorySingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
delete:
operationId: deleteCategory
description: Delete a category. Transactions will not be removed.
@@ -7319,6 +8391,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -7334,29 +8407,33 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
/v1/exchange-rates:
get:
- summary: List all exchange rates.
- description: List exchange rates.
+ summary: List all exchange rates that Firefly III knows.
+ description: List exchange rates that Firefly III knows.
operationId: listCurrencyExchangeRates
tags:
- currency_exchange_rates
@@ -7370,6 +8447,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -7378,6 +8456,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -7386,37 +8465,42 @@ paths:
type: integer
format: int32
example: 1
+
responses:
"200":
description: A list of all available currency exchange rates.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/CurrencyExchangeRateArray'
+ $ref: "#/components/schemas/CurrencyExchangeRateArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
post:
summary: Store a new currency exchange rate.
description: Stores a new exchange rate. The data required can be submitted as a JSON body or as a list of parameters.
@@ -7431,59 +8515,65 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
tags:
- currency_exchange_rates
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/CurrencyExchangeRateStore'
+ $ref: "#/components/schemas/CurrencyExchangeRateStore"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/CurrencyExchangeRateStore'
- description: "JSON array or key=value pairs with the necessary category information. See the model for the exact specifications."
+ $ref: "#/components/schemas/CurrencyExchangeRateStore"
+ description: "JSON array or key=value pairs with the necessary exchange rate information. See the model for the exact specifications."
required: true
responses:
"200":
- description: 'New category stored, result in response.'
+ description: "New exchange stored, result in response. If a rate already exists for this currency pair and date, it will be updated."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/CurrencyExchangeRateSingle'
+ $ref: "#/components/schemas/CurrencyExchangeRateSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
/v1/exchange-rates/{id}:
get:
summary: List a single specific exchange rate.
- description: List a single specific exchange rate
+ description: List a single specific exchange rate by its ID.
operationId: listSpecificCurrencyExchangeRate
tags:
- currency_exchange_rates
@@ -7497,6 +8587,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -7505,6 +8596,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -7513,6 +8605,7 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
name: id
required: true
@@ -7522,38 +8615,42 @@ paths:
description: The ID of the requested currency exchange rate.
responses:
"200":
- description: A list of currency exchange rates.
+ description: The exchange rate requested.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/CurrencyExchangeRateSingle'
+ $ref: "#/components/schemas/CurrencyExchangeRateSingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
delete:
operationId: deleteSpecificCurrencyExchangeRate
- description: "Delete a specific currency exchange rate."
+ description: "Delete a specific currency exchange rate by its internal ID."
summary: "Delete a specific currency exchange rate."
tags:
- currency_exchange_rates
@@ -7567,6 +8664,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -7582,29 +8680,33 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
put:
summary: Update existing currency exchange rate.
description: |
- Used to update a single currency exchange rate
+ Used to update a single currency exchange rate by its ID. Including the from/to currency is optional.
operationId: updateCurrencyExchangeRate
parameters:
- name: X-Trace-Id
@@ -7616,6 +8718,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -7624,53 +8727,56 @@ paths:
example: "123"
description: The ID of the currency exchange rate.
tags:
- - links
+ - currency_exchange_rates
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/CurrencyExchangeRateUpdate'
+ $ref: "#/components/schemas/CurrencyExchangeRateUpdate"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/CurrencyExchangeRateUpdate'
- description: JSON array or formdata with updated exchange rate information. See the model for the exact specifications.
+ $ref: "#/components/schemas/CurrencyExchangeRateUpdate"
+ description: JSON array or form-data with updated exchange rate information. See the model for the exact specifications.
required: true
responses:
"200":
- description: 'Updated exchange rate stored, result in response'
+ description: "Updated exchange rate stored, result in response"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/CurrencyExchangeRateSingle'
+ $ref: "#/components/schemas/CurrencyExchangeRateSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
-
- /v1/exchange-rates/rates/{from}/{to}:
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ /v1/exchange-rates/{from}/{to}:
get:
- summary: List all exchange rate from/to the mentioned currencies.
- description: List all exchange rate from/to the mentioned currencies.
+ summary: List all exchange rates from/to the mentioned currencies.
+ description: List all exchange rates from/to the mentioned currencies.
operationId: listSpecificCurrencyExchangeRates
tags:
- currency_exchange_rates
@@ -7684,6 +8790,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -7692,6 +8799,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -7700,6 +8808,7 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
name: from
required: true
@@ -7720,35 +8829,39 @@ paths:
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/CurrencyExchangeRateArray'
+ $ref: "#/components/schemas/CurrencyExchangeRateArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
delete:
operationId: deleteSpecificCurrencyExchangeRates
- description: "Delete all currency exchange rates from 'from' to 'to' on a specific date or today."
- summary: "Delete all currency exchange rates from 'from' to 'to'."
+ summary: "Deletes ALL currency exchange rates from 'from' to 'to'."
+ description: "Deletes ALL currency exchange rates from 'from' to 'to'. It's important to know that the reverse exchange rates (from 'to' to 'from') will not be deleted and Firefly III will still be able to infer the correct exchange rate from the reverse one."
tags:
- currency_exchange_rates
parameters:
@@ -7761,6 +8874,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: from
required: true
@@ -7775,15 +8889,6 @@ paths:
type: string
example: "USD"
description: "The currency code of the 'to' currency."
- - in: query
- name: date
- description: |
- A date formatted YYYY-MM-DD. Defaults to today.
- required: false
- schema:
- type: string
- format: date
- example: "2018-09-17"
responses:
"204":
description: "Currency exchange rate(s) deleted."
@@ -7792,33 +8897,36 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/link-types/{id}/transactions:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/exchange-rates/{from}/{to}/{date}:
get:
+ summary: List the exchange rate for the from and to-currency on the requested date.
+ description: List the exchange rate for the from and to-currency on the requested date.
+ operationId: listSpecificCurrencyExchangeRateOnDate
tags:
- - links
- summary: List all transactions under this link type.
- description: |
- List all transactions under this link type, both the inward and outward transactions.
- operationId: listTransactionByLinkType
+ - currency_exchange_rates
parameters:
- name: X-Trace-Id
in: header
@@ -7829,6 +8937,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -7837,6 +8946,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -7845,76 +8955,69 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
- name: id
+ name: from
required: true
schema:
type: string
- example: "123"
- description: The ID of the link type.
- - in: query
- name: start
- description: |
- A date formatted YYYY-MM-DD, to limit the results.
- required: false
+ example: "EUR"
+ description: "The currency code of the 'from' currency."
+ - in: path
+ name: to
+ required: true
schema:
type: string
- format: date
- example: "2018-09-17"
- - in: query
- name: end
- description: |
- A date formatted YYYY-MM-DD, to limit the results.
- required: false
+ example: "USD"
+ description: "The currency code of the 'to' currency."
+ - in: path
+ name: date
+ required: true
schema:
type: string
- format: date
- example: "2018-09-17"
- - in: query
- name: type
- description: Optional filter on the transaction type(s) returned.
- required: false
- schema:
- $ref: '#/components/schemas/TransactionTypeFilter'
+ format: string
+ example: "2025-11-01"
responses:
"200":
- description: A list of transactions
+ description: A list of currency exchange rates.
content:
- application/json:
+ application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionArray'
+ $ref: "#/components/schemas/CurrencyExchangeRateArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/link-types:
- get:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ delete:
+ operationId: deleteSpecificCurrencyExchangeRateOnDate
+ description: "Delete the currency exchange rate from 'from' to 'to' on the specified date. It's important to know that the reverse exchange rate (from 'to' to 'from') will not be deleted and Firefly III will still be able to infer the correct exchange rate from the reverse one."
+ summary: "Delete the currency exchange rate from 'from' to 'to' on the specified date."
tags:
- - links
- summary: List all types of links.
- description: |
- List all the link types the system has. These include the default ones as well as any new ones.
- operationId: listLinkType
+ - currency_exchange_rates
parameters:
- name: X-Trace-Id
in: header
@@ -7925,58 +9028,64 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: limit
- description: Number of items per page. The default pagination is per 50 items.
- required: false
+
+ - in: path
+ name: from
+ required: true
schema:
- type: integer
- format: int32
- example: 10
- - in: query
- name: page
- description: Page number. The default pagination is per 50 items.
- required: false
+ type: string
+ example: "EUR"
+ description: "The currency code of the 'from' currency."
+ - in: path
+ name: to
+ required: true
schema:
- type: integer
- format: int32
- example: 1
+ type: string
+ example: "USD"
+ description: "The currency code of the 'to' currency."
+ - in: path
+ name: date
+ required: true
+ schema:
+ type: string
+ format: string
+ example: "2025-11-01"
responses:
- "200":
- description: A list of link types.
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/LinkTypeArray'
+ "204":
+ description: "Currency exchange rate(s) deleted."
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- post:
- tags:
- - links
- summary: Create a new link type
- operationId: storeLinkType
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ put:
+ summary: Update existing currency exchange rate.
+ description: |
+ Used to update a single currency exchange rate by its currency codes and date
+ operationId: updateCurrencyExchangeRateByDate
parameters:
- name: X-Trace-Id
in: header
@@ -7987,62 +9096,80 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- description: Creates a new link type. The data required can be submitted as a JSON body or as a list of parameters (in key=value pairs, like a webform).
+
+ - in: path
+ name: from
+ required: true
+ schema:
+ type: string
+ example: "EUR"
+ description: "The currency code of the 'from' currency."
+ - in: path
+ name: to
+ required: true
+ schema:
+ type: string
+ example: "USD"
+ description: "The currency code of the 'to' currency."
+ - in: path
+ name: date
+ required: true
+ schema:
+ type: string
+ format: string
+ example: "2025-11-01"
+ tags:
+ - currency_exchange_rates
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/CurrencyExchangeRateUpdateNoDate"
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/CurrencyExchangeRateUpdate"
+ description: JSON array or form-data with updated exchange rate information. See the model for the exact specifications.
+ required: true
responses:
"200":
- description: 'New link type stored, result in response.'
+ description: "Updated exchange rate stored, result in response"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/LinkTypeSingle'
+ $ref: "#/components/schemas/CurrencyExchangeRateSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
- "500":
- description: Internal exception
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/LinkType'
- application/x-www-form-urlencoded:
- schema:
- $ref: '#/components/schemas/LinkType'
- description: JSON array with the necessary link type information or key=value pairs. See the model for the exact specifications.
- required: true
- /v1/link-types/{id}:
- get:
- tags:
- - links
- summary: Get single a link type.
- description: |
- Returns a single link type by its ID.
- operationId: getLinkType
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ /v1/exchange-rates/by-date/{date}:
+ post:
+ summary: Store new currency exchange rates under this date
+ description: Stores a new set of exchange rates. The date is fixed (in the URL parameter) and the data required can be submitted as a JSON body.
+ operationId: storeCurrencyExchangeRatesByDate
parameters:
- name: X-Trace-Id
in: header
@@ -8053,49 +9180,70 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
- name: id
+ name: date
required: true
schema:
type: string
- example: "123"
- description: The ID of the link type.
+ format: string
+ example: "2025-11-01"
+ tags:
+ - currency_exchange_rates
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/CurrencyExchangeRateStoreByDate"
+ description: "JSON array with the necessary currency exchange rate information. See the model for the exact specifications."
+ required: true
responses:
"200":
- description: 'The requested link type'
+ description: "New exchange rates stored, result in response. If a rate already existed for any submitted entry, it will be updated."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/LinkTypeSingle'
+ $ref: "#/components/schemas/CurrencyExchangeRateArray"
+ "422":
+ description: "Validation error. The body will have the exact details."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- put:
- summary: Update existing link type.
- description: |
- Used to update a single link type. All fields that are not submitted will be cleared (set to NULL). The model will tell you which fields are mandatory. You cannot update some of the system provided link types, indicated by the editable=false flag when you list it.
- operationId: updateLinkType
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/exchange-rates/by-currencies/{from}/{to}:
+ post:
+ summary: Store new currency exchange rates under this from/to pair.
+ description: Stores a new set of exchange rates for this pair. The date is variable, and the data required can be submitted as a JSON body.
+ operationId: storeCurrencyExchangeRatesByPair
parameters:
- name: X-Trace-Id
in: header
@@ -8106,67 +9254,80 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
- name: id
+ name: from
required: true
schema:
type: string
- example: "123"
- description: The ID of the link type.
+ example: "EUR"
+ description: "The currency code of the 'from' currency."
+ - in: path
+ name: to
+ required: true
+ schema:
+ type: string
+ example: "USD"
+ description: "The currency code of the 'to' currency."
tags:
- - links
+ - currency_exchange_rates
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/LinkTypeUpdate'
- application/x-www-form-urlencoded:
- schema:
- $ref: '#/components/schemas/LinkTypeUpdate'
- description: JSON array or formdata with updated link type information. See the model for the exact specifications.
+ $ref: "#/components/schemas/CurrencyExchangeRateStoreByPair"
+ description: "JSON array with the necessary currency exchange rate information. See the model for the exact specifications."
required: true
responses:
"200":
- description: 'Updated link type stored, result in response'
+ description: "New exchange rates stored, result in response. If a rate already existed for any submitted entry, it will be updated."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/LinkTypeSingle'
+ $ref: "#/components/schemas/CurrencyExchangeRateArray"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- delete:
- summary: Permanently delete link type.
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/link-types/{id}/transactions:
+ get:
+ tags:
+ - links
+ summary: List all transactions under this link type.
description: |
- Will permanently delete a link type. The links between transactions will be removed. The transactions themselves remain. You cannot delete some of the system provided link types, indicated by the editable=false flag when you list it.
- operationId: deleteLinkType
+ List all transactions under this link type, both the inward and outward transactions.
+ operationId: listTransactionByLinkType
parameters:
- name: X-Trace-Id
in: header
@@ -8177,6 +9338,25 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
- in: path
name: id
required: true
@@ -8184,43 +9364,73 @@ paths:
type: string
example: "123"
description: The ID of the link type.
- tags:
- - links
+ - in: query
+ name: start
+ description: |
+ A date formatted YYYY-MM-DD, to limit the results.
+ required: false
+ schema:
+ type: string
+ format: date
+ example: "2025-11-01"
+ - in: query
+ name: end
+ description: |
+ A date formatted YYYY-MM-DD, to limit the results.
+ required: false
+ schema:
+ type: string
+ format: date
+ example: "2025-11-30"
+ - in: query
+ name: type
+ description: Optional filter on the transaction type(s) returned.
+ required: false
+ schema:
+ $ref: "#/components/schemas/TransactionTypeFilter"
responses:
- "204":
- description: Link type deleted
+ "200":
+ description: A list of transactions
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/TransactionArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/transaction-links:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/link-types:
get:
tags:
- links
- summary: List all transaction links.
+ summary: List all types of links.
description: |
- List all the transaction links.
- operationId: listTransactionLink
+ List all the link types the system has. These include the default ones as well as any new ones.
+ operationId: listLinkType
parameters:
- name: X-Trace-Id
in: header
@@ -8231,6 +9441,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -8239,6 +9450,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -8247,44 +9459,48 @@ paths:
type: integer
format: int32
example: 1
+
responses:
"200":
- description: A list of transaction links
+ description: A list of link types.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionLinkArray'
+ $ref: "#/components/schemas/LinkTypeArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
post:
tags:
- links
- summary: Create a new link between transactions
- operationId: storeTransactionLink
- description: Store a new link between two transactions. For this end point you need the journal_id from a transaction.
- parameters:
+ summary: Create a new link type
+ operationId: storeLinkType
+ parameters:
- name: X-Trace-Id
in: header
description: Unique identifier associated with this request.
@@ -8294,61 +9510,68 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ description: Creates a new link type. The data required can be submitted as a JSON body or as a list of parameters (in key=value pairs, like a webform).
responses:
"200":
- description: 'New transaction link stored, result in response.'
+ description: "New link type stored, result in response."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionLinkSingle'
+ $ref: "#/components/schemas/LinkTypeSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/TransactionLinkStore'
+ $ref: "#/components/schemas/LinkType"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/TransactionLinkStore'
+ $ref: "#/components/schemas/LinkType"
description: JSON array with the necessary link type information or key=value pairs. See the model for the exact specifications.
required: true
- /v1/transaction-links/{id}:
+ /v1/link-types/{id}:
get:
tags:
- links
- summary: Get a single link.
+ summary: Get single a link type.
description: |
- Returns a single link by its ID.
- operationId: getTransactionLink
+ Returns a single link type by its ID.
+ operationId: getLinkType
parameters:
- name: X-Trace-Id
in: header
@@ -8359,49 +9582,54 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the transaction link.
+ description: The ID of the link type.
responses:
"200":
- description: 'The requested link'
+ description: "The requested link type"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionLinkSingle'
+ $ref: "#/components/schemas/LinkTypeSingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- delete:
- summary: Permanently delete link between transactions.
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ put:
+ summary: Update existing link type.
description: |
- Will permanently delete link. Transactions remain.
- operationId: deleteTransactionLink
+ Used to update a single link type. All fields that are not submitted will be cleared (set to NULL). The model will tell you which fields are mandatory. You cannot update some of the system provided link types, indicated by the editable=false flag when you list it.
+ operationId: updateLinkType
parameters:
- name: X-Trace-Id
in: header
@@ -8412,47 +9640,73 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the transaction link.
+ description: The ID of the link type.
tags:
- links
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/LinkTypeUpdate"
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/LinkTypeUpdate"
+ description: JSON array or form-data with updated link type information. See the model for the exact specifications.
+ required: true
responses:
- "204":
- description: Transaction link deleted
+ "200":
+ description: "Updated link type stored, result in response"
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/LinkTypeSingle"
+ "422":
+ description: "Validation error. The body will have the exact details."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- put:
- summary: Update an existing link between transactions.
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ delete:
+ summary: Permanently delete link type.
description: |
- Used to update a single existing link.
- operationId: updateTransactionLink
+ Will permanently delete a link type. The links between transactions will be removed. The transactions themselves remain. You cannot delete some of the system provided link types, indicated by the editable=false flag when you list it.
+ operationId: deleteLinkType
parameters:
- name: X-Trace-Id
in: header
@@ -8463,70 +9717,55 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the transaction link.
+ description: The ID of the link type.
tags:
- links
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/TransactionLinkUpdate'
- application/x-www-form-urlencoded:
- schema:
- $ref: '#/components/schemas/TransactionLinkUpdate'
- description: JSON array or formdata with updated link type information. See the model for the exact specifications.
- required: true
responses:
- "200":
- description: 'Updated link type stored, result in response'
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/TransactionLinkSingle'
- "422":
- description: 'Validation error. The body will have the exact details.'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ "204":
+ description: Link type deleted
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/object-groups/{id}/piggy-banks:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/transaction-links:
get:
tags:
- - object_groups
- summary: List all piggy banks related to the object group.
+ - links
+ summary: List all transaction links.
description: |
- This endpoint returns a list of all the piggy banks connected to the object group.
- operationId: listPiggyBankByObjectGroup
+ List all the transaction links.
+ operationId: listTransactionLink
parameters:
- name: X-Trace-Id
in: header
@@ -8537,6 +9776,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -8545,6 +9785,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -8553,51 +9794,48 @@ paths:
type: integer
format: int32
example: 1
- - in: path
- name: id
- required: true
- schema:
- type: string
- example: "123"
- description: The ID of the account.
+
responses:
"200":
- description: A list of piggy banks
+ description: A list of transaction links
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/PiggyBankArray'
+ $ref: "#/components/schemas/TransactionLinkArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/object-groups/{id}/bills:
- get:
- summary: List all bills with this object group.
- description: List all bills with this object group.
- operationId: listBillByObjectGroup
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ post:
tags:
- - object_groups
+ - links
+ summary: Create a new link between transactions
+ operationId: storeTransactionLink
+ description: Store a new link between two transactions. For this end point you need the journal_id from a transaction.
parameters:
- name: X-Trace-Id
in: header
@@ -8608,67 +9846,67 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: limit
- description: Number of items per page. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 10
- - in: query
- name: page
- description: Page number. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 1
- - in: path
- name: id
- required: true
- schema:
- type: string
- example: "123"
- description: The ID of the account.
+
responses:
"200":
- description: A list of bills.
+ description: "New transaction link stored, result in response."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/BillArray'
+ $ref: "#/components/schemas/TransactionLinkSingle"
+ "422":
+ description: "Validation error. The body will have the exact details."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/object-groups:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/TransactionLinkStore"
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/TransactionLinkStore"
+ description: JSON array with the necessary link type information or key=value pairs. See the model for the exact specifications.
+ required: true
+ /v1/transaction-links/{id}:
get:
- summary: List all oject groups.
- description: List all oject groups.
- operationId: listObjectGroups
tags:
- - object_groups
+ - links
+ summary: Get a single link.
+ description: |
+ Returns a single link by its ID.
+ operationId: getTransactionLink
parameters:
- name: X-Trace-Id
in: header
@@ -8679,58 +9917,54 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: limit
- description: Number of items per page. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 10
- - in: query
- name: page
- description: Page number. The default pagination is per 50 items.
- required: false
+
+ - in: path
+ name: id
+ required: true
schema:
- type: integer
- format: int32
- example: 1
+ type: string
+ example: "123"
+ description: The ID of the transaction link.
responses:
"200":
- description: A list of object groups
+ description: "The requested link"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/ObjectGroupArray'
+ $ref: "#/components/schemas/TransactionLinkSingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/object-groups/{id}:
- get:
- summary: Get a single object group.
- description: Get a single object group.
- operationId: getObjectGroup
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ delete:
+ summary: Permanently delete link between transactions.
+ description: |
+ Will permanently delete link. Transactions remain.
+ operationId: deleteTransactionLink
parameters:
- name: X-Trace-Id
in: header
@@ -8741,52 +9975,52 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the object group.
+ description: The ID of the transaction link.
tags:
- - object_groups
+ - links
responses:
- "200":
- description: The requested object group
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/ObjectGroupSingle'
+ "204":
+ description: Transaction link deleted
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
put:
- operationId: updateObjectGroup
- tags:
- - object_groups
- description: Update existing object group.
- summary: Update existing object group.
+ summary: Update an existing link between transactions.
+ description: |
+ Used to update a single existing link.
+ operationId: updateTransactionLink
parameters:
- name: X-Trace-Id
in: header
@@ -8797,66 +10031,76 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the object group
+ description: The ID of the transaction link.
+ tags:
+ - links
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/ObjectGroupUpdate'
+ $ref: "#/components/schemas/TransactionLinkUpdate"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/ObjectGroupUpdate'
- description: JSON array with updated piggy bank information. See the model for the exact specifications.
+ $ref: "#/components/schemas/TransactionLinkUpdate"
+ description: JSON array or form-data with updated link type information. See the model for the exact specifications.
required: true
responses:
"200":
- description: 'Updated object group stored, result in response'
+ description: "Updated link type stored, result in response"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/ObjectGroupSingle'
+ $ref: "#/components/schemas/TransactionLinkSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- delete:
- operationId: deleteObjectGroup
- description: Delete a object group.
- summary: Delete a object group.
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/object-groups/{id}/piggy-banks:
+ get:
tags:
- object_groups
+ summary: List all piggy banks related to the object group.
+ description: |
+ This endpoint returns a list of all the piggy banks connected to the object group.
+ operationId: listPiggyBankByObjectGroup
parameters:
- name: X-Trace-Id
in: header
@@ -8867,47 +10111,75 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the object group.
+ description: The ID of the account.
+
responses:
- "204":
- description: Object group deleted.
+ "200":
+ description: A list of piggy banks
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/PiggyBankArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/piggy-banks/{id}/events:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/object-groups/{id}/bills:
get:
- summary: List all events linked to a piggy bank.
- description: List all events linked to a piggy bank (adding and removing money).
- operationId: listEventByPiggyBank
+ summary: List all bills with this object group.
+ description: List all bills with this object group.
+ operationId: listBillByObjectGroup
tags:
- - piggy_banks
+ - object_groups
parameters:
- name: X-Trace-Id
in: header
@@ -8918,6 +10190,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -8926,6 +10199,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -8934,51 +10208,56 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the piggy bank
+ description: The ID of the account.
responses:
"200":
- description: A list of piggy bank related events
+ description: A list of bills.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/PiggyBankEventArray'
+ $ref: "#/components/schemas/BillArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/piggy-banks/{id}/attachments:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/object-groups:
get:
- summary: Lists all attachments.
- description: Lists all attachments.
- operationId: listAttachmentByPiggyBank
+ summary: List all object groups.
+ description: List all object groups.
+ operationId: listObjectGroups
tags:
- - piggy_banks
+ - object_groups
parameters:
- name: X-Trace-Id
in: header
@@ -8989,6 +10268,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -8997,6 +10277,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -9005,51 +10286,47 @@ paths:
type: integer
format: int32
example: 1
- - in: path
- name: id
- required: true
- schema:
- type: string
- example: "123"
- description: The ID of the piggy bank.
+
responses:
"200":
- description: A list of attachments
+ description: A list of object groups
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AttachmentArray'
+ $ref: "#/components/schemas/ObjectGroupArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/piggy-banks:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/object-groups/{id}:
get:
- summary: List all piggy banks.
- description: List all piggy banks.
- operationId: listPiggyBank
- tags:
- - piggy_banks
+ summary: Get a single object group.
+ description: Get a single object group.
+ operationId: getObjectGroup
parameters:
- name: X-Trace-Id
in: header
@@ -9060,58 +10337,57 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: limit
- description: Number of items per page. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 10
- - in: query
- name: page
- description: Page number. The default pagination is per 50 items.
- required: false
+
+ - in: path
+ name: id
+ required: true
schema:
- type: integer
- format: int32
- example: 1
-
+ type: string
+ example: "123"
+ description: The ID of the object group.
+ tags:
+ - object_groups
responses:
"200":
- description: A list of piggy banks
+ description: The requested object group
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/PiggyBankArray'
+ $ref: "#/components/schemas/ObjectGroupSingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- post:
- summary: Store a new piggy bank
- description: Creates a new piggy bank. The data required can be submitted as a JSON body or as a list of parameters.
- operationId: storePiggyBank
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ put:
+ operationId: updateObjectGroup
+ tags:
+ - object_groups
+ description: Update existing object group.
+ summary: Update existing object group.
parameters:
- name: X-Trace-Id
in: header
@@ -9122,60 +10398,72 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- tags:
- - piggy_banks
+
+ - in: path
+ name: id
+ required: true
+ schema:
+ type: string
+ example: "123"
+ description: The ID of the object group
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/PiggyBankStore'
+ $ref: "#/components/schemas/ObjectGroupUpdate"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/PiggyBankStore'
- description: "JSON array or key=value pairs with the necessary piggy bank information. See the model for the exact specifications."
+ $ref: "#/components/schemas/ObjectGroupUpdate"
+ description: JSON array with updated piggy bank information. See the model for the exact specifications.
required: true
responses:
"200":
- description: 'New piggy bank stored, result in response.'
+ description: "Updated object group stored, result in response"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/PiggyBankSingle'
+ $ref: "#/components/schemas/ObjectGroupSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/piggy-banks/{id}:
- get:
- summary: Get a single piggy bank.
- description: Get a single piggy bank.
- operationId: getPiggyBank
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ delete:
+ operationId: deleteObjectGroup
+ description: Delete a object group.
+ summary: Delete a object group.
+ tags:
+ - object_groups
parameters:
- name: X-Trace-Id
in: header
@@ -9186,52 +10474,52 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the piggy bank.
- tags:
- - piggy_banks
+ description: The ID of the object group.
responses:
- "200":
- description: 'The requested piggy bank'
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/PiggyBankSingle'
+ "204":
+ description: Object group deleted.
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- put:
- operationId: updatePiggyBank
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/piggy-banks/{id}/events:
+ get:
+ summary: List all events linked to a piggy bank.
+ description: List all events linked to a piggy bank (adding and removing money).
+ operationId: listEventByPiggyBank
tags:
- piggy_banks
- description: Update existing piggy bank.
- summary: Update existing piggy bank.
parameters:
- name: X-Trace-Id
in: header
@@ -9242,6 +10530,25 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
- in: path
name: id
required: true
@@ -9249,110 +10556,49 @@ paths:
type: string
example: "123"
description: The ID of the piggy bank
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/PiggyBankUpdate'
- application/x-www-form-urlencoded:
- schema:
- $ref: '#/components/schemas/PiggyBankUpdate'
- description: JSON array with updated piggy bank information. See the model for the exact specifications.
- required: true
+
responses:
"200":
- description: 'Updated piggy bank stored, result in response'
+ description: A list of piggy bank related events
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/PiggyBankSingle'
- "422":
- description: 'Validation error. The body will have the exact details.'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
- "401":
- description: Unauthenticated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
- "404":
- description: Page not found
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/NotFoundResponse'
- "400":
- description: Bad request
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BadRequestResponse'
- "500":
- description: Internal exception
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- delete:
- operationId: deletePiggyBank
- description: Delete a piggy bank.
- summary: Delete a piggy bank.
- tags:
- - piggy_banks
- parameters:
- - name: X-Trace-Id
- in: header
- description: Unique identifier associated with this request.
- required: false
- example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- schema:
- type: string
- format: uuid
- example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: path
- name: id
- required: true
- schema:
- type: string
- example: "123"
- description: The ID of the piggy bank.
- responses:
- "204":
- description: Piggy bank deleted.
+ $ref: "#/components/schemas/PiggyBankEventArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/recurrences/{id}/transactions:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/piggy-banks/{id}/attachments:
get:
- summary: List all transactions created by a recurring transaction.
- description: List all transactions created by a recurring transaction, optionally limited to the date ranges specified.
- operationId: listTransactionByRecurrence
+ summary: Lists all attachments.
+ description: Lists all attachments.
+ operationId: listAttachmentByPiggyBank
tags:
- - recurrences
+ - piggy_banks
parameters:
- name: X-Trace-Id
in: header
@@ -9363,6 +10609,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -9371,6 +10618,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -9379,75 +10627,57 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the recurring transaction.
- - in: query
- name: start
- description: |
- A date formatted YYYY-MM-DD. Both the start and end date must be present.
- required: false
- schema:
- type: string
- format: date
- example: "2018-09-17"
- - in: query
- name: end
- description: |
- A date formatted YYYY-MM-DD. Both the start and end date must be present.
- required: false
- schema:
- type: string
- format: date
- example: "2018-09-17"
- - in: query
- name: type
- description: Optional filter on the transaction type(s) returned
- required: false
- schema:
- $ref: '#/components/schemas/TransactionTypeFilter'
+ description: The ID of the piggy bank.
+
responses:
"200":
- description: A list of transactions
+ description: A list of attachments
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionArray'
+ $ref: "#/components/schemas/AttachmentArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/recurrences:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/piggy-banks:
get:
- summary: List all recurring transactions.
- description: List all recurring transactions.
- operationId: listRecurrence
+ summary: List all piggy banks.
+ description: List all piggy banks.
+ operationId: listPiggyBank
tags:
- - recurrences
+ - piggy_banks
parameters:
- name: X-Trace-Id
in: header
@@ -9458,6 +10688,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -9466,6 +10697,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -9474,43 +10706,46 @@ paths:
type: integer
format: int32
example: 1
+
responses:
"200":
- description: A list of recurring transactions.
+ description: A list of piggy banks
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/RecurrenceArray'
+ $ref: "#/components/schemas/PiggyBankArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
post:
- summary: Store a new recurring transaction
- description: Creates a new recurring transaction. The data required can be submitted as a JSON body or as a list of parameters.
- operationId: storeRecurrence
- tags:
- - recurrences
+ summary: Store a new piggy bank
+ description: Creates a new piggy bank. The data required can be submitted as a JSON body or as a list of parameters.
+ operationId: storePiggyBank
parameters:
- name: X-Trace-Id
in: header
@@ -9521,58 +10756,66 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ tags:
+ - piggy_banks
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/RecurrenceStore'
+ $ref: "#/components/schemas/PiggyBankStore"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/RecurrenceStore'
- description: "JSON array or key=value pairs with the necessary recurring transaction information. See the model for the exact specifications."
+ $ref: "#/components/schemas/PiggyBankStore"
+ description: "JSON array or key=value pairs with the necessary piggy bank information. See the model for the exact specifications."
required: true
responses:
"200":
- description: 'New recurring transaction stored, result in response.'
+ description: "New piggy bank stored, result in response."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/RecurrenceSingle'
+ $ref: "#/components/schemas/PiggyBankSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/recurrences/{id}:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/piggy-banks/{id}:
get:
- summary: Get a single recurring transaction.
- description: Get a single recurring transaction.
- operationId: getRecurrence
+ summary: Get a single piggy bank.
+ description: Get a single piggy bank.
+ operationId: getPiggyBank
parameters:
- name: X-Trace-Id
in: header
@@ -9583,52 +10826,57 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the recurring transaction.
+ description: The ID of the piggy bank.
tags:
- - recurrences
+ - piggy_banks
responses:
"200":
- description: 'The requested recurring transaction'
+ description: "The requested piggy bank"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/RecurrenceSingle'
+ $ref: "#/components/schemas/PiggyBankSingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
put:
- operationId: updateRecurrence
+ operationId: updatePiggyBank
tags:
- - recurrences
- description: Update existing recurring transaction.
- summary: Update existing recurring transaction.
+ - piggy_banks
+ description: Update existing piggy bank.
+ summary: Update existing piggy bank.
parameters:
- name: X-Trace-Id
in: header
@@ -9639,66 +10887,72 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the recurring transaction.
+ description: The ID of the piggy bank
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/RecurrenceUpdate'
+ $ref: "#/components/schemas/PiggyBankUpdate"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/RecurrenceUpdate'
- description: JSON array with updated recurring transaction information. See the model for the exact specifications.
+ $ref: "#/components/schemas/PiggyBankUpdate"
+ description: JSON array with updated piggy bank information. See the model for the exact specifications.
required: true
responses:
"200":
- description: 'Updated recurring transaction stored, result in response'
+ description: "Updated piggy bank stored, result in response"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/RecurrenceSingle'
+ $ref: "#/components/schemas/PiggyBankSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
delete:
- operationId: deleteRecurrence
- description: Delete a recurring transaction. Transactions created by the recurring transaction will not be deleted.
- summary: Delete a recurring transaction.
+ operationId: deletePiggyBank
+ description: Delete a piggy bank.
+ summary: Delete a piggy bank.
tags:
- - recurrences
+ - piggy_banks
parameters:
- name: X-Trace-Id
in: header
@@ -9709,118 +10963,52 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the recurring transaction.
+ description: The ID of the piggy bank.
responses:
"204":
- description: Recurring transaction deleted.
- "401":
- description: Unauthenticated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
- "404":
- description: Page not found
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/NotFoundResponse'
- "400":
- description: Bad request
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BadRequestResponse'
- "500":
- description: Internal exception
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/rule-groups/{id}/rules:
- get:
- summary: List rules in this rule group.
- description: List rules in this rule group.
- operationId: listRuleByGroup
- tags:
- - rule_groups
- parameters:
- - name: X-Trace-Id
- in: header
- description: Unique identifier associated with this request.
- required: false
- example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- schema:
- type: string
- format: uuid
- example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: limit
- description: Number of items per page. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 10
- - in: query
- name: page
- description: Page number. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 1
- - in: path
- name: id
- required: true
- schema:
- type: string
- example: "123"
- description: The ID of the rule group.
- responses:
- "200":
- description: A list of rules.
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/RuleArray'
+ description: Piggy bank deleted.
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/rule-groups/{id}/test:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/recurrences/{id}/transactions:
get:
- summary: Test which transactions would be hit by the rule group. No changes will be made.
- description: Test which transactions would be hit by the rule group. No changes will be made. Limit the result if you want to.
- operationId: testRuleGroup
+ summary: List all transactions created by a recurring transaction.
+ description: List all transactions created by a recurring transaction, optionally limited to the date ranges specified.
+ operationId: listTransactionByRecurrence
tags:
- - rule_groups
+ - recurrences
parameters:
- name: X-Trace-Id
in: header
@@ -9831,6 +11019,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -9839,6 +11028,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -9847,176 +11037,81 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the rule group.
+ description: The ID of the recurring transaction.
+
- in: query
name: start
description: |
- A date formatted YYYY-MM-DD, to limit the transactions the test will be applied to. Both the start date and the end date must be present.
+ A date formatted YYYY-MM-DD. Both the start and end date must be present.
required: false
schema:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
- in: query
name: end
description: |
- A date formatted YYYY-MM-DD, to limit the transactions the test will be applied to. Both the start date and the end date must be present.
+ A date formatted YYYY-MM-DD. Both the start and end date must be present.
required: false
schema:
type: string
format: date
- example: "2018-09-17"
- - in: query
- name: search_limit
- description: |
- Maximum number of transactions Firefly III will try. Don't set this too high, or it will take Firefly III very long to run the test. I suggest a max of 200.
- required: false
- schema:
- type: integer
- - in: query
- name: triggered_limit
- description: |
- Maximum number of transactions the rule group can actually trigger on, before Firefly III stops. I would suggest setting this to 10 or 15. Don't go above the user's page size, because browsing to page 2 or 3 of a test result would fire the test again, making any navigation efforts very slow.
- required: false
- schema:
- type: integer
+ example: "2025-11-30"
- in: query
- name: accounts[]
- description: |
- Limit the testing of the rule group to these asset accounts or liabilities. Only asset accounts and liabilities will be accepted. Other types will be silently dropped.
+ name: type
+ description: Optional filter on the transaction type(s) returned
required: false
- explode: true
schema:
- type: array
- items:
- type: integer
- format: int64
- example: [ 1, 2, 3 ]
+ $ref: "#/components/schemas/TransactionTypeFilter"
responses:
"200":
- description: A list of transactions that would be changed by any of the rules of the rule group. No changes will be made.
+ description: A list of transactions
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionArray'
- "401":
- description: Unauthenticated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
- "404":
- description: Page not found
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/NotFoundResponse'
- "400":
- description: Bad request
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/BadRequestResponse'
- "500":
- description: Internal exception
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/rule-groups/{id}/trigger:
- post:
- summary: Fire the rule group on your transactions.
- description: Fire the rule group on your transactions. Changes will be made by the rules in the rule group! Limit the result if you want to.
- operationId: fireRuleGroup
- tags:
- - rule_groups
- parameters:
- - name: X-Trace-Id
- in: header
- description: Unique identifier associated with this request.
- required: false
- example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- schema:
- type: string
- format: uuid
- example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: path
- name: id
- required: true
- schema:
- type: string
- example: "123"
- description: The ID of the rule group.
- - in: query
- name: start
- description: |
- A date formatted YYYY-MM-DD, to limit the transactions the actions will be applied to. Both the start date and the end date must be present.
- required: false
- schema:
- type: string
- example: "2018-09-17"
- format: date
- - in: query
- name: end
- description: |
- A date formatted YYYY-MM-DD, to limit the transactions the actions will be applied to. Both the start date and the end date must be present.
- required: false
- schema:
- type: string
- example: "2018-09-17"
- format: date
- - in: query
- name: accounts[]
- description: |
- Limit the triggering of the rule group to these asset accounts or liabilities. Only asset accounts and liabilities will be accepted. Other types will be silently dropped.
- required: false
- explode: true
- schema:
- type: array
- items:
- type: integer
- format: int64
- example: [ 1, 2, 3 ]
- responses:
- "204":
- description: "The rules in the group are executed. Due to the setup of this function (asynchronous job execution) the result cannot be displayed."
+ $ref: "#/components/schemas/TransactionArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/rule-groups:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/recurrences:
get:
- summary: List all rule groups.
- description: List all rule groups.
- operationId: listRuleGroup
+ summary: List all recurring transactions.
+ description: List all recurring transactions.
+ operationId: listRecurrence
tags:
- - rule_groups
+ - recurrences
parameters:
- name: X-Trace-Id
in: header
@@ -10027,6 +11122,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -10035,6 +11131,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -10043,41 +11140,48 @@ paths:
type: integer
format: int32
example: 1
+
responses:
"200":
- description: A list of rule groups.
+ description: A list of recurring transactions.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/RuleGroupArray'
+ $ref: "#/components/schemas/RecurrenceArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
post:
- summary: Store a new rule group.
- description: Creates a new rule group. The data required can be submitted as a JSON body or as a list of parameters.
- operationId: storeRuleGroup
+ summary: Store a new recurring transaction
+ description: Creates a new recurring transaction. The data required can be submitted as a JSON body or as a list of parameters.
+ operationId: storeRecurrence
+ tags:
+ - recurrences
parameters:
- name: X-Trace-Id
in: header
@@ -10088,60 +11192,64 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- tags:
- - rule_groups
+
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/RuleGroupStore'
+ $ref: "#/components/schemas/RecurrenceStore"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/RuleGroupStore'
- description: "JSON array or key=value pairs with the necessary rule group information. See the model for the exact specifications."
+ $ref: "#/components/schemas/RecurrenceStore"
+ description: "JSON array or key=value pairs with the necessary recurring transaction information. See the model for the exact specifications."
required: true
responses:
"200":
- description: 'New rule group stored, result in response.'
+ description: "New recurring transaction stored, result in response."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/RuleGroupSingle'
+ $ref: "#/components/schemas/RecurrenceSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/rule-groups/{id}:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/recurrences/{id}:
get:
- summary: Get a single rule group.
- description: Get a single rule group. This does not include the rules. For that, see below.
- operationId: getRuleGroup
+ summary: Get a single recurring transaction.
+ description: Get a single recurring transaction.
+ operationId: getRecurrence
parameters:
- name: X-Trace-Id
in: header
@@ -10152,52 +11260,57 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the rule group.
+ description: The ID of the recurring transaction.
tags:
- - rule_groups
+ - recurrences
responses:
"200":
- description: 'The requested rule group'
+ description: "The requested recurring transaction"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/RuleGroupSingle'
+ $ref: "#/components/schemas/RecurrenceSingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
put:
- operationId: updateRuleGroup
+ operationId: updateRecurrence
tags:
- - rule_groups
- description: Update existing rule group.
- summary: Update existing rule group.
+ - recurrences
+ description: Update existing recurring transaction.
+ summary: Update existing recurring transaction.
parameters:
- name: X-Trace-Id
in: header
@@ -10208,66 +11321,72 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the rule group.
+ description: The ID of the recurring transaction.
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/RuleGroupUpdate'
+ $ref: "#/components/schemas/RecurrenceUpdate"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/RuleGroupUpdate'
- description: JSON array with updated rule group information. See the model for the exact specifications.
+ $ref: "#/components/schemas/RecurrenceUpdate"
+ description: JSON array with updated recurring transaction information. See the model for the exact specifications.
required: true
responses:
"200":
- description: 'Updated rule group stored, result in response'
+ description: "Updated recurring transaction stored, result in response"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/RuleGroupSingle'
+ $ref: "#/components/schemas/RecurrenceSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
delete:
- operationId: deleteRuleGroup
- description: Delete a rule group.
- summary: Delete a rule group.
+ operationId: deleteRecurrence
+ description: Delete a recurring transaction. Transactions created by the recurring transaction will not be deleted.
+ summary: Delete a recurring transaction.
tags:
- - rule_groups
+ - recurrences
parameters:
- name: X-Trace-Id
in: header
@@ -10278,47 +11397,123 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the rule group.
+ description: The ID of the recurring transaction.
responses:
"204":
- description: Rule group deleted.
+ description: Recurring transaction deleted.
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/rules/{id}/test:
- get:
- summary: Test which transactions would be hit by the rule. No changes will be made.
- description: Test which transactions would be hit by the rule. No changes will be made. Limit the result if you want to.
- operationId: testRule
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/recurrences/{id}/trigger:
+ post:
+ summary: Trigger the creation of a transaction for a specific recurring transaction
+ description: |
+ Trigger the creation of a transaction for a specific recurring transaction. All recurrences have a set of future occurrences. For those moments, you can trigger the creation of the transaction. That means the transaction will be created NOW, instead of on the indicated date. The transaction will be dated to _today_.
+
+ So, if you recurring transaction that occurs every Monday, you can trigger the creation of a transaction for Monday in two weeks, today. On that Monday two weeks from now, no transaction will be created. Instead, the transaction is created right now, and dated _today_.
+ operationId: triggerRecurrenceRecurrence
+ parameters:
+ - name: X-Trace-Id
+ in: header
+ description: Unique identifier associated with this request.
+ required: false
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+ schema:
+ type: string
+ format: uuid
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: path
+ name: id
+ required: true
+ schema:
+ type: string
+ example: "123"
+ description: The ID of the recurring transaction.
+ - in: query
+ name: date
+ description: |
+ A date formatted YYYY-MM-DD. This is the date for which you want the recurrence to fire. You can take the date from the list of occurrences in the recurring transaction.
+ required: true
+ schema:
+ type: string
+ format: date
tags:
- - rules
+ - recurrences
+ responses:
+ "200":
+ description: "A list of transactions (always just 1) created by the recurrence, or a list of zero (0) when there is nothing to create for this date."
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/TransactionArray"
+ "401":
+ description: Unauthenticated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
+ "404":
+ description: Page not found
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/NotFoundResponse"
+
+ "400":
+ description: Bad request
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ "500":
+ description: Internal exception
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/rule-groups/{id}/rules:
+ get:
+ summary: List rules in this rule group.
+ description: List rules in this rule group.
+ operationId: listRuleByGroup
+ tags:
+ - rule_groups
parameters:
- name: X-Trace-Id
in: header
@@ -10329,13 +11524,111 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the rule.
+ description: The ID of the rule group.
+
+ responses:
+ "200":
+ description: A list of rules.
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/RuleArray"
+ "401":
+ description: Unauthenticated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
+ "404":
+ description: Page not found
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/NotFoundResponse"
+
+ "400":
+ description: Bad request
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ "500":
+ description: Internal exception
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/rule-groups/{id}/test:
+ get:
+ summary: Test which transactions would be hit by the rule group. No changes will be made.
+ description: Test which transactions would be hit by the rule group. No changes will be made. Limit the result if you want to.
+ operationId: testRuleGroup
+ tags:
+ - rule_groups
+ parameters:
+ - name: X-Trace-Id
+ in: header
+ description: Unique identifier associated with this request.
+ required: false
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+ schema:
+ type: string
+ format: uuid
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
+ - in: path
+ name: id
+ required: true
+ schema:
+ type: string
+ example: "123"
+ description: The ID of the rule group.
- in: query
name: start
description: |
@@ -10344,7 +11637,7 @@ paths:
schema:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
- in: query
name: end
description: |
@@ -10353,11 +11646,25 @@ paths:
schema:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-30"
+ - in: query
+ name: search_limit
+ description: |
+ Maximum number of transactions Firefly III will try. Don't set this too high, or it will take Firefly III very long to run the test. I suggest a max of 200.
+ required: false
+ schema:
+ type: integer
+ - in: query
+ name: triggered_limit
+ description: |
+ Maximum number of transactions the rule group can actually trigger on, before Firefly III stops. I would suggest setting this to 10 or 15. Don't go above the user's page size, because browsing to page 2 or 3 of a test result would fire the test again, making any navigation efforts very slow.
+ required: false
+ schema:
+ type: integer
- in: query
name: accounts[]
description: |
- Limit the testing of the rule to these asset accounts or liabilities. Only asset accounts and liabilities will be accepted. Other types will be silently dropped.
+ Limit the testing of the rule group to these asset accounts or liabilities. Only asset accounts and liabilities will be accepted. Other types will be silently dropped.
required: false
explode: true
schema:
@@ -10365,45 +11672,49 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"200":
- description: A list of transactions that would be changed by the rule. No changes will be made.
+ description: A list of transactions that would be changed by any of the rules of the rule group. No changes will be made.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionArray'
+ $ref: "#/components/schemas/TransactionArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/rules/{id}/trigger:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/rule-groups/{id}/trigger:
post:
- summary: Fire the rule on your transactions.
- description: Fire the rule group on your transactions. Changes will be made by the rules in the group! Limit the result if you want to.
- operationId: fireRule
+ summary: Fire the rule group on your transactions.
+ description: Fire the rule group on your transactions. Changes will be made by the rules in the rule group. Limit the result if you want to.
+ operationId: fireRuleGroup
tags:
- - rules
+ - rule_groups
parameters:
- name: X-Trace-Id
in: header
@@ -10414,35 +11725,36 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the rule.
+ description: The ID of the rule group.
- in: query
name: start
description: |
- A date formatted YYYY-MM-DD, to limit the transactions the actions will be applied to. If the start date is not present, it will be set to one year ago. If you use this field, both the start date and the end date must be present.
+ A date formatted YYYY-MM-DD, to limit the transactions the actions will be applied to. Both the start date and the end date must be present.
required: false
schema:
type: string
- example: "2018-09-17"
+ example: "2025-11-01"
format: date
- in: query
name: end
description: |
- A date formatted YYYY-MM-DD, to limit the transactions the actions will be applied to. If the end date is not present, it will be set to today. If you use this field, both the start date and the end date must be present.
+ A date formatted YYYY-MM-DD, to limit the transactions the actions will be applied to. Both the start date and the end date must be present.
required: false
schema:
type: string
- example: "2018-09-17"
+ example: "2025-11-30"
format: date
- in: query
name: accounts[]
description: |
- Limit the triggering of the rule to these asset accounts or liabilities. Only asset accounts and liabilities will be accepted. Other types will be silently dropped.
+ Limit the triggering of the rule group to these asset accounts or liabilities. Only asset accounts and liabilities will be accepted. Other types will be silently dropped.
required: false
explode: true
schema:
@@ -10450,7 +11762,7 @@ paths:
items:
type: integer
format: int64
- example: [ 1, 2, 3 ]
+ example: [1, 2, 3]
responses:
"204":
description: "The rules in the group are executed. Due to the setup of this function (asynchronous job execution) the result cannot be displayed."
@@ -10459,32 +11771,36 @@ paths:
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/rules:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/rule-groups:
get:
- summary: List all rules.
- description: List all rules.
- operationId: listRule
+ summary: List all rule groups.
+ description: List all rule groups.
+ operationId: listRuleGroup
tags:
- - rules
+ - rule_groups
parameters:
- name: X-Trace-Id
in: header
@@ -10495,6 +11811,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -10503,6 +11820,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -10511,41 +11829,46 @@ paths:
type: integer
format: int32
example: 1
+
responses:
"200":
- description: A list of rules
+ description: A list of rule groups.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/RuleArray'
+ $ref: "#/components/schemas/RuleGroupArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
post:
- summary: Store a new rule
- description: Creates a new rule. The data required can be submitted as a JSON body or as a list of parameters.
- operationId: storeRule
+ summary: Store a new rule group.
+ description: Creates a new rule group. The data required can be submitted as a JSON body or as a list of parameters.
+ operationId: storeRuleGroup
parameters:
- name: X-Trace-Id
in: header
@@ -10556,60 +11879,66 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
tags:
- - rules
+ - rule_groups
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/RuleStore'
+ $ref: "#/components/schemas/RuleGroupStore"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/RuleStore'
- description: "JSON array or key=value pairs with the necessary rule information. See the model for the exact specifications."
+ $ref: "#/components/schemas/RuleGroupStore"
+ description: "JSON array or key=value pairs with the necessary rule group information. See the model for the exact specifications."
required: true
responses:
"200":
- description: 'New rule stored, result in response.'
+ description: "New rule group stored, result in response."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/RuleSingle'
+ $ref: "#/components/schemas/RuleGroupSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/rules/{id}:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/rule-groups/{id}:
get:
- summary: Get a single rule.
- description: Get a single rule.
- operationId: getRule
+ summary: Get a single rule group.
+ description: Get a single rule group. This does not include the rules. For that, see below.
+ operationId: getRuleGroup
parameters:
- name: X-Trace-Id
in: header
@@ -10620,52 +11949,57 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the object.
+ description: The ID of the rule group.
tags:
- - rules
+ - rule_groups
responses:
"200":
- description: 'The requested rule'
+ description: "The requested rule group"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/RuleSingle'
+ $ref: "#/components/schemas/RuleGroupSingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
put:
- operationId: updateRule
+ operationId: updateRuleGroup
tags:
- - rules
- description: Update existing rule.
- summary: Update existing rule.
+ - rule_groups
+ description: Update existing rule group.
+ summary: Update existing rule group.
parameters:
- name: X-Trace-Id
in: header
@@ -10676,66 +12010,72 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the object.
+ description: The ID of the rule group.
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/RuleUpdate'
+ $ref: "#/components/schemas/RuleGroupUpdate"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/RuleUpdate'
- description: JSON array with updated rule information. See the model for the exact specifications.
+ $ref: "#/components/schemas/RuleGroupUpdate"
+ description: JSON array with updated rule group information. See the model for the exact specifications.
required: true
responses:
"200":
- description: 'Updated rule stored, result in response'
+ description: "Updated rule group stored, result in response"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/RuleSingle'
+ $ref: "#/components/schemas/RuleGroupSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
delete:
- operationId: deleteRule
- description: Delete an rule.
- summary: Delete an rule.
+ operationId: deleteRuleGroup
+ description: Delete a rule group.
+ summary: Delete a rule group.
tags:
- - rules
+ - rule_groups
parameters:
- name: X-Trace-Id
in: header
@@ -10746,47 +12086,52 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the rule.
+ description: The ID of the rule group.
responses:
"204":
- description: Rule deleted.
+ description: Rule group deleted.
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/tags/{tag}/attachments:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/rules/{id}/test:
get:
- summary: Lists all attachments.
- description: Lists all attachments.
- operationId: listAttachmentByTag
+ summary: Test which transactions would be hit by the rule. No changes will be made.
+ description: Test which transactions would be hit by the rule. No changes will be made. Limit the result if you want to.
+ operationId: testRule
tags:
- - tags
+ - rules
parameters:
- name: X-Trace-Id
in: header
@@ -10797,68 +12142,86 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: limit
- description: Number of items per page. The default pagination is per 50 items.
- required: false
+
+ - in: path
+ name: id
+ required: true
schema:
- type: integer
- format: int32
- example: 10
+ type: string
+ example: "123"
+ description: The ID of the rule.
- in: query
- name: page
- description: Page number. The default pagination is per 50 items.
+ name: start
+ description: |
+ A date formatted YYYY-MM-DD, to limit the transactions the test will be applied to. Both the start date and the end date must be present.
required: false
schema:
- type: integer
- format: int32
- example: 1
- - in: path
- name: tag
- description: Either the tag itself or the tag ID.
- required: true
+ type: string
+ format: date
+ example: "2025-11-01"
+ - in: query
+ name: end
+ description: |
+ A date formatted YYYY-MM-DD, to limit the transactions the test will be applied to. Both the start date and the end date must be present.
+ required: false
schema:
type: string
- format: string
- example: groceries
+ format: date
+ example: "2025-11-30"
+ - in: query
+ name: accounts[]
+ description: |
+ Limit the testing of the rule to these asset accounts or liabilities. Only asset accounts and liabilities will be accepted. Other types will be silently dropped.
+ required: false
+ explode: true
+ schema:
+ type: array
+ items:
+ type: integer
+ format: int64
+ example: [1, 2, 3]
responses:
"200":
- description: A list of attachments
+ description: A list of transactions that would be changed by the rule. No changes will be made.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AttachmentArray'
+ $ref: "#/components/schemas/TransactionArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/tags/{tag}/transactions:
- get:
- summary: "List all transactions with this tag."
- description: "List all transactions with this tag."
- operationId: listTransactionByTag
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/rules/{id}/trigger:
+ post:
+ summary: Fire the rule on your transactions.
+ description: Fire the rule group on your transactions. Changes will be made by the rules in the group. Limit the result if you want to.
+ operationId: fireRule
tags:
- - tags
+ - rules
parameters:
- name: X-Trace-Id
in: header
@@ -10869,92 +12232,82 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: limit
- description: Number of items per page. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 10
- - in: query
- name: page
- description: Page number. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 1
+
- in: path
- name: tag
- description: Either the tag itself or the tag ID.
+ name: id
required: true
schema:
type: string
- format: string
- example: groceries
+ example: "123"
+ description: The ID of the rule.
- in: query
name: start
description: |
- A date formatted YYYY-MM-DD. This is the start date of the selected range (inclusive).
+ A date formatted YYYY-MM-DD, to limit the transactions the actions will be applied to. If the start date is not present, it will be set to one year ago. If you use this field, both the start date and the end date must be present.
required: false
schema:
type: string
+ example: "2025-11-01"
format: date
- example: "2018-09-17"
- in: query
name: end
description: |
- A date formatted YYYY-MM-DD. This is the end date of the selected range (inclusive).
+ A date formatted YYYY-MM-DD, to limit the transactions the actions will be applied to. If the end date is not present, it will be set to today. If you use this field, both the start date and the end date must be present.
required: false
schema:
type: string
+ example: "2025-11-30"
format: date
- example: "2018-09-17"
- in: query
- name: type
- description: Optional filter on the transaction type(s) returned.
+ name: accounts[]
+ description: |
+ Limit the triggering of the rule to these asset accounts or liabilities. Only asset accounts and liabilities will be accepted. Other types will be silently dropped.
required: false
+ explode: true
schema:
- $ref: '#/components/schemas/TransactionTypeFilter'
+ type: array
+ items:
+ type: integer
+ format: int64
+ example: [1, 2, 3]
responses:
- "200":
- description: A list of transactions.
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/TransactionArray'
+ "204":
+ description: "The rules in the group are executed. Due to the setup of this function (asynchronous job execution) the result cannot be displayed."
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/tags:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/rules:
get:
- summary: List all tags.
- description: List all of the user's tags.
- operationId: listTag
+ summary: List all rules.
+ description: List all rules.
+ operationId: listRule
tags:
- - tags
+ - rules
parameters:
- name: X-Trace-Id
in: header
@@ -10965,6 +12318,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -10973,6 +12327,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -10981,42 +12336,46 @@ paths:
type: integer
format: int32
example: 1
-
+
responses:
"200":
- description: A list of tags
+ description: A list of rules
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TagArray'
+ $ref: "#/components/schemas/RuleArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
post:
- summary: Store a new tag
- description: Creates a new tag. The data required can be submitted as a JSON body or as a list of parameters.
- operationId: storeTag
+ summary: Store a new rule
+ description: Creates a new rule. The data required can be submitted as a JSON body or as a list of parameters.
+ operationId: storeRule
parameters:
- name: X-Trace-Id
in: header
@@ -11027,60 +12386,66 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
tags:
- - tags
+ - rules
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/TagModelStore'
+ $ref: "#/components/schemas/RuleStore"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/TagModelStore'
- description: "JSON array or key=value pairs with the necessary tag information. See the model for the exact specifications."
+ $ref: "#/components/schemas/RuleStore"
+ description: "JSON array or key=value pairs with the necessary rule information. See the model for the exact specifications."
required: true
responses:
"200":
- description: 'New tag stored, result in response.'
+ description: "New rule stored, result in response."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TagSingle'
+ $ref: "#/components/schemas/RuleSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/tags/{tag}:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/rules/{id}:
get:
- summary: Get a single tag.
- description: Get a single tag.
- operationId: getTag
+ summary: Get a single rule.
+ description: Get a single rule.
+ operationId: getRule
parameters:
- name: X-Trace-Id
in: header
@@ -11091,69 +12456,57 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: limit
- description: Number of items per page. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 10
- - in: query
- name: page
- description: Page number. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 1
+
- in: path
- name: tag
- description: Either the tag itself or the tag ID. If you use the tag itself, and it contains international (non-ASCII) characters, your milage may vary.
+ name: id
required: true
schema:
type: string
- format: string
- example: groceries
+ example: "123"
+ description: The ID of the object.
tags:
- - tags
+ - rules
responses:
"200":
- description: 'The requested tag'
+ description: "The requested rule"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TagSingle'
+ $ref: "#/components/schemas/RuleSingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
put:
- operationId: updateTag
+ operationId: updateRule
tags:
- - tags
- description: Update existing tag.
- summary: Update existing tag.
+ - rules
+ description: Update existing rule.
+ summary: Update existing rule.
parameters:
- name: X-Trace-Id
in: header
@@ -11164,67 +12517,72 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
- name: tag
- description: Either the tag itself or the tag ID. If you use the tag itself, and it contains international (non-ASCII) characters, your milage may vary.
+ name: id
required: true
schema:
type: string
- format: string
- example: groceries
+ example: "123"
+ description: The ID of the object.
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/TagModelUpdate'
+ $ref: "#/components/schemas/RuleUpdate"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/TagModelUpdate'
- description: JSON array with updated tag information. See the model for the exact specifications.
+ $ref: "#/components/schemas/RuleUpdate"
+ description: JSON array with updated rule information. See the model for the exact specifications.
required: true
responses:
"200":
- description: 'Updated tag stored, result in response'
+ description: "Updated rule stored, result in response"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TagSingle'
+ $ref: "#/components/schemas/RuleSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
delete:
- operationId: deleteTag
- description: Delete an tag.
- summary: Delete an tag.
+ operationId: deleteRule
+ description: Delete an rule.
+ summary: Delete an rule.
tags:
- - tags
+ - rules
parameters:
- name: X-Trace-Id
in: header
@@ -11235,48 +12593,52 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
- name: tag
- description: Either the tag itself or the tag ID. If you use the tag itself, and it contains international (non-ASCII) characters, your milage may vary.
+ name: id
required: true
schema:
type: string
- format: string
- example: groceries
+ example: "123"
+ description: The ID of the rule.
responses:
"204":
- description: Tag deleted.
+ description: Rule deleted.
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/currencies/{code}/accounts:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/tags/{tag}/attachments:
get:
- summary: List all accounts with this currency.
- description: List all accounts with this currency.
- operationId: listAccountByCurrency
+ summary: Lists all attachments.
+ description: Lists all attachments.
+ operationId: listAttachmentByTag
tags:
- - currencies
+ - tags
parameters:
- name: X-Trace-Id
in: header
@@ -11287,6 +12649,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -11295,6 +12658,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -11303,66 +12667,58 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
- name: code
+ name: tag
+ description: Either the tag itself or the tag ID.
required: true
schema:
type: string
format: string
- example: USD
- description: The currency code.
- - in: query
- name: date
- description: |
- A date formatted YYYY-MM-DD. When added to the request, Firefly III will show the account's balance on that day.
- required: false
- schema:
- type: string
- format: date
- - in: query
- name: type
- description: Optional filter on the account type(s) returned
- required: false
- schema:
- $ref: '#/components/schemas/AccountTypeFilter'
+ example: groceries
+
responses:
"200":
- description: A list of accounts
+ description: A list of attachments
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AccountArray'
+ $ref: "#/components/schemas/AttachmentArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/currencies/{code}/available-budgets:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/tags/{tag}/transactions:
get:
- summary: List all available budgets with this currency.
- description: List all available budgets with this currency.
- operationId: listAvailableBudgetByCurrency
+ summary: "List all transactions with this tag."
+ description: "List all transactions with this tag."
+ operationId: listTransactionByTag
tags:
- - currencies
+ - tags
parameters:
- name: X-Trace-Id
in: header
@@ -11373,6 +12729,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -11381,6 +12738,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -11389,52 +12747,81 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
- name: code
+ name: tag
+ description: Either the tag itself or the tag ID.
required: true
schema:
type: string
format: string
- example: EUR
- description: The currency code.
+ example: groceries
+ - in: query
+ name: start
+ description: |
+ A date formatted YYYY-MM-DD. This is the start date of the selected range (inclusive).
+ required: false
+ schema:
+ type: string
+ format: date
+ example: "2025-11-01"
+ - in: query
+ name: end
+ description: |
+ A date formatted YYYY-MM-DD. This is the end date of the selected range (inclusive).
+ required: false
+ schema:
+ type: string
+ format: date
+ example: "2025-11-30"
+ - in: query
+ name: type
+ description: Optional filter on the transaction type(s) returned.
+ required: false
+ schema:
+ $ref: "#/components/schemas/TransactionTypeFilter"
responses:
"200":
- description: A list of available budgets
+ description: A list of transactions.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AvailableBudgetArray'
+ $ref: "#/components/schemas/TransactionArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/currencies/{code}/bills:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/tags:
get:
- summary: List all bills with this currency.
- description: List all bills with this currency.
- operationId: listBillByCurrency
- tags:
- - currencies
+ summary: List all tags.
+ description: List all of the user's tags.
+ operationId: listTag
+ tags:
+ - tags
parameters:
- name: X-Trace-Id
in: header
@@ -11445,6 +12832,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -11453,6 +12841,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -11461,52 +12850,116 @@ paths:
type: integer
format: int32
example: 1
- - in: path
- name: code
- required: true
+
+ responses:
+ "200":
+ description: A list of tags
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/TagArray"
+ "401":
+ description: Unauthenticated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
+ "404":
+ description: Page not found
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/NotFoundResponse"
+
+ "400":
+ description: Bad request
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ "500":
+ description: Internal exception
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ post:
+ summary: Store a new tag
+ description: Creates a new tag. The data required can be submitted as a JSON body or as a list of parameters.
+ operationId: storeTag
+ parameters:
+ - name: X-Trace-Id
+ in: header
+ description: Unique identifier associated with this request.
+ required: false
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
schema:
type: string
- format: string
- example: USD
- description: The currency code.
+ format: uuid
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ tags:
+ - tags
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/TagModelStore"
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/TagModelStore"
+ description: "JSON array or key=value pairs with the necessary tag information. See the model for the exact specifications."
+ required: true
responses:
"200":
- description: A list of bills.
+ description: "New tag stored, result in response."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/BillArray'
+ $ref: "#/components/schemas/TagSingle"
+ "422":
+ description: "Validation error. The body will have the exact details."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/currencies/{code}/budget-limits:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/tags/{tag}:
get:
- summary: List all budget limits with this currency
- description: List all budget limits with this currency
- operationId: listBudgetLimitByCurrency
- tags:
- - currencies
+ summary: Get a single tag.
+ description: Get a single tag.
+ operationId: getTag
parameters:
- name: X-Trace-Id
in: header
@@ -11517,6 +12970,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -11525,6 +12979,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -11533,68 +12988,58 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
- name: code
+ name: tag
+ description: Either the tag itself or the tag ID. If you use the tag itself, and it contains international (non-ASCII) characters, your mileage may vary.
required: true
schema:
type: string
format: string
- example: USD
- description: The currency code.
- - in: query
- name: start
- description: Start date for the budget limit list.
- required: false
- schema:
- type: string
- format: date
- example: "2018-01-01"
- - in: query
- name: end
- description: End date for the budget limit list.
- required: false
- schema:
- type: string
- format: date
- example: "2018-01-31"
+ example: groceries
+ tags:
+ - tags
responses:
"200":
- description: A list of budget limits.
+ description: "The requested tag"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/BudgetLimitArray'
+ $ref: "#/components/schemas/TagSingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/currencies/{code}/recurrences:
- get:
- summary: List all recurring transactions with this currency.
- description: List all recurring transactions with this currency.
- operationId: listRecurrenceByCurrency
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ put:
+ operationId: updateTag
tags:
- - currencies
+ - tags
+ description: Update existing tag.
+ summary: Update existing tag.
parameters:
- name: X-Trace-Id
in: header
@@ -11605,68 +13050,73 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: limit
- description: Number of items per page. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 10
- - in: query
- name: page
- description: Page number. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 1
+
- in: path
- name: code
+ name: tag
+ description: Either the tag itself or the tag ID. If you use the tag itself, and it contains international (non-ASCII) characters, your mileage may vary.
required: true
schema:
type: string
format: string
- example: EUR
- description: The currency code.
+ example: groceries
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/TagModelUpdate"
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/TagModelUpdate"
+ description: JSON array with updated tag information. See the model for the exact specifications.
+ required: true
responses:
"200":
- description: A list of recurring transactions
+ description: "Updated tag stored, result in response"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/RecurrenceArray'
+ $ref: "#/components/schemas/TagSingle"
+ "422":
+ description: "Validation error. The body will have the exact details."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/currencies/{code}/rules:
- get:
- summary: List all rules with this currency.
- description: List all rules with this currency.
- operationId: listRuleByCurrency
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ delete:
+ operationId: deleteTag
+ description: Delete an tag.
+ summary: Delete an tag.
tags:
- - currencies
+ - tags
parameters:
- name: X-Trace-Id
in: header
@@ -11677,66 +13127,51 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: limit
- description: Number of items per page. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 10
- - in: query
- name: page
- description: Page number. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 1
+
- in: path
- name: code
+ name: tag
+ description: Either the tag itself or the tag ID. If you use the tag itself, and it contains international (non-ASCII) characters, your mileage may vary.
required: true
schema:
type: string
format: string
- example: USD
- description: The currency code.
+ example: groceries
responses:
- "200":
- description: A list of rules
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/RuleArray'
+ "204":
+ description: Tag deleted.
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/currencies/{code}/transactions:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/currencies/{code}/accounts:
get:
- summary: List all transactions with this currency.
- description: List all transactions with this currency.
- operationId: listTransactionByCurrency
+ summary: List all accounts with this currency.
+ description: List all accounts with this currency.
+ operationId: listAccountByCurrency
tags:
- currencies
parameters:
@@ -11749,6 +13184,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -11757,6 +13193,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -11765,6 +13202,7 @@ paths:
type: integer
format: int32
example: 1
+
- in: path
name: code
required: true
@@ -11774,65 +13212,59 @@ paths:
example: USD
description: The currency code.
- in: query
- name: start
- description: |
- A date formatted YYYY-MM-DD, to limit the list of transactions.
- required: false
- schema:
- type: string
- format: date
- example: "2018-09-17"
- - in: query
- name: end
+ name: date
description: |
- A date formatted YYYY-MM-DD, to limit the list of transactions.
+ A date formatted YYYY-MM-DD. When added to the request, Firefly III will show the account's balance on that day.
required: false
schema:
type: string
format: date
- example: "2018-12-31"
- in: query
name: type
- description: Optional filter on the transaction type(s) returned
+ description: Optional filter on the account type(s) returned
required: false
schema:
- $ref: '#/components/schemas/TransactionTypeFilter'
+ $ref: "#/components/schemas/AccountTypeFilter"
responses:
"200":
- description: A list of transactions.
+ description: A list of accounts
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionArray'
+ $ref: "#/components/schemas/AccountArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/currencies:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/currencies/{code}/available-budgets:
get:
- summary: List all currencies.
- description: List all currencies.
- operationId: listCurrency
+ summary: List all available budgets with this currency.
+ description: List all available budgets with this currency.
+ operationId: listAvailableBudgetByCurrency
tags:
- currencies
parameters:
@@ -11845,6 +13277,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -11853,6 +13286,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -11861,41 +13295,58 @@ paths:
type: integer
format: int32
example: 1
+
+ - in: path
+ name: code
+ required: true
+ schema:
+ type: string
+ format: string
+ example: EUR
+ description: The currency code.
+
responses:
"200":
- description: A list of currencies.
+ description: A list of available budgets
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/CurrencyArray'
+ $ref: "#/components/schemas/AvailableBudgetArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- post:
- summary: Store a new currency
- description: Creates a new currency. The data required can be submitted as a JSON body or as a list of parameters.
- operationId: storeCurrency
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/currencies/{code}/bills:
+ get:
+ summary: List all bills with this currency.
+ description: List all bills with this currency.
+ operationId: listBillByCurrency
+ tags:
+ - currencies
parameters:
- name: X-Trace-Id
in: header
@@ -11906,60 +13357,74 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- tags:
- - currencies
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/CurrencyStore'
- application/x-www-form-urlencoded:
- schema:
- $ref: '#/components/schemas/CurrencyStore'
- description: "JSON array or key=value pairs with the necessary currency information. See the model for the exact specifications."
- required: true
- responses:
- "200":
- description: 'New currency stored, result in response.'
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/CurrencySingle'
- "422":
- description: 'Validation error. The body will have the exact details.'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
- "401":
- description: Unauthenticated
- content:
- application/json:
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
+ - in: path
+ name: code
+ required: true
+ schema:
+ type: string
+ format: string
+ example: USD
+ description: The currency code.
+
+ responses:
+ "200":
+ description: A list of bills.
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/BillArray"
+ "401":
+ description: Unauthenticated
+ content:
+ application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/currencies/{code}/enable:
- post:
- summary: Enable a single currency.
- description: Enable a single currency.
- operationId: enableCurrency
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/currencies/{code}/budget-limits:
+ get:
+ summary: List all budget limits with this currency
+ description: List all budget limits with this currency
+ operationId: listBudgetLimitByCurrency
tags:
- currencies
parameters:
@@ -11972,6 +13437,25 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
- in: path
name: code
required: true
@@ -11980,42 +13464,62 @@ paths:
format: string
example: USD
description: The currency code.
+ - in: query
+ name: start
+ description: Start date for the budget limit list.
+ required: false
+ schema:
+ type: string
+ format: date
+ example: "2025-11-01"
+ - in: query
+ name: end
+ description: End date for the budget limit list.
+ required: false
+ schema:
+ type: string
+ format: date
+ example: "2025-11-30"
responses:
- "204":
- description: Currency was enabled.
+ "200":
+ description: A list of budget limits.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/CurrencySingle'
+ $ref: "#/components/schemas/BudgetLimitArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/currencies/{code}/disable:
- post:
- summary: Disable a currency.
- description: Disable a currency.
- operationId: disableCurrency
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/currencies/{code}/recurrences:
+ get:
+ summary: List all recurring transactions with this currency.
+ description: List all recurring transactions with this currency.
+ operationId: listRecurrenceByCurrency
tags:
- currencies
parameters:
@@ -12028,55 +13532,73 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
- in: path
name: code
required: true
schema:
type: string
- example: GBP
+ format: string
+ example: EUR
description: The currency code.
responses:
- "204":
- description: Currency was disabled.
+ "200":
+ description: A list of recurring transactions
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/CurrencySingle'
- "409":
- description: Currency cannot be disabled, because it is still in use.
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/RecurrenceArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/currencies/{code}/default:
- post:
- summary: Make currency default currency.
- description: Make this currency the default currency for the user. If the currency is not enabled, it will be enabled as well.
- operationId: defaultCurrency
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/currencies/{code}/rules:
+ get:
+ summary: List all rules with this currency.
+ description: List all rules with this currency.
+ operationId: listRuleByCurrency
tags:
- currencies
parameters:
@@ -12089,6 +13611,25 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
- in: path
name: code
required: true
@@ -12098,41 +13639,47 @@ paths:
example: USD
description: The currency code.
responses:
- "204":
- description: Currency has been made the default currency.
+ "200":
+ description: A list of rules
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/CurrencySingle'
+ $ref: "#/components/schemas/RuleArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/currencies/{code}:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/currencies/{code}/transactions:
get:
- summary: Get a single currency.
- description: Get a single currency.
- operationId: getCurrency
+ summary: List all transactions with this currency.
+ description: List all transactions with this currency.
+ operationId: listTransactionByCurrency
+ tags:
+ - currencies
parameters:
- name: X-Trace-Id
in: header
@@ -12143,6 +13690,25 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
- in: path
name: code
required: true
@@ -12151,45 +13717,72 @@ paths:
format: string
example: USD
description: The currency code.
- tags:
- - currencies
+ - in: query
+ name: start
+ description: |
+ A date formatted YYYY-MM-DD, to limit the list of transactions.
+ required: false
+ schema:
+ type: string
+ format: date
+ example: "2025-11-01"
+ - in: query
+ name: end
+ description: |
+ A date formatted YYYY-MM-DD, to limit the list of transactions.
+ required: false
+ schema:
+ type: string
+ format: date
+ example: "2025-11-30"
+ - in: query
+ name: type
+ description: Optional filter on the transaction type(s) returned
+ required: false
+ schema:
+ $ref: "#/components/schemas/TransactionTypeFilter"
responses:
"200":
- description: 'The requested currency'
+ description: A list of transactions.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/CurrencySingle'
+ $ref: "#/components/schemas/TransactionArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- put:
- operationId: updateCurrency
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/currencies:
+ get:
+ summary: List all currencies.
+ description: List all currencies.
+ operationId: listCurrency
tags:
- currencies
- description: Update existing currency.
- summary: Update existing currency.
parameters:
- name: X-Trace-Id
in: header
@@ -12200,67 +13793,64 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: path
- name: code
- required: true
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
schema:
- type: string
- format: string
- example: EUR
- description: The currency code.
- requestBody:
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/CurrencyUpdate'
- application/x-www-form-urlencoded:
- schema:
- $ref: '#/components/schemas/CurrencyUpdate'
- description: JSON array with updated currency information. See the model for the exact specifications.
- required: true
+ type: integer
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
responses:
"200":
- description: 'Updated currency stored, result in response'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/CurrencySingle'
- "422":
- description: 'Validation error. The body will have the exact details.'
+ description: A list of currencies.
content:
- application/json:
+ application/vnd.api+json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/CurrencyArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- delete:
- operationId: deleteCurrency
- description: Delete a currency.
- summary: Delete a currency.
- tags:
- - currencies
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ post:
+ summary: Store a new currency
+ description: Creates a new currency. The data required can be submitted as a JSON body or as a list of parameters.
+ operationId: storeCurrency
parameters:
- name: X-Trace-Id
in: header
@@ -12271,46 +13861,68 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: path
- name: code
- required: true
- schema:
- type: string
- format: string
- example: GBP
- description: The currency code.
- responses:
- "204":
- description: Currency deleted.
+
+ tags:
+ - currencies
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/CurrencyStore"
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/CurrencyStore"
+ description: "JSON array or key=value pairs with the necessary currency information. See the model for the exact specifications."
+ required: true
+ responses:
+ "200":
+ description: "New currency stored, result in response."
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/CurrencySingle"
+ "422":
+ description: "Validation error. The body will have the exact details."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/currencies/native:
- get:
- summary: Get the native currency of the current administration.
- description: Get the native currency of the current administration. This replaces what was called "the user's default currency" although they are essentially the same.
- operationId: getNativeCurrency
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/currencies/{code}/enable:
+ post:
+ summary: Enable a single currency.
+ description: Enable a single currency.
+ operationId: enableCurrency
+ tags:
+ - currencies
parameters:
- name: X-Trace-Id
in: header
@@ -12321,46 +13933,57 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- tags:
- - currencies
+
+ - in: path
+ name: code
+ required: true
+ schema:
+ type: string
+ format: string
+ example: USD
+ description: The currency code.
responses:
- "200":
- description: 'The native currency'
+ "204":
+ description: Currency was enabled.
content:
- application/json:
+ application/vnd.api+json:
schema:
- $ref: '#/components/schemas/CurrencySingle'
+ $ref: "#/components/schemas/CurrencySingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/transaction-journals/{id}/links:
- get:
- summary: Lists all the transaction links for an individual journal (individual split).
- description: Lists all the transaction links for an individual journal (a split). Don't use the group ID, you need the actual underlying journal (the split).
- operationId: listLinksByJournal
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/currencies/{code}/disable:
+ post:
+ summary: Disable a currency.
+ description: Disable a currency.
+ operationId: disableCurrency
tags:
- - transactions
+ - currencies
parameters:
- name: X-Trace-Id
in: header
@@ -12371,65 +13994,62 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: limit
- description: Number of items per page. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 10
- - in: query
- name: page
- description: Page number. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 1
+
- in: path
- name: id
+ name: code
required: true
schema:
type: string
- example: "123"
- description: The ID of the transaction journal / the split.
+ example: GBP
+ description: The currency code.
responses:
- "200":
- description: A list of transaction links.
+ "204":
+ description: Currency was disabled.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionLinkArray'
+ $ref: "#/components/schemas/CurrencySingle"
+ "409":
+ description: Currency cannot be disabled, because it is still in use.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InternalExceptionResponse"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/transaction-journals/{id}:
- get:
- summary: Get a single transaction, based on one of the underlying transaction journals (transaction splits).
- description: Get a single transaction by underlying journal (split).
- operationId: getTransactionByJournal
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/currencies/{code}/primary:
+ post:
+ summary: Make currency primary currency.
+ description: Make this currency the primary currency for the current financial administration. If the currency is not enabled, it will be enabled as well.
+ operationId: primaryCurrency
+ tags:
+ - currencies
parameters:
- name: X-Trace-Id
in: header
@@ -12440,52 +14060,55 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
- name: id
+ name: code
required: true
schema:
type: string
- example: "123"
- description: The ID of the transaction journal (split).
- tags:
- - transactions
+ format: string
+ example: USD
+ description: The currency code.
responses:
- "200":
- description: 'The requested transaction.'
+ "204":
+ description: Currency has been made the primary currency.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionSingle'
+ $ref: "#/components/schemas/CurrencySingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- delete:
- operationId: deleteTransactionJournal
- description: Delete an individual journal (split) from a transaction.
- summary: Delete split from transaction
- tags:
- - transactions
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/currencies/{code}:
+ get:
+ summary: Get a single currency.
+ description: Get a single currency.
+ operationId: getCurrency
parameters:
- name: X-Trace-Id
in: header
@@ -12496,47 +14119,58 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
- name: id
+ name: code
required: true
schema:
type: string
- example: "123"
- description: The ID of the transaction journal (the split) you wish to delete.
+ format: string
+ example: USD
+ description: The currency code.
+ tags:
+ - currencies
responses:
- "204":
- description: Transaction journal (split) deleted.
+ "200":
+ description: "The requested currency"
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/CurrencySingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/transactions/{id}/attachments:
- get:
- summary: Lists all attachments.
- description: Lists all attachments.
- operationId: listAttachmentByTransaction
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ put:
+ operationId: updateCurrency
tags:
- - transactions
+ - currencies
+ description: Update existing currency.
+ summary: Update existing currency.
parameters:
- name: X-Trace-Id
in: header
@@ -12547,67 +14181,73 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: limit
- description: Number of items per page. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 10
- - in: query
- name: page
- description: Page number. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 1
+
- in: path
- name: id
+ name: code
required: true
schema:
type: string
- example: "123"
- description: The ID of the transaction.
+ format: string
+ example: EUR
+ description: The currency code.
+ requestBody:
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/CurrencyUpdate"
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/CurrencyUpdate"
+ description: JSON array with updated currency information. See the model for the exact specifications.
+ required: true
responses:
"200":
- description: A list of attachments
+ description: "Updated currency stored, result in response"
content:
- application/vnd.api+json:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/CurrencySingle"
+ "422":
+ description: "Validation error. The body will have the exact details."
+ content:
+ application/json:
schema:
- $ref: '#/components/schemas/AttachmentArray'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/transactions/{id}/piggy-bank-events:
- get:
- summary: Lists all piggy bank events.
- description: Lists all piggy bank events.
- operationId: listEventByTransaction
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ delete:
+ operationId: deleteCurrency
+ description: Delete a currency.
+ summary: Delete a currency.
tags:
- - transactions
+ - currencies
parameters:
- name: X-Trace-Id
in: header
@@ -12618,68 +14258,51 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: limit
- description: Number of items per page. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 10
- - in: query
- name: page
- description: Page number. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 1
+
- in: path
- name: id
+ name: code
required: true
schema:
type: string
- example: "123"
- description: The ID of the transaction.
+ format: string
+ example: GBP
+ description: The currency code.
responses:
- "200":
- description: A list of piggy bank events.
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/PiggyBankEventArray'
+ "204":
+ description: Currency deleted.
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/transactions:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/currencies/primary:
get:
- summary: |
- List all the user's transactions.
- description: List all the user's transactions.
- operationId: listTransaction
- tags:
- - transactions
+ summary: Get the primary currency of the current administration.
+ description: Get the primary currency of the current administration. This replaces what was called "the user's default currency" although they are essentially the same.
+ operationId: getPrimaryCurrency
parameters:
- name: X-Trace-Id
in: header
@@ -12690,81 +14313,51 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: limit
- description: Number of items per page. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 10
- - in: query
- name: page
- description: Page number. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 1
- - in: query
- name: start
- description: |
- A date formatted YYYY-MM-DD. This is the start date of the selected range (inclusive).
- required: false
- schema:
- type: string
- format: date
- example: "2018-09-17"
- - in: query
- name: end
- description: |
- A date formatted YYYY-MM-DD. This is the end date of the selected range (inclusive).
- required: false
- schema:
- type: string
- format: date
- example: "2018-09-17"
- - in: query
- name: type
- description: Optional filter on the transaction type(s) returned.
- required: false
- schema:
- $ref: '#/components/schemas/TransactionTypeFilter'
+
+ tags:
+ - currencies
responses:
"200":
- description: A list of transactions.
+ description: "The primary currency"
content:
- application/vnd.api+json:
+ application/json:
schema:
- $ref: '#/components/schemas/TransactionArray'
+ $ref: "#/components/schemas/CurrencySingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- post:
- summary: Store a new transaction
- description: Creates a new transaction. The data required can be submitted as a JSON body or as a list of parameters.
- operationId: storeTransaction
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/transaction-journals/{id}/links:
+ get:
+ summary: Lists all the transaction links for an individual journal (individual split).
+ description: Lists all the transaction links for an individual journal (a split). Don't use the group ID, you need the actual underlying journal (the split).
+ operationId: listLinksByJournal
+ tags:
+ - transactions
parameters:
- name: X-Trace-Id
in: header
@@ -12775,60 +14368,73 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- tags:
- - transactions
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/TransactionStore'
- application/x-www-form-urlencoded:
- schema:
- $ref: '#/components/schemas/TransactionStore'
- description: "JSON array or key=value pairs with the necessary transaction information. See the model for the exact specifications."
- required: true
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
+ - in: path
+ name: id
+ required: true
+ schema:
+ type: string
+ example: "123"
+ description: The ID of the transaction journal / the split.
+
responses:
"200":
- description: 'New transaction stored(s), result in response.'
+ description: A list of transaction links.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionSingle'
- "422":
- description: 'Validation error. The body will have the exact details.'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/TransactionLinkArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/transactions/{id}:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/transaction-journals/{id}:
get:
- summary: Get a single transaction.
- description: Get a single transaction.
- operationId: getTransaction
+ summary: Get a single transaction, based on one of the underlying transaction journals (transaction splits).
+ description: Get a single transaction by underlying journal (split).
+ operationId: getTransactionByJournal
parameters:
- name: X-Trace-Id
in: header
@@ -12839,52 +14445,57 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the transaction.
+ description: The ID of the transaction journal (split).
tags:
- transactions
responses:
"200":
- description: 'The requested transaction.'
+ description: "The requested transaction."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionSingle'
+ $ref: "#/components/schemas/TransactionSingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- put:
- operationId: updateTransaction
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ delete:
+ operationId: deleteTransactionJournal
+ description: Delete an individual journal (split) from a transaction.
+ summary: Delete split from transaction
tags:
- transactions
- description: Update an existing transaction.
- summary: Update existing transaction. For more information, see https://docs.firefly-iii.org/references/firefly-iii/api/specials/
parameters:
- name: X-Trace-Id
in: header
@@ -12895,64 +14506,50 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The ID of the transaction.
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/TransactionUpdate'
- application/x-www-form-urlencoded:
- schema:
- $ref: '#/components/schemas/TransactionUpdate'
- description: JSON array with updated transaction information. See the model for the exact specifications.
- required: true
+ description: The ID of the transaction journal (the split) you wish to delete.
responses:
- "200":
- description: 'Updated transaction stored, result in response'
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/TransactionSingle'
- "422":
- description: 'Validation error. The body will have the exact details.'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ "204":
+ description: Transaction journal (split) deleted.
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- delete:
- operationId: deleteTransaction
- description: Delete a transaction.
- summary: Delete a transaction.
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/transactions/{id}/attachments:
+ get:
+ summary: Lists all attachments.
+ description: Lists all attachments.
+ operationId: listAttachmentByTransaction
tags:
- transactions
parameters:
@@ -12965,6 +14562,25 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
- in: path
name: id
required: true
@@ -12972,41 +14588,49 @@ paths:
type: string
example: "123"
description: The ID of the transaction.
+
responses:
- "204":
- description: Transaction deleted.
+ "200":
+ description: A list of attachments
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/AttachmentArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/user-groups:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/transactions/{id}/piggy-bank-events:
get:
- summary: |
- List all the user groups available to this user.
- description: "List all the user groups available to this user. These are essentially the 'financial administrations' that Firefly III supports."
- operationId: listUserGroups
+ summary: Lists all piggy bank events.
+ description: Lists all piggy bank events.
+ operationId: listEventByTransaction
tags:
- - user_groups
+ - transactions
parameters:
- name: X-Trace-Id
in: header
@@ -13017,6 +14641,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -13025,6 +14650,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -13033,45 +14659,58 @@ paths:
type: integer
format: int32
example: 1
+
+ - in: path
+ name: id
+ required: true
+ schema:
+ type: string
+ example: "123"
+ description: The ID of the transaction.
+
responses:
"200":
- description: A list of user groups.
+ description: A list of piggy bank events.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/UserGroupArray'
+ $ref: "#/components/schemas/PiggyBankEventArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/user-groups/{id}:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/transactions:
get:
+ summary: |
+ List all the user's transactions.
+ description: List all the user's transactions.
+ operationId: listTransaction
tags:
- - user_groups
- summary: Get a single user group.
- description: |
- Returns a single user group by its ID.
- operationId: getUserGroup
+ - transactions
parameters:
- name: X-Trace-Id
in: header
@@ -13082,49 +14721,88 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: path
- name: id
- required: true
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
+ - in: query
+ name: start
+ description: |
+ A date formatted YYYY-MM-DD. This is the start date of the selected range (inclusive).
+ required: false
schema:
type: string
- example: "123"
- description: The ID of the user group.
+ format: date
+ example: "2025-11-01"
+ - in: query
+ name: end
+ description: |
+ A date formatted YYYY-MM-DD. This is the end date of the selected range (inclusive).
+ required: false
+ schema:
+ type: string
+ format: date
+ example: "2025-11-30"
+ - in: query
+ name: type
+ description: Optional filter on the transaction type(s) returned.
+ required: false
+ schema:
+ $ref: "#/components/schemas/TransactionTypeFilter"
responses:
+ "200":
+ description: A list of transactions.
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/TransactionArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- "200":
- description: 'The requested user group'
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/UserGroupSingle'
- put:
- summary: Update an existing user group.
- description: |
- Used to update a single user group. The available fields are still limited.
- operationId: updateUserGroup
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ post:
+ summary: Store a new transaction
+ description: Creates a new transaction. The data required can be submitted as a JSON body or as a list of parameters.
+ operationId: storeTransaction
parameters:
- name: X-Trace-Id
in: header
@@ -13135,69 +14813,66 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: path
- name: id
- required: true
- schema:
- type: string
- example: "1"
- description: The ID of the account.
+
tags:
- - user_groups
+ - transactions
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/UserGroupUpdate'
+ $ref: "#/components/schemas/TransactionStore"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/UserGroupUpdate'
- description: JSON array or formdata with new user group information. See the model for the exact specifications.
+ $ref: "#/components/schemas/TransactionStore"
+ description: "JSON array or key=value pairs with the necessary transaction information. See the model for the exact specifications."
required: true
responses:
+ "200":
+ description: "New transaction stored(s), result in response."
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/TransactionSingle"
+ "422":
+ description: "Validation error. The body will have the exact details."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- "422":
- description: 'Validation error. The body will have the exact details.'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
- "200":
- description: 'Updated user group is stored, result is in the response'
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/UserGroupSingle'
- /v1/search/accounts:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/transactions/{id}:
get:
- summary: Search for accounts
- description: Search for accounts
- operationId: searchAccounts
- tags:
- - search
+ summary: Get a single transaction.
+ description: Get a single transaction.
+ operationId: getTransaction
parameters:
- name: X-Trace-Id
in: header
@@ -13208,82 +14883,57 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: limit
- description: Number of items per page. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 10
- - in: query
- name: page
- description: Page number. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 1
- - in: query
- name: query
- description: The query you wish to search for.
+
+ - in: path
+ name: id
required: true
schema:
type: string
- example: "checking"
- - in: query
- name: type
- description: The type of accounts you wish to limit the search to.
- required: false
- schema:
- $ref: '#/components/schemas/AccountTypeFilter'
- - in: query
- name: field
- description: The account field(s) you want to search in.
- required: true
- schema:
- $ref: '#/components/schemas/AccountSearchFieldFilter'
+ example: "123"
+ description: The ID of the transaction.
+ tags:
+ - transactions
responses:
"200":
- description: A list of accounts.
+ description: "The requested transaction."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/AccountArray'
+ $ref: "#/components/schemas/TransactionSingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/search/transactions:
- get:
- summary: Search for transactions
- description: Searches through the users transactions.
- externalDocs:
- description: Search Documentation
- url: https://docs.firefly-iii.org/how-to/firefly-iii/features/search/
- operationId: searchTransactions
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ put:
+ operationId: updateTransaction
tags:
- - search
+ - transactions
+ description: Update an existing transaction.
+ summary: Update existing transaction. For more information, see https://docs.firefly-iii.org/references/firefly-iii/api/specials/
parameters:
- name: X-Trace-Id
in: header
@@ -13294,66 +14944,72 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: limit
- description: Number of items per page. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 10
- - in: query
- name: page
- description: Page number. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 1
- - in: query
- name: query
- description: The query you wish to search for.
+
+ - in: path
+ name: id
required: true
schema:
type: string
- example: "groceries"
+ example: "123"
+ description: The ID of the transaction.
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/TransactionUpdate"
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/TransactionUpdate"
+ description: JSON array with updated transaction information. See the model for the exact specifications.
+ required: true
responses:
"200":
- description: A list of transactions.
+ description: "Updated transaction stored, result in response"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/TransactionArray'
+ $ref: "#/components/schemas/TransactionSingle"
+ "422":
+ description: "Validation error. The body will have the exact details."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/summary/basic:
- get:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ delete:
+ operationId: deleteTransaction
+ description: Delete a transaction.
+ summary: Delete a transaction.
tags:
- - summary
- operationId: getBasicSummary
- summary: Returns basic sums of the users data.
+ - transactions
parameters:
- name: X-Trace-Id
in: header
@@ -13364,68 +15020,53 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: start
- description: |
- A date formatted YYYY-MM-DD.
- required: true
- schema:
- type: string
- format: date
- - in: query
- name: end
- description: |
- A date formatted YYYY-MM-DD.
+
+ - in: path
+ name: id
required: true
schema:
type: string
- format: date
- - in: query
- name: currency_code
- description: |
- A currency code like EUR or USD, to filter the result.
- required: false
- schema:
- type: string
- format: string
- description: |
- Returns basic sums of the users data, like the net worth, spent and earned amounts. It is multi-currency, and is used in Firefly III to populate the dashboard.
+ example: "123"
+ description: The ID of the transaction.
responses:
- '200':
- description: An array of sums. It depends on the user what you can expect to get back, so please try this out on the demo site.
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/BasicSummary'
+ "204":
+ description: Transaction deleted.
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/about:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/user-groups:
get:
+ summary: |
+ List all the user groups available to this user.
+ description: "List all the user groups available to this user. These are essentially the 'financial administrations' that Firefly III supports."
+ operationId: listUserGroups
tags:
- - about
- operationId: getAbout
+ - user_groups
parameters:
- name: X-Trace-Id
in: header
@@ -13436,46 +15077,68 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- summary: System information end point.
- description: |
- Returns general system information and versions of the (supporting) software.
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
responses:
+ "200":
+ description: A list of user groups.
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/UserGroupArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- "200":
- description: The available system information
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/SystemInfo'
- /v1/about/user:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/user-groups/{id}:
get:
tags:
- - about
- summary: Currently authenticated user endpoint.
- operationId: getCurrentUser
+ - user_groups
+ summary: Get a single user group.
+ description: |
+ Returns a single user group by its ID.
+ operationId: getUserGroup
parameters:
- name: X-Trace-Id
in: header
@@ -13486,44 +15149,54 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- description: |
- Returns the currently authenticated user.
+
+ - in: path
+ name: id
+ required: true
+ schema:
+ type: string
+ example: "123"
+ description: The ID of the user group.
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: The user
+ description: "The requested user group"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/UserSingle'
- /v1/configuration:
- get:
- summary: Get Firefly III system configuration values.
- description: Returns all editable and not-editable configuration values for this Firefly III installation
- operationId: getConfiguration
+ $ref: "#/components/schemas/UserGroupSingle"
+ put:
+ summary: Update an existing user group.
+ description: |
+ Used to update a single user group. The available fields are still limited.
+ operationId: updateUserGroup
parameters:
- name: X-Trace-Id
in: header
@@ -13534,49 +15207,75 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: path
+ name: id
+ required: true
+ schema:
+ type: string
+ example: "1"
+ description: The ID of the account.
tags:
- - configuration
+ - user_groups
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UserGroupUpdate"
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/UserGroupUpdate"
+ description: JSON array or form-data with new user group information. See the model for the exact specifications.
+ required: true
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- "200":
- description: System configuration values
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ "422":
+ description: "Validation error. The body will have the exact details."
content:
- application/x-www-form-urlencoded:
- schema:
- $ref: '#/components/schemas/ConfigurationArray'
application/json:
schema:
- $ref: '#/components/schemas/ConfigurationArray'
- /v1/configuration/{name}:
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
+ "200":
+ description: "Updated user group is stored, result is in the response"
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/UserGroupSingle"
+ /v1/search/accounts:
get:
- summary: Get a single Firefly III system configuration value
- description: Returns one configuration variable for this Firefly III installation
- operationId: getSingleConfiguration
+ summary: Search for accounts
+ description: Search for accounts
+ operationId: searchAccounts
tags:
- - configuration
+ - search
parameters:
- name: X-Trace-Id
in: header
@@ -13587,49 +15286,89 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: path
- name: name
- required: true
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
schema:
- $ref: '#/components/schemas/ConfigValueFilter'
- description: The name of the configuration value you want to know.
- responses:
- "401":
- description: Unauthenticated
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
- "404":
- description: Page not found
- content:
- application/json:
+ type: integer
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
+ - in: query
+ name: query
+ description: The query you wish to search for.
+ required: true
+ schema:
+ type: string
+ example: "checking"
+ - in: query
+ name: type
+ description: The type of accounts you wish to limit the search to.
+ required: false
+ schema:
+ $ref: "#/components/schemas/AccountTypeFilter"
+ - in: query
+ name: field
+ description: The account field(s) you want to search in.
+ required: true
+ schema:
+ $ref: "#/components/schemas/AccountSearchFieldFilter"
+ responses:
+ "200":
+ description: A list of accounts.
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/AccountArray"
+ "401":
+ description: Unauthenticated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
+ "404":
+ description: Page not found
+ content:
+ application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- "200":
- description: One system configuration value
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigurationSingle'
- put:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/search/transactions:
+ get:
+ summary: Search for transactions
+ description: Searches through the users transactions.
+ externalDocs:
+ description: Search Documentation
+ url: https://docs.firefly-iii.org/how-to/firefly-iii/features/search/
+ operationId: searchTransactions
tags:
- - configuration
- summary: Update configuration value
- operationId: setConfiguration
- description: Set a single configuration value. Not all configuration values can be updated so the list of accepted configuration variables is small.
+ - search
parameters:
- name: X-Trace-Id
in: header
@@ -13640,63 +15379,74 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: path
- name: name
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
+ - in: query
+ name: query
+ description: The query you wish to search for.
required: true
schema:
- $ref: '#/components/schemas/ConfigValueUpdateFilter'
- description: The name of the configuration value you want to update.
+ type: string
+ example: "groceries"
+
responses:
"200":
- description: 'New configuration value stored, result in response.'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigurationSingle'
- "422":
- description: 'Validation error. The body will have the exact details.'
+ description: A list of transactions.
content:
- application/json:
+ application/vnd.api+json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/TransactionArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- requestBody:
- description: JSON array with the necessary account information or key=value pairs. See the model for the exact specifications.
- content:
- application/x-www-form-urlencoded:
- schema:
- $ref: '#/components/schemas/ConfigurationUpdate'
- application/json:
- schema:
- $ref: '#/components/schemas/ConfigurationUpdate'
- required: true
- /v1/cron/{cliToken}:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/summary/basic:
get:
tags:
- - about
+ - summary
+ operationId: getBasicSummary
+ summary: Returns basic sums of the users data.
parameters:
- name: X-Trace-Id
in: header
@@ -13707,84 +15457,73 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: path
- name: cliToken
+
+ - in: query
+ name: start
+ description: |
+ A date formatted YYYY-MM-DD.
required: true
schema:
type: string
- format: string
- example: d5ea6b5fb774618dd6ad6ba6e0a7f55c
- description: The CLI token of any user in Firefly III, required to run the cron job.
+ format: date
- in: query
- name: date
+ name: end
description: |
- A date formatted YYYY-MM-DD. This can be used to make the cron job pretend it's running
- on another day.
- required: false
+ A date formatted YYYY-MM-DD.
+ required: true
schema:
type: string
format: date
- example: "2018-09-17"
- in: query
- name: force
+ name: currency_code
description: |
- Forces the cron job to fire, regardless of whether it has fired before. This may result
- in double transactions or weird budgets, so be careful.
+ A currency code like EUR or USD, to filter the result.
required: false
schema:
- type: boolean
- format: boolean
- example: false
- operationId: getCron
- summary: Cron job endpoint
+ type: string
+ format: string
description: |
- Firefly III has one endpoint for its various cron related tasks. Send a GET to this endpoint
- to run the cron. The cron requires the CLI token to be present. The cron job will fire for all
- users.
+ Returns basic sums of the users data, like the net worth, spent and earned amounts. It is multi-currency, and is used in Firefly III to populate the dashboard.
responses:
"200":
- description: The result of the cron job(s) firing.
+ description: An array of sums. It depends on the user what you can expect to get back, so please try this out on the demo site.
content:
- application/json:
+ application/vnd.api+json:
schema:
- $ref: '#/components/schemas/CronResult'
+ $ref: "#/components/schemas/BasicSummary"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
- "422":
- description: 'Validation error. The body will have the exact details.'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/users:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/about:
get:
- summary: List all users.
- description: List all the users in this instance of Firefly III.
- operationId: listUser
tags:
- - users
+ - about
+ operationId: getAbout
parameters:
- name: X-Trace-Id
in: header
@@ -13795,58 +15534,51 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: limit
- description: Number of items per page. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 10
- - in: query
- name: page
- description: Page number. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 1
+
+ summary: System information end point.
+ description: |
+ Returns general system information and versions of the (supporting) software.
responses:
- "200":
- description: A list of users.
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/UserArray'
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- post:
- summary: Store a new user
- description: |
- Creates a new user. The data required can be submitted as a JSON body or as a list of parameters. The user will be given a random password, which they can reset using the "forgot password" function.
- operationId: storeUser
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ "200":
+ description: The available system information
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/SystemInfo"
+ /v1/about/user:
+ get:
+ tags:
+ - about
+ summary: Currently authenticated user endpoint.
+ operationId: getCurrentUser
parameters:
- name: X-Trace-Id
in: header
@@ -13857,60 +15589,49 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- tags:
- - users
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/User'
- application/x-www-form-urlencoded:
- schema:
- $ref: '#/components/schemas/User'
- description: "JSON array or key=value pairs with the necessary user information. See the model for the exact specifications."
- required: true
+
+ description: |
+ Returns the currently authenticated user.
responses:
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'New user stored, result in response.'
+ description: The user
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/UserSingle'
- "422":
- description: 'Validation error. The body will have the exact details.'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
- /v1/users/{id}:
+ $ref: "#/components/schemas/UserSingle"
+ /v1/configuration:
get:
- summary: Get a single user.
- description: Gets all info of a single user.
- operationId: getUser
+ summary: Get Firefly III system configuration values.
+ description: Returns all editable and not-editable configuration values for this Firefly III installation
+ operationId: getConfiguration
parameters:
- name: X-Trace-Id
in: header
@@ -13921,52 +15642,54 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: path
- name: id
- required: true
- schema:
- type: string
- example: "123"
- description: The user ID.
+
tags:
- - users
+ - configuration
responses:
- "200":
- description: 'The requested user.'
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/UserSingle'
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- put:
- operationId: updateUser
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ "200":
+ description: System configuration values
+ content:
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/ConfigurationArray"
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ConfigurationArray"
+ /v1/configuration/{name}:
+ get:
+ summary: Get a single Firefly III system configuration value
+ description: Returns one configuration variable for this Firefly III installation
+ operationId: getSingleConfiguration
tags:
- - users
- description: Update existing user.
- summary: Update an existing user's information.
+ - configuration
parameters:
- name: X-Trace-Id
in: header
@@ -13977,66 +15700,127 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
- name: id
+ name: name
required: true
schema:
- type: string
- example: "123"
- description: The user ID.
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/User'
- application/x-www-form-urlencoded:
- schema:
- $ref: '#/components/schemas/User'
- description: JSON array with updated user information. See the model for the exact specifications.
- required: true
+ $ref: "#/components/schemas/ConfigValueFilter"
+ description: The name of the configuration value you want to know.
responses:
+ "401":
+ description: Unauthenticated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
+ "404":
+ description: Page not found
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/NotFoundResponse"
+
+ "400":
+ description: Bad request
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ "500":
+ description: Internal exception
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
"200":
- description: 'Updated user stored, result in response'
+ description: One system configuration value
content:
- application/vnd.api+json:
+ application/json:
schema:
- $ref: '#/components/schemas/UserSingle'
+ $ref: "#/components/schemas/ConfigurationSingle"
+ put:
+ tags:
+ - configuration
+ summary: Update configuration value
+ operationId: setConfiguration
+ description: Set a single configuration value. Not all configuration values can be updated so the list of accepted configuration variables is small.
+ parameters:
+ - name: X-Trace-Id
+ in: header
+ description: Unique identifier associated with this request.
+ required: false
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+ schema:
+ type: string
+ format: uuid
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: path
+ name: name
+ required: true
+ schema:
+ $ref: "#/components/schemas/ConfigValueUpdateFilter"
+ description: The name of the configuration value you want to update.
+ responses:
+ "200":
+ description: "New configuration value stored, result in response."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ConfigurationSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- delete:
- operationId: deleteUser
- description: Delete a user. You cannot delete the user you're authenticated with. This cannot be undone. Be careful!
- summary: Delete a user.
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ requestBody:
+ description: JSON array with the necessary account information or key=value pairs. See the model for the exact specifications.
+ content:
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/ConfigurationUpdate"
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ConfigurationUpdate"
+ required: true
+ /v1/cron/{cliToken}:
+ get:
tags:
- - users
+ - about
parameters:
- name: X-Trace-Id
in: header
@@ -14047,47 +15831,90 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
- name: id
+ name: cliToken
required: true
schema:
type: string
- example: "123"
- description: The user ID.
+ format: string
+ example: d5ea6b5fb774618dd6ad6ba6e0a7f55c
+ description: The CLI token of any user in Firefly III, required to run the cron job.
+ - in: query
+ name: date
+ description: |
+ A date formatted YYYY-MM-DD. This can be used to make the cron job pretend it's running
+ on another day.
+ required: false
+ schema:
+ type: string
+ format: date
+ example: "2025-11-01"
+ - in: query
+ name: force
+ description: |
+ Forces the cron job to fire, regardless of whether it has fired before. This may result
+ in double transactions or weird budgets, so be careful.
+ required: false
+ schema:
+ type: boolean
+ format: boolean
+ example: false
+ operationId: getCron
+ summary: Cron job endpoint
+ description: |
+ Firefly III has one endpoint for its various cron related tasks. Send a GET to this endpoint
+ to run the cron. The cron requires the CLI token to be present. The cron job will fire for all
+ users.
responses:
- "204":
- description: User deleted.
+ "200":
+ description: The result of the cron job(s) firing.
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/CronResult"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
+ "422":
+ description: "Validation error. The body will have the exact details."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/preferences:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/users:
get:
- summary: List all users preferences.
- description: List all of the preferences of the user.
- operationId: listPreference
+ summary: List all users.
+ description: List all the users in this instance of Firefly III.
+ operationId: listUser
tags:
- - preferences
+ - users
parameters:
- name: X-Trace-Id
in: header
@@ -14098,6 +15925,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -14106,6 +15934,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -14114,43 +15943,47 @@ paths:
type: integer
format: int32
example: 1
+
responses:
"200":
- description: A list of preferences.
+ description: A list of users.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/PreferenceArray'
+ $ref: "#/components/schemas/UserArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
post:
- tags:
- - preferences
- summary: Store a new preference for this user.
- operationId: storePreference
- description: This endpoint creates a new preference. The name and data are free-format, and entirely up to you. If the preference is not used in Firefly III itself it may not be configurable through the user interface, but you can use this endpoint to persist custom data for your own app.
+ summary: Store a new user
+ description: |
+ Creates a new user. The data required can be submitted as a JSON body or as a list of parameters. The user will be given a random password, which they can reset using the "forgot password" function.
+ operationId: storeUser
parameters:
- name: X-Trace-Id
in: header
@@ -14161,58 +15994,66 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ tags:
+ - users
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/User"
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/User"
+ description: "JSON array or key=value pairs with the necessary user information. See the model for the exact specifications."
+ required: true
responses:
- "200":
- description: 'New account stored, result in response.'
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/PreferenceSingle'
- "422":
- description: 'Validation error. The body will have the exact details.'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/Preference'
- application/x-www-form-urlencoded:
- schema:
- $ref: '#/components/schemas/Preference'
- description: JSON array with the necessary preference information or key=value pairs. See the model for the exact specifications.
- required: true
- /v1/preferences/{name}:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ "200":
+ description: "New user stored, result in response."
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/UserSingle"
+ "422":
+ description: "Validation error. The body will have the exact details."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
+ /v1/users/{id}:
get:
- summary: Return a single preference.
- description: Return a single preference and the value.
- operationId: getPreference
+ summary: Get a single user.
+ description: Gets all info of a single user.
+ operationId: getUser
parameters:
- name: X-Trace-Id
in: header
@@ -14223,51 +16064,57 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
- name: name
+ name: id
required: true
schema:
type: string
- format: string
- example: currencyPreference
- description: The name of the preference.
+ example: "123"
+ description: The user ID.
tags:
- - preferences
+ - users
responses:
"200":
- description: A single preference.
+ description: "The requested user."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/PreferenceSingle'
+ $ref: "#/components/schemas/UserSingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
put:
- summary: Update preference
- description: Update a user's preference.
- operationId: updatePreference
+ operationId: updateUser
+ tags:
+ - users
+ description: Update existing user.
+ summary: Update an existing user's information.
parameters:
- name: X-Trace-Id
in: header
@@ -14278,68 +16125,72 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
- name: name
+ name: id
required: true
schema:
type: string
- format: string
- example: currencyPreference
- description: The name of the preference. Will always overwrite. Will be created if it does not exist.
- tags:
- - preferences
+ example: "123"
+ description: The user ID.
requestBody:
content:
application/json:
schema:
- $ref: '#/components/schemas/PreferenceUpdate'
+ $ref: "#/components/schemas/User"
application/x-www-form-urlencoded:
schema:
- $ref: '#/components/schemas/PreferenceUpdate'
- description: "JSON array or key=value pairs with the necessary preference information. See the model for the exact specifications."
+ $ref: "#/components/schemas/User"
+ description: JSON array with updated user information. See the model for the exact specifications.
required: true
responses:
"200":
- description: 'Updated preference.'
+ description: "Updated user stored, result in response"
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/PreferenceSingle'
+ $ref: "#/components/schemas/UserSingle"
"422":
- description: 'Validation error. The body will have the exact details.'
+ description: "Validation error. The body will have the exact details."
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/webhooks/{id}/messages:
- get:
- summary: Get all the messages of a single webhook.
- description: When a webhook is triggered the actual message that will be send is stored in a "message". You can view and analyse these messages.
- operationId: getWebhookMessages
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ delete:
+ operationId: deleteUser
+ description: Delete a user. You cannot delete the user you're authenticated with. This cannot be undone. Be careful.
+ summary: Delete a user.
+ tags:
+ - users
parameters:
- name: X-Trace-Id
in: header
@@ -14350,51 +16201,52 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
schema:
type: string
example: "123"
- description: The webhook ID.
- tags:
- - webhooks
+ description: The user ID.
responses:
- "200":
- description: A list of webhook messages.
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/WebhookMessageArray'
+ "204":
+ description: User deleted.
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/webhooks/{id}/messages/{messageId}:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/preferences:
get:
- summary: Get a single message from a webhook.
- description: When a webhook is triggered it will store the actual content of the webhook in a webhook message. You can view and analyse a single one using this endpoint.
- operationId: getSingleWebhookMessage
+ summary: List all users preferences.
+ description: List all of the preferences of the user.
+ operationId: listPreference
+ tags:
+ - preferences
parameters:
- name: X-Trace-Id
in: header
@@ -14405,59 +16257,66 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: path
- name: id
- required: true
- schema:
- type: string
- example: "123"
- description: The webhook ID.
- - in: path
- name: messageId
- required: true
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
schema:
type: integer
- example: 1
- description: The webhook message ID.
- tags:
- - webhooks
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
responses:
"200":
- description: 'A single webhook message.'
+ description: A list of preferences.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/WebhookMessageSingle'
+ $ref: "#/components/schemas/PreferenceArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- delete:
- operationId: deleteWebhookMessage
- summary: Delete a webhook message.
- description: Delete a webhook message. Any time a webhook is triggered the message is stored before it's sent. You can delete them before or after sending.
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ post:
tags:
- - webhooks
+ - preferences
+ summary: Store a new preference for this user.
+ operationId: storePreference
+ description: This endpoint creates a new preference. The name and data are free-format, and entirely up to you. If the preference is not used in Firefly III itself it may not be configurable through the user interface, but you can use this endpoint to persist custom data for your own app.
parameters:
- name: X-Trace-Id
in: header
@@ -14468,52 +16327,64 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: path
- name: id
- required: true
- schema:
- type: string
- example: "123"
- description: The webhook ID.
- - in: path
- name: messageId
- required: true
- schema:
- type: integer
- example: 1
- description: The webhook message ID.
+
responses:
- "204":
- description: Webhook message deleted.
+ "200":
+ description: "New account stored, result in response."
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/PreferenceSingle"
+ "422":
+ description: "Validation error. The body will have the exact details."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/webhooks/{id}/messages/{messageId}/attempts:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/Preference"
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/Preference"
+ description: JSON array with the necessary preference information or key=value pairs. See the model for the exact specifications.
+ required: true
+ /v1/preferences/{name}:
get:
- summary: Get all the failed attempts of a single webhook message.
- description: When a webhook message fails to send it will store the failure in an "attempt". You can view and analyse these. Webhook messages that receive too many attempts (failures) will not be sent again. You must first clear out old attempts before the message can go out again.
- operationId: getWebhookMessageAttempts
+ summary: Return a single preference.
+ description: Return a single preference and the value.
+ operationId: getPreference
parameters:
- name: X-Trace-Id
in: header
@@ -14524,74 +16395,56 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: query
- name: limit
- description: Number of items per page. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 10
- - in: query
- name: page
- description: Page number. The default pagination is per 50 items.
- required: false
- schema:
- type: integer
- format: int32
- example: 1
+
- in: path
- name: id
+ name: name
required: true
schema:
type: string
- example: "123"
- description: The webhook ID.
- - in: path
- name: messageId
- required: true
- schema:
- type: integer
- example: 1
- description: The webhook message ID.
+ format: string
+ example: currencyPreference
+ description: The name of the preference.
tags:
- - webhooks
+ - preferences
responses:
"200":
- description: A list of webhook attempts.
+ description: A single preference.
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/WebhookAttemptArray'
+ $ref: "#/components/schemas/PreferenceSingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/webhooks/{id}/messages/{messageId}/attempts/{attemptId}:
- get:
- summary: Get a single failed attempt from a single webhook message.
- description: When a webhook message fails to send it will store the failure in an "attempt". You can view and analyse these. Webhooks messages that receive too many attempts (failures) will not be fired. You must first clear out old attempts and try again. This endpoint shows you the details of a single attempt. The ID of the attempt must match the corresponding webhook and webhook message.
- operationId: getSingleWebhookMessageAttempt
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ put:
+ summary: Update preference
+ description: Update a user's preference.
+ operationId: updatePreference
parameters:
- name: X-Trace-Id
in: header
@@ -14602,66 +16455,74 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
- name: id
+ name: name
required: true
schema:
type: string
- example: "123"
- description: The webhook ID.
- - in: path
- name: messageId
- required: true
- schema:
- type: integer
- example: 1
- description: The webhook message ID.
- - in: path
- name: attemptId
- required: true
- schema:
- type: integer
- example: 1
- description: The webhook attempt ID.
+ format: string
+ example: currencyPreference
+ description: The name of the preference. Will always overwrite. Will be created if it does not exist.
tags:
- - webhooks
+ - preferences
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/PreferenceUpdate"
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/PreferenceUpdate"
+ description: "JSON array or key=value pairs with the necessary preference information. See the model for the exact specifications."
+ required: true
responses:
"200":
- description: 'A single webhook attempt.'
+ description: "Updated preference."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/WebhookAttemptSingle'
+ $ref: "#/components/schemas/PreferenceSingle"
+ "422":
+ description: "Validation error. The body will have the exact details."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- delete:
- operationId: deleteWebhookMessageAttempt
- summary: Delete a webhook attempt.
- description: Delete a webhook message attempt. If you delete all attempts for a webhook message, Firefly III will (once again) assume all is well with the webhook message and will try to send it again.
- tags:
- - webhooks
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/webhooks/{id}/messages:
+ get:
+ summary: Get all the messages of a single webhook.
+ description: When a webhook is triggered the actual message that will be send is stored in a "message". You can view and analyse these messages.
+ operationId: getWebhookMessages
parameters:
- name: X-Trace-Id
in: header
@@ -14672,6 +16533,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -14679,52 +16541,48 @@ paths:
type: string
example: "123"
description: The webhook ID.
- - in: path
- name: messageId
- required: true
- schema:
- type: integer
- example: 1
- description: The webhook message ID.
- - in: path
- name: attemptId
- required: true
- schema:
- type: integer
- example: 1
- description: The webhook message attempt ID.
+ tags:
+ - webhooks
responses:
- "204":
- description: Webhook message attempt deleted.
+ "200":
+ description: A list of webhook messages.
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/WebhookMessageArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/webhooks/{id}/submit:
- post:
- summary: Submit messages for a webhook.
- description: This endpoint will submit any open messages for this webhook. This is an asynchronous operation, so you can't see the result. Refresh the webhook message and/or the webhook message attempts to see the results. This may take some time if the webhook receiver is slow.
- operationId: submitWebook
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/webhooks/{id}/messages/{messageId}:
+ get:
+ summary: Get a single message from a webhook.
+ description: When a webhook is triggered it will store the actual content of the webhook in a webhook message. You can view and analyse a single one using this endpoint.
+ operationId: getSingleWebhookMessage
parameters:
- name: X-Trace-Id
in: header
@@ -14735,6 +16593,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -14742,36 +16601,56 @@ paths:
type: string
example: "123"
description: The webhook ID.
+ - in: path
+ name: messageId
+ required: true
+ schema:
+ type: integer
+ example: 1
+ description: The webhook message ID.
tags:
- webhooks
responses:
- "400":
- description: Bad request
+ "200":
+ description: "A single webhook message."
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/WebhookMessageSingle"
+ "401":
+ description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
- "200":
- description: OK!
- "204":
- description: No messages to send, so did nothing.
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
+ "400":
+ description: Bad request
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/webhooks/{id}/trigger-transaction/{transactionId}:
- post:
- summary: Trigger webhook for a given transaction.
- description: This endpoint will execute this webhook for a given transaction ID. This is an asynchronous operation, so you can't see the result. Refresh the webhook message and/or the webhook message attempts to see the results. This may take some time if the webhook receiver is slow.
- operationId: triggerTransactionWebhook
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ delete:
+ operationId: deleteWebhookMessage
+ summary: Delete a webhook message.
+ description: Delete a webhook message. Any time a webhook is triggered the message is stored before it's sent. You can delete them before or after sending.
+ tags:
+ - webhooks
parameters:
- name: X-Trace-Id
in: header
@@ -14782,6 +16661,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
@@ -14790,42 +16670,48 @@ paths:
example: "123"
description: The webhook ID.
- in: path
- name: transactionId
+ name: messageId
required: true
schema:
- type: string
- example: "123"
- description: The transaction ID.
- tags:
- - webhooks
+ type: integer
+ example: 1
+ description: The webhook message ID.
responses:
- "400":
- description: Bad request
+ "204":
+ description: Webhook message deleted.
+ "401":
+ description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
- "204":
- description: Webhook triggered successfully.
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
+ "400":
+ description: Bad request
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/webhooks:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/webhooks/{id}/messages/{messageId}/attempts:
get:
- summary: List all webhooks.
- description: List all the user's webhooks.
- operationId: listWebhook
- tags:
- - webhooks
+ summary: Get all the failed attempts of a single webhook message.
+ description: When a webhook message fails to send it will store the failure in an "attempt". You can view and analyse these. Webhook messages that receive too many attempts (failures) will not be sent again. You must first clear out old attempts before the message can go out again.
+ operationId: getWebhookMessageAttempts
parameters:
- name: X-Trace-Id
in: header
@@ -14836,6 +16722,7 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: query
name: limit
description: Number of items per page. The default pagination is per 50 items.
@@ -14844,6 +16731,7 @@ paths:
type: integer
format: int32
example: 10
+
- in: query
name: page
description: Page number. The default pagination is per 50 items.
@@ -14852,42 +16740,64 @@ paths:
type: integer
format: int32
example: 1
- responses:
- "200":
- description: A list of webhooks.
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/WebhookArray'
- "401":
+
+ - in: path
+ name: id
+ required: true
+ schema:
+ type: string
+ example: "123"
+ description: The webhook ID.
+ - in: path
+ name: messageId
+ required: true
+ schema:
+ type: integer
+ example: 1
+ description: The webhook message ID.
+
+ tags:
+ - webhooks
+ responses:
+ "200":
+ description: A list of webhook attempts.
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/WebhookAttemptArray"
+ "401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- post:
- summary: Store a new webhook
- description: |
- Creates a new webhook. The data required can be submitted as a JSON body or as a list of parameters. The webhook will be given a random secret.
- operationId: storeWebhook
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/webhooks/{id}/messages/{messageId}/attempts/{attemptId}:
+ get:
+ summary: Get a single failed attempt from a single webhook message.
+ description: When a webhook message fails to send it will store the failure in an "attempt". You can view and analyse these. Webhooks messages that receive too many attempts (failures) will not be fired. You must first clear out old attempts and try again. This endpoint shows you the details of a single attempt. The ID of the attempt must match the corresponding webhook and webhook message.
+ operationId: getSingleWebhookMessageAttempt
parameters:
- name: X-Trace-Id
in: header
@@ -14898,60 +16808,71 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: path
+ name: id
+ required: true
+ schema:
+ type: string
+ example: "123"
+ description: The webhook ID.
+ - in: path
+ name: messageId
+ required: true
+ schema:
+ type: integer
+ example: 1
+ description: The webhook message ID.
+ - in: path
+ name: attemptId
+ required: true
+ schema:
+ type: integer
+ example: 1
+ description: The webhook attempt ID.
tags:
- webhooks
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/WebhookStore'
- application/x-www-form-urlencoded:
- schema:
- $ref: '#/components/schemas/WebhookStore'
- description: "JSON array or key=value pairs with the necessary webhook information. See the model for the exact specifications."
- required: true
responses:
"200":
- description: 'New webhook stored, result in response.'
+ description: "A single webhook attempt."
content:
application/vnd.api+json:
schema:
- $ref: '#/components/schemas/WebhookSingle'
- "422":
- description: 'Validation error. The body will have the exact details.'
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
+ $ref: "#/components/schemas/WebhookAttemptSingle"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- /v1/webhooks/{id}:
- get:
- summary: Get a single webhook.
- description: Gets all info of a single webhook.
- operationId: getWebhook
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ delete:
+ operationId: deleteWebhookMessageAttempt
+ summary: Delete a webhook attempt.
+ description: Delete a webhook message attempt. If you delete all attempts for a webhook message, Firefly III will (once again) assume all is well with the webhook message and will try to send it again.
+ tags:
+ - webhooks
parameters:
- name: X-Trace-Id
in: header
@@ -14962,53 +16883,64 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
- example: "123"
required: true
schema:
type: string
example: "123"
description: The webhook ID.
- tags:
- - webhooks
+ - in: path
+ name: messageId
+ required: true
+ schema:
+ type: integer
+ example: 1
+ description: The webhook message ID.
+ - in: path
+ name: attemptId
+ required: true
+ schema:
+ type: integer
+ example: 1
+ description: The webhook message attempt ID.
responses:
- "200":
- description: 'The requested webhook.'
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/WebhookSingle'
+ "204":
+ description: Webhook message attempt deleted.
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- put:
- operationId: updateWebhook
- tags:
- - webhooks
- summary: Update existing webhook.
- description: Update an existing webhook's information. If you wish to reset the secret, submit any value as the "secret". Firefly III will take this as a hint and reset the secret of the webhook.
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/webhooks/{id}/submit:
+ post:
+ summary: Submit messages for a webhook.
+ description: This endpoint will submit any open messages for this webhook. This is an asynchronous operation, so you can't see the result. Refresh the webhook message and/or the webhook message attempts to see the results. This may take some time if the webhook receiver is slow.
+ operationId: submitWebhook
parameters:
- name: X-Trace-Id
in: header
@@ -15019,65 +16951,103 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
- in: path
name: id
required: true
- example: "123"
schema:
type: string
example: "123"
description: The webhook ID.
- requestBody:
- content:
- application/json:
- schema:
- $ref: '#/components/schemas/WebhookUpdate'
- application/x-www-form-urlencoded:
- schema:
- $ref: '#/components/schemas/WebhookUpdate'
- description: JSON array with updated webhook information. See the model for the exact specifications.
- required: true
+ tags:
+ - webhooks
responses:
- "200":
- description: 'Updated webhook stored, result in response'
- content:
- application/vnd.api+json:
- schema:
- $ref: '#/components/schemas/WebhookSingle'
- "422":
- description: 'Validation error. The body will have the exact details.'
+ "400":
+ description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/ValidationErrorResponse'
- "401":
- description: Unauthenticated
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ "200":
+ description: OK.
+ "204":
+ description: No messages to send, so did nothing.
+ "404":
+ description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
- "404":
- description: Page not found
+ $ref: "#/components/schemas/NotFoundResponse"
+
+ "500":
+ description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/webhooks/{id}/trigger-transaction/{transactionId}:
+ post:
+ summary: Trigger webhook for a given transaction.
+ description: This endpoint will execute this webhook for a given transaction ID. This is an asynchronous operation, so you can't see the result. Refresh the webhook message and/or the webhook message attempts to see the results. This may take some time if the webhook receiver is slow.
+ operationId: triggerTransactionWebhook
+ parameters:
+ - name: X-Trace-Id
+ in: header
+ description: Unique identifier associated with this request.
+ required: false
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+ schema:
+ type: string
+ format: uuid
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: path
+ name: id
+ required: true
+ schema:
+ type: string
+ example: "123"
+ description: The webhook ID.
+ - in: path
+ name: transactionId
+ required: true
+ schema:
+ type: string
+ example: "123"
+ description: The transaction ID.
+ tags:
+ - webhooks
+ responses:
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ "204":
+ description: Webhook triggered successfully.
+ "404":
+ description: Page not found
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/NotFoundResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
- delete:
- operationId: deleteWebhook
- description: Delete a webhook.
- summary: Delete a webhook.
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/webhooks:
+ get:
+ summary: List all webhooks.
+ description: List all the user's webhooks.
+ operationId: listWebhook
tags:
- webhooks
parameters:
@@ -15090,131 +17060,414 @@ paths:
type: string
format: uuid
example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
- - in: path
- name: id
- required: true
- example: "123"
+
+ - in: query
+ name: limit
+ description: Number of items per page. The default pagination is per 50 items.
+ required: false
schema:
- type: string
- example: "123"
- description: The webhook ID.
+ type: integer
+ format: int32
+ example: 10
+
+ - in: query
+ name: page
+ description: Page number. The default pagination is per 50 items.
+ required: false
+ schema:
+ type: integer
+ format: int32
+ example: 1
+
responses:
- "204":
- description: Webhook deleted.
+ "200":
+ description: A list of webhooks.
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/WebhookArray"
"401":
description: Unauthenticated
content:
application/json:
schema:
- $ref: '#/components/schemas/UnauthenticatedResponse'
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
"404":
description: Page not found
content:
application/json:
schema:
- $ref: '#/components/schemas/NotFoundResponse'
+ $ref: "#/components/schemas/NotFoundResponse"
+
"400":
description: Bad request
content:
application/json:
schema:
- $ref: '#/components/schemas/BadRequestResponse'
+ $ref: "#/components/schemas/BadRequestResponse"
+
"500":
description: Internal exception
content:
application/json:
schema:
- $ref: '#/components/schemas/InternalExceptionResponse'
-components:
- schemas:
- AccountArray:
- type: object
- required:
- - data
- - meta
- properties:
- data:
- type: array
- items:
- $ref: '#/components/schemas/AccountRead'
- meta:
- $ref: '#/components/schemas/Meta'
- AttachmentArray:
- type: object
- required:
- - data
- - meta
- properties:
- data:
- type: array
- items:
- $ref: '#/components/schemas/AttachmentRead'
- meta:
- $ref: '#/components/schemas/Meta'
- AutocompleteAccountArray:
- type: array
- items:
- $ref: '#/components/schemas/AutocompleteAccount'
- AutocompleteBillArray:
- type: array
- items:
- $ref: '#/components/schemas/AutocompleteBill'
- AutocompleteBudgetArray:
- type: array
- items:
- $ref: '#/components/schemas/AutocompleteBudget'
- AutocompleteCategoryArray:
- type: array
- items:
- $ref: '#/components/schemas/AutocompleteCategory'
- AutocompleteCurrencyArray:
- type: array
- items:
- $ref: '#/components/schemas/AutocompleteCurrency'
- AutocompleteCurrencyCodeArray:
- type: array
- items:
- $ref: '#/components/schemas/AutocompleteCurrencyCode'
- AutocompleteObjectGroupArray:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ post:
+ summary: Store a new webhook
+ description: |
+ Creates a new webhook. The data required can be submitted as a JSON body or as a list of parameters. The webhook will be given a random secret.
+ operationId: storeWebhook
+ parameters:
+ - name: X-Trace-Id
+ in: header
+ description: Unique identifier associated with this request.
+ required: false
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+ schema:
+ type: string
+ format: uuid
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ tags:
+ - webhooks
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/WebhookStore"
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/WebhookStore"
+ description: "JSON array or key=value pairs with the necessary webhook information. See the model for the exact specifications."
+ required: true
+ responses:
+ "200":
+ description: "New webhook stored, result in response."
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/WebhookSingle"
+ "422":
+ description: "Validation error. The body will have the exact details."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
+ "401":
+ description: Unauthenticated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
+ "404":
+ description: Page not found
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/NotFoundResponse"
+
+ "400":
+ description: Bad request
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ "500":
+ description: Internal exception
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ /v1/webhooks/{id}:
+ get:
+ summary: Get a single webhook.
+ description: Gets all info of a single webhook.
+ operationId: getWebhook
+ parameters:
+ - name: X-Trace-Id
+ in: header
+ description: Unique identifier associated with this request.
+ required: false
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+ schema:
+ type: string
+ format: uuid
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: path
+ name: id
+ example: "123"
+ required: true
+ schema:
+ type: string
+ example: "123"
+ description: The webhook ID.
+ tags:
+ - webhooks
+ responses:
+ "200":
+ description: "The requested webhook."
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/WebhookSingle"
+ "401":
+ description: Unauthenticated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
+ "404":
+ description: Page not found
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/NotFoundResponse"
+
+ "400":
+ description: Bad request
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ "500":
+ description: Internal exception
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ put:
+ operationId: updateWebhook
+ tags:
+ - webhooks
+ summary: Update existing webhook.
+ description: Update an existing webhook's information. If you wish to reset the secret, submit any value as the "secret". Firefly III will take this as a hint and reset the secret of the webhook.
+ parameters:
+ - name: X-Trace-Id
+ in: header
+ description: Unique identifier associated with this request.
+ required: false
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+ schema:
+ type: string
+ format: uuid
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: path
+ name: id
+ required: true
+ example: "123"
+ schema:
+ type: string
+ example: "123"
+ description: The webhook ID.
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/WebhookUpdate"
+ application/x-www-form-urlencoded:
+ schema:
+ $ref: "#/components/schemas/WebhookUpdate"
+ description: JSON array with updated webhook information. See the model for the exact specifications.
+ required: true
+ responses:
+ "200":
+ description: "Updated webhook stored, result in response"
+ content:
+ application/vnd.api+json:
+ schema:
+ $ref: "#/components/schemas/WebhookSingle"
+ "422":
+ description: "Validation error. The body will have the exact details."
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/ValidationErrorResponse"
+
+ "401":
+ description: Unauthenticated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
+ "404":
+ description: Page not found
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/NotFoundResponse"
+
+ "400":
+ description: Bad request
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ "500":
+ description: Internal exception
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+ delete:
+ operationId: deleteWebhook
+ description: Delete a webhook.
+ summary: Delete a webhook.
+ tags:
+ - webhooks
+ parameters:
+ - name: X-Trace-Id
+ in: header
+ description: Unique identifier associated with this request.
+ required: false
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+ schema:
+ type: string
+ format: uuid
+ example: 40c71bbb-c676-4f24-83cf-cc725d7d7a00
+
+ - in: path
+ name: id
+ required: true
+ example: "123"
+ schema:
+ type: string
+ example: "123"
+ description: The webhook ID.
+ responses:
+ "204":
+ description: Webhook deleted.
+ "401":
+ description: Unauthenticated
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/UnauthenticatedResponse"
+
+ "404":
+ description: Page not found
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/NotFoundResponse"
+
+ "400":
+ description: Bad request
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/BadRequestResponse"
+
+ "500":
+ description: Internal exception
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/InternalExceptionResponse"
+
+components:
+ schemas:
+ AccountArray:
+ type: object
+ required:
+ - data
+ - meta
+ properties:
+ data:
+ type: array
+ items:
+ $ref: "#/components/schemas/AccountRead"
+ meta:
+ $ref: "#/components/schemas/Meta"
+ AttachmentArray:
+ type: object
+ required:
+ - data
+ - meta
+ properties:
+ data:
+ type: array
+ items:
+ $ref: "#/components/schemas/AttachmentRead"
+ meta:
+ $ref: "#/components/schemas/Meta"
+ AutocompleteAccountArray:
+ type: array
+ items:
+ $ref: "#/components/schemas/AutocompleteAccount"
+ AutocompleteBillArray:
+ type: array
+ items:
+ $ref: "#/components/schemas/AutocompleteBill"
+ AutocompleteBudgetArray:
type: array
items:
- $ref: '#/components/schemas/AutocompleteObjectGroup'
+ $ref: "#/components/schemas/AutocompleteBudget"
+ AutocompleteCategoryArray:
+ type: array
+ items:
+ $ref: "#/components/schemas/AutocompleteCategory"
+ AutocompleteCurrencyArray:
+ type: array
+ items:
+ $ref: "#/components/schemas/AutocompleteCurrency"
+ AutocompleteCurrencyCodeArray:
+ type: array
+ items:
+ $ref: "#/components/schemas/AutocompleteCurrencyCode"
+ AutocompleteObjectGroupArray:
+ type: array
+ items:
+ $ref: "#/components/schemas/AutocompleteObjectGroup"
AutocompletePiggyArray:
type: array
items:
- $ref: '#/components/schemas/AutocompletePiggy'
+ $ref: "#/components/schemas/AutocompletePiggy"
AutocompletePiggyBalanceArray:
type: array
items:
- $ref: '#/components/schemas/AutocompletePiggyBalance'
+ $ref: "#/components/schemas/AutocompletePiggyBalance"
AutocompleteRecurrenceArray:
type: array
items:
- $ref: '#/components/schemas/AutocompleteRecurrence'
+ $ref: "#/components/schemas/AutocompleteRecurrence"
AutocompleteRuleArray:
type: array
items:
- $ref: '#/components/schemas/AutocompleteRule'
+ $ref: "#/components/schemas/AutocompleteRule"
AutocompleteRuleGroupArray:
type: array
items:
- $ref: '#/components/schemas/AutocompleteRuleGroup'
+ $ref: "#/components/schemas/AutocompleteRuleGroup"
AutocompleteTagArray:
type: array
items:
- $ref: '#/components/schemas/AutocompleteTag'
+ $ref: "#/components/schemas/AutocompleteTag"
AutocompleteTransactionArray:
type: array
items:
- $ref: '#/components/schemas/AutocompleteTransaction'
+ $ref: "#/components/schemas/AutocompleteTransaction"
AutocompleteTransactionIDArray:
type: array
items:
- $ref: '#/components/schemas/AutocompleteTransactionID'
+ $ref: "#/components/schemas/AutocompleteTransactionID"
AutocompleteTransactionTypeArray:
type: array
items:
- $ref: '#/components/schemas/AutocompleteTransactionType'
+ $ref: "#/components/schemas/AutocompleteTransactionType"
AvailableBudgetArray:
type: object
required:
@@ -15224,9 +17477,9 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/AvailableBudgetRead'
+ $ref: "#/components/schemas/AvailableBudgetRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
BillArray:
type: object
required:
@@ -15236,9 +17489,9 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/BillRead'
+ $ref: "#/components/schemas/BillRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
BudgetArray:
type: object
required:
@@ -15248,9 +17501,9 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/BudgetRead'
+ $ref: "#/components/schemas/BudgetRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
BudgetLimitArray:
type: object
required:
@@ -15260,9 +17513,9 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/BudgetLimitRead'
+ $ref: "#/components/schemas/BudgetLimitRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
CategoryArray:
type: object
required:
@@ -15272,13 +17525,13 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/CategoryRead'
+ $ref: "#/components/schemas/CategoryRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
ConfigurationArray:
type: array
items:
- $ref: '#/components/schemas/Configuration'
+ $ref: "#/components/schemas/Configuration"
CurrencyArray:
type: object
required:
@@ -15289,11 +17542,11 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/CurrencyRead'
+ $ref: "#/components/schemas/CurrencyRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
links:
- $ref: '#/components/schemas/PageLink'
+ $ref: "#/components/schemas/PageLink"
CurrencyExchangeRateArray:
type: object
required:
@@ -15304,11 +17557,11 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/CurrencyExchangeRateRead'
+ $ref: "#/components/schemas/CurrencyExchangeRateRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
links:
- $ref: '#/components/schemas/PageLink'
+ $ref: "#/components/schemas/PageLink"
LinkTypeArray:
type: object
required:
@@ -15319,11 +17572,11 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/LinkTypeRead'
+ $ref: "#/components/schemas/LinkTypeRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
links:
- $ref: '#/components/schemas/PageLink'
+ $ref: "#/components/schemas/PageLink"
ObjectGroupArray:
type: object
required:
@@ -15333,9 +17586,9 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/ObjectGroupRead'
+ $ref: "#/components/schemas/ObjectGroupRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
PiggyBankArray:
type: object
required:
@@ -15346,11 +17599,11 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/PiggyBankRead'
+ $ref: "#/components/schemas/PiggyBankRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
links:
- $ref: '#/components/schemas/PageLink'
+ $ref: "#/components/schemas/PageLink"
PiggyBankEventArray:
type: object
required:
@@ -15361,11 +17614,11 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/PiggyBankEventRead'
+ $ref: "#/components/schemas/PiggyBankEventRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
links:
- $ref: '#/components/schemas/PageLink'
+ $ref: "#/components/schemas/PageLink"
PreferenceArray:
type: object
required:
@@ -15376,11 +17629,11 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/PreferenceRead'
+ $ref: "#/components/schemas/PreferenceRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
links:
- $ref: '#/components/schemas/PageLink'
+ $ref: "#/components/schemas/PageLink"
RecurrenceArray:
type: object
required:
@@ -15391,11 +17644,11 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/RecurrenceRead'
+ $ref: "#/components/schemas/RecurrenceRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
links:
- $ref: '#/components/schemas/PageLink'
+ $ref: "#/components/schemas/PageLink"
RuleArray:
type: object
required:
@@ -15406,11 +17659,11 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/RuleRead'
+ $ref: "#/components/schemas/RuleRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
links:
- $ref: '#/components/schemas/PageLink'
+ $ref: "#/components/schemas/PageLink"
RuleGroupArray:
type: object
required:
@@ -15421,11 +17674,11 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/RuleGroupRead'
+ $ref: "#/components/schemas/RuleGroupRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
links:
- $ref: '#/components/schemas/PageLink'
+ $ref: "#/components/schemas/PageLink"
TagArray:
type: object
required:
@@ -15436,11 +17689,11 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/TagRead'
+ $ref: "#/components/schemas/TagRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
links:
- $ref: '#/components/schemas/PageLink'
+ $ref: "#/components/schemas/PageLink"
TransactionArray:
type: object
required:
@@ -15451,11 +17704,11 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/TransactionRead'
+ $ref: "#/components/schemas/TransactionRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
links:
- $ref: '#/components/schemas/PageLink'
+ $ref: "#/components/schemas/PageLink"
TransactionLinkArray:
type: object
required:
@@ -15466,11 +17719,11 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/TransactionLinkRead'
+ $ref: "#/components/schemas/TransactionLinkRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
links:
- $ref: '#/components/schemas/PageLink'
+ $ref: "#/components/schemas/PageLink"
UserArray:
type: object
required:
@@ -15481,11 +17734,11 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/UserRead'
+ $ref: "#/components/schemas/UserRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
links:
- $ref: '#/components/schemas/PageLink'
+ $ref: "#/components/schemas/PageLink"
UserGroupArray:
type: object
required:
@@ -15496,11 +17749,11 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/UserGroupRead'
+ $ref: "#/components/schemas/UserGroupRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
links:
- $ref: '#/components/schemas/PageLink'
+ $ref: "#/components/schemas/PageLink"
WebhookArray:
type: object
required:
@@ -15511,11 +17764,11 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/WebhookRead'
+ $ref: "#/components/schemas/WebhookRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
links:
- $ref: '#/components/schemas/PageLink'
+ $ref: "#/components/schemas/PageLink"
WebhookAttemptArray:
type: object
required:
@@ -15525,9 +17778,9 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/WebhookAttemptRead'
+ $ref: "#/components/schemas/WebhookAttemptRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
WebhookMessageArray:
type: object
required:
@@ -15537,9 +17790,9 @@ components:
data:
type: array
items:
- $ref: '#/components/schemas/WebhookMessageRead'
+ $ref: "#/components/schemas/WebhookMessageRead"
meta:
- $ref: '#/components/schemas/Meta'
+ $ref: "#/components/schemas/Meta"
AutocompleteAccount:
type: object
required:
@@ -15566,62 +17819,67 @@ components:
type: string
format: string
example: "Checking Account ($123.45)"
- description: Asset accounts and liabilities have a second field with the given date's account balance in the account currency or native currency.
- type:
- type: string
- format: string
- example: "Asset account"
+ description: Asset accounts and liabilities have a second field with the given date's account balance in the account currency or primary currency.
+ active:
+ type: boolean
+ format: boolean
+ example: true
+ description: Is the bill active or not?
+ type:
+ type: string
+ format: string
+ example: "Asset account"
description: Account type of the account found by the auto-complete search.
currency_id:
type: string
format: string
example: "12"
- description: ID for the currency used by this account. If the user prefers amounts converted to their native currency, this native currency is used instead.
+ description: ID for the currency used by this account. If the user prefers amounts converted to their primary currency, this primary currency is used instead.
currency_name:
type: string
format: string
example: "Euro"
- description: Currency name for the currency used by this account. If the user prefers amounts converted to their native currency, this native currency is used instead.
+ description: Currency name for the currency used by this account. If the user prefers amounts converted to their primary currency, this primary currency is used instead.
currency_code:
type: string
format: string
example: "EUR"
- description: Currency code for the currency used by this account. If the user prefers amounts converted to their native currency, this native currency is used instead.
+ description: Currency code for the currency used by this account. If the user prefers amounts converted to their primary currency, this primary currency is used instead.
currency_symbol:
type: string
format: string
example: "$"
- description: Currency symbol for the currency used by this account. If the user prefers amounts converted to their native currency, this native currency is used instead.
+ description: Currency symbol for the currency used by this account. If the user prefers amounts converted to their primary currency, this primary currency is used instead.
currency_decimal_places:
type: integer
format: int32
example: 2
- description: Number of decimal places for the currency used by this account. If the user prefers amounts converted to their native currency, this native currency is used instead.
+ description: Number of decimal places for the currency used by this account. If the user prefers amounts converted to their primary currency, this primary currency is used instead.
account_currency_id:
type: string
format: string
example: "2"
- description: ID for the currency used by this account. Even if "convertToNative" is on, the account currency ID is displayed here.
+ description: ID for the currency used by this account. Even if "convertToPrimary" is on, the account currency ID is displayed here.
account_currency_name:
type: string
format: string
example: "US Dollar"
- description: Name for the currency used by this account. Even if "convertToNative" is on, the account currency name is displayed here.
+ description: Name for the currency used by this account. Even if "convertToPrimary" is on, the account currency name is displayed here.
account_currency_code:
type: string
format: string
example: "USD"
- description: Code for the currency used by this account. Even if "convertToNative" is on, the account currency code is displayed here.
+ description: Code for the currency used by this account. Even if "convertToPrimary" is on, the account currency code is displayed here.
account_currency_symbol:
type: string
format: string
example: "$"
- description: Code for the currency used by this account. Even if "convertToNative" is on, the account currency code is displayed here.
+ description: Code for the currency used by this account. Even if "convertToPrimary" is on, the account currency code is displayed here.
account_currency_decimal_places:
type: integer
format: int32
example: 2
- description: Number of decimal places for the currency used by this account. Even if "convertToNative" is on, the account currency code is displayed here.
+ description: Number of decimal places for the currency used by this account. Even if "convertToPrimary" is on, the account currency code is displayed here.
AutocompleteBill:
type: object
required:
@@ -15657,6 +17915,11 @@ components:
format: string
example: "Groceries"
description: Name of the budget found by an auto-complete search.
+ active:
+ type: boolean
+ format: boolean
+ example: true
+ description: Is the budget active or not?
AutocompleteCategory:
type: object
required:
@@ -15774,12 +18037,12 @@ components:
type: string
format: string
example: "12"
- description: Currency ID for this piggy bank. This will always be the currency of the piggy bank, never the user's native currency.
+ description: Currency ID for this piggy bank. This will always be the currency of the piggy bank, never the user's primary currency.
currency_code:
type: string
format: string
example: "EUR"
- description: Currency code for this piggy bank. This will always be the currency of the piggy bank, never the user's native currency.
+ description: Currency code for this piggy bank. This will always be the currency of the piggy bank, never the user's primary currency.
currency_symbol:
type: string
format: string
@@ -15788,12 +18051,12 @@ components:
type: string
format: string
example: "Euro"
- description: Currency name for the currency used by this piggy bank. This will always be the currency of the piggy bank, never the user's native currency.
+ description: Currency name for the currency used by this piggy bank. This will always be the currency of the piggy bank, never the user's primary currency.
currency_decimal_places:
type: integer
format: int32
example: 2
- description: Number of decimal places for the currency used by this piggy bank. This will always be the currency of the piggy bank, never the user's native currency.
+ description: Number of decimal places for the currency used by this piggy bank. This will always be the currency of the piggy bank, never the user's primary currency.
object_group_id:
type: string
format: string
@@ -15830,22 +18093,22 @@ components:
type: string
format: string
example: "12"
- description: Currency ID for the currency used by this piggy bank. This will always be the piggy bank's currency, never the native currency.
+ description: Currency ID for the currency used by this piggy bank. This will always be the piggy bank's currency, never the primary currency.
currency_code:
type: string
format: string
example: "EUR"
- description: Currency code for the currency used by this piggy bank. This will always be the piggy bank's currency, never the native currency.
+ description: Currency code for the currency used by this piggy bank. This will always be the piggy bank's currency, never the primary currency.
currency_symbol:
type: string
format: string
example: "$"
- description: Currency symbol for the currency used by this piggy bank. This will always be the piggy bank's currency, never the native currency.
+ description: Currency symbol for the currency used by this piggy bank. This will always be the piggy bank's currency, never the primary currency.
currency_decimal_places:
type: integer
format: int32
example: 2
- description: Currency decimal places for the currency used by this piggy bank. This will always be the piggy bank's currency, never the native currency.
+ description: Currency decimal places for the currency used by this piggy bank. This will always be the piggy bank's currency, never the primary currency.
object_group_id:
type: string
format: string
@@ -15878,6 +18141,11 @@ components:
format: string
example: "Should trigger daily."
description: Description of the recurrence found by auto-complete.
+ active:
+ type: boolean
+ format: boolean
+ example: true
+ description: Is the recurring transaction active or not?
AutocompleteRule:
type: object
required:
@@ -15898,6 +18166,11 @@ components:
format: string
example: "Useful rule."
description: Description of the rule found by auto-complete.
+ active:
+ type: boolean
+ format: boolean
+ example: true
+ description: Is the bill active or not?
AutocompleteRuleGroup:
type: object
required:
@@ -15918,6 +18191,11 @@ components:
format: string
example: "Some rule group."
description: Description of the rule group found by auto-complete.
+ active:
+ type: boolean
+ format: boolean
+ example: true
+ description: Is the bill active or not?
AutocompleteTag:
type: object
required:
@@ -16034,33 +18312,76 @@ components:
type: string
format: string
example: "5"
- description: "The currency ID of the currency associated to the data in the entries. This may be the native currency of administration."
+ description: "The currency ID of the currency associated with this object."
+ currency_name:
+ type: string
+ format: string
+ example: Euro
+ description: "The currency name of the currency associated with this object."
currency_code:
type: string
format: string
- example: "EUR"
+ example: EUR
+ description: "The currency code of the currency associated with this object."
currency_symbol:
type: string
format: string
example: "$"
+ readOnly: true
currency_decimal_places:
type: integer
format: int32
example: 2
- description: "Number of decimals for the currency associated to the data in the entries."
+ readOnly: true
+ primary_currency_id:
+ type: string
+ format: string
+ example: "5"
+ description: "The currency ID of the administration's primary currency."
+ readOnly: true
+ primary_currency_name:
+ type: string
+ format: string
+ example: Euro
+ readOnly: true
+ description: "The currency name of the administration's primary currency."
+ primary_currency_code:
+ type: string
+ format: string
+ example: EUR
+ readOnly: true
+ description: "The currency code of the administration's primary currency."
+ primary_currency_symbol:
+ type: string
+ format: string
+ example: "$"
+ readOnly: true
+ description: "The currency symbol of the administration's primary currency."
+ primary_currency_decimal_places:
+ type: integer
+ format: int32
+ example: 2
+ readOnly: true
+ description: "The currency decimal places of the administration's primary currency."
+ date:
+ type: string
+ format: date-time
+ example: "2025-11-01T00:00:00+00:00"
start_date:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
end_date:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-30T23:59:59+00:00"
type:
type: string
format: string
example: "line"
description: "Indicated the type of chart that is expected to be rendered. You can safely ignore this if you want."
+ period:
+ $ref: "#/components/schemas/ChartDatasetPeriodProperty"
yAxisID:
type: integer
format: int32
@@ -16070,11 +18391,16 @@ components:
type: object
description: "The actual entries for this data set. They 'key' value is the label for the data point. The value is the actual (numerical) value."
items:
- $ref: '#/components/schemas/ChartDataPoint'
+ $ref: "#/components/schemas/ChartDataPoint"
+ pc_entries:
+ type: object
+ description: "The actual entries for this data set. They 'key' value is the label for the data point. The value is the actual (numerical) value."
+ items:
+ $ref: "#/components/schemas/ChartDataPoint"
ChartLine:
type: array
items:
- $ref: '#/components/schemas/ChartDataSet'
+ $ref: "#/components/schemas/ChartDataSet"
DataDestroyObject:
type: string
enum:
@@ -16127,6 +18453,14 @@ components:
- firefly.credit_card_types
- firefly.languages
- firefly.valid_view_ranges
+ - cer.enabled
+ - firefly.preselected_accounts
+ - firefly.rule-actions
+ - firefly.context-rule-actions
+ - search.operators
+ - webhook.triggers
+ - webhook.responses
+ - webhook.deliveries
ConfigValueUpdateFilter:
type: string
enum:
@@ -16141,7 +18475,7 @@ components:
InsightGroup:
type: array
items:
- $ref: '#/components/schemas/InsightGroupEntry'
+ $ref: "#/components/schemas/InsightGroupEntry"
InsightGroupEntry:
type: object
properties:
@@ -16178,7 +18512,7 @@ components:
InsightTotal:
type: array
items:
- $ref: '#/components/schemas/InsightTotalEntry'
+ $ref: "#/components/schemas/InsightTotalEntry"
InsightTotalEntry:
type: object
properties:
@@ -16205,7 +18539,7 @@ components:
InsightTransfer:
type: array
items:
- $ref: '#/components/schemas/InsightTransferEntry'
+ $ref: "#/components/schemas/InsightTransferEntry"
InsightTransferEntry:
type: object
properties:
@@ -16259,159 +18593,6 @@ components:
format: string
example: "EUR"
description: "The currency code of the expenses listed for this account."
- AccountRead:
- type: object
- required:
- - type
- - id
- - attributes
- properties:
- type:
- type: string
- format: string
- example: "accounts"
- description: "Immutable value"
- id:
- type: string
- format: string
- example: "2"
- attributes:
- $ref: '#/components/schemas/Account'
- AccountSingle:
- type: object
- required:
- - data
- properties:
- data:
- $ref: '#/components/schemas/AccountRead'
- AttachmentRead:
- type: object
- required:
- - type
- - id
- - attributes
- - links
- properties:
- type:
- type: string
- format: string
- example: "attachments"
- description: "Immutable value"
- id:
- type: string
- format: string
- example: "2"
- attributes:
- $ref: '#/components/schemas/Attachment'
- links:
- $ref: '#/components/schemas/ObjectLink'
- AttachmentSingle:
- type: object
- required:
- - data
- properties:
- data:
- $ref: '#/components/schemas/AttachmentRead'
- AvailableBudgetRead:
- type: object
- required:
- - type
- - id
- - attributes
- properties:
- type:
- type: string
- format: string
- example: "available_budgets"
- description: "Immutable value"
- id:
- type: string
- format: string
- example: "2"
- attributes:
- $ref: '#/components/schemas/AvailableBudget'
- AvailableBudgetSingle:
- type: object
- required:
- - data
- properties:
- data:
- $ref: '#/components/schemas/AvailableBudgetRead'
- BillRead:
- type: object
- required:
- - type
- - id
- - attributes
- properties:
- type:
- type: string
- format: string
- example: "bills"
- description: "Immutable value"
- id:
- type: string
- format: string
- example: "2"
- attributes:
- $ref: '#/components/schemas/Bill'
- BillSingle:
- type: object
- required:
- - data
- properties:
- data:
- $ref: '#/components/schemas/BillRead'
- BudgetLimitRead:
- type: object
- required:
- - type
- - id
- - attributes
- properties:
- type:
- type: string
- format: string
- example: "budget_limits"
- description: "Immutable value"
- id:
- type: string
- format: string
- example: "2"
- attributes:
- $ref: '#/components/schemas/BudgetLimit'
- BudgetLimitSingle:
- type: object
- required:
- - data
- properties:
- data:
- $ref: '#/components/schemas/BudgetLimitRead'
- BudgetRead:
- type: object
- required:
- - type
- - id
- - attributes
- properties:
- type:
- type: string
- format: string
- example: "budgets"
- description: "Immutable value"
- id:
- type: string
- format: string
- example: "2"
- attributes:
- $ref: '#/components/schemas/Budget'
- BudgetSingle:
- type: object
- required:
- - data
- properties:
- data:
- $ref: '#/components/schemas/BudgetRead'
CategoryRead:
type: object
required:
@@ -16429,21 +18610,21 @@ components:
format: string
example: "2"
attributes:
- $ref: '#/components/schemas/Category'
+ $ref: "#/components/schemas/CategoryProperties"
CategorySingle:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/CategoryRead'
+ $ref: "#/components/schemas/CategoryRead"
ConfigurationSingle:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/Configuration'
+ $ref: "#/components/schemas/Configuration"
CurrencyRead:
type: object
required:
@@ -16461,14 +18642,14 @@ components:
format: string
example: "2"
attributes:
- $ref: '#/components/schemas/Currency'
+ $ref: "#/components/schemas/CurrencyProperties"
CurrencySingle:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/CurrencyRead'
+ $ref: "#/components/schemas/CurrencyRead"
LinkTypeRead:
type: object
required:
@@ -16487,16 +18668,16 @@ components:
format: string
example: "2"
attributes:
- $ref: '#/components/schemas/LinkType'
+ $ref: "#/components/schemas/LinkType"
links:
- $ref: '#/components/schemas/ObjectLink'
+ $ref: "#/components/schemas/ObjectLink"
LinkTypeSingle:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/LinkTypeRead'
+ $ref: "#/components/schemas/LinkTypeRead"
ObjectGroupRead:
type: object
required:
@@ -16514,14 +18695,14 @@ components:
format: string
example: "2"
attributes:
- $ref: '#/components/schemas/ObjectGroup'
+ $ref: "#/components/schemas/ObjectGroup"
ObjectGroupSingle:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/ObjectGroupRead'
+ $ref: "#/components/schemas/ObjectGroupRead"
PiggyBankEventRead:
type: object
required:
@@ -16540,9 +18721,9 @@ components:
format: string
example: "2"
attributes:
- $ref: '#/components/schemas/PiggyBankEvent'
+ $ref: "#/components/schemas/PiggyBankEventProperties"
links:
- $ref: '#/components/schemas/ObjectLink'
+ $ref: "#/components/schemas/ObjectLink"
PiggyBankRead:
type: object
required:
@@ -16561,16 +18742,16 @@ components:
format: string
example: "2"
attributes:
- $ref: '#/components/schemas/PiggyBank'
+ $ref: "#/components/schemas/PiggyBankProperties"
links:
- $ref: '#/components/schemas/ObjectLink'
+ $ref: "#/components/schemas/ObjectLink"
PiggyBankSingle:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/PiggyBankRead'
+ $ref: "#/components/schemas/PiggyBankRead"
PreferenceRead:
type: object
required:
@@ -16588,14 +18769,14 @@ components:
format: string
example: "2"
attributes:
- $ref: '#/components/schemas/Preference'
+ $ref: "#/components/schemas/Preference"
PreferenceSingle:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/PreferenceRead'
+ $ref: "#/components/schemas/PreferenceRead"
RecurrenceRead:
type: object
required:
@@ -16614,16 +18795,16 @@ components:
format: string
example: "2"
attributes:
- $ref: '#/components/schemas/Recurrence'
+ $ref: "#/components/schemas/RecurrenceProperties"
links:
- $ref: '#/components/schemas/ObjectLink'
+ $ref: "#/components/schemas/ObjectLink"
RecurrenceSingle:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/RecurrenceRead'
+ $ref: "#/components/schemas/RecurrenceRead"
RuleGroupRead:
type: object
required:
@@ -16642,16 +18823,16 @@ components:
format: string
example: "2"
attributes:
- $ref: '#/components/schemas/RuleGroup'
+ $ref: "#/components/schemas/RuleGroup"
links:
- $ref: '#/components/schemas/ObjectLink'
+ $ref: "#/components/schemas/ObjectLink"
RuleGroupSingle:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/RuleGroupRead'
+ $ref: "#/components/schemas/RuleGroupRead"
RuleRead:
type: object
required:
@@ -16670,16 +18851,16 @@ components:
format: string
example: "2"
attributes:
- $ref: '#/components/schemas/Rule'
+ $ref: "#/components/schemas/Rule"
links:
- $ref: '#/components/schemas/ObjectLink'
+ $ref: "#/components/schemas/ObjectLink"
RuleSingle:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/RuleRead'
+ $ref: "#/components/schemas/RuleRead"
TagRead:
type: object
required:
@@ -16698,16 +18879,16 @@ components:
format: string
example: "2"
attributes:
- $ref: '#/components/schemas/TagModel'
+ $ref: "#/components/schemas/TagModel"
links:
- $ref: '#/components/schemas/ObjectLink'
+ $ref: "#/components/schemas/ObjectLink"
TagSingle:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/TagRead'
+ $ref: "#/components/schemas/TagRead"
TransactionLinkRead:
type: object
required:
@@ -16726,16 +18907,16 @@ components:
format: string
example: "2"
attributes:
- $ref: '#/components/schemas/TransactionLink'
+ $ref: "#/components/schemas/TransactionLink"
links:
- $ref: '#/components/schemas/ObjectLink'
+ $ref: "#/components/schemas/ObjectLink"
TransactionLinkSingle:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/TransactionLinkRead'
+ $ref: "#/components/schemas/TransactionLinkRead"
TransactionRead:
type: object
required:
@@ -16754,16 +18935,16 @@ components:
format: string
example: "2"
attributes:
- $ref: '#/components/schemas/Transaction'
+ $ref: "#/components/schemas/Transaction"
links:
- $ref: '#/components/schemas/ObjectLink'
+ $ref: "#/components/schemas/ObjectLink"
TransactionSingle:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/TransactionRead'
+ $ref: "#/components/schemas/TransactionRead"
UserRead:
type: object
required:
@@ -16782,9 +18963,9 @@ components:
format: string
example: "2"
attributes:
- $ref: '#/components/schemas/User'
+ $ref: "#/components/schemas/User"
links:
- $ref: '#/components/schemas/ObjectLink'
+ $ref: "#/components/schemas/ObjectLink"
WebhookAttemptRead:
type: object
required:
@@ -16802,14 +18983,14 @@ components:
format: string
example: "2"
attributes:
- $ref: '#/components/schemas/WebhookAttempt'
+ $ref: "#/components/schemas/WebhookAttempt"
WebhookAttemptSingle:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/WebhookAttemptRead'
+ $ref: "#/components/schemas/WebhookAttemptRead"
WebhookMessageRead:
type: object
required:
@@ -16827,14 +19008,14 @@ components:
format: string
example: "2"
attributes:
- $ref: '#/components/schemas/WebhookMessage'
+ $ref: "#/components/schemas/WebhookMessage"
WebhookMessageSingle:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/WebhookMessageRead'
+ $ref: "#/components/schemas/WebhookMessageRead"
WebhookRead:
type: object
required:
@@ -16853,17 +19034,17 @@ components:
format: string
example: "2"
attributes:
- $ref: '#/components/schemas/Webhook'
+ $ref: "#/components/schemas/WebhookProperties"
links:
- $ref: '#/components/schemas/ObjectLink'
+ $ref: "#/components/schemas/ObjectLink"
WebhookSingle:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/WebhookRead'
- Account:
+ $ref: "#/components/schemas/WebhookRead"
+ AccountProperties:
type: object
required:
- name
@@ -16872,19 +19053,18 @@ components:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
active:
type: boolean
format: boolean
example: false
default: true
- description: "If omitted, defaults to true."
order:
type: integer
format: int32
@@ -16896,19 +19076,49 @@ components:
format: string
example: "My checking account"
type:
- $ref: '#/components/schemas/ShortAccountTypeProperty'
+ $ref: "#/components/schemas/ShortAccountTypeProperty"
account_role:
- $ref: '#/components/schemas/AccountRoleProperty'
+ $ref: "#/components/schemas/AccountRoleProperty"
+ object_group_id:
+ type: string
+ format: string
+ example: "5"
+ nullable: true
+ description: The group ID of the group this object is part of. NULL if no group.
+ object_group_order:
+ type: integer
+ format: int32
+ example: 5
+ readOnly: true
+ nullable: true
+ description: The order of the group. At least 1, for the highest sorting.
+ object_group_title:
+ type: string
+ format: string
+ example: "Example Group"
+ nullable: true
+ description: The name of the group. NULL if no group.
+ object_has_currency_setting:
+ type: boolean
+ format: boolean
+ example: true
+ readOnly: true
+ description: "Indicates whether the account has a currency setting. If false, the account uses the administration's primary currency. Asset accounts and liability accounts always have a currency setting, while expense and revenue accounts do not."
currency_id:
type: string
format: string
- example: "12"
- description: "Use either currency_id or currency_code. Defaults to the user's default currency."
+ example: "5"
+ description: "The currency ID of the currency associated with this object."
+ currency_name:
+ type: string
+ format: string
+ example: Euro
+ description: "The currency name of the currency associated with this object."
currency_code:
type: string
format: string
- example: "EUR"
- description: "Use either currency_id or currency_code. Defaults to the user's default currency."
+ example: EUR
+ description: "The currency code of the currency associated with this object."
currency_symbol:
type: string
format: string
@@ -16919,64 +19129,113 @@ components:
format: int32
example: 2
readOnly: true
- native_currency_id:
+ primary_currency_id:
type: string
format: string
- example: "12"
+ example: "5"
+ description: "The currency ID of the administration's primary currency."
readOnly: true
- nullable: true
- description: "Returns the native currency ID of the administration."
- native_currency_code:
+ primary_currency_name:
type: string
format: string
- example: "EUR"
- nullable: true
- description: "Returns the native currency code of the administration."
- native_currency_symbol:
+ example: Euro
+ readOnly: true
+ description: "The currency name of the administration's primary currency."
+ primary_currency_code:
+ type: string
+ format: string
+ example: EUR
+ readOnly: true
+ description: "The currency code of the administration's primary currency."
+ primary_currency_symbol:
type: string
format: string
example: "$"
readOnly: true
- nullable: true
- description: "Returns the native currency symbol of the administration."
- native_currency_decimal_places:
+ description: "The currency symbol of the administration's primary currency."
+ primary_currency_decimal_places:
type: integer
format: int32
example: 2
readOnly: true
- nullable: true
- description: "Returns the native currency decimal places of the administration."
+ description: "The currency decimal places of the administration's primary currency."
current_balance:
type: string
format: amount
example: "123.45"
readOnly: true
- description: "The current balance of the account in the account's currency OR the native currency if the account has no currency."
- native_current_balance:
+ description: "The current balance of the account in the account's currency. If the account has no currency, this is the balance in the administration's primary currency. Either way, the `currency_*` fields reflect the currency used."
+ pc_current_balance:
type: string
format: amount
example: "123.45"
readOnly: true
- description: "The current balance of the account in the administration's native currency."
- current_balance_date:
+ nullable: true
+ description: "The current balance of the account in the administration's primary currency. The `primary_currency_*` fields reflect the currency used. This field is NULL if the user does have 'convert to primary' set to true in their settings."
+ balance_difference:
type: string
- format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ format: amount
+ example: "123.45"
readOnly: true
- description: "The timestamp for this date is always 23:59:59, to indicate it's the balance at the very END of that particular day."
- notes:
+ description: "If you submit a start AND end date, this will be the difference between those two moments."
+ pc_balance_difference:
type: string
- format: string
+ format: amount
+ example: "123.45"
+ readOnly: true
nullable: true
- example: "Some example notes"
- monthly_payment_date:
+ description: "If you submit a start AND end date, this will be the difference in the currency of the account or the administration's primary currency between those two moments."
+ opening_balance:
+ type: string
+ format: amount
+ example: "-1012.12"
+ description: "Represents the opening balance, the initial amount this account holds in the currency of the account or the administration's primary currency if the account has no currency. Either way, the `currency_*` fields reflect the currency used."
+ pc_opening_balance:
+ type: string
+ format: amount
+ example: "-1012.12"
+ description: "The opening balance of the account in the administration's primary currency (pc). The `primary_currency_*` fields reflect the currency used. This field is NULL if the user does have 'convert to primary' set to true in their settings."
+ virtual_balance:
+ type: string
+ format: amount
+ example: "123.45"
+ description: "The virtual balance of the account in the account's currency or the administration's primary currency if the account has no currency."
+ pc_virtual_balance:
+ type: string
+ format: amount
+ example: "123.45"
+ description: "The virtual balance of the account in the administration's primary currency (pc). The `primary_currency_*` fields reflect the currency used. This field is NULL if the user does have 'convert to primary' set to true in their settings."
+ debt_amount:
+ type: string
+ format: amount
+ nullable: true
+ example: "1012.12"
+ description: "In liability accounts (loans, debts and mortgages), this is the amount of debt in the account's currency (see the `currency_*` fields). In asset accounts, this is NULL."
+ pc_debt_amount:
+ type: string
+ format: amount
+ nullable: true
+ example: "1012.12"
+ description: "In liability accounts (loans, debts and mortgages), this is the amount of debt in the administration's primary currency (see the `currency_*` fields. In asset accounts, this is NULL."
+ current_balance_date:
+ type: string
+ format: date-time
+ example: "2025-11-30T23:59:59+00:00"
+ readOnly: true
+ description: "The timestamp for this date is always 23:59:59, to indicate it's the balance at the very END of that particular day."
+ notes:
+ type: string
+ format: string
+ nullable: true
+ example: "Some example notes"
+ monthly_payment_date:
nullable: true
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
description: "Mandatory when the account_role is ccAsset. Moment at which CC payment installments are asked for by the bank."
credit_card_type:
- $ref: '#/components/schemas/CreditCardTypeProperty'
+ $ref: "#/components/schemas/CreditCardTypeProperty"
account_number:
type: string
format: string
@@ -16992,36 +19251,16 @@ components:
format: string
example: "BOFAUS3N"
nullable: true
- virtual_balance:
- type: string
- format: amount
- example: "123.45"
- description: "The virtual balance of the account in the account's currency or the administration's native currency if the account has no currency."
- native_virtual_balance:
- type: string
- format: amount
- example: "123.45"
- description: "The virtual balance of the account in administration's native currency."
- opening_balance:
- type: string
- format: amount
- example: "-1012.12"
- description: "Represents the opening balance, the initial amount this account holds in the currency of the account or the administration's native currency if the account has no currency."
- native_opening_balance:
- type: string
- format: amount
- example: "-1012.12"
- description: "Represents the opening balance, in the administration's native currency."
opening_balance_date:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
nullable: true
description: Represents the date of the opening balance.
liability_type:
- $ref: '#/components/schemas/LiabilityTypeProperty'
+ $ref: "#/components/schemas/LiabilityTypeProperty"
liability_direction:
- $ref: '#/components/schemas/LiabilityDirectionProperty'
+ $ref: "#/components/schemas/LiabilityDirectionProperty"
interest:
type: string
format: string
@@ -17029,19 +19268,12 @@ components:
description: "Mandatory when type is liability. Interest percentage."
nullable: true
interest_period:
- $ref: '#/components/schemas/InterestPeriodProperty'
- current_debt:
- type: string
- format: amount
- nullable: true
- example: "1012.12"
- description: Represents the current debt for liabilities.
+ $ref: "#/components/schemas/InterestPeriodProperty"
include_net_worth:
type: boolean
format: boolean
example: true
default: true
- description: "If omitted, defaults to true."
longitude:
type: number
format: double
@@ -17060,6 +19292,37 @@ components:
example: 6
nullable: true
description: "Zoom level for the map, if drawn. This to set the box right. Unfortunately this is a proprietary value because each map provider has different zoom levels."
+ last_activity:
+ nullable: true
+ type: string
+ format: date-time
+ example: "2025-11-01T00:00:00+00:00"
+ description: "Last activity of the account."
+ AccountRead:
+ type: object
+ required:
+ - type
+ - id
+ - attributes
+ properties:
+ type:
+ type: string
+ format: string
+ example: "accounts"
+ description: "Immutable value"
+ id:
+ type: string
+ format: string
+ example: "2"
+ attributes:
+ $ref: "#/components/schemas/AccountProperties"
+ AccountSingle:
+ type: object
+ required:
+ - data
+ properties:
+ data:
+ $ref: "#/components/schemas/AccountRead"
AccountStore:
type: object
required:
@@ -17071,7 +19334,7 @@ components:
format: string
example: "My checking account"
type:
- $ref: '#/components/schemas/ShortAccountTypeProperty'
+ $ref: "#/components/schemas/ShortAccountTypeProperty"
iban:
type: string
format: iban
@@ -17095,7 +19358,7 @@ components:
opening_balance_date:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
nullable: true
description: Represents the date of the opening balance.
virtual_balance:
@@ -17106,12 +19369,12 @@ components:
type: string
format: string
example: "12"
- description: "Use either currency_id or currency_code. Defaults to the user's default currency."
+ description: "Use either currency_id or currency_code. Defaults to the user's financial administration's currency."
currency_code:
type: string
format: string
example: "EUR"
- description: "Use either currency_id or currency_code. Defaults to the user's default currency."
+ description: "Use either currency_id or currency_code. Defaults to the user's financial administration's currency."
active:
type: boolean
format: boolean
@@ -17130,19 +19393,19 @@ components:
default: true
description: "If omitted, defaults to true."
account_role:
- $ref: '#/components/schemas/AccountRoleProperty'
+ $ref: "#/components/schemas/AccountRoleProperty"
credit_card_type:
- $ref: '#/components/schemas/CreditCardTypeProperty'
+ $ref: "#/components/schemas/CreditCardTypeProperty"
monthly_payment_date:
nullable: true
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
description: "Mandatory when the account_role is ccAsset. Moment at which CC payment installments are asked for by the bank."
liability_type:
- $ref: '#/components/schemas/LiabilityTypeProperty'
+ $ref: "#/components/schemas/LiabilityTypeProperty"
liability_direction:
- $ref: '#/components/schemas/LiabilityDirectionProperty'
+ $ref: "#/components/schemas/LiabilityDirectionProperty"
interest:
type: string
format: string
@@ -17151,7 +19414,7 @@ components:
description: "Mandatory when type is liability. Interest percentage."
nullable: true
interest_period:
- $ref: '#/components/schemas/InterestPeriodProperty'
+ $ref: "#/components/schemas/InterestPeriodProperty"
notes:
type: string
format: string
@@ -17207,7 +19470,7 @@ components:
opening_balance_date:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
nullable: true
virtual_balance:
type: string
@@ -17217,12 +19480,12 @@ components:
type: string
format: string
example: "12"
- description: "Use either currency_id or currency_code. Defaults to the user's default currency."
+ description: "Use either currency_id or currency_code. Defaults to the user's financial administration's currency."
currency_code:
type: string
format: string
example: "EUR"
- description: "Use either currency_id or currency_code. Defaults to the user's default currency."
+ description: "Use either currency_id or currency_code. Defaults to the user's financial administration's currency."
active:
type: boolean
format: boolean
@@ -17241,17 +19504,17 @@ components:
default: true
description: "If omitted, defaults to true."
account_role:
- $ref: '#/components/schemas/AccountRoleProperty'
+ $ref: "#/components/schemas/AccountRoleProperty"
credit_card_type:
- $ref: '#/components/schemas/CreditCardTypeProperty'
+ $ref: "#/components/schemas/CreditCardTypeProperty"
monthly_payment_date:
nullable: true
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
description: "Mandatory when the account_role is ccAsset. Moment at which CC payment installments are asked for by the bank."
liability_type:
- $ref: '#/components/schemas/LiabilityTypeProperty'
+ $ref: "#/components/schemas/LiabilityTypeProperty"
interest:
type: string
format: string
@@ -17259,7 +19522,7 @@ components:
description: "Mandatory when type is liability. Interest percentage."
nullable: true
interest_period:
- $ref: '#/components/schemas/InterestPeriodProperty'
+ $ref: "#/components/schemas/InterestPeriodProperty"
notes:
type: string
format: string
@@ -17283,40 +19546,56 @@ components:
example: 6
nullable: true
description: Zoom level for the map, if drawn. This to set the box right. Unfortunately this is a proprietary value because each map provider has different zoom levels. If omitted, the existing location will be kept. If submitted as NULL, the current location will be removed.
- Attachment:
+ ArrayEntryWithCurrencyAndSum:
+ type: object
+ properties:
+ currency_id:
+ type: string
+ format: string
+ example: "5"
+ currency_code:
+ type: string
+ format: string
+ example: "USD"
+ currency_symbol:
+ type: string
+ format: string
+ example: "$"
+ currency_decimal_places:
+ type: integer
+ format: int32
+ example: 2
+ description: Number of decimals supported by the currency
+ sum:
+ type: string
+ format: amount
+ example: "123.45"
+ description: The amount earned, spent or transferred.
+ AttachmentProperties:
type: object
- required:
- - filename
- - attachable_type
- - attachable_id
properties:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
attachable_type:
- $ref: '#/components/schemas/AttachableType'
+ $ref: "#/components/schemas/AttachableType"
attachable_id:
type: string
format: string
example: "134"
description: ID of the model this attachment is linked to.
- md5:
- type: string
- format: string
- example: "0c3f95f34370baa88f9fd9a671fea305"
- description: MD5 hash of the file for basic duplicate detection. This field is deprecated.
hash:
type: string
format: string
example: "0c3f95f34370baa88f9fd9a671fea305"
- description: Hash of the file for basic duplicate detection. It's still md5 lol.
+ description: Hash of the file for basic duplicate detection.
filename:
type: string
format: string
@@ -17349,6 +19628,34 @@ components:
format: int32
example: 48211
readOnly: true
+ AttachmentRead:
+ type: object
+ required:
+ - type
+ - id
+ - attributes
+ - links
+ properties:
+ type:
+ type: string
+ format: string
+ example: "attachments"
+ description: "Immutable value"
+ id:
+ type: string
+ format: string
+ example: "2"
+ attributes:
+ $ref: "#/components/schemas/AttachmentProperties"
+ links:
+ $ref: "#/components/schemas/ObjectLink"
+ AttachmentSingle:
+ type: object
+ required:
+ - data
+ properties:
+ data:
+ $ref: "#/components/schemas/AttachmentRead"
AttachmentStore:
type: object
required:
@@ -17361,7 +19668,7 @@ components:
format: string
example: "file.pdf"
attachable_type:
- $ref: '#/components/schemas/AttachableType'
+ $ref: "#/components/schemas/AttachableType"
attachable_id:
type: string
format: string
@@ -17392,33 +19699,40 @@ components:
format: string
example: "Some notes"
nullable: true
- AvailableBudget:
+ AvailableBudgetProperties:
type: object
- required:
- - amount
- - start
- - end
properties:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
+ readOnly: true
+ object_has_currency_setting:
+ type: boolean
+ format: boolean
+ example: true
readOnly: true
+ description: "Indicates whether the object has a currency setting. If false, the object uses the administration's primary currency."
currency_id:
type: string
format: string
example: "5"
- description: Use either currency_id or currency_code.
+ description: "The currency ID of the currency associated with this object."
+ currency_name:
+ type: string
+ format: string
+ example: Euro
+ description: "The currency name of the currency associated with this object."
currency_code:
type: string
format: string
example: EUR
- description: Use either currency_id or currency_code.
+ description: "The currency code of the currency associated with this object."
currency_symbol:
type: string
format: string
@@ -17429,88 +19743,144 @@ components:
format: int32
example: 2
readOnly: true
- native_currency_id:
+ primary_currency_id:
type: string
format: string
example: "5"
- description: "The currency ID of the administration's native currency."
+ description: "The currency ID of the administration's primary currency."
readOnly: true
- native_currency_code:
+ primary_currency_name:
+ type: string
+ format: string
+ example: Euro
+ readOnly: true
+ description: "The currency name of the administration's primary currency."
+ primary_currency_code:
type: string
format: string
example: EUR
readOnly: true
- description: "The currency code of the administration's native currency."
- native_currency_symbol:
+ description: "The currency code of the administration's primary currency."
+ primary_currency_symbol:
type: string
format: string
example: "$"
readOnly: true
- description: "The currency symbol of the administration's native currency."
- native_currency_decimal_places:
+ description: "The currency symbol of the administration's primary currency."
+ primary_currency_decimal_places:
type: integer
format: int32
example: 2
readOnly: true
- description: "The currency decimal places of the administration's native currency."
+ description: "The currency decimal places of the administration's primary currency."
amount:
type: string
format: amount
example: "123.45"
- native_amount:
+ description: "The amount of this available budget in the currency of this available budget."
+ pc_amount:
type: string
format: amount
example: "123.45"
- description: "The amount of this available budget in the native currency of this administration."
+ description: "The amount of this available budget in the primary currency (pc) of this administration."
start:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
description: Start date of the available budget.
end:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-30T23:59:59+00:00"
description: End date of the available budget.
spent_in_budgets:
type: array
items:
- $ref: '#/components/schemas/BudgetSpent'
+ $ref: "#/components/schemas/ArrayEntryWithCurrencyAndSum"
+ readOnly: true
+ pc_spent_in_budgets:
+ type: array
+ items:
+ $ref: "#/components/schemas/ArrayEntryWithCurrencyAndSum"
+ readOnly: true
+ description: |
+ The amount spent in budgets in the primary currency (pc) of this administration.
+ spent_outside_budgets:
+ type: array
+ items:
+ $ref: "#/components/schemas/ArrayEntryWithCurrencyAndSum"
readOnly: true
- spent_outside_budget:
+ pc_spent_outside_budgets:
type: array
items:
- $ref: '#/components/schemas/BudgetSpent'
+ $ref: "#/components/schemas/ArrayEntryWithCurrencyAndSum"
readOnly: true
- Bill:
+ description: |
+ The amount spent outside of budgets in the primary currency (pc) of this administration.
+ AvailableBudgetRead:
type: object
required:
- - name
- - amount_min
- - amount_max
- - date
- - repeat_freq
+ - type
+ - id
+ - attributes
+ properties:
+ type:
+ type: string
+ format: string
+ example: "available_budgets"
+ description: "Immutable value"
+ id:
+ type: string
+ format: string
+ example: "2"
+ attributes:
+ $ref: "#/components/schemas/AvailableBudgetProperties"
+ AvailableBudgetSingle:
+ type: object
+ required:
+ - data
+ properties:
+ data:
+ $ref: "#/components/schemas/AvailableBudgetRead"
+ BillProperties:
+ type: object
properties:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
+ readOnly: true
+ name:
+ type: string
+ format: string
+ example: "Rent"
+ description: "The name of the subscription."
+ object_has_currency_setting:
+ type: boolean
+ format: boolean
+ example: true
readOnly: true
+ description: "Indicates whether the object has a currency setting. If false, the object uses the administration's primary currency."
currency_id:
type: string
format: string
example: "5"
- description: Use either currency_id or currency_code
+ description: "The currency ID of the currency associated with this object."
+ currency_name:
+ type: string
+ format: string
+ example: Euro
+ description: "The currency name of the currency associated with this object."
currency_code:
type: string
format: string
example: EUR
- description: Use either currency_id or currency_code
+ description: "The currency code of the currency associated with this object."
currency_symbol:
type: string
format: string
@@ -17521,108 +19891,104 @@ components:
format: int32
example: 2
readOnly: true
- native_currency_id:
+ primary_currency_id:
type: string
format: string
example: "5"
+ description: "The currency ID of the administration's primary currency."
+ readOnly: true
+ primary_currency_name:
+ type: string
+ format: string
+ example: Euro
readOnly: true
- description: "The administration's native currency ID."
- native_currency_code:
+ description: "The currency name of the administration's primary currency."
+ primary_currency_code:
type: string
format: string
example: EUR
readOnly: true
- description: "The administration's native currency code."
- native_currency_symbol:
+ description: "The currency code of the administration's primary currency."
+ primary_currency_symbol:
type: string
format: string
example: "$"
readOnly: true
- description: "The administration's native currency symbol."
- native_currency_decimal_places:
+ description: "The currency symbol of the administration's primary currency."
+ primary_currency_decimal_places:
type: integer
format: int32
example: 2
readOnly: true
- description: "The administration's native currency decimal places."
- name:
- type: string
- format: string
- example: "Rent"
+ description: "The currency decimal places of the administration's primary currency."
amount_min:
type: string
format: amount
example: "123.45"
+ description: "The minimum amount that is expected for this subscription in the subscription's currency."
+ pc_amount_min:
+ type: string
+ format: amount
+ example: "123.45"
+ description: "The minimum amount that is expected for this subscription in the administration's primary currency."
amount_max:
type: string
format: amount
example: "123.45"
- native_amount_min:
+ description: "The maximum amount that is expected for this subscription in the subscription's currency."
+ pc_amount_max:
type: string
format: amount
example: "123.45"
- nullable: true
- readOnly: true
- description: "The max amount of this bill in the user's native currency, if the original amount is in a different currency."
- native_amount_max:
+ description: "The maximum amount that is expected for this subscription in the administration's primary currency."
+ amount_avg:
type: string
format: amount
example: "123.45"
- nullable: true
- readOnly: true
- description: "The min amount of this bill in the user's native currency, if the original amount is in a different currency."
+ description: "The average amount that is expected for this subscription in the subscription's currency."
+ pc_amount_avg:
+ type: string
+ format: amount
+ example: "123.45"
+ description: "The average amount that is expected for this subscription in the administration's primary currency."
date:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
end_date:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
- description: "The date after which this bill is no longer valid or applicable"
+ example: "2025-11-30T23:59:59+00:00"
+ description: "The date after which this subscription is no longer valid or applicable"
nullable: true
extension_date:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
- description: "The date before which the bill must be renewed (or cancelled)"
+ example: "2025-11-30T23:59:59+00:00"
+ description: "The date before which the subscription must be renewed (or cancelled)"
nullable: true
repeat_freq:
- $ref: '#/components/schemas/BillRepeatFrequency'
+ $ref: "#/components/schemas/BillRepeatFrequency"
skip:
type: integer
format: int32
example: 0
- description: How often the bill must be skipped. 1 means a bi-monthly bill.
+ description: How often the subscription will be skipped. 1 means a bi-monthly subscription.
active:
type: boolean
format: boolean
example: true
- description: If the bill is active.
+ description: If the subscription is active.
order:
type: integer
format: int32
example: 1
- description: "Order of the bill."
+ description: "Order of the subscription."
notes:
type: string
format: string
example: "Some example notes"
nullable: true
- next_expected_match:
- type: string
- format: date-time
- example: "2018-09-17T12:46:47+01:00"
- description: "When the bill is expected to be due."
- nullable: true
- readOnly: true
- next_expected_match_diff:
- type: string
- format: string
- example: "today"
- description: "Formatted (locally) when the bill is due."
- nullable: true
- readOnly: true
object_group_id:
type: string
format: string
@@ -17633,8 +19999,8 @@ components:
type: integer
format: int32
example: 5
- nullable: true
readOnly: true
+ nullable: true
description: The order of the group. At least 1, for the highest sorting.
object_group_title:
type: string
@@ -17642,18 +20008,9 @@ components:
example: "Example Group"
nullable: true
description: The name of the group. NULL if no group.
- pay_dates:
- type: array
- description: "Array of future dates when the bill is expected to be paid. Autogenerated."
- readOnly: true
- items:
- type: string
- format: date-time
- example: "2018-09-17T12:46:47+01:00"
- readOnly: true
paid_dates:
type: array
- description: "Array of past transactions when the bill was paid."
+ description: "Array of past transactions when the subscription was paid."
readOnly: true
items:
type: object
@@ -17663,39 +20020,169 @@ components:
type: string
format: string
example: "123"
- description: "Transaction group ID of the paid bill."
+ description: "Transaction group ID of the transaction linked to this subscription."
readOnly: true
transaction_journal_id:
type: string
format: string
example: "123"
- description: "Transaction journal ID of the paid bill."
+ description: "Transaction journal ID of the transaction linked to this subscription."
readOnly: true
date:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
description: "Date the bill was paid."
readOnly: true
- BillStore:
- type: object
- required:
- - name
- - amount_min
- - amount_max
- - date
- - repeat_freq
- properties:
- currency_id:
- type: string
- format: string
- example: "5"
- description: Use either currency_id or currency_code
- currency_code:
- type: string
- format: string
- example: EUR
- description: Use either currency_id or currency_code
+ subscription_id:
+ type: string
+ format: string
+ example: "123"
+ description: "ID of this subscription."
+ readOnly: true
+ currency_id:
+ type: string
+ format: string
+ example: "5"
+ description: "The currency ID of the currency associated with this object."
+ currency_name:
+ type: string
+ format: string
+ example: Euro
+ description: "The currency name of the currency associated with this object."
+ currency_code:
+ type: string
+ format: string
+ example: EUR
+ description: "The currency code of the currency associated with this object."
+ currency_symbol:
+ type: string
+ format: string
+ example: "$"
+ readOnly: true
+ currency_decimal_places:
+ type: integer
+ format: int32
+ example: 2
+ readOnly: true
+ primary_currency_id:
+ type: string
+ format: string
+ example: "5"
+ description: "The currency ID of the administration's primary currency."
+ readOnly: true
+ primary_currency_name:
+ type: string
+ format: string
+ example: Euro
+ readOnly: true
+ description: "The currency name of the administration's primary currency."
+ primary_currency_code:
+ type: string
+ format: string
+ example: EUR
+ readOnly: true
+ description: "The currency code of the administration's primary currency."
+ primary_currency_symbol:
+ type: string
+ format: string
+ example: "$"
+ readOnly: true
+ description: "The currency symbol of the administration's primary currency."
+ primary_currency_decimal_places:
+ type: integer
+ format: int32
+ example: 2
+ readOnly: true
+ description: "The currency decimal places of the administration's primary currency."
+ amount:
+ type: string
+ format: amount
+ example: "123.45"
+ description: "The amount that was paid for this subscription in the subscription's currency."
+ pc_amount:
+ type: string
+ format: amount
+ example: "123.45"
+ description: "The amount that was paid for this subscription in the administration's primary currency."
+ foreign_amount:
+ type: string
+ format: amount
+ example: "123.45"
+ description: "The foreign amount that was paid for this subscription in the subscription's currency."
+ pc_foreign_amount:
+ type: string
+ format: amount
+ example: "123.45"
+ description: "The foreign amount that was paid for this subscription in the administration's primary currency."
+ pay_dates:
+ type: array
+ description: "Array of future dates when the bill is expected to be paid. Autogenerated."
+ readOnly: true
+ items:
+ type: string
+ format: date-time
+ example: "2025-11-01T00:00:00+00:00"
+ readOnly: true
+
+ next_expected_match:
+ type: string
+ format: date-time
+ example: "2025-11-01T00:00:00+00:00"
+ description: "When the subscription is expected to be due."
+ nullable: true
+ readOnly: true
+ next_expected_match_diff:
+ type: string
+ format: string
+ example: "today"
+ description: "Formatted (locally) when the subscription is due."
+ nullable: true
+ readOnly: true
+ BillRead:
+ type: object
+ required:
+ - type
+ - id
+ - attributes
+ properties:
+ type:
+ type: string
+ format: string
+ example: "bills"
+ description: "Immutable value"
+ id:
+ type: string
+ format: string
+ example: "2"
+ attributes:
+ $ref: "#/components/schemas/BillProperties"
+ BillSingle:
+ type: object
+ required:
+ - data
+ properties:
+ data:
+ $ref: "#/components/schemas/BillRead"
+ BillStore:
+ type: object
+ required:
+ - name
+ - amount_min
+ - amount_max
+ - date
+ - repeat_freq
+ properties:
+ currency_id:
+ type: string
+ format: string
+ example: "5"
+ description: Use either currency_id or currency_code
+ currency_code:
+ type: string
+ format: string
+ example: EUR
+ description: Use either currency_id or currency_code
name:
type: string
format: string
@@ -17711,19 +20198,19 @@ components:
date:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
end_date:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-30T23:59:59+00:00"
description: "The date after which this bill is no longer valid or applicable"
extension_date:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-30T23:59:59+00:00"
description: "The date before which the bill must be renewed (or cancelled)"
repeat_freq:
- $ref: '#/components/schemas/BillRepeatFrequency'
+ $ref: "#/components/schemas/BillRepeatFrequency"
skip:
type: integer
format: int32
@@ -17781,19 +20268,19 @@ components:
date:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
end_date:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-30T23:59:59+00:00"
description: "The date after which this bill is no longer valid or applicable"
extension_date:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-30T23:59:59+00:00"
description: "The date before which the bill must be renewed (or cancelled)"
repeat_freq:
- $ref: '#/components/schemas/BillRepeatFrequency'
+ $ref: "#/components/schemas/BillRepeatFrequency"
skip:
type: integer
format: int32
@@ -17821,7 +20308,7 @@ components:
example: "Example Group"
nullable: true
description: The name of the group. NULL if no group.
- Budget:
+ BudgetProperties:
type: object
required:
- name
@@ -17829,103 +20316,164 @@ components:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
- name:
- type: string
- format: string
- example: "Bills"
active:
type: boolean
format: boolean
example: false
+ name:
+ type: string
+ format: string
+ example: "Bills"
+ order:
+ type: integer
+ format: int32
+ example: 5
+ readOnly: true
notes:
type: string
format: string
example: "Some notes"
nullable: true
- order:
+ auto_budget_type:
+ $ref: "#/components/schemas/AutoBudgetType"
+ auto_budget_period:
+ $ref: "#/components/schemas/AutoBudgetPeriod"
+ object_group_id:
+ type: string
+ format: string
+ example: "5"
+ nullable: true
+ description: The group ID of the group this object is part of. NULL if no group.
+ object_group_order:
type: integer
format: int32
example: 5
readOnly: true
- auto_budget_type:
- $ref: '#/components/schemas/AutoBudgetType'
- currency_id:
+ nullable: true
+ description: The order of the group. At least 1, for the highest sorting.
+ object_group_title:
type: string
format: string
- example: "12"
+ example: "Example Group"
nullable: true
- description: "The currency ID that is part of the budget's auto-budget settings, if any."
+ description: The name of the group. NULL if no group.
+ object_has_currency_setting:
+ type: boolean
+ format: boolean
+ example: true
+ readOnly: true
+ description: "Indicates whether the object has a currency setting. If false, the object uses the administration's primary currency."
+ currency_id:
+ type: string
+ format: string
+ example: "5"
+ description: "The currency ID of the currency associated with this object."
+ currency_name:
+ type: string
+ format: string
+ example: Euro
+ description: "The currency name of the currency associated with this object."
currency_code:
type: string
format: string
- example: "EUR"
- nullable: true
- description: "The currency code that is part of the budget's auto-budget settings, if any."
+ example: EUR
+ description: "The currency code of the currency associated with this object."
currency_symbol:
type: string
format: string
example: "$"
readOnly: true
- nullable: true
- description: "The currency symbol that is part of the budget's auto-budget settings, if any."
currency_decimal_places:
type: integer
format: int32
example: 2
readOnly: true
- nullable: true
- description: "The currency decimal places that is part of the budget's auto-budget settings, if any."
- native_currency_id:
+ primary_currency_id:
type: string
format: string
example: "5"
+ description: "The currency ID of the administration's primary currency."
readOnly: true
- description: "The administration's native currency ID."
- native_currency_code:
+ primary_currency_name:
+ type: string
+ format: string
+ example: Euro
+ readOnly: true
+ description: "The currency name of the administration's primary currency."
+ primary_currency_code:
type: string
format: string
example: EUR
readOnly: true
- description: "The administration's native currency code."
- native_currency_symbol:
+ description: "The currency code of the administration's primary currency."
+ primary_currency_symbol:
type: string
format: string
example: "$"
readOnly: true
- description: "The administration's native currency symbol."
- native_currency_decimal_places:
+ description: "The currency symbol of the administration's primary currency."
+ primary_currency_decimal_places:
type: integer
format: int32
example: 2
readOnly: true
- description: "The administration's native currency decimal places."
+ description: "The currency decimal places of the administration's primary currency."
auto_budget_amount:
type: string
format: amount
example: "-1012.12"
nullable: true
description: "The amount for the auto-budget, if set."
- native_auto_budget_amount:
+ pc_auto_budget_amount:
type: string
format: amount
example: "-1012.12"
nullable: true
- description: "The native amount for the auto-budget, if set."
- auto_budget_period:
- $ref: '#/components/schemas/AutoBudgetPeriod'
+ description: "The amount for the auto-budget, if set in the primary currency of the administration."
spent:
description: "Information on how much was spent in this budget. Is only filled in when the start and end date are submitted."
type: array
readOnly: true
items:
- $ref: '#/components/schemas/BudgetSpent'
+ $ref: "#/components/schemas/ArrayEntryWithCurrencyAndSum"
+ pc_spent:
+ description: "Information on how much was spent in this budget. Is only filled in when the start and end date are submitted. It is converted to the primary currency of the administration."
+ type: array
+ readOnly: true
+ items:
+ $ref: "#/components/schemas/ArrayEntryWithCurrencyAndSum"
+ BudgetRead:
+ type: object
+ required:
+ - type
+ - id
+ - attributes
+ properties:
+ type:
+ type: string
+ format: string
+ example: "budgets"
+ description: "Immutable value"
+ id:
+ type: string
+ format: string
+ example: "2"
+ attributes:
+ $ref: "#/components/schemas/BudgetProperties"
+ BudgetSingle:
+ type: object
+ required:
+ - data
+ properties:
+ data:
+ $ref: "#/components/schemas/BudgetRead"
BudgetStore:
type: object
required:
@@ -17949,27 +20497,33 @@ components:
format: string
example: "Some notes"
nullable: true
+ fire_webhooks:
+ type: boolean
+ format: boolean
+ example: true
+ default: true
+ description: "Whether or not to fire the webhooks that are related to this event."
auto_budget_type:
- $ref: '#/components/schemas/AutoBudgetType'
+ $ref: "#/components/schemas/AutoBudgetType"
auto_budget_currency_id:
type: string
format: string
example: "12"
nullable: true
- description: "Use either currency_id or currency_code. Defaults to the user's default currency."
+ description: "Use either currency_id or currency_code. Defaults to the user's financial administration's currency."
auto_budget_currency_code:
type: string
format: string
example: "EUR"
nullable: true
- description: "Use either currency_id or currency_code. Defaults to the user's default currency."
+ description: "Use either currency_id or currency_code. Defaults to the user's financial administration's currency."
auto_budget_amount:
type: string
format: amount
example: "-1012.12"
nullable: true
auto_budget_period:
- $ref: '#/components/schemas/AutoBudgetPeriod'
+ $ref: "#/components/schemas/AutoBudgetPeriod"
BudgetUpdate:
type: object
required:
@@ -17992,70 +20546,291 @@ components:
format: string
example: "Some notes"
nullable: true
+ fire_webhooks:
+ type: boolean
+ format: boolean
+ example: true
+ default: true
+ description: "Whether or not to fire the webhooks that are related to this event."
auto_budget_type:
- $ref: '#/components/schemas/AutoBudgetType'
+ $ref: "#/components/schemas/AutoBudgetType"
auto_budget_currency_id:
type: string
format: string
example: "12"
nullable: true
- description: "Use either currency_id or currency_code. Defaults to the user's default currency."
+ description: "Use either currency_id or currency_code. Defaults to the user's financial administration's currency."
auto_budget_currency_code:
type: string
format: string
example: "EUR"
nullable: true
- description: "Use either currency_id or currency_code. Defaults to the user's default currency."
+ description: "Use either currency_id or currency_code. Defaults to the user's financial administration's currency."
auto_budget_amount:
type: string
format: amount
example: "-1012.12"
nullable: true
auto_budget_period:
- $ref: '#/components/schemas/AutoBudgetPeriod'
- BudgetLimit:
+ $ref: "#/components/schemas/AutoBudgetPeriod"
+ BudgetLimitProperties:
+ type: object
+ properties:
+ created_at:
+ type: string
+ format: date-time
+ example: "2025-11-01T00:00:00+00:00"
+ readOnly: true
+ updated_at:
+ type: string
+ format: date-time
+ example: "2025-11-01T00:00:00+00:00"
+ readOnly: true
+ start:
+ type: string
+ format: date-time
+ example: "2025-11-01T00:00:00+00:00"
+ description: Start date of the budget limit.
+ end:
+ type: string
+ format: date-time
+ example: "2025-11-30T23:59:59+00:00"
+ description: End date of the budget limit.
+ budget_id:
+ type: string
+ format: string
+ example: "23"
+ description: The budget ID of the associated budget.
+ readOnly: true
+ object_has_currency_setting:
+ type: boolean
+ format: boolean
+ example: true
+ readOnly: true
+ description: "Indicates whether the object has a currency setting. If false, the object uses the administration's primary currency."
+ currency_id:
+ type: string
+ format: string
+ example: "5"
+ description: "The currency ID of the currency associated with this object."
+ currency_name:
+ type: string
+ format: string
+ example: Euro
+ description: "The currency name of the currency associated with this object."
+ currency_code:
+ type: string
+ format: string
+ example: EUR
+ description: "The currency code of the currency associated with this object."
+ currency_symbol:
+ type: string
+ format: string
+ example: "$"
+ readOnly: true
+ currency_decimal_places:
+ type: integer
+ format: int32
+ example: 2
+ readOnly: true
+ primary_currency_id:
+ type: string
+ format: string
+ example: "5"
+ description: "The currency ID of the administration's primary currency."
+ readOnly: true
+ primary_currency_name:
+ type: string
+ format: string
+ example: Euro
+ readOnly: true
+ description: "The currency name of the administration's primary currency."
+ primary_currency_code:
+ type: string
+ format: string
+ example: EUR
+ readOnly: true
+ description: "The currency code of the administration's primary currency."
+ primary_currency_symbol:
+ type: string
+ format: string
+ example: "$"
+ readOnly: true
+ description: "The currency symbol of the administration's primary currency."
+ primary_currency_decimal_places:
+ type: integer
+ format: int32
+ example: 2
+ readOnly: true
+ description: "The currency decimal places of the administration's primary currency."
+ amount:
+ type: string
+ format: amount
+ example: "123.45"
+ pc_amount:
+ type: string
+ format: amount
+ example: "123.45"
+ nullable: true
+ readOnly: true
+ description: "The amount of this budget limit in the user's primary currency, if the original amount is in a different currency."
+ period:
+ type: string
+ format: string
+ example: "monthly"
+ nullable: true
+ readOnly: true
+ description: Period of the budget limit. Only used when auto-generated by auto-budget.
+ spent:
+ description: "Amount(s) spent in the currencies in the database for this budget limit."
+ type: array
+ readOnly: true
+ items:
+ $ref: "#/components/schemas/ArrayEntryWithCurrencyAndSum"
+ pc_spent:
+ description: "Amount(s) spent in the primary currency in the database for this budget limit."
+ type: array
+ readOnly: true
+ items:
+ $ref: "#/components/schemas/ArrayEntryWithCurrencyAndSum"
+ notes:
+ type: string
+ format: string
+ example: "Some example notes"
+ nullable: true
+ description: Some notes for this specific budget limit.
+ BudgetLimitRead:
+ type: object
+ required:
+ - type
+ - id
+ - attributes
+ properties:
+ type:
+ type: string
+ format: string
+ example: "budget_limits"
+ description: "Immutable value"
+ id:
+ type: string
+ format: string
+ example: "2"
+ attributes:
+ $ref: "#/components/schemas/BudgetLimitProperties"
+ BudgetLimitSingle:
+ type: object
+ required:
+ - data
+ properties:
+ data:
+ $ref: "#/components/schemas/BudgetLimitRead"
+ BudgetLimitStore:
+ type: object
+ required:
+ - amount
+ - start
+ - end
+ - budget_id
+ properties:
+ currency_id:
+ type: string
+ format: string
+ example: "5"
+ description: Use either currency_id or currency_code. Defaults to the user's primary currency.
+ currency_code:
+ type: string
+ format: string
+ example: EUR
+ description: Use either currency_id or currency_code. Defaults to the user's primary currency.
+ budget_id:
+ type: string
+ format: string
+ example: "23"
+ description: The budget ID of the associated budget.
+ readOnly: true
+ start:
+ type: string
+ format: date
+ example: "2025-11-01"
+ description: Start date of the budget limit.
+ period:
+ type: string
+ format: string
+ example: "monthly"
+ nullable: true
+ readOnly: true
+ description: Period of the budget limit. Only used when auto-generated by auto-budget.
+ end:
+ type: string
+ format: date
+ example: "2025-11-30"
+ description: End date of the budget limit.
+ amount:
+ type: string
+ format: amount
+ example: "123.45"
+ notes:
+ type: string
+ format: string
+ example: "Some example notes"
+ nullable: true
+ description: Some notes for this specific budget limit.
+ fire_webhooks:
+ type: boolean
+ format: boolean
+ example: true
+ default: true
+ description: "Whether or not to fire the webhooks that are related to this event."
+ BudgetLimitUpdate:
type: object
- required:
- - amount
- - start
- - end
- - budget_id
properties:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
start:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
description: Start date of the budget limit.
end:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-30T23:59:59+00:00"
description: End date of the budget limit.
+ budget_id:
+ type: string
+ format: string
+ example: "23"
+ description: The budget ID of the associated budget.
+ readOnly: true
+ object_has_currency_setting:
+ type: boolean
+ format: boolean
+ example: true
+ readOnly: true
+ description: "Indicates whether the object has a currency setting. If false, the object uses the administration's primary currency."
currency_id:
type: string
format: string
example: "5"
- description: Use either currency_id or currency_code. Defaults to the user's default currency.
- currency_code:
+ description: "The currency ID of the currency associated with this object."
+ currency_name:
type: string
format: string
- example: EUR
- description: Use either currency_id or currency_code. Defaults to the user's default currency.
- currency_name:
+ example: Euro
+ description: "The currency name of the currency associated with this object."
+ currency_code:
type: string
format: string
- example: "Euro"
- readOnly: true
+ example: EUR
+ description: "The currency code of the currency associated with this object."
currency_symbol:
type: string
format: string
@@ -18066,36 +20841,36 @@ components:
format: int32
example: 2
readOnly: true
- native_currency_id:
+ primary_currency_id:
type: string
format: string
example: "5"
+ description: "The currency ID of the administration's primary currency."
+ readOnly: true
+ primary_currency_name:
+ type: string
+ format: string
+ example: Euro
readOnly: true
- description: "The administration's native currency ID."
- native_currency_code:
+ description: "The currency name of the administration's primary currency."
+ primary_currency_code:
type: string
format: string
example: EUR
readOnly: true
- description: "The administration's native currency code."
- native_currency_symbol:
+ description: "The currency code of the administration's primary currency."
+ primary_currency_symbol:
type: string
format: string
example: "$"
readOnly: true
- description: "The administration's native currency symbol."
- native_currency_decimal_places:
+ description: "The currency symbol of the administration's primary currency."
+ primary_currency_decimal_places:
type: integer
format: int32
example: 2
readOnly: true
- description: "The administration's native currency decimal places."
- budget_id:
- type: string
- format: string
- example: "23"
- description: The budget ID of the associated budget.
- readOnly: true
+ description: "The currency decimal places of the administration's primary currency."
period:
type: string
format: string
@@ -18107,103 +20882,33 @@ components:
type: string
format: amount
example: "123.45"
- native_amount:
+ pc_amount:
type: string
format: amount
example: "123.45"
nullable: true
readOnly: true
- description: "The amount of this budget limit in the user's native currency, if the original amount is in a different currency."
+ description: "The amount of this budget limit in the user's primary currency, if the original amount is in a different currency."
spent:
type: string
format: amount
example: "-1012.12"
nullable: true
readOnly: true
- description: "Will be in the native currency if this is turned on by the user."
- notes:
- type: string
- format: string
- example: "Some example notes"
- nullable: true
- description: Some notes for this specific budget limit.
- BudgetLimitStore:
- type: object
- required:
- - amount
- - start
- - end
- - budget_id
- properties:
- currency_id:
- type: string
- format: string
- example: "5"
- description: Use either currency_id or currency_code. Defaults to the user's default currency.
- currency_code:
- type: string
- format: string
- example: EUR
- description: Use either currency_id or currency_code. Defaults to the user's default currency.
- budget_id:
- type: string
- format: string
- example: "23"
- description: The budget ID of the associated budget.
- readOnly: true
- start:
- type: string
- format: date
- example: "2017-09-17"
- description: Start date of the budget limit.
- period:
- type: string
- format: string
- example: "monthly"
- nullable: true
- readOnly: true
- description: Period of the budget limit. Only used when auto-generated by auto-budget.
- end:
- type: string
- format: date
- example: "2017-09-17"
- description: End date of the budget limit.
- amount:
- type: string
- format: amount
- example: "123.45"
+ description: "Will be in the primary currency if this is turned on by the user."
notes:
type: string
format: string
example: "Some example notes"
nullable: true
description: Some notes for this specific budget limit.
- BudgetSpent:
- type: object
- properties:
- sum:
- type: string
- format: amount
- example: "123.45"
- description: "The amount spent. This is in the administration's native currency, if the conversion is turned on."
- currency_id:
- type: string
- format: string
- example: "5"
- currency_code:
- type: string
- format: string
- example: "USD"
- currency_symbol:
- type: string
- format: string
- example: "$"
- currency_decimal_places:
- type: integer
- format: int32
- example: 2
- description: Number of decimals supported by the currency
- Category:
+ fire_webhooks:
+ type: boolean
+ format: boolean
+ example: true
+ default: true
+ description: "Whether or not to fire the webhooks that are related to this event."
+ CategoryProperties:
type: object
required:
- name
@@ -18211,12 +20916,12 @@ components:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
name:
type: string
@@ -18227,41 +20932,79 @@ components:
format: string
nullable: true
example: "Some example notes"
- native_currency_id:
+ object_has_currency_setting:
+ type: boolean
+ format: boolean
+ example: false
+ readOnly: false
+ description: "This object never has its own currency setting, so this value is always false."
+ primary_currency_id:
type: string
format: string
example: "5"
+ description: "The currency ID of the administration's primary currency."
readOnly: true
- description: "The administration's native currency ID."
- native_currency_code:
+ primary_currency_name:
+ type: string
+ format: string
+ example: Euro
+ readOnly: true
+ description: "The currency name of the administration's primary currency."
+ primary_currency_code:
type: string
format: string
example: EUR
readOnly: true
- description: "The administration's native currency code."
- native_currency_symbol:
+ description: "The currency code of the administration's primary currency."
+ primary_currency_symbol:
type: string
format: string
example: "$"
readOnly: true
- description: "The administration's native currency symbol."
- native_currency_decimal_places:
+ description: "The currency symbol of the administration's primary currency."
+ primary_currency_decimal_places:
type: integer
format: int32
example: 2
readOnly: true
- description: "The administration's native currency decimal places."
+ description: "The currency decimal places of the administration's primary currency."
spent:
+ description: "Amount(s) spent in the currencies in the database for this category. ONLY present when start and date are set."
+ type: array
+ readOnly: true
+ items:
+ $ref: "#/components/schemas/ArrayEntryWithCurrencyAndSum"
+ pc_spent:
+ description: "Amount(s) spent in the primary currency in the database for this category. ONLY present when start and date are set. "
type: array
readOnly: true
items:
- $ref: '#/components/schemas/CategorySpent'
+ $ref: "#/components/schemas/ArrayEntryWithCurrencyAndSum"
earned:
+ description: "Amount(s) earned in the currencies in the database for this category. ONLY present when start and date are set."
type: array
readOnly: true
items:
- $ref: '#/components/schemas/CategoryEarned'
- CategoryUpdate:
+ $ref: "#/components/schemas/ArrayEntryWithCurrencyAndSum"
+ pc_earned:
+ description: "Amount(s) earned in the primary currency in the database for this category. ONLY present when start and date are set. "
+ type: array
+ readOnly: true
+ items:
+ $ref: "#/components/schemas/ArrayEntryWithCurrencyAndSum"
+ transferred:
+ description: "Amount(s) transferred in the currencies in the database for this category. ONLY present when start and date are set. "
+ type: array
+ readOnly: true
+ items:
+ $ref: "#/components/schemas/ArrayEntryWithCurrencyAndSum"
+ pc_transferred:
+ description: "Amount(s) transferred in primary currency in the database for this category. ONLY present when start and date are set. "
+ type: array
+ readOnly: true
+ items:
+ $ref: "#/components/schemas/ArrayEntryWithCurrencyAndSum"
+ CategoryStore:
type: object
required:
- name
@@ -18275,89 +21018,32 @@ components:
format: string
nullable: true
example: "Some example notes"
- CategoryEarned:
- type: object
- properties:
- currency_id:
- type: string
- format: string
- example: "5"
- currency_code:
- type: string
- format: string
- example: "USD"
- currency_symbol:
- type: string
- format: string
- example: "$"
- currency_decimal_places:
- type: integer
- format: int32
- example: 2
- description: Number of decimals supported by the currency
- sum:
- type: string
- format: amount
- example: "123.45"
- description: The amount earned.
- CategorySpent:
- type: object
- properties:
- currency_id:
- type: string
- format: string
- example: "5"
- currency_code:
- type: string
- format: string
- example: "USD"
- currency_symbol:
- type: string
- format: string
- example: "$"
- currency_decimal_places:
- type: integer
- format: int32
- example: 2
- description: Number of decimals supported by the currency
- sum:
- type: string
- format: amount
- example: "-12423.45"
- description: The amount spent.
- CurrencyExchangeRateRead:
+ CategoryUpdate:
type: object
required:
- - type
- - id
- - attributes
- - links
+ - name
properties:
- type:
+ name:
type: string
format: string
- example: "currency_exchange_rates"
- description: "Immutable value"
- id:
+ example: "Lunch"
+ notes:
type: string
format: string
- example: "2"
- attributes:
- $ref: '#/components/schemas/CurrencyExchangeRateReadAttributes'
- links:
- $ref: '#/components/schemas/ObjectLink'
- CurrencyExchangeRateReadAttributes:
+ nullable: true
+ example: "Some example notes"
+ CurrencyExchangeProperties:
type: object
properties:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
from_currency_id:
type: string
@@ -18365,6 +21051,12 @@ components:
example: "12"
readOnly: true
description: "Base currency ID for this exchange rate entry."
+ from_currency_name:
+ type: string
+ format: string
+ example: "Euro"
+ readOnly: true
+ description: "Base currency name for this exchange rate entry."
from_currency_code:
type: string
format: string
@@ -18389,6 +21081,12 @@ components:
example: "12"
readOnly: true
description: "Destination currency ID for this exchange rate entry."
+ to_currency_name:
+ type: string
+ format: string
+ example: "EUR"
+ readOnly: true
+ description: "Destination currency name for this exchange rate entry."
to_currency_code:
type: string
format: string
@@ -18417,27 +21115,103 @@ components:
type: string
format: date-time
readOnly: true
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
description: "Date and time of the exchange rate."
+ CurrencyExchangeRateRead:
+ type: object
+ properties:
+ type:
+ type: string
+ format: string
+ readOnly: true
+ example: "currency_exchange_rates"
+ description: "Immutable value"
+ id:
+ type: string
+ readOnly: true
+ format: string
+ example: "2"
+ attributes:
+ $ref: "#/components/schemas/CurrencyExchangeProperties"
+ links:
+ $ref: "#/components/schemas/ObjectLink"
CurrencyExchangeRateSingle:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/CurrencyExchangeRateRead'
+ $ref: "#/components/schemas/CurrencyExchangeRateRead"
CurrencyExchangeRateStore:
type: object
required:
- date
- from
- to
+ - rates
+ properties:
+ date:
+ type: string
+ format: date
+ example: "2025-11-01"
+ description: "The date to which the exchange rate is applicable."
+ nullable: false
+ from:
+ type: string
+ format: string
+ example: "USD"
+ description: "The base currency code."
+ nullable: false
+ to:
+ type: string
+ format: string
+ example: "EUR"
+ description: "The destination currency code."
+ nullable: false
+ rate:
+ type: string
+ format: string
+ nullable: false
+ example: "2.3456"
+ description: "The exchange rate from the base currency to the destination currency."
+ CurrencyExchangeRateStoreByDate:
+ type: object
+ required:
+ - from
+ - date
+ - rates
+ properties:
+ from:
+ type: string
+ format: string
+ example: "EUR"
+ description: "The 'from'-currency"
+ rates:
+ type: object
+ description: "The actual entries for this data set. They 'key' value is 'to' currency. The value is the exchange rate."
+ additionalProperties:
+ type: string
+ example:
+ USD: "1.2345"
+ GBP: "6.3456"
+ CurrencyExchangeRateStoreByPair:
+ type: object
+ description: "The actual entries for this data set. They 'key' value is the date in YYYY-MM-DD. The value is the exchange rate."
+ additionalProperties:
+ type: string
+ example:
+ 2025-08-01: "1.2345"
+ 2025-08-02: "6.3456"
+ CurrencyExchangeRateUpdate:
+ type: object
+ required:
+ - date
- rate
properties:
date:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
description: The date to which the exchange rate is applicable.
nullable: false
rate:
@@ -18451,25 +21225,18 @@ components:
format: string
example: "USD"
description: "The base currency code."
- nullable: false
+ nullable: true
to:
type: string
format: string
example: "EUR"
description: "The destination currency code."
- nullable: false
- CurrencyExchangeRateUpdate:
+ nullable: true
+ CurrencyExchangeRateUpdateNoDate:
type: object
required:
- - date
- rate
properties:
- date:
- type: string
- format: date
- example: "2018-09-17"
- description: The date to which the exchange rate is applicable.
- nullable: false
rate:
type: string
format: string
@@ -18485,12 +21252,12 @@ components:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
title:
type: string
@@ -18558,89 +21325,114 @@ components:
type: string
format: uri
example: "https://demo.firefly-iii.org/api/v1/OBJECT?&page=12"
- PiggyBank:
+ PiggyBankAccountRead:
type: object
- required:
- - name
- - account_id
- - target_amount
properties:
- created_at:
- type: string
- format: date-time
- example: "2018-09-17T12:46:47+01:00"
- readOnly: true
- updated_at:
+ account_id:
type: string
- format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ format: string
+ example: "3"
readOnly: true
+ nullable: false
+ description: "The ID of the account."
name:
type: string
format: string
- example: "New digital camera"
- accounts:
- type: array
- items:
- $ref: '#/components/schemas/PiggyBankAccountRead'
- currency_id:
- type: string
- format: string
- example: "5"
readOnly: true
- currency_code:
+ nullable: false
+ example: "Checking account"
+ current_amount:
+ type: string
+ format: amount
+ example: "123.45"
+ pc_current_amount:
+ type: string
+ format: amount
+ example: "123.45"
+ description: "If convertToPrimary is on, this will show the amount in the primary currency."
+ PiggyBankAccountStore:
+ type: object
+ required:
+ - id
+ properties:
+ id:
type: string
format: string
- example: "USD"
- readOnly: true
- currency_symbol:
+ example: "3"
+ nullable: true
+ description: "The ID of the account."
+ name:
type: string
format: string
- example: "$"
- readOnly: true
- currency_decimal_places:
- type: integer
- format: int32
- example: 2
- description: Number of decimals supported by the currency
- readOnly: true
- target_amount:
+ nullable: true
+ example: "Checking account"
+ description: "The name of the account."
+ current_amount:
type: string
format: amount
- nullable: true
example: "123.45"
- percentage:
- type: number
- format: float
+ description: "The amount saved currently."
+ PiggyBankAccountUpdate:
+ type: object
+ required:
+ - id
+ properties:
+ account_id:
+ type: string
+ format: string
+ example: "3"
nullable: true
- example: 12.5
- readOnly: true
+ description: "The ID of the account."
+ name:
+ type: string
+ format: string
+ nullable: true
+ example: "Checking account"
+ description: "The name of the account."
current_amount:
type: string
format: amount
+ nullable: true
example: "123.45"
- left_to_save:
+ description: "The amount saved currently."
+ PiggyBankProperties:
+ type: object
+ required:
+ - name
+ - account_id
+ - target_amount
+ properties:
+ created_at:
type: string
- nullable: true
- format: string
- example: "700.00"
+ format: date-time
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
- save_per_month:
+ updated_at:
+ type: string
+ format: date-time
+ example: "2025-11-01T00:00:00+00:00"
+ readOnly: true
+ name:
type: string
- nullable: true
format: string
- example: "12.45"
+ example: "New digital camera"
+ percentage:
+ type: number
+ format: int32
+ nullable: true
+ example: 12
readOnly: true
+ description: "The percentage of the target amount that has been saved, if a target amount is set."
start_date:
type: string
- format: date
- example: "2018-09-17"
+ format: date-time
+ example: "2025-11-01T00:00:00+00:00"
description: "The date you started with this piggy bank."
target_date:
type: string
- format: date
nullable: true
- example: "2018-09-17"
+ format: date-time
+ example: "2025-11-01T00:00:00+00:00"
description: "The date you intend to finish saving money."
order:
type: integer
@@ -18675,87 +21467,120 @@ components:
example: "Example Group"
nullable: true
description: The name of the group. NULL if no group.
- PiggyBankAccountRead:
- type: object
- required:
- - id
- - name
- - current_amount
- - native_current_amount
- properties:
- id:
+ accounts:
+ type: array
+ items:
+ $ref: "#/components/schemas/PiggyBankAccountRead"
+ object_has_currency_setting:
+ type: boolean
+ format: boolean
+ example: true
+ readOnly: true
+ description: "Indicates whether the object has a currency setting. If false, the object uses the administration's primary currency."
+ currency_id:
type: string
format: string
- example: "3"
+ example: "5"
+ description: "The currency ID of the currency associated with this object."
+ currency_name:
+ type: string
+ format: string
+ example: Euro
+ description: "The currency name of the currency associated with this object."
+ currency_code:
+ type: string
+ format: string
+ example: EUR
+ description: "The currency code of the currency associated with this object."
+ currency_symbol:
+ type: string
+ format: string
+ example: "$"
readOnly: true
- nullable: false
- description: "The ID of the account."
- name:
+ currency_decimal_places:
+ type: integer
+ format: int32
+ example: 2
+ readOnly: true
+ primary_currency_id:
type: string
format: string
+ example: "5"
+ description: "The currency ID of the administration's primary currency."
readOnly: true
- nullable: false
- example: "Checking account"
- current_amount:
+ primary_currency_name:
type: string
- format: amount
- example: "123.45"
- native_current_amount:
+ format: string
+ example: Euro
+ readOnly: true
+ description: "The currency name of the administration's primary currency."
+ primary_currency_code:
type: string
- format: amount
- example: "123.45"
- description: "If convertToNative is on, this will show the amount in the native currency."
- PiggyBankAccountStore:
- type: object
- required:
- - id
- properties:
- id:
+ format: string
+ example: EUR
+ readOnly: true
+ description: "The currency code of the administration's primary currency."
+ primary_currency_symbol:
type: string
format: string
- example: "3"
+ example: "$"
+ readOnly: true
+ description: "The currency symbol of the administration's primary currency."
+ primary_currency_decimal_places:
+ type: integer
+ format: int32
+ example: 2
+ readOnly: true
+ description: "The currency decimal places of the administration's primary currency."
+ target_amount:
+ type: string
+ format: amount
nullable: true
- description: "The ID of the account."
- name:
+ example: "123.45"
+ pc_target_amount:
type: string
- format: string
+ format: amount
nullable: true
- example: "Checking account"
- description: "The name of the account."
+ example: "123.45"
+ description: "The target amount in the primary currency of the administration."
current_amount:
type: string
format: amount
example: "123.45"
- description: "The amount saved currently."
- PiggyBankAccountUpdate:
- type: object
- required:
- - id
- properties:
- account_id:
+ pc_current_amount:
+ type: string
+ format: amount
+ example: "123.45"
+ description: "The current amount in the primary currency of the administration."
+ left_to_save:
type: string
- format: string
- example: "3"
nullable: true
- description: "The ID of the account."
- name:
+ format: string
+ example: "700.00"
+ pc_left_to_save:
type: string
+ nullable: true
format: string
+ example: "700.00"
+ save_per_month:
+ type: string
nullable: true
- example: "Checking account"
- description: "The name of the account."
- current_amount:
+ format: string
+ example: "12.45"
+ readOnly: true
+ pc_save_per_month:
type: string
- format: amount
nullable: true
- example: "123.45"
- description: "The amount saved currently."
+ format: string
+ example: "12.45"
+ readOnly: true
PiggyBankStore:
type: object
required:
- name
- account_id
- target_amount
+ - start_date
properties:
name:
type: string
@@ -18764,7 +21589,7 @@ components:
accounts:
type: array
items:
- $ref: '#/components/schemas/PiggyBankAccountStore'
+ $ref: "#/components/schemas/PiggyBankAccountStore"
target_amount:
type: string
format: amount
@@ -18777,13 +21602,13 @@ components:
start_date:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
description: The date you started with this piggy bank.
target_date:
type: string
format: date
nullable: true
- example: "2018-09-17"
+ example: "2025-11-30"
description: The date you intend to finish saving money.
order:
type: integer
@@ -18821,7 +21646,7 @@ components:
accounts:
type: array
items:
- $ref: '#/components/schemas/PiggyBankAccountUpdate'
+ $ref: "#/components/schemas/PiggyBankAccountUpdate"
currency_id:
type: string
format: string
@@ -18840,13 +21665,13 @@ components:
start_date:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
description: The date you started with this piggy bank.
target_date:
type: string
format: date
nullable: true
- example: "2018-09-17"
+ example: "2025-11-30"
description: The date you intend to finish saving money.
order:
type: integer
@@ -18874,37 +21699,86 @@ components:
example: "Example Group"
nullable: true
description: The name of the group. NULL if no group.
- PiggyBankEvent:
+ PiggyBankEventProperties:
type: object
properties:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
+ amount:
+ type: string
+ format: amount
+ example: "123.45"
+ pc_amount:
+ type: string
+ format: amount
+ example: "123.45"
+ object_has_currency_setting:
+ type: boolean
+ format: boolean
+ example: true
+ readOnly: true
+ description: "Indicates whether the object has a currency setting. If false, the object uses the administration's primary currency."
currency_id:
type: string
format: string
example: "5"
- currency_code:
+ description: "The currency ID of the currency associated with this object."
+ currency_name:
+ type: string
+ format: string
+ example: Euro
+ description: "The currency name of the currency associated with this object."
+ currency_code:
+ type: string
+ format: string
+ example: EUR
+ description: "The currency code of the currency associated with this object."
+ currency_symbol:
+ type: string
+ format: string
+ example: "$"
+ readOnly: true
+ currency_decimal_places:
+ type: integer
+ format: int32
+ example: 2
+ readOnly: true
+ primary_currency_id:
+ type: string
+ format: string
+ example: "5"
+ description: "The currency ID of the administration's primary currency."
+ readOnly: true
+ primary_currency_name:
+ type: string
+ format: string
+ example: Euro
+ readOnly: true
+ description: "The currency name of the administration's primary currency."
+ primary_currency_code:
type: string
format: string
example: EUR
- currency_symbol:
+ readOnly: true
+ description: "The currency code of the administration's primary currency."
+ primary_currency_symbol:
type: string
format: string
example: "$"
- currency_decimal_places:
+ readOnly: true
+ description: "The currency symbol of the administration's primary currency."
+ primary_currency_decimal_places:
type: integer
format: int32
example: 2
- amount:
- type: string
- format: amount
- example: "123.45"
+ readOnly: true
+ description: "The currency decimal places of the administration's primary currency."
transaction_journal_id:
type: string
format: string
@@ -18926,41 +21800,41 @@ components:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
name:
type: string
format: string
example: currencyPreference
data:
- $ref: '#/components/schemas/PolymorphicProperty'
+ $ref: "#/components/schemas/PolymorphicProperty"
PreferenceUpdate:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/PolymorphicProperty'
- Recurrence:
+ $ref: "#/components/schemas/PolymorphicProperty"
+ RecurrenceProperties:
type: object
properties:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
type:
- $ref: '#/components/schemas/RecurrenceTransactionType'
+ $ref: "#/components/schemas/RecurrenceTransactionType"
title:
type: string
format: string
@@ -18973,27 +21847,21 @@ components:
first_date:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-30"
description: "First time the recurring transaction will fire. Must be after today."
latest_date:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
description: "Last time the recurring transaction has fired."
nullable: true
readOnly: true
repeat_until:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-30"
description: "Date until the recurring transaction can fire. Use either this field or repetitions."
nullable: true
- nr_of_repetitions:
- type: integer
- format: int32
- example: 5
- description: Max number of created transactions. Use either this field or repeat_until.
- nullable: true
apply_rules:
type: boolean
format: boolean
@@ -19004,6 +21872,12 @@ components:
format: boolean
example: true
description: If the recurrence is even active.
+ nr_of_repetitions:
+ type: integer
+ format: int32
+ example: 5
+ description: Max number of created transactions. Use either this field or repeat_until.
+ nullable: true
notes:
type: string
format: string
@@ -19012,11 +21886,11 @@ components:
repetitions:
type: array
items:
- $ref: '#/components/schemas/RecurrenceRepetition'
+ $ref: "#/components/schemas/RecurrenceRepetition"
transactions:
type: array
items:
- $ref: '#/components/schemas/RecurrenceTransaction'
+ $ref: "#/components/schemas/RecurrenceTransaction"
RecurrenceStore:
type: object
required:
@@ -19028,7 +21902,7 @@ components:
- transactions
properties:
type:
- $ref: '#/components/schemas/RecurrenceTransactionType'
+ $ref: "#/components/schemas/RecurrenceTransactionType"
title:
type: string
format: string
@@ -19041,12 +21915,12 @@ components:
first_date:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-30"
description: "First time the recurring transaction will fire. Must be after today."
repeat_until:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-30"
description: "Date until the recurring transaction can fire. Use either this field or repetitions."
nullable: true
nr_of_repetitions:
@@ -19073,11 +21947,11 @@ components:
repetitions:
type: array
items:
- $ref: '#/components/schemas/RecurrenceRepetitionStore'
+ $ref: "#/components/schemas/RecurrenceRepetitionStore"
transactions:
type: array
items:
- $ref: '#/components/schemas/RecurrenceTransactionStore'
+ $ref: "#/components/schemas/RecurrenceTransactionStore"
RecurrenceUpdate:
type: object
properties:
@@ -19093,13 +21967,13 @@ components:
first_date:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-30"
description: "First time the recurring transaction will fire."
repeat_until:
type: string
format: date
- example: "2018-09-17"
- description: Date until the recurring transaction can fire. After that date, it's basically inactive. Use either this field or repetitions.
+ example: "2025-11-30"
+ description: Date until when the recurring transaction can fire. After that date, it's basically inactive. Use either this field or repetitions.
nullable: true
nr_of_repetitions:
type: integer
@@ -19125,11 +21999,11 @@ components:
repetitions:
type: array
items:
- $ref: '#/components/schemas/RecurrenceRepetitionUpdate'
+ $ref: "#/components/schemas/RecurrenceRepetitionUpdate"
transactions:
type: array
items:
- $ref: '#/components/schemas/RecurrenceTransactionUpdate'
+ $ref: "#/components/schemas/RecurrenceTransactionUpdate"
RecurrenceRepetition:
type: object
required:
@@ -19144,15 +22018,15 @@ components:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
type:
- $ref: '#/components/schemas/RecurrenceRepetitionType'
+ $ref: "#/components/schemas/RecurrenceRepetitionType"
moment:
type: string
format: string
@@ -19163,7 +22037,7 @@ components:
- For 'weekly', it is day of the week between 1 and 7 (Monday - Sunday).
- For 'ndom', it is '1,2' or '4,5' or something else, where the first number is the week in the month, and the second number is the day in the week (between 1 and 7). '2,3' means: the 2nd Wednesday of the month
- For 'monthly' it is the day of the month (1 - 31)
- - For yearly, it is a full date, ie '2018-09-17'. The year you use does not matter.
+ - For yearly, it is a full date, ie '2025-11-01'. The year you use does not matter.
skip:
type: integer
format: int32
@@ -19192,7 +22066,7 @@ components:
items:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-30T23:59:59+00:00"
RecurrenceRepetitionStore:
type: object
required:
@@ -19200,7 +22074,7 @@ components:
- moment
properties:
type:
- $ref: '#/components/schemas/RecurrenceRepetitionType'
+ $ref: "#/components/schemas/RecurrenceRepetitionType"
moment:
type: string
format: string
@@ -19211,7 +22085,7 @@ components:
- For 'weekly', it is day of the week between 1 and 7 (Monday - Sunday).
- For 'ndom', it is '1,2' or '4,5' or something else, where the first number is the week in the month, and the second number is the day in the week (between 1 and 7). '2,3' means: the 2nd Wednesday of the month
- For 'monthly' it is the day of the month (1 - 31)
- - For yearly, it is a full date, ie '2018-09-17'. The year you use does not matter.
+ - For yearly, it is a full date, ie '2025-11-01'. The year you use does not matter.
skip:
type: integer
format: int32
@@ -19231,7 +22105,7 @@ components:
type: object
properties:
type:
- $ref: '#/components/schemas/RecurrenceRepetitionType'
+ $ref: "#/components/schemas/RecurrenceRepetitionType"
moment:
type: string
format: string
@@ -19242,7 +22116,7 @@ components:
- For 'weekly', it is day of the week between 1 and 7 (Monday - Sunday).
- For 'ndom', it is '1,2' or '4,5' or something else, where the first number is the week in the month, and the second number is the day in the week (between 1 and 7). '2,3' means: the 2nd Wednesday of the month
- For 'monthly' it is the day of the month (1 - 31)
- - For yearly, it is a full date, ie '2018-09-17'. The year you use does not matter.
+ - For yearly, it is a full date, ie '2025-11-01'. The year you use does not matter.
skip:
type: integer
format: int32
@@ -19272,50 +22146,104 @@ components:
type: string
format: string
example: "Rent for the current month"
- amount:
- type: string
- format: amount
- example: "123.45"
- description: Amount of the transaction.
- foreign_amount:
- type: string
- format: amount
- example: "123.45"
- description: Foreign amount of the transaction.
- nullable: true
+ object_has_currency_setting:
+ type: boolean
+ format: boolean
+ example: true
+ readOnly: true
+ description: "Indicates whether the object has a currency setting. If false, the object uses the administration's primary currency."
currency_id:
type: string
format: string
- example: "3"
- description: Submit either a currency_id or a currency_code.
+ example: "5"
+ description: "The currency ID of the currency associated with this object."
+ currency_name:
+ type: string
+ format: string
+ example: Euro
+ description: "The currency name of the currency associated with this object."
currency_code:
type: string
format: string
- example: "EUR"
- description: Submit either a currency_id or a currency_code.
+ example: EUR
+ description: "The currency code of the currency associated with this object."
currency_symbol:
type: string
format: string
- example: "€"
+ example: "$"
readOnly: true
currency_decimal_places:
type: integer
format: int32
example: 2
- description: Number of decimals in the currency
readOnly: true
+ primary_currency_id:
+ type: string
+ format: string
+ example: "5"
+ description: "The currency ID of the administration's primary currency."
+ readOnly: true
+ primary_currency_name:
+ type: string
+ format: string
+ example: Euro
+ readOnly: true
+ description: "The currency name of the administration's primary currency."
+ primary_currency_code:
+ type: string
+ format: string
+ example: EUR
+ readOnly: true
+ description: "The currency code of the administration's primary currency."
+ primary_currency_symbol:
+ type: string
+ format: string
+ example: "$"
+ readOnly: true
+ description: "The currency symbol of the administration's primary currency."
+ primary_currency_decimal_places:
+ type: integer
+ format: int32
+ example: 2
+ readOnly: true
+ description: "The currency decimal places of the administration's primary currency."
+ amount:
+ type: string
+ format: amount
+ example: "123.45"
+ description: Amount of the transaction.
+ pc_amount:
+ type: string
+ format: amount
+ example: "123.45"
+ description: Amount of the transaction in primary currency.
+ foreign_amount:
+ type: string
+ format: amount
+ example: "123.45"
+ description: Foreign amount of the transaction.
+ nullable: true
+ pc_foreign_amount:
+ type: string
+ format: amount
+ example: "123.45"
+ description: Foreign amount of the transaction.
+ nullable: true
foreign_currency_id:
type: string
format: string
example: "17"
nullable: true
- description: Submit either a foreign_currency_id or a foreign_currency_code, or neither.
+ foreign_currency_name:
+ type: string
+ format: string
+ example: "British Pound"
+ nullable: true
foreign_currency_code:
type: string
format: string
example: "GBP"
nullable: true
- description: Submit either a foreign_currency_id or a foreign_currency_code, or neither.
foreign_currency_symbol:
type: string
format: string
@@ -19368,7 +22296,7 @@ components:
nullable: true
readOnly: true
source_type:
- $ref: '#/components/schemas/AccountTypeProperty'
+ $ref: "#/components/schemas/AccountTypeProperty"
destination_id:
type: string
format: string
@@ -19386,7 +22314,7 @@ components:
nullable: true
readOnly: true
destination_type:
- $ref: '#/components/schemas/AccountTypeProperty'
+ $ref: "#/components/schemas/AccountTypeProperty"
tags:
type: array
nullable: true
@@ -19402,23 +22330,19 @@ components:
format: string
example: "123"
nullable: true
- description: Optional. Use either this or the piggy_bank_name
piggy_bank_name:
type: string
format: string
nullable: true
- description: Optional. Use either this or the piggy_bank_id
- bill_id:
+ subscription_id:
type: string
format: string
example: "123"
nullable: true
- description: Optional. Use either this or the bill_name
- bill_name:
+ subscription_name:
type: string
format: string
nullable: true
- description: Optional. Use either this or the bill_id
RecurrenceTransactionStore:
type: object
required:
@@ -19599,12 +22523,12 @@ components:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
title:
type: string
@@ -19630,7 +22554,7 @@ components:
example: 5
readOnly: true
trigger:
- $ref: '#/components/schemas/RuleTriggerType'
+ $ref: "#/components/schemas/RuleTriggerType"
active:
type: boolean
format: boolean
@@ -19651,11 +22575,11 @@ components:
triggers:
type: array
items:
- $ref: '#/components/schemas/RuleTrigger'
+ $ref: "#/components/schemas/RuleTrigger"
actions:
type: array
items:
- $ref: '#/components/schemas/RuleAction'
+ $ref: "#/components/schemas/RuleAction"
RuleStore:
type: object
required:
@@ -19688,7 +22612,7 @@ components:
format: int32
example: 5
trigger:
- $ref: '#/components/schemas/RuleTriggerType'
+ $ref: "#/components/schemas/RuleTriggerType"
active:
type: boolean
format: boolean
@@ -19709,11 +22633,11 @@ components:
triggers:
type: array
items:
- $ref: '#/components/schemas/RuleTriggerStore'
+ $ref: "#/components/schemas/RuleTriggerStore"
actions:
type: array
items:
- $ref: '#/components/schemas/RuleActionStore'
+ $ref: "#/components/schemas/RuleActionStore"
RuleUpdate:
type: object
properties:
@@ -19735,7 +22659,7 @@ components:
format: int32
example: 5
trigger:
- $ref: '#/components/schemas/RuleTriggerType'
+ $ref: "#/components/schemas/RuleTriggerType"
active:
type: boolean
format: boolean
@@ -19756,11 +22680,11 @@ components:
triggers:
type: array
items:
- $ref: '#/components/schemas/RuleTriggerUpdate'
+ $ref: "#/components/schemas/RuleTriggerUpdate"
actions:
type: array
items:
- $ref: '#/components/schemas/RuleActionUpdate'
+ $ref: "#/components/schemas/RuleActionUpdate"
RuleAction:
type: object
required:
@@ -19775,15 +22699,15 @@ components:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
type:
- $ref: '#/components/schemas/RuleActionKeyword'
+ $ref: "#/components/schemas/RuleActionKeyword"
value:
type: string
format: string
@@ -19814,7 +22738,7 @@ components:
- value
properties:
type:
- $ref: '#/components/schemas/RuleActionKeyword'
+ $ref: "#/components/schemas/RuleActionKeyword"
value:
type: string
format: string
@@ -19842,7 +22766,7 @@ components:
type: object
properties:
type:
- $ref: '#/components/schemas/RuleActionKeyword'
+ $ref: "#/components/schemas/RuleActionKeyword"
value:
type: string
format: string
@@ -19872,12 +22796,12 @@ components:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
title:
type: string
@@ -19953,15 +22877,15 @@ components:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
type:
- $ref: '#/components/schemas/RuleTriggerKeyword'
+ $ref: "#/components/schemas/RuleTriggerKeyword"
value:
type: string
format: string
@@ -19998,7 +22922,7 @@ components:
- value
properties:
type:
- $ref: '#/components/schemas/RuleTriggerKeyword'
+ $ref: "#/components/schemas/RuleTriggerKeyword"
value:
type: string
format: string
@@ -20031,7 +22955,7 @@ components:
type: object
properties:
type:
- $ref: '#/components/schemas/RuleTriggerKeyword'
+ $ref: "#/components/schemas/RuleTriggerKeyword"
value:
type: string
format: string
@@ -20061,12 +22985,12 @@ components:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
tag:
type: string
@@ -20076,7 +23000,7 @@ components:
date:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
description: The date to which the tag is applicable.
nullable: true
description:
@@ -20116,7 +23040,7 @@ components:
date:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
description: The date to which the tag is applicable.
nullable: true
description:
@@ -20154,7 +23078,7 @@ components:
date:
type: string
format: date
- example: "2018-09-17"
+ example: "2025-11-01"
description: The date to which the tag is applicable.
nullable: true
description:
@@ -20180,7 +23104,7 @@ components:
example: 6
nullable: true
description: "Zoom level for the map, if drawn. This to set the box right. Unfortunately this is a proprietary value because each map provider has different zoom levels."
- Currency:
+ CurrencyProperties:
type: object
required:
- code
@@ -20190,12 +23114,12 @@ components:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
enabled:
type: boolean
@@ -20203,16 +23127,11 @@ components:
example: true
default: true
description: Defaults to true
- default:
- type: boolean
- format: boolean
- example: false
- description: Make this currency the native currency.
- native:
+ primary:
type: boolean
format: boolean
example: false
- description: Make this currency the native currency.
+ description: Is the primary currency?
code:
type: string
format: string
@@ -20243,11 +23162,11 @@ components:
example: true
default: true
description: Defaults to true
- default:
+ primary:
type: boolean
format: boolean
example: true
- description: Make this currency the default currency. You can set this value to FALSE, in which case nothing will change to the default currency. If you set it to TRUE, the current default currency will no longer be the default currency.
+ description: Make this currency the primary currency for the current administration. You can set this value to FALSE, in which case nothing will change to the primary currency. If you set it to TRUE, the current primary currency will no longer be the primary currency.
code:
type: string
format: string
@@ -20273,11 +23192,11 @@ components:
format: boolean
example: true
description: "If the currency is enabled"
- default:
+ primary:
type: boolean
format: boolean
example: true
- description: "If the currency must be the default for the user. You can only submit TRUE. Submitting FALSE will not drop this currency as the default currency, because then the system would be without one."
+ description: "If the currency must be the primary for the user. You can only submit TRUE. Submitting FALSE will not drop this currency as the primary currency, because then the system would be without one."
enum:
- true
code:
@@ -20308,12 +23227,12 @@ components:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
user:
type: string
@@ -20331,7 +23250,7 @@ components:
transactions:
type: array
items:
- $ref: '#/components/schemas/TransactionSplit'
+ $ref: "#/components/schemas/TransactionSplit"
TransactionStore:
type: object
required:
@@ -20362,7 +23281,7 @@ components:
transactions:
type: array
items:
- $ref: '#/components/schemas/TransactionSplitStore'
+ $ref: "#/components/schemas/TransactionSplitStore"
TransactionUpdate:
type: object
properties:
@@ -20386,7 +23305,7 @@ components:
transactions:
type: array
items:
- $ref: '#/components/schemas/TransactionSplitUpdate'
+ $ref: "#/components/schemas/TransactionSplitUpdate"
TransactionLink:
type: object
required:
@@ -20397,12 +23316,12 @@ components:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
link_type_id:
type: string
@@ -20562,11 +23481,11 @@ components:
making up the splits of the transaction.
readOnly: true
type:
- $ref: '#/components/schemas/TransactionTypeProperty'
+ $ref: "#/components/schemas/TransactionTypeProperty"
date:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
description: "Date of the transaction"
order:
type: integer
@@ -20574,45 +23493,49 @@ components:
example: 0
nullable: true
description: "Order of this entry in the list of transactions."
+ object_has_currency_setting:
+ type: boolean
+ format: boolean
+ example: true
+ readOnly: true
+ description: "Indicates whether the transaction has a currency setting. For transactions this is always true."
currency_id:
type: string
format: string
example: "12"
- nullable: true
- description: Currency ID. Default is the source account's currency, or the user's default currency. Can be used instead of currency_code.
+ description: Currency ID for the currency of this transaction.
currency_code:
type: string
format: string
example: EUR
- nullable: true
- description: Currency code. Default is the source account's currency, or the user's default currency. Can be used instead of currency_id.
+ description: Currency code for the currency of this transaction.
currency_symbol:
type: string
format: string
example: "$"
readOnly: true
+ description: Currency symbol for the currency of this transaction.
currency_name:
type: string
format: string
example: "Euro"
- readOnly: true
+ description: Currency name for the currency of this transaction.
currency_decimal_places:
type: integer
format: int32
example: 2
description: Number of decimals used in this currency.
- readOnly: true
foreign_currency_id:
type: string
format: string
example: "17"
nullable: true
- description: Currency ID of the foreign currency. Default is null. Is required when you submit a foreign amount.
+ description: Currency ID of the foreign currency, if this transaction has a foreign amount.
foreign_currency_code:
type: string
format: string
example: USD
- description: Currency code of the foreign currency. Default is NULL. Can be used instead of the foreign_currency_id, but this or the ID is required when submitting a foreign amount.
+ description: Currency code of the foreign currency. Default is NULL.
nullable: true
foreign_currency_symbol:
type: string
@@ -20624,20 +23547,81 @@ components:
type: integer
format: int32
example: 2
- description: Number of decimals in the currency
+ description: Number of decimals in the foreign currency.
+ nullable: true
+ readOnly: true
+ primary_currency_id:
+ type: string
+ format: string
+ example: "12"
+ readOnly: true
+ nullable: true
+ description: "Returns the primary currency ID of the administration. This currency is used as the currency for all `pc_*` amount and balance fields of this account."
+ primary_currency_code:
+ type: string
+ format: string
+ example: "EUR"
+ nullable: true
+ description: "Returns the primary currency code of the administration. This currency is used as the currency for all `pc_*` amount and balance fields of this account."
+ primary_currency_symbol:
+ type: string
+ format: string
+ example: "$"
+ readOnly: true
nullable: true
+ description: "See the other `primary_*` fields."
+ primary_currency_decimal_places:
+ type: integer
+ format: int32
+ example: 2
readOnly: true
+ nullable: true
+ description: "See the other `primary_*` fields."
amount:
type: string
format: amount
example: "123.45"
description: "Amount of the transaction."
+ pc_amount:
+ type: string
+ format: amount
+ example: "123.45"
+ description: "Amount of the transaction in the primary currency of this administration. The `primary_currency_*` fields reflect the currency used. This field is NULL if the user does have 'convert to primary' set to true in their settings."
foreign_amount:
type: string
format: amount
example: "123.45"
nullable: true
- description: The amount in a foreign currency.
+ description: The amount in the set foreign currency. May be NULL if the transaction does not have a foreign amount.
+ pc_foreign_amount:
+ type: string
+ format: amount
+ example: "123.45"
+ description: "Foreign amount of the transaction in the primary currency of this administration. The `primary_currency_*` fields reflect the currency used. This field is NULL if the user does have 'convert to primary' set to true in their settings."
+ source_balance_after:
+ type: string
+ format: amount
+ example: "123.45"
+ nullable: true
+ description: "The balance of the source account. This is the balance in the account's currency which may be different from this transaction, and is not provided in this model."
+ pc_source_balance_after:
+ type: string
+ format: amount
+ example: "123.45"
+ nullable: true
+ description: "The balance of the source account in the primary currency of this administration. The `primary_currency_*` fields reflect the currency used. This field is NULL if the user does have 'convert to primary' set to true in their settings."
+ destination_balance_after:
+ type: string
+ format: amount
+ example: "123.45"
+ nullable: true
+ description: "The balance of the destination account. This is the balance in the account's currency which may be different from this transaction, and is not provided in this model."
+ pc_destination_balance_after:
+ type: string
+ format: amount
+ example: "123.45"
+ nullable: true
+ description: "The balance of the destination account in the primary currency of this administration. The `primary_currency_*` fields reflect the currency used. This field is NULL if the user does have 'convert to primary' set to true in their settings."
description:
type: string
format: string
@@ -20662,7 +23646,7 @@ components:
nullable: true
readOnly: true
source_type:
- $ref: '#/components/schemas/AccountTypeProperty'
+ $ref: "#/components/schemas/AccountTypeProperty"
destination_id:
type: string
format: string
@@ -20682,7 +23666,7 @@ components:
nullable: true
readOnly: true
destination_type:
- $ref: '#/components/schemas/AccountTypeProperty'
+ $ref: "#/components/schemas/AccountTypeProperty"
budget_id:
type: string
format: string
@@ -20693,7 +23677,7 @@ components:
type: string
format: string
example: Groceries
- description: The name of the budget to be used. If the budget name is unknown, the ID will be used or the value will be ignored.
+ description: The name of the budget used.
nullable: true
readOnly: true
category_id:
@@ -20713,13 +23697,25 @@ components:
format: string
nullable: true
example: "111"
- description: Optional. Use either this or the bill_name
+ description: The associated subscription ID for this transaction. `bill` refers to the OLD name for subscriptions and this field will be removed.
bill_name:
type: string
format: string
example: "Monthly rent"
nullable: true
- description: Optional. Use either this or the bill_id
+ description: The associated subscription name for this transaction. `bill` refers to the OLD name for subscriptions and this field will be removed.
+ subscription_id:
+ type: string
+ format: string
+ nullable: true
+ example: "111"
+ description: The associated subscription ID for this transaction.
+ subscription_name:
+ type: string
+ format: string
+ example: "Monthly rent"
+ nullable: true
+ description: The associated subscription name for this transaction.
reconciled:
type: boolean
format: boolean
@@ -20781,11 +23777,6 @@ components:
description: "The # of the current transaction created under this recurrence."
readOnly: true
nullable: true
- bunq_payment_id:
- type: string
- nullable: true
- format: string
- description: Internal ID of bunq transaction. DEPRECATED
import_hash_v2:
type: string
nullable: true
@@ -20888,11 +23879,11 @@ components:
- type
properties:
type:
- $ref: '#/components/schemas/TransactionTypeProperty'
+ $ref: "#/components/schemas/TransactionTypeProperty"
date:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
description: "Date of the transaction"
amount:
type: string
@@ -20915,13 +23906,13 @@ components:
format: string
example: "12"
nullable: true
- description: Currency ID. Default is the source account's currency, or the user's default currency. The value you submit may be overruled by the source or destination account.
+ description: Currency ID. Default is the source account's currency, or the user's financial administration's currency. The value you submit may be overruled by the source or destination account.
currency_code:
type: string
format: string
example: EUR
nullable: true
- description: Currency code. Default is the source account's currency, or the user's default currency. The value you submit may be overruled by the source or destination account.
+ description: Currency code. Default is the source account's currency, or the user's financial administration's primary currency. The value you submit may be overruled by the source or destination account.
foreign_amount:
type: string
format: amount
@@ -21047,11 +24038,6 @@ components:
format: string
nullable: true
description: External, custom URL for this transaction.
- bunq_payment_id:
- type: string
- nullable: true
- format: string
- description: Internal ID of bunq transaction. Field is no longer used but still works.
sepa_cc:
type: string
format: string
@@ -21125,11 +24111,11 @@ components:
example: "123"
description: "Transaction journal ID of current transaction (split)."
type:
- $ref: '#/components/schemas/TransactionTypeProperty'
+ $ref: "#/components/schemas/TransactionTypeProperty"
date:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
description: "Date of the transaction"
amount:
type: string
@@ -21152,13 +24138,13 @@ components:
format: string
example: "12"
nullable: true
- description: Currency ID. Default is the source account's currency, or the user's default currency. Can be used instead of currency_code.
+ description: Currency ID. Default is the source account's currency, or the user's financial administration's primary currency. Can be used instead of currency_code.
currency_code:
type: string
format: string
example: EUR
nullable: true
- description: Currency code. Default is the source account's currency, or the user's default currency. Can be used instead of currency_id.
+ description: Currency code. Default is the source account's currency, or the user's financial administration's primary currency. Can be used instead of currency_id.
currency_symbol:
type: string
format: string
@@ -21312,11 +24298,6 @@ components:
format: string
nullable: true
description: External, custom URL for this transaction.
- bunq_payment_id:
- type: string
- nullable: true
- format: string
- description: Internal ID of bunq transaction.
sepa_cc:
type: string
format: string
@@ -21390,12 +24371,12 @@ components:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
email:
type: string
@@ -21408,9 +24389,9 @@ components:
example: false
description: Boolean to indicate if the user is blocked.
blocked_code:
- $ref: '#/components/schemas/UserBlockedCodeProperty'
+ $ref: "#/components/schemas/UserBlockedCodeProperty"
role:
- $ref: '#/components/schemas/UserRoleProperty'
+ $ref: "#/components/schemas/UserRoleProperty"
UserGroupRead:
type: object
required:
@@ -21429,21 +24410,21 @@ components:
format: string
example: "2"
attributes:
- $ref: '#/components/schemas/UserGroupReadAttributes'
+ $ref: "#/components/schemas/UserGroupReadAttributes"
links:
- $ref: '#/components/schemas/ObjectLink'
+ $ref: "#/components/schemas/ObjectLink"
UserGroupReadAttributes:
type: object
properties:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
in_use:
type: boolean
@@ -21463,33 +24444,33 @@ components:
description: "Title of the user group. By default, it is the same as the user's email address."
example: "demo@firefly"
readOnly: false
- native_currency_id:
+ primary_currency_id:
type: string
format: string
example: "12"
readOnly: true
- description: "Returns the native currency ID of the user group."
- native_currency_code:
+ description: "Returns the primary currency ID of the user group."
+ primary_currency_code:
type: string
format: string
example: "EUR"
- description: "Returns the native currency code of the user group."
- native_currency_symbol:
+ description: "Returns the primary currency code of the user group."
+ primary_currency_symbol:
type: string
format: string
example: "$"
readOnly: true
- description: "Returns the native currency symbol of the user group."
- native_currency_decimal_places:
+ description: "Returns the primary currency symbol of the user group."
+ primary_currency_decimal_places:
type: integer
format: int32
example: 2
readOnly: true
- description: "Returns the native currency decimal places of the user group."
+ description: "Returns the primary currency decimal places of the user group."
members:
type: array
items:
- $ref: '#/components/schemas/UserGroupReadMembers'
+ $ref: "#/components/schemas/UserGroupReadMembers"
UserGroupReadMembers:
type: object
properties:
@@ -21515,11 +24496,10 @@ components:
type: array
uniqueItems: true
items:
- $ref: '#/components/schemas/UserGroupReadRole'
+ $ref: "#/components/schemas/UserGroupReadRole"
UserGroupReadRole:
type: string
enum:
- - owner
- ro
- mng_trx
- mng_meta
@@ -21542,14 +24522,14 @@ components:
- full
- owner
description: >
- The possible roles of the user in this user group are documented here: https://docs.firefly-iii.org/references/firefly-iii/api/
+ The possible roles of the user in this user group are documented here: https://docs.firefly-iii.org/references/firefly-iii/api/
UserGroupSingle:
type: object
required:
- data
properties:
data:
- $ref: '#/components/schemas/UserGroupRead'
+ $ref: "#/components/schemas/UserGroupRead"
UserGroupUpdate:
type: object
required:
@@ -21560,17 +24540,34 @@ components:
format: string
example: "New user group title"
description: "A descriptive title for the user group."
- native_currency_id:
+ primary_currency_id:
type: string
format: string
example: "1"
- description: "Use either native_currency_id or native_currency_code. This will set the native currency for the user group ('financial administration')."
- native_currency_code:
+ description: "Use either primary_currency_id or primary_currency_code. This will set the primary currency for the user group ('financial administration')."
+ primary_currency_code:
type: string
format: string
example: "EUR"
- description: "Use either native_currency_id or native_currency_code. This will set the native currency for the user group ('financial administration')."
- Webhook:
+ description: "Use either primary_currency_id or primary_currency_code. This will set the primary currency for the user group ('financial administration')."
+ WebhookDelivery:
+ type: string
+ format: string
+ nullable: false
+ example:
+ - "JSON"
+ description: Format of the delivered response.
+ enum:
+ - JSON
+ WebhookDeliveryArray:
+ type: array
+ minItems: 1
+ maxItems: 1
+ items:
+ $ref: "#/components/schemas/WebhookDelivery"
+ example:
+ - "JSON"
+ WebhookProperties:
title: "A single webhook (read)"
type: object
required:
@@ -21583,12 +24580,12 @@ components:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
active:
type: boolean
@@ -21606,18 +24603,38 @@ components:
example: "iMLZLtLx2JHWhK9Dtyuoqyir"
readOnly: true
description: A 24-character secret for the webhook. It's generated by Firefly III when saving a new webhook. If you submit a new secret through the PUT endpoint it will generate a new secret for the selected webhook, a new secret bearing no relation to whatever you just submitted.
- trigger:
- $ref: '#/components/schemas/WebhookTrigger'
- response:
- $ref: '#/components/schemas/WebhookResponse'
- delivery:
- $ref: '#/components/schemas/WebhookDelivery'
+ triggers:
+ $ref: "#/components/schemas/WebhookTriggerArray"
+ responses:
+ $ref: "#/components/schemas/WebhookResponseArray"
+ deliveries:
+ $ref: "#/components/schemas/WebhookDeliveryArray"
url:
type: string
format: string
example: "https://example.com"
readOnly: false
description: The URL of the webhook. Has to start with `https`.
+ WebhookResponse:
+ type: string
+ format: string
+ nullable: false
+ example: "RELEVANT"
+ description: Indicator for what Firefly III will deliver to the webhook URL.
+ enum:
+ - TRANSACTIONS
+ - ACCOUNTS
+ - BUDGET
+ - RELEVANT
+ - NONE
+ WebhookResponseArray:
+ type: array
+ minItems: 1
+ maxItems: 1
+ items:
+ $ref: "#/components/schemas/WebhookResponse"
+ example:
+ - "TRANSACTIONS"
WebhookStore:
title: "A single webhook (store)"
type: object
@@ -21638,18 +24655,42 @@ components:
format: string
example: "Update magic mirror on new transaction"
description: A title for the webhook for easy recognition.
- trigger:
- $ref: '#/components/schemas/WebhookTrigger'
- response:
- $ref: '#/components/schemas/WebhookResponse'
- delivery:
- $ref: '#/components/schemas/WebhookDelivery'
+ triggers:
+ $ref: "#/components/schemas/WebhookTriggerArray"
+ responses:
+ $ref: "#/components/schemas/WebhookResponseArray"
+ deliveries:
+ $ref: "#/components/schemas/WebhookDeliveryArray"
url:
type: string
format: string
example: "https://example.com"
readOnly: false
description: The URL of the webhook. Has to start with `https`.
+ WebhookTrigger:
+ type: string
+ format: string
+ nullable: false
+ example: "DESTROY_TRANSACTION"
+ description: The trigger for the webhook.
+ enum:
+ - ANY
+ - STORE_TRANSACTION
+ - UPDATE_TRANSACTION
+ - DESTROY_TRANSACTION
+ - STORE_BUDGET
+ - UPDATE_BUDGET
+ - DESTROY_BUDGET
+ - STORE_UPDATE_BUDGET_LIMIT
+ WebhookTriggerArray:
+ type: array
+ minItems: 1
+ maxItems: 3
+ items:
+ $ref: "#/components/schemas/WebhookTrigger"
+ example:
+ - "STORE_TRANSACTION"
+ - "UPDATE_TRANSACTION"
WebhookUpdate:
title: "A single webhook (update)"
type: object
@@ -21669,12 +24710,12 @@ components:
format: string
example: "iMLZLtLx2JHWhK9Dtyuoqyir"
description: A 24-character secret for the webhook. It's generated by Firefly III when saving a new webhook. If you submit a new secret through the PUT endpoint it will generate a new secret for the selected webhook, a new secret bearing no relation to whatever you just submitted.
- trigger:
- $ref: '#/components/schemas/WebhookTrigger'
- response:
- $ref: '#/components/schemas/WebhookResponse'
- delivery:
- $ref: '#/components/schemas/WebhookDelivery'
+ triggers:
+ $ref: "#/components/schemas/WebhookTriggerArray"
+ responses:
+ $ref: "#/components/schemas/WebhookResponseArray"
+ deliveries:
+ $ref: "#/components/schemas/WebhookDeliveryArray"
url:
type: string
format: string
@@ -21687,12 +24728,12 @@ components:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
webhook_message_id:
type: string
@@ -21723,12 +24764,12 @@ components:
created_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
updated_at:
type: string
format: date-time
- example: "2018-09-17T12:46:47+01:00"
+ example: "2025-11-01T00:00:00+00:00"
readOnly: true
sent:
type: boolean
@@ -21811,7 +24852,7 @@ components:
- type: object
- type: array
items:
- $ref: '#/components/schemas/StringArrayItem'
+ $ref: "#/components/schemas/StringArrayItem"
RecurrenceRepetitionType:
type: string
format: string
@@ -21905,10 +24946,11 @@ components:
type: string
format: string
example: store-journal
- description: Which action is necessary for the rule to fire? Use either store-journal or update-journal.
+ description: Which action is necessary for the rule to fire? Use either store-journal, update-journal or manual-activation.
enum:
- "store-journal"
- "update-journal"
+ - "manual-activation"
StringArrayItem:
type: string
format: string
@@ -21933,38 +24975,10 @@ components:
- owner
- demo
- null
- WebhookDelivery:
- type: string
- format: string
- nullable: false
- example: "JSON"
- description: Format of the delivered response.
- enum:
- - JSON
- WebhookResponse:
- type: string
- format: string
- nullable: false
- example: "RESPONSE_TRANSACTIONS"
- description: Indicator for what Firefly III will deliver to the webhook URL.
- enum:
- - TRANSACTIONS
- - ACCOUNTS
- - NONE
- WebhookTrigger:
- type: string
- format: string
- nullable: false
- example: "DESTROY_TRANSACTION"
- description: The trigger for the webhook.
- enum:
- - STORE_TRANSACTION
- - UPDATE_TRANSACTION
- - DESTROY_TRANSACTION
BasicSummary:
type: object
additionalProperties:
- $ref: '#/components/schemas/BasicSummaryEntry'
+ $ref: "#/components/schemas/BasicSummaryEntry"
BasicSummaryEntry:
type: object
properties:
@@ -22029,9 +25043,9 @@ components:
- editable
properties:
title:
- $ref: '#/components/schemas/ConfigValueFilter'
+ $ref: "#/components/schemas/ConfigValueFilter"
value:
- $ref: '#/components/schemas/PolymorphicProperty'
+ $ref: "#/components/schemas/PolymorphicProperty"
editable:
type: boolean
format: boolean
@@ -22044,16 +25058,16 @@ components:
- value
properties:
value:
- $ref: '#/components/schemas/PolymorphicProperty'
+ $ref: "#/components/schemas/PolymorphicProperty"
CronResult:
type: object
properties:
recurring_transactions:
- $ref: '#/components/schemas/CronResultRow'
+ $ref: "#/components/schemas/CronResultRow"
auto_budgets:
- $ref: '#/components/schemas/CronResultRow'
+ $ref: "#/components/schemas/CronResultRow"
telemetry:
- $ref: '#/components/schemas/CronResultRow'
+ $ref: "#/components/schemas/CronResultRow"
CronResultRow:
type: object
properties:
@@ -22096,12 +25110,12 @@ components:
version:
type: string
format: string
- example: "5.8.0-alpha.1"
+ example: "6.4.8"
api_version:
type: string
format: string
description: Same value as the version field.
- example: "5.8.0-alpha.1"
+ example: "6.4.8"
php_version:
type: string
format: string
@@ -22120,7 +25134,7 @@ components:
- data
properties:
data:
- $ref: '#/components/schemas/UserRead'
+ $ref: "#/components/schemas/UserRead"
AccountTypeFilter:
type: string
enum:
@@ -22214,6 +25228,18 @@ components:
- Loan
- Debt
- Mortgage
+ ChartDatasetPeriodProperty:
+ type: string
+ format: string
+ example: "1M"
+ description: "Period of the chart."
+ enum:
+ - 1D
+ - 1W
+ - 1M
+ - 3M
+ - 1Y
+ - custom
CreditCardTypeProperty:
type: string
format: string
@@ -22240,7 +25266,7 @@ components:
type: string
format: string
example: credit
- description: "'credit' indicates somebody owes you the liability. 'debit' Indicates you owe this debt yourself. Works only for liabiltiies."
+ description: "'credit' indicates somebody owes you the liability. 'debit' Indicates you owe this debt yourself. Works only for liabilities."
nullable: true
enum:
- credit
@@ -22389,8 +25415,8 @@ components:
end:
type: array
items:
- type: string
- format: string
+ type: string
+ format: string
date:
type: array
items:
diff --git a/src/lampyrid/server.py b/src/lampyrid/server.py
index ac51188..716d032 100644
--- a/src/lampyrid/server.py
+++ b/src/lampyrid/server.py
@@ -1,8 +1,9 @@
from typing import List, Optional
from fastmcp import FastMCP
+from fastmcp.server.auth.auth import AuthProvider
+from fastmcp.server.auth.providers.google import GoogleProvider
-from .auth.google import GoogleProvider
from .clients.firefly import FireflyClient
from .config import settings
from .models.lampyrid_models import (
@@ -34,7 +35,7 @@
)
-def _create_auth_provider() -> Optional[GoogleProvider]:
+def _create_auth_provider() -> Optional[AuthProvider]:
"""
Create Google authentication provider if credentials are configured.
@@ -46,6 +47,10 @@ def _create_auth_provider() -> Optional[GoogleProvider]:
client_id=settings.google_client_id,
client_secret=settings.google_client_secret,
base_url=str(settings.server_base_url),
+ required_scopes=[
+ 'openid',
+ 'https://www.googleapis.com/auth/userinfo.email',
+ ],
)
return None
diff --git a/uv.lock b/uv.lock
index 3b69317..84c0e6c 100644
--- a/uv.lock
+++ b/uv.lock
@@ -13,50 +13,58 @@ wheels = [
[[package]]
name = "anyio"
-version = "4.10.0"
+version = "4.12.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "idna" },
- { name = "sniffio" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/f1/b4/636b3b65173d3ce9a38ef5f0522789614e590dab6a8d505340a4efe4c567/anyio-4.10.0.tar.gz", hash = "sha256:3f3fae35c96039744587aa5b8371e7e8e603c0702999535961dd336026973ba6", size = 213252, upload-time = "2025-08-04T08:54:26.451Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/16/ce/8a777047513153587e5434fd752e89334ac33e379aa3497db860eeb60377/anyio-4.12.0.tar.gz", hash = "sha256:73c693b567b0c55130c104d0b43a9baf3aa6a31fc6110116509f27bf75e21ec0", size = 228266, upload-time = "2025-11-28T23:37:38.911Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/6f/12/e5e0282d673bb9746bacfb6e2dba8719989d3660cdb2ea79aee9a9651afb/anyio-4.10.0-py3-none-any.whl", hash = "sha256:60e474ac86736bbfd6f210f7a61218939c318f43f9972497381f1c5e930ed3d1", size = 107213, upload-time = "2025-08-04T08:54:24.882Z" },
+ { url = "https://files.pythonhosted.org/packages/7f/9c/36c5c37947ebfb8c7f22e0eb6e4d188ee2d53aa3880f3f2744fb894f0cb1/anyio-4.12.0-py3-none-any.whl", hash = "sha256:dad2376a628f98eeca4881fc56cd06affd18f659b17a747d3ff0307ced94b1bb", size = 113362, upload-time = "2025-11-28T23:36:57.897Z" },
]
[[package]]
name = "argcomplete"
-version = "3.6.2"
+version = "3.6.3"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/16/0f/861e168fc813c56a78b35f3c30d91c6757d1fd185af1110f1aec784b35d0/argcomplete-3.6.2.tar.gz", hash = "sha256:d0519b1bc867f5f4f4713c41ad0aba73a4a5f007449716b16f385f2166dc6adf", size = 73403, upload-time = "2025-04-03T04:57:03.52Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/38/61/0b9ae6399dd4a58d8c1b1dc5a27d6f2808023d0b5dd3104bb99f45a33ff6/argcomplete-3.6.3.tar.gz", hash = "sha256:62e8ed4fd6a45864acc8235409461b72c9a28ee785a2011cc5eb78318786c89c", size = 73754, upload-time = "2025-10-20T03:33:34.741Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/31/da/e42d7a9d8dd33fa775f467e4028a47936da2f01e4b0e561f9ba0d74cb0ca/argcomplete-3.6.2-py3-none-any.whl", hash = "sha256:65b3133a29ad53fb42c48cf5114752c7ab66c1c38544fdf6460f450c09b42591", size = 43708, upload-time = "2025-04-03T04:57:01.591Z" },
+ { url = "https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl", hash = "sha256:f5007b3a600ccac5d25bbce33089211dfd49eab4a7718da3f10e3082525a92ce", size = 43846, upload-time = "2025-10-20T03:33:33.021Z" },
]
[[package]]
name = "attrs"
-version = "25.3.0"
+version = "25.4.0"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/6b/5c/685e6633917e101e5dcb62b9dd76946cbb57c26e133bae9e0cd36033c0a9/attrs-25.4.0.tar.gz", hash = "sha256:16d5969b87f0859ef33a48b35d55ac1be6e42ae49d5e853b597db70c35c57e11", size = 934251, upload-time = "2025-10-06T13:54:44.725Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" },
+ { url = "https://files.pythonhosted.org/packages/3a/2a/7cc015f5b9f5db42b7d48157e23356022889fc354a2813c15934b7cb5c0e/attrs-25.4.0-py3-none-any.whl", hash = "sha256:adcf7e2a1fb3b36ac48d97835bb6d8ade15b8dcce26aba8bf1d14847b57a3373", size = 67615, upload-time = "2025-10-06T13:54:43.17Z" },
]
[[package]]
name = "authlib"
-version = "1.6.1"
+version = "1.6.5"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "cryptography" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/8e/a1/d8d1c6f8bc922c0b87ae0d933a8ed57be1bef6970894ed79c2852a153cd3/authlib-1.6.1.tar.gz", hash = "sha256:4dffdbb1460ba6ec8c17981a4c67af7d8af131231b5a36a88a1e8c80c111cdfd", size = 159988, upload-time = "2025-07-20T07:38:42.834Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/cd/3f/1d3bbd0bf23bdd99276d4def22f29c27a914067b4cf66f753ff9b8bbd0f3/authlib-1.6.5.tar.gz", hash = "sha256:6aaf9c79b7cc96c900f0b284061691c5d4e61221640a948fe690b556a6d6d10b", size = 164553, upload-time = "2025-10-02T13:36:09.489Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/f9/58/cc6a08053f822f98f334d38a27687b69c6655fb05cd74a7a5e70a2aeed95/authlib-1.6.1-py2.py3-none-any.whl", hash = "sha256:e9d2031c34c6309373ab845afc24168fe9e93dc52d252631f52642f21f5ed06e", size = 239299, upload-time = "2025-07-20T07:38:39.259Z" },
+ { url = "https://files.pythonhosted.org/packages/f8/aa/5082412d1ee302e9e7d80b6949bc4d2a8fa1149aaab610c5fc24709605d6/authlib-1.6.5-py2.py3-none-any.whl", hash = "sha256:3e0e0507807f842b02175507bdee8957a1d5707fd4afb17c32fb43fee90b6e3a", size = 243608, upload-time = "2025-10-02T13:36:07.637Z" },
+]
+
+[[package]]
+name = "beartype"
+version = "0.22.8"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/8c/1d/794ae2acaa67c8b216d91d5919da2606c2bb14086849ffde7f5555f3a3a5/beartype-0.22.8.tar.gz", hash = "sha256:b19b21c9359722ee3f7cc433f063b3e13997b27ae8226551ea5062e621f61165", size = 1602262, upload-time = "2025-12-03T05:11:10.766Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/14/2a/fbcbf5a025d3e71ddafad7efd43e34ec4362f4d523c3c471b457148fb211/beartype-0.22.8-py3-none-any.whl", hash = "sha256:b832882d04e41a4097bab9f63e6992bc6de58c414ee84cba9b45b67314f5ab2e", size = 1331895, upload-time = "2025-12-03T05:11:08.373Z" },
]
[[package]]
name = "black"
-version = "25.1.0"
+version = "25.11.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "click" },
@@ -64,79 +72,135 @@ dependencies = [
{ name = "packaging" },
{ name = "pathspec" },
{ name = "platformdirs" },
+ { name = "pytokens" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449, upload-time = "2025-01-29T04:15:40.373Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/8c/ad/33adf4708633d047950ff2dfdea2e215d84ac50ef95aff14a614e4b6e9b2/black-25.11.0.tar.gz", hash = "sha256:9a323ac32f5dc75ce7470501b887250be5005a01602e931a15e45593f70f6e08", size = 655669, upload-time = "2025-11-10T01:53:50.558Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/ad/47/3378d6a2ddefe18553d1115e36aea98f4a90de53b6a3017ed861ba1bd3bc/black-25.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0a1d40348b6621cc20d3d7530a5b8d67e9714906dfd7346338249ad9c6cedf2b", size = 1772446, upload-time = "2025-11-10T02:02:16.181Z" },
+ { url = "https://files.pythonhosted.org/packages/ba/4b/0f00bfb3d1f7e05e25bfc7c363f54dc523bb6ba502f98f4ad3acf01ab2e4/black-25.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:51c65d7d60bb25429ea2bf0731c32b2a2442eb4bd3b2afcb47830f0b13e58bfd", size = 1607983, upload-time = "2025-11-10T02:02:52.502Z" },
+ { url = "https://files.pythonhosted.org/packages/99/fe/49b0768f8c9ae57eb74cc10a1f87b4c70453551d8ad498959721cc345cb7/black-25.11.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:936c4dd07669269f40b497440159a221ee435e3fddcf668e0c05244a9be71993", size = 1682481, upload-time = "2025-11-10T01:57:12.35Z" },
+ { url = "https://files.pythonhosted.org/packages/55/17/7e10ff1267bfa950cc16f0a411d457cdff79678fbb77a6c73b73a5317904/black-25.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:f42c0ea7f59994490f4dccd64e6b2dd49ac57c7c84f38b8faab50f8759db245c", size = 1363869, upload-time = "2025-11-10T01:58:24.608Z" },
+ { url = "https://files.pythonhosted.org/packages/67/c0/cc865ce594d09e4cd4dfca5e11994ebb51604328489f3ca3ae7bb38a7db5/black-25.11.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:35690a383f22dd3e468c85dc4b915217f87667ad9cce781d7b42678ce63c4170", size = 1771358, upload-time = "2025-11-10T02:03:33.331Z" },
+ { url = "https://files.pythonhosted.org/packages/37/77/4297114d9e2fd2fc8ab0ab87192643cd49409eb059e2940391e7d2340e57/black-25.11.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:dae49ef7369c6caa1a1833fd5efb7c3024bb7e4499bf64833f65ad27791b1545", size = 1612902, upload-time = "2025-11-10T01:59:33.382Z" },
+ { url = "https://files.pythonhosted.org/packages/de/63/d45ef97ada84111e330b2b2d45e1dd163e90bd116f00ac55927fb6bf8adb/black-25.11.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bd4a22a0b37401c8e492e994bce79e614f91b14d9ea911f44f36e262195fdda", size = 1680571, upload-time = "2025-11-10T01:57:04.239Z" },
+ { url = "https://files.pythonhosted.org/packages/ff/4b/5604710d61cdff613584028b4cb4607e56e148801ed9b38ee7970799dab6/black-25.11.0-cp314-cp314-win_amd64.whl", hash = "sha256:aa211411e94fdf86519996b7f5f05e71ba34835d8f0c0f03c00a26271da02664", size = 1382599, upload-time = "2025-11-10T01:57:57.427Z" },
+ { url = "https://files.pythonhosted.org/packages/00/5d/aed32636ed30a6e7f9efd6ad14e2a0b0d687ae7c8c7ec4e4a557174b895c/black-25.11.0-py3-none-any.whl", hash = "sha256:e3f562da087791e96cefcd9dda058380a442ab322a02e222add53736451f604b", size = 204918, upload-time = "2025-11-10T01:53:48.917Z" },
+]
+
+[[package]]
+name = "cachetools"
+version = "6.2.2"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/fb/44/ca1675be2a83aeee1886ab745b28cda92093066590233cc501890eb8417a/cachetools-6.2.2.tar.gz", hash = "sha256:8e6d266b25e539df852251cfd6f990b4bc3a141db73b939058d809ebd2590fc6", size = 31571, upload-time = "2025-11-13T17:42:51.465Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/98/87/0edf98916640efa5d0696e1abb0a8357b52e69e82322628f25bf14d263d1/black-25.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8f0b18a02996a836cc9c9c78e5babec10930862827b1b724ddfe98ccf2f2fe4f", size = 1650673, upload-time = "2025-01-29T05:37:20.574Z" },
- { url = "https://files.pythonhosted.org/packages/52/e5/f7bf17207cf87fa6e9b676576749c6b6ed0d70f179a3d812c997870291c3/black-25.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:afebb7098bfbc70037a053b91ae8437c3857482d3a690fefc03e9ff7aa9a5fd3", size = 1453190, upload-time = "2025-01-29T05:37:22.106Z" },
- { url = "https://files.pythonhosted.org/packages/e3/ee/adda3d46d4a9120772fae6de454c8495603c37c4c3b9c60f25b1ab6401fe/black-25.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:030b9759066a4ee5e5aca28c3c77f9c64789cdd4de8ac1df642c40b708be6171", size = 1782926, upload-time = "2025-01-29T04:18:58.564Z" },
- { url = "https://files.pythonhosted.org/packages/cc/64/94eb5f45dcb997d2082f097a3944cfc7fe87e071907f677e80788a2d7b7a/black-25.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:a22f402b410566e2d1c950708c77ebf5ebd5d0d88a6a2e87c86d9fb48afa0d18", size = 1442613, upload-time = "2025-01-29T04:19:27.63Z" },
- { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646, upload-time = "2025-01-29T04:15:38.082Z" },
+ { url = "https://files.pythonhosted.org/packages/e6/46/eb6eca305c77a4489affe1c5d8f4cae82f285d9addd8de4ec084a7184221/cachetools-6.2.2-py3-none-any.whl", hash = "sha256:6c09c98183bf58560c97b2abfcedcbaf6a896a490f534b031b661d3723b45ace", size = 11503, upload-time = "2025-11-13T17:42:50.232Z" },
]
[[package]]
name = "certifi"
-version = "2025.8.3"
+version = "2025.11.12"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/dc/67/960ebe6bf230a96cda2e0abcf73af550ec4f090005363542f0765df162e0/certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407", size = 162386, upload-time = "2025-08-03T03:07:47.08Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/a2/8c/58f469717fa48465e4a50c014a0400602d3c437d7c0c468e17ada824da3a/certifi-2025.11.12.tar.gz", hash = "sha256:d8ab5478f2ecd78af242878415affce761ca6bc54a22a27e026d7c25357c3316", size = 160538, upload-time = "2025-11-12T02:54:51.517Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/e5/48/1549795ba7742c948d2ad169c1c8cdbae65bc450d6cd753d124b17c8cd32/certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5", size = 161216, upload-time = "2025-08-03T03:07:45.777Z" },
+ { url = "https://files.pythonhosted.org/packages/70/7d/9bc192684cea499815ff478dfcdc13835ddf401365057044fb721ec6bddb/certifi-2025.11.12-py3-none-any.whl", hash = "sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b", size = 159438, upload-time = "2025-11-12T02:54:49.735Z" },
]
[[package]]
name = "cffi"
-version = "1.17.1"
+version = "2.0.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
- { name = "pycparser" },
-]
-sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload-time = "2024-09-04T20:44:28.956Z" },
- { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload-time = "2024-09-04T20:44:30.289Z" },
- { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload-time = "2024-09-04T20:44:32.01Z" },
- { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload-time = "2024-09-04T20:44:33.606Z" },
- { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload-time = "2024-09-04T20:44:35.191Z" },
- { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload-time = "2024-09-04T20:44:36.743Z" },
- { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload-time = "2024-09-04T20:44:38.492Z" },
- { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload-time = "2024-09-04T20:44:40.046Z" },
- { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload-time = "2024-09-04T20:44:41.616Z" },
- { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload-time = "2024-09-04T20:44:43.733Z" },
- { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload-time = "2024-09-04T20:44:45.309Z" },
+ { name = "pycparser", marker = "implementation_name != 'PyPy'" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" },
+ { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" },
+ { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" },
+ { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" },
+ { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" },
+ { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" },
+ { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" },
+ { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" },
+ { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" },
+ { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" },
+ { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" },
+ { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" },
+ { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" },
+ { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" },
+ { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" },
+ { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" },
+ { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" },
+ { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" },
+ { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" },
+ { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" },
+ { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" },
+ { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" },
+ { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" },
+ { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" },
+ { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" },
+ { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" },
+ { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" },
+ { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" },
+ { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" },
+ { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" },
+ { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" },
+ { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" },
+ { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" },
+ { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" },
]
[[package]]
name = "charset-normalizer"
-version = "3.4.2"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload-time = "2025-05-02T08:34:42.01Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622, upload-time = "2025-05-02T08:32:56.363Z" },
- { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435, upload-time = "2025-05-02T08:32:58.551Z" },
- { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653, upload-time = "2025-05-02T08:33:00.342Z" },
- { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231, upload-time = "2025-05-02T08:33:02.081Z" },
- { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243, upload-time = "2025-05-02T08:33:04.063Z" },
- { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442, upload-time = "2025-05-02T08:33:06.418Z" },
- { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147, upload-time = "2025-05-02T08:33:08.183Z" },
- { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057, upload-time = "2025-05-02T08:33:09.986Z" },
- { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454, upload-time = "2025-05-02T08:33:11.814Z" },
- { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174, upload-time = "2025-05-02T08:33:13.707Z" },
- { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166, upload-time = "2025-05-02T08:33:15.458Z" },
- { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064, upload-time = "2025-05-02T08:33:17.06Z" },
- { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641, upload-time = "2025-05-02T08:33:18.753Z" },
- { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" },
+version = "3.4.4"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/13/69/33ddede1939fdd074bce5434295f38fae7136463422fe4fd3e0e89b98062/charset_normalizer-3.4.4.tar.gz", hash = "sha256:94537985111c35f28720e43603b8e7b43a6ecfb2ce1d3058bbe955b73404e21a", size = 129418, upload-time = "2025-10-14T04:42:32.879Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/97/45/4b3a1239bbacd321068ea6e7ac28875b03ab8bc0aa0966452db17cd36714/charset_normalizer-3.4.4-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e1f185f86a6f3403aa2420e815904c67b2f9ebc443f045edd0de921108345794", size = 208091, upload-time = "2025-10-14T04:41:13.346Z" },
+ { url = "https://files.pythonhosted.org/packages/7d/62/73a6d7450829655a35bb88a88fca7d736f9882a27eacdca2c6d505b57e2e/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b39f987ae8ccdf0d2642338faf2abb1862340facc796048b604ef14919e55ed", size = 147936, upload-time = "2025-10-14T04:41:14.461Z" },
+ { url = "https://files.pythonhosted.org/packages/89/c5/adb8c8b3d6625bef6d88b251bbb0d95f8205831b987631ab0c8bb5d937c2/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3162d5d8ce1bb98dd51af660f2121c55d0fa541b46dff7bb9b9f86ea1d87de72", size = 144180, upload-time = "2025-10-14T04:41:15.588Z" },
+ { url = "https://files.pythonhosted.org/packages/91/ed/9706e4070682d1cc219050b6048bfd293ccf67b3d4f5a4f39207453d4b99/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:81d5eb2a312700f4ecaa977a8235b634ce853200e828fbadf3a9c50bab278328", size = 161346, upload-time = "2025-10-14T04:41:16.738Z" },
+ { url = "https://files.pythonhosted.org/packages/d5/0d/031f0d95e4972901a2f6f09ef055751805ff541511dc1252ba3ca1f80cf5/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5bd2293095d766545ec1a8f612559f6b40abc0eb18bb2f5d1171872d34036ede", size = 158874, upload-time = "2025-10-14T04:41:17.923Z" },
+ { url = "https://files.pythonhosted.org/packages/f5/83/6ab5883f57c9c801ce5e5677242328aa45592be8a00644310a008d04f922/charset_normalizer-3.4.4-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a8a8b89589086a25749f471e6a900d3f662d1d3b6e2e59dcecf787b1cc3a1894", size = 153076, upload-time = "2025-10-14T04:41:19.106Z" },
+ { url = "https://files.pythonhosted.org/packages/75/1e/5ff781ddf5260e387d6419959ee89ef13878229732732ee73cdae01800f2/charset_normalizer-3.4.4-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc7637e2f80d8530ee4a78e878bce464f70087ce73cf7c1caf142416923b98f1", size = 150601, upload-time = "2025-10-14T04:41:20.245Z" },
+ { url = "https://files.pythonhosted.org/packages/d7/57/71be810965493d3510a6ca79b90c19e48696fb1ff964da319334b12677f0/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f8bf04158c6b607d747e93949aa60618b61312fe647a6369f88ce2ff16043490", size = 150376, upload-time = "2025-10-14T04:41:21.398Z" },
+ { url = "https://files.pythonhosted.org/packages/e5/d5/c3d057a78c181d007014feb7e9f2e65905a6c4ef182c0ddf0de2924edd65/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:554af85e960429cf30784dd47447d5125aaa3b99a6f0683589dbd27e2f45da44", size = 144825, upload-time = "2025-10-14T04:41:22.583Z" },
+ { url = "https://files.pythonhosted.org/packages/e6/8c/d0406294828d4976f275ffbe66f00266c4b3136b7506941d87c00cab5272/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:74018750915ee7ad843a774364e13a3db91682f26142baddf775342c3f5b1133", size = 162583, upload-time = "2025-10-14T04:41:23.754Z" },
+ { url = "https://files.pythonhosted.org/packages/d7/24/e2aa1f18c8f15c4c0e932d9287b8609dd30ad56dbe41d926bd846e22fb8d/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:c0463276121fdee9c49b98908b3a89c39be45d86d1dbaa22957e38f6321d4ce3", size = 150366, upload-time = "2025-10-14T04:41:25.27Z" },
+ { url = "https://files.pythonhosted.org/packages/e4/5b/1e6160c7739aad1e2df054300cc618b06bf784a7a164b0f238360721ab86/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:362d61fd13843997c1c446760ef36f240cf81d3ebf74ac62652aebaf7838561e", size = 160300, upload-time = "2025-10-14T04:41:26.725Z" },
+ { url = "https://files.pythonhosted.org/packages/7a/10/f882167cd207fbdd743e55534d5d9620e095089d176d55cb22d5322f2afd/charset_normalizer-3.4.4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9a26f18905b8dd5d685d6d07b0cdf98a79f3c7a918906af7cc143ea2e164c8bc", size = 154465, upload-time = "2025-10-14T04:41:28.322Z" },
+ { url = "https://files.pythonhosted.org/packages/89/66/c7a9e1b7429be72123441bfdbaf2bc13faab3f90b933f664db506dea5915/charset_normalizer-3.4.4-cp313-cp313-win32.whl", hash = "sha256:9b35f4c90079ff2e2edc5b26c0c77925e5d2d255c42c74fdb70fb49b172726ac", size = 99404, upload-time = "2025-10-14T04:41:29.95Z" },
+ { url = "https://files.pythonhosted.org/packages/c4/26/b9924fa27db384bdcd97ab83b4f0a8058d96ad9626ead570674d5e737d90/charset_normalizer-3.4.4-cp313-cp313-win_amd64.whl", hash = "sha256:b435cba5f4f750aa6c0a0d92c541fb79f69a387c91e61f1795227e4ed9cece14", size = 107092, upload-time = "2025-10-14T04:41:31.188Z" },
+ { url = "https://files.pythonhosted.org/packages/af/8f/3ed4bfa0c0c72a7ca17f0380cd9e4dd842b09f664e780c13cff1dcf2ef1b/charset_normalizer-3.4.4-cp313-cp313-win_arm64.whl", hash = "sha256:542d2cee80be6f80247095cc36c418f7bddd14f4a6de45af91dfad36d817bba2", size = 100408, upload-time = "2025-10-14T04:41:32.624Z" },
+ { url = "https://files.pythonhosted.org/packages/2a/35/7051599bd493e62411d6ede36fd5af83a38f37c4767b92884df7301db25d/charset_normalizer-3.4.4-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:da3326d9e65ef63a817ecbcc0df6e94463713b754fe293eaa03da99befb9a5bd", size = 207746, upload-time = "2025-10-14T04:41:33.773Z" },
+ { url = "https://files.pythonhosted.org/packages/10/9a/97c8d48ef10d6cd4fcead2415523221624bf58bcf68a802721a6bc807c8f/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8af65f14dc14a79b924524b1e7fffe304517b2bff5a58bf64f30b98bbc5079eb", size = 147889, upload-time = "2025-10-14T04:41:34.897Z" },
+ { url = "https://files.pythonhosted.org/packages/10/bf/979224a919a1b606c82bd2c5fa49b5c6d5727aa47b4312bb27b1734f53cd/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:74664978bb272435107de04e36db5a9735e78232b85b77d45cfb38f758efd33e", size = 143641, upload-time = "2025-10-14T04:41:36.116Z" },
+ { url = "https://files.pythonhosted.org/packages/ba/33/0ad65587441fc730dc7bd90e9716b30b4702dc7b617e6ba4997dc8651495/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:752944c7ffbfdd10c074dc58ec2d5a8a4cd9493b314d367c14d24c17684ddd14", size = 160779, upload-time = "2025-10-14T04:41:37.229Z" },
+ { url = "https://files.pythonhosted.org/packages/67/ed/331d6b249259ee71ddea93f6f2f0a56cfebd46938bde6fcc6f7b9a3d0e09/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d1f13550535ad8cff21b8d757a3257963e951d96e20ec82ab44bc64aeb62a191", size = 159035, upload-time = "2025-10-14T04:41:38.368Z" },
+ { url = "https://files.pythonhosted.org/packages/67/ff/f6b948ca32e4f2a4576aa129d8bed61f2e0543bf9f5f2b7fc3758ed005c9/charset_normalizer-3.4.4-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ecaae4149d99b1c9e7b88bb03e3221956f68fd6d50be2ef061b2381b61d20838", size = 152542, upload-time = "2025-10-14T04:41:39.862Z" },
+ { url = "https://files.pythonhosted.org/packages/16/85/276033dcbcc369eb176594de22728541a925b2632f9716428c851b149e83/charset_normalizer-3.4.4-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:cb6254dc36b47a990e59e1068afacdcd02958bdcce30bb50cc1700a8b9d624a6", size = 149524, upload-time = "2025-10-14T04:41:41.319Z" },
+ { url = "https://files.pythonhosted.org/packages/9e/f2/6a2a1f722b6aba37050e626530a46a68f74e63683947a8acff92569f979a/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c8ae8a0f02f57a6e61203a31428fa1d677cbe50c93622b4149d5c0f319c1d19e", size = 150395, upload-time = "2025-10-14T04:41:42.539Z" },
+ { url = "https://files.pythonhosted.org/packages/60/bb/2186cb2f2bbaea6338cad15ce23a67f9b0672929744381e28b0592676824/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:47cc91b2f4dd2833fddaedd2893006b0106129d4b94fdb6af1f4ce5a9965577c", size = 143680, upload-time = "2025-10-14T04:41:43.661Z" },
+ { url = "https://files.pythonhosted.org/packages/7d/a5/bf6f13b772fbb2a90360eb620d52ed8f796f3c5caee8398c3b2eb7b1c60d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:82004af6c302b5d3ab2cfc4cc5f29db16123b1a8417f2e25f9066f91d4411090", size = 162045, upload-time = "2025-10-14T04:41:44.821Z" },
+ { url = "https://files.pythonhosted.org/packages/df/c5/d1be898bf0dc3ef9030c3825e5d3b83f2c528d207d246cbabe245966808d/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:2b7d8f6c26245217bd2ad053761201e9f9680f8ce52f0fcd8d0755aeae5b2152", size = 149687, upload-time = "2025-10-14T04:41:46.442Z" },
+ { url = "https://files.pythonhosted.org/packages/a5/42/90c1f7b9341eef50c8a1cb3f098ac43b0508413f33affd762855f67a410e/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:799a7a5e4fb2d5898c60b640fd4981d6a25f1c11790935a44ce38c54e985f828", size = 160014, upload-time = "2025-10-14T04:41:47.631Z" },
+ { url = "https://files.pythonhosted.org/packages/76/be/4d3ee471e8145d12795ab655ece37baed0929462a86e72372fd25859047c/charset_normalizer-3.4.4-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:99ae2cffebb06e6c22bdc25801d7b30f503cc87dbd283479e7b606f70aff57ec", size = 154044, upload-time = "2025-10-14T04:41:48.81Z" },
+ { url = "https://files.pythonhosted.org/packages/b0/6f/8f7af07237c34a1defe7defc565a9bc1807762f672c0fde711a4b22bf9c0/charset_normalizer-3.4.4-cp314-cp314-win32.whl", hash = "sha256:f9d332f8c2a2fcbffe1378594431458ddbef721c1769d78e2cbc06280d8155f9", size = 99940, upload-time = "2025-10-14T04:41:49.946Z" },
+ { url = "https://files.pythonhosted.org/packages/4b/51/8ade005e5ca5b0d80fb4aff72a3775b325bdc3d27408c8113811a7cbe640/charset_normalizer-3.4.4-cp314-cp314-win_amd64.whl", hash = "sha256:8a6562c3700cce886c5be75ade4a5db4214fda19fede41d9792d100288d8f94c", size = 107104, upload-time = "2025-10-14T04:41:51.051Z" },
+ { url = "https://files.pythonhosted.org/packages/da/5f/6b8f83a55bb8278772c5ae54a577f3099025f9ade59d0136ac24a0df4bde/charset_normalizer-3.4.4-cp314-cp314-win_arm64.whl", hash = "sha256:de00632ca48df9daf77a2c65a484531649261ec9f25489917f09e455cb09ddb2", size = 100743, upload-time = "2025-10-14T04:41:52.122Z" },
+ { url = "https://files.pythonhosted.org/packages/0a/4c/925909008ed5a988ccbb72dcc897407e5d6d3bd72410d69e051fc0c14647/charset_normalizer-3.4.4-py3-none-any.whl", hash = "sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f", size = 53402, upload-time = "2025-10-14T04:42:31.76Z" },
]
[[package]]
name = "click"
-version = "8.2.1"
+version = "8.3.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "colorama", marker = "sys_platform == 'win32'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/3d/fa/656b739db8587d7b5dfa22e22ed02566950fbfbcdc20311993483657a5c0/click-8.3.1.tar.gz", hash = "sha256:12ff4785d337a1bb490bb7e9c2b1ee5da3112e94a8622f26a6c77f5d2fc6842a", size = 295065, upload-time = "2025-11-15T20:45:42.706Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" },
+ { url = "https://files.pythonhosted.org/packages/98/78/01c019cdb5d6498122777c1a43056ebb3ebfeef2076d9d026bfe15583b2b/click-8.3.1-py3-none-any.whl", hash = "sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6", size = 108274, upload-time = "2025-11-15T20:45:41.139Z" },
]
[[package]]
@@ -150,110 +214,139 @@ wheels = [
[[package]]
name = "coverage"
-version = "7.10.3"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/f4/2c/253cc41cd0f40b84c1c34c5363e0407d73d4a1cae005fed6db3b823175bd/coverage-7.10.3.tar.gz", hash = "sha256:812ba9250532e4a823b070b0420a36499859542335af3dca8f47fc6aa1a05619", size = 822936, upload-time = "2025-08-10T21:27:39.968Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/0a/ff/239e4de9cc149c80e9cc359fab60592365b8c4cbfcad58b8a939d18c6898/coverage-7.10.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b99e87304ffe0eb97c5308447328a584258951853807afdc58b16143a530518a", size = 216298, upload-time = "2025-08-10T21:26:10.973Z" },
- { url = "https://files.pythonhosted.org/packages/56/da/28717da68f8ba68f14b9f558aaa8f3e39ada8b9a1ae4f4977c8f98b286d5/coverage-7.10.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4af09c7574d09afbc1ea7da9dcea23665c01f3bc1b1feb061dac135f98ffc53a", size = 216546, upload-time = "2025-08-10T21:26:12.616Z" },
- { url = "https://files.pythonhosted.org/packages/de/bb/e1ade16b9e3f2d6c323faeb6bee8e6c23f3a72760a5d9af102ef56a656cb/coverage-7.10.3-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:488e9b50dc5d2aa9521053cfa706209e5acf5289e81edc28291a24f4e4488f46", size = 247538, upload-time = "2025-08-10T21:26:14.455Z" },
- { url = "https://files.pythonhosted.org/packages/ea/2f/6ae1db51dc34db499bfe340e89f79a63bd115fc32513a7bacdf17d33cd86/coverage-7.10.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:913ceddb4289cbba3a310704a424e3fb7aac2bc0c3a23ea473193cb290cf17d4", size = 250141, upload-time = "2025-08-10T21:26:15.787Z" },
- { url = "https://files.pythonhosted.org/packages/4f/ed/33efd8819895b10c66348bf26f011dd621e804866c996ea6893d682218df/coverage-7.10.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6b1f91cbc78c7112ab84ed2a8defbccd90f888fcae40a97ddd6466b0bec6ae8a", size = 251415, upload-time = "2025-08-10T21:26:17.535Z" },
- { url = "https://files.pythonhosted.org/packages/26/04/cb83826f313d07dc743359c9914d9bc460e0798da9a0e38b4f4fabc207ed/coverage-7.10.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b0bac054d45af7cd938834b43a9878b36ea92781bcb009eab040a5b09e9927e3", size = 249575, upload-time = "2025-08-10T21:26:18.921Z" },
- { url = "https://files.pythonhosted.org/packages/2d/fd/ae963c7a8e9581c20fa4355ab8940ca272554d8102e872dbb932a644e410/coverage-7.10.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:fe72cbdd12d9e0f4aca873fa6d755e103888a7f9085e4a62d282d9d5b9f7928c", size = 247466, upload-time = "2025-08-10T21:26:20.263Z" },
- { url = "https://files.pythonhosted.org/packages/99/e8/b68d1487c6af370b8d5ef223c6d7e250d952c3acfbfcdbf1a773aa0da9d2/coverage-7.10.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c1e2e927ab3eadd7c244023927d646e4c15c65bb2ac7ae3c3e9537c013700d21", size = 249084, upload-time = "2025-08-10T21:26:21.638Z" },
- { url = "https://files.pythonhosted.org/packages/66/4d/a0bcb561645c2c1e21758d8200443669d6560d2a2fb03955291110212ec4/coverage-7.10.3-cp313-cp313-win32.whl", hash = "sha256:24d0c13de473b04920ddd6e5da3c08831b1170b8f3b17461d7429b61cad59ae0", size = 218735, upload-time = "2025-08-10T21:26:23.009Z" },
- { url = "https://files.pythonhosted.org/packages/6a/c3/78b4adddbc0feb3b223f62761e5f9b4c5a758037aaf76e0a5845e9e35e48/coverage-7.10.3-cp313-cp313-win_amd64.whl", hash = "sha256:3564aae76bce4b96e2345cf53b4c87e938c4985424a9be6a66ee902626edec4c", size = 219531, upload-time = "2025-08-10T21:26:24.474Z" },
- { url = "https://files.pythonhosted.org/packages/70/1b/1229c0b2a527fa5390db58d164aa896d513a1fbb85a1b6b6676846f00552/coverage-7.10.3-cp313-cp313-win_arm64.whl", hash = "sha256:f35580f19f297455f44afcd773c9c7a058e52eb6eb170aa31222e635f2e38b87", size = 218162, upload-time = "2025-08-10T21:26:25.847Z" },
- { url = "https://files.pythonhosted.org/packages/fc/26/1c1f450e15a3bf3eaecf053ff64538a2612a23f05b21d79ce03be9ff5903/coverage-7.10.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:07009152f497a0464ffdf2634586787aea0e69ddd023eafb23fc38267db94b84", size = 217003, upload-time = "2025-08-10T21:26:27.231Z" },
- { url = "https://files.pythonhosted.org/packages/29/96/4b40036181d8c2948454b458750960956a3c4785f26a3c29418bbbee1666/coverage-7.10.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8dd2ba5f0c7e7e8cc418be2f0c14c4d9e3f08b8fb8e4c0f83c2fe87d03eb655e", size = 217238, upload-time = "2025-08-10T21:26:28.83Z" },
- { url = "https://files.pythonhosted.org/packages/62/23/8dfc52e95da20957293fb94d97397a100e63095ec1e0ef5c09dd8c6f591a/coverage-7.10.3-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:1ae22b97003c74186e034a93e4f946c75fad8c0ce8d92fbbc168b5e15ee2841f", size = 258561, upload-time = "2025-08-10T21:26:30.475Z" },
- { url = "https://files.pythonhosted.org/packages/59/95/00e7fcbeda3f632232f4c07dde226afe3511a7781a000aa67798feadc535/coverage-7.10.3-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:eb329f1046888a36b1dc35504d3029e1dd5afe2196d94315d18c45ee380f67d5", size = 260735, upload-time = "2025-08-10T21:26:32.333Z" },
- { url = "https://files.pythonhosted.org/packages/9e/4c/f4666cbc4571804ba2a65b078ff0de600b0b577dc245389e0bc9b69ae7ca/coverage-7.10.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce01048199a91f07f96ca3074b0c14021f4fe7ffd29a3e6a188ac60a5c3a4af8", size = 262960, upload-time = "2025-08-10T21:26:33.701Z" },
- { url = "https://files.pythonhosted.org/packages/c1/a5/8a9e8a7b12a290ed98b60f73d1d3e5e9ced75a4c94a0d1a671ce3ddfff2a/coverage-7.10.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:08b989a06eb9dfacf96d42b7fb4c9a22bafa370d245dc22fa839f2168c6f9fa1", size = 260515, upload-time = "2025-08-10T21:26:35.16Z" },
- { url = "https://files.pythonhosted.org/packages/86/11/bb59f7f33b2cac0c5b17db0d9d0abba9c90d9eda51a6e727b43bd5fce4ae/coverage-7.10.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:669fe0d4e69c575c52148511029b722ba8d26e8a3129840c2ce0522e1452b256", size = 258278, upload-time = "2025-08-10T21:26:36.539Z" },
- { url = "https://files.pythonhosted.org/packages/cc/22/3646f8903743c07b3e53fded0700fed06c580a980482f04bf9536657ac17/coverage-7.10.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3262d19092771c83f3413831d9904b1ccc5f98da5de4ffa4ad67f5b20c7aaf7b", size = 259408, upload-time = "2025-08-10T21:26:37.954Z" },
- { url = "https://files.pythonhosted.org/packages/d2/5c/6375e9d905da22ddea41cd85c30994b8b6f6c02e44e4c5744b76d16b026f/coverage-7.10.3-cp313-cp313t-win32.whl", hash = "sha256:cc0ee4b2ccd42cab7ee6be46d8a67d230cb33a0a7cd47a58b587a7063b6c6b0e", size = 219396, upload-time = "2025-08-10T21:26:39.426Z" },
- { url = "https://files.pythonhosted.org/packages/33/3b/7da37fd14412b8c8b6e73c3e7458fef6b1b05a37f990a9776f88e7740c89/coverage-7.10.3-cp313-cp313t-win_amd64.whl", hash = "sha256:03db599f213341e2960430984e04cf35fb179724e052a3ee627a068653cf4a7c", size = 220458, upload-time = "2025-08-10T21:26:40.905Z" },
- { url = "https://files.pythonhosted.org/packages/28/cc/59a9a70f17edab513c844ee7a5c63cf1057041a84cc725b46a51c6f8301b/coverage-7.10.3-cp313-cp313t-win_arm64.whl", hash = "sha256:46eae7893ba65f53c71284585a262f083ef71594f05ec5c85baf79c402369098", size = 218722, upload-time = "2025-08-10T21:26:42.362Z" },
- { url = "https://files.pythonhosted.org/packages/2d/84/bb773b51a06edbf1231b47dc810a23851f2796e913b335a0fa364773b842/coverage-7.10.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:bce8b8180912914032785850d8f3aacb25ec1810f5f54afc4a8b114e7a9b55de", size = 216280, upload-time = "2025-08-10T21:26:44.132Z" },
- { url = "https://files.pythonhosted.org/packages/92/a8/4d8ca9c111d09865f18d56facff64d5fa076a5593c290bd1cfc5dceb8dba/coverage-7.10.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:07790b4b37d56608536f7c1079bd1aa511567ac2966d33d5cec9cf520c50a7c8", size = 216557, upload-time = "2025-08-10T21:26:45.598Z" },
- { url = "https://files.pythonhosted.org/packages/fe/b2/eb668bfc5060194bc5e1ccd6f664e8e045881cfee66c42a2aa6e6c5b26e8/coverage-7.10.3-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:e79367ef2cd9166acedcbf136a458dfe9a4a2dd4d1ee95738fb2ee581c56f667", size = 247598, upload-time = "2025-08-10T21:26:47.081Z" },
- { url = "https://files.pythonhosted.org/packages/fd/b0/9faa4ac62c8822219dd83e5d0e73876398af17d7305968aed8d1606d1830/coverage-7.10.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:419d2a0f769f26cb1d05e9ccbc5eab4cb5d70231604d47150867c07822acbdf4", size = 250131, upload-time = "2025-08-10T21:26:48.65Z" },
- { url = "https://files.pythonhosted.org/packages/4e/90/203537e310844d4bf1bdcfab89c1e05c25025c06d8489b9e6f937ad1a9e2/coverage-7.10.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee221cf244757cdc2ac882e3062ab414b8464ad9c884c21e878517ea64b3fa26", size = 251485, upload-time = "2025-08-10T21:26:50.368Z" },
- { url = "https://files.pythonhosted.org/packages/b9/b2/9d894b26bc53c70a1fe503d62240ce6564256d6d35600bdb86b80e516e7d/coverage-7.10.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:c2079d8cdd6f7373d628e14b3357f24d1db02c9dc22e6a007418ca7a2be0435a", size = 249488, upload-time = "2025-08-10T21:26:52.045Z" },
- { url = "https://files.pythonhosted.org/packages/b4/28/af167dbac5281ba6c55c933a0ca6675d68347d5aee39cacc14d44150b922/coverage-7.10.3-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:bd8df1f83c0703fa3ca781b02d36f9ec67ad9cb725b18d486405924f5e4270bd", size = 247419, upload-time = "2025-08-10T21:26:53.533Z" },
- { url = "https://files.pythonhosted.org/packages/f4/1c/9a4ddc9f0dcb150d4cd619e1c4bb39bcf694c6129220bdd1e5895d694dda/coverage-7.10.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:6b4e25e0fa335c8aa26e42a52053f3786a61cc7622b4d54ae2dad994aa754fec", size = 248917, upload-time = "2025-08-10T21:26:55.11Z" },
- { url = "https://files.pythonhosted.org/packages/92/27/c6a60c7cbe10dbcdcd7fc9ee89d531dc04ea4c073800279bb269954c5a9f/coverage-7.10.3-cp314-cp314-win32.whl", hash = "sha256:d7c3d02c2866deb217dce664c71787f4b25420ea3eaf87056f44fb364a3528f5", size = 218999, upload-time = "2025-08-10T21:26:56.637Z" },
- { url = "https://files.pythonhosted.org/packages/36/09/a94c1369964ab31273576615d55e7d14619a1c47a662ed3e2a2fe4dee7d4/coverage-7.10.3-cp314-cp314-win_amd64.whl", hash = "sha256:9c8916d44d9e0fe6cdb2227dc6b0edd8bc6c8ef13438bbbf69af7482d9bb9833", size = 219801, upload-time = "2025-08-10T21:26:58.207Z" },
- { url = "https://files.pythonhosted.org/packages/23/59/f5cd2a80f401c01cf0f3add64a7b791b7d53fd6090a4e3e9ea52691cf3c4/coverage-7.10.3-cp314-cp314-win_arm64.whl", hash = "sha256:1007d6a2b3cf197c57105cc1ba390d9ff7f0bee215ced4dea530181e49c65ab4", size = 218381, upload-time = "2025-08-10T21:26:59.707Z" },
- { url = "https://files.pythonhosted.org/packages/73/3d/89d65baf1ea39e148ee989de6da601469ba93c1d905b17dfb0b83bd39c96/coverage-7.10.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:ebc8791d346410d096818788877d675ca55c91db87d60e8f477bd41c6970ffc6", size = 217019, upload-time = "2025-08-10T21:27:01.242Z" },
- { url = "https://files.pythonhosted.org/packages/7d/7d/d9850230cd9c999ce3a1e600f85c2fff61a81c301334d7a1faa1a5ba19c8/coverage-7.10.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1f4e4d8e75f6fd3c6940ebeed29e3d9d632e1f18f6fb65d33086d99d4d073241", size = 217237, upload-time = "2025-08-10T21:27:03.442Z" },
- { url = "https://files.pythonhosted.org/packages/36/51/b87002d417202ab27f4a1cd6bd34ee3b78f51b3ddbef51639099661da991/coverage-7.10.3-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:24581ed69f132b6225a31b0228ae4885731cddc966f8a33fe5987288bdbbbd5e", size = 258735, upload-time = "2025-08-10T21:27:05.124Z" },
- { url = "https://files.pythonhosted.org/packages/1c/02/1f8612bfcb46fc7ca64a353fff1cd4ed932bb6e0b4e0bb88b699c16794b8/coverage-7.10.3-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ec151569ddfccbf71bac8c422dce15e176167385a00cd86e887f9a80035ce8a5", size = 260901, upload-time = "2025-08-10T21:27:06.68Z" },
- { url = "https://files.pythonhosted.org/packages/aa/3a/fe39e624ddcb2373908bd922756384bb70ac1c5009b0d1674eb326a3e428/coverage-7.10.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:2ae8e7c56290b908ee817200c0b65929b8050bc28530b131fe7c6dfee3e7d86b", size = 263157, upload-time = "2025-08-10T21:27:08.398Z" },
- { url = "https://files.pythonhosted.org/packages/5e/89/496b6d5a10fa0d0691a633bb2b2bcf4f38f0bdfcbde21ad9e32d1af328ed/coverage-7.10.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5fb742309766d7e48e9eb4dc34bc95a424707bc6140c0e7d9726e794f11b92a0", size = 260597, upload-time = "2025-08-10T21:27:10.237Z" },
- { url = "https://files.pythonhosted.org/packages/b6/a6/8b5bf6a9e8c6aaeb47d5fe9687014148efc05c3588110246d5fdeef9b492/coverage-7.10.3-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:c65e2a5b32fbe1e499f1036efa6eb9cb4ea2bf6f7168d0e7a5852f3024f471b1", size = 258353, upload-time = "2025-08-10T21:27:11.773Z" },
- { url = "https://files.pythonhosted.org/packages/c3/6d/ad131be74f8afd28150a07565dfbdc86592fd61d97e2dc83383d9af219f0/coverage-7.10.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d48d2cb07d50f12f4f18d2bb75d9d19e3506c26d96fffabf56d22936e5ed8f7c", size = 259504, upload-time = "2025-08-10T21:27:13.254Z" },
- { url = "https://files.pythonhosted.org/packages/ec/30/fc9b5097092758cba3375a8cc4ff61774f8cd733bcfb6c9d21a60077a8d8/coverage-7.10.3-cp314-cp314t-win32.whl", hash = "sha256:dec0d9bc15ee305e09fe2cd1911d3f0371262d3cfdae05d79515d8cb712b4869", size = 219782, upload-time = "2025-08-10T21:27:14.736Z" },
- { url = "https://files.pythonhosted.org/packages/72/9b/27fbf79451b1fac15c4bda6ec6e9deae27cf7c0648c1305aa21a3454f5c4/coverage-7.10.3-cp314-cp314t-win_amd64.whl", hash = "sha256:424ea93a323aa0f7f01174308ea78bde885c3089ec1bef7143a6d93c3e24ef64", size = 220898, upload-time = "2025-08-10T21:27:16.297Z" },
- { url = "https://files.pythonhosted.org/packages/d1/cf/a32bbf92869cbf0b7c8b84325327bfc718ad4b6d2c63374fef3d58e39306/coverage-7.10.3-cp314-cp314t-win_arm64.whl", hash = "sha256:f5983c132a62d93d71c9ef896a0b9bf6e6828d8d2ea32611f58684fba60bba35", size = 218922, upload-time = "2025-08-10T21:27:18.22Z" },
- { url = "https://files.pythonhosted.org/packages/84/19/e67f4ae24e232c7f713337f3f4f7c9c58afd0c02866fb07c7b9255a19ed7/coverage-7.10.3-py3-none-any.whl", hash = "sha256:416a8d74dc0adfd33944ba2f405897bab87b7e9e84a391e09d241956bd953ce1", size = 207921, upload-time = "2025-08-10T21:27:38.254Z" },
+version = "7.12.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/89/26/4a96807b193b011588099c3b5c89fbb05294e5b90e71018e065465f34eb6/coverage-7.12.0.tar.gz", hash = "sha256:fc11e0a4e372cb5f282f16ef90d4a585034050ccda536451901abfb19a57f40c", size = 819341, upload-time = "2025-11-18T13:34:20.766Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/b8/14/771700b4048774e48d2c54ed0c674273702713c9ee7acdfede40c2666747/coverage-7.12.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:47324fffca8d8eae7e185b5bb20c14645f23350f870c1649003618ea91a78941", size = 217725, upload-time = "2025-11-18T13:32:49.22Z" },
+ { url = "https://files.pythonhosted.org/packages/17/a7/3aa4144d3bcb719bf67b22d2d51c2d577bf801498c13cb08f64173e80497/coverage-7.12.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ccf3b2ede91decd2fb53ec73c1f949c3e034129d1e0b07798ff1d02ea0c8fa4a", size = 218098, upload-time = "2025-11-18T13:32:50.78Z" },
+ { url = "https://files.pythonhosted.org/packages/fc/9c/b846bbc774ff81091a12a10203e70562c91ae71badda00c5ae5b613527b1/coverage-7.12.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:b365adc70a6936c6b0582dc38746b33b2454148c02349345412c6e743efb646d", size = 249093, upload-time = "2025-11-18T13:32:52.554Z" },
+ { url = "https://files.pythonhosted.org/packages/76/b6/67d7c0e1f400b32c883e9342de4a8c2ae7c1a0b57c5de87622b7262e2309/coverage-7.12.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bc13baf85cd8a4cfcf4a35c7bc9d795837ad809775f782f697bf630b7e200211", size = 251686, upload-time = "2025-11-18T13:32:54.862Z" },
+ { url = "https://files.pythonhosted.org/packages/cc/75/b095bd4b39d49c3be4bffbb3135fea18a99a431c52dd7513637c0762fecb/coverage-7.12.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:099d11698385d572ceafb3288a5b80fe1fc58bf665b3f9d362389de488361d3d", size = 252930, upload-time = "2025-11-18T13:32:56.417Z" },
+ { url = "https://files.pythonhosted.org/packages/6e/f3/466f63015c7c80550bead3093aacabf5380c1220a2a93c35d374cae8f762/coverage-7.12.0-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:473dc45d69694069adb7680c405fb1e81f60b2aff42c81e2f2c3feaf544d878c", size = 249296, upload-time = "2025-11-18T13:32:58.074Z" },
+ { url = "https://files.pythonhosted.org/packages/27/86/eba2209bf2b7e28c68698fc13437519a295b2d228ba9e0ec91673e09fa92/coverage-7.12.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:583f9adbefd278e9de33c33d6846aa8f5d164fa49b47144180a0e037f0688bb9", size = 251068, upload-time = "2025-11-18T13:32:59.646Z" },
+ { url = "https://files.pythonhosted.org/packages/ec/55/ca8ae7dbba962a3351f18940b359b94c6bafdd7757945fdc79ec9e452dc7/coverage-7.12.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b2089cc445f2dc0af6f801f0d1355c025b76c24481935303cf1af28f636688f0", size = 249034, upload-time = "2025-11-18T13:33:01.481Z" },
+ { url = "https://files.pythonhosted.org/packages/7a/d7/39136149325cad92d420b023b5fd900dabdd1c3a0d1d5f148ef4a8cedef5/coverage-7.12.0-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:950411f1eb5d579999c5f66c62a40961f126fc71e5e14419f004471957b51508", size = 248853, upload-time = "2025-11-18T13:33:02.935Z" },
+ { url = "https://files.pythonhosted.org/packages/fe/b6/76e1add8b87ef60e00643b0b7f8f7bb73d4bf5249a3be19ebefc5793dd25/coverage-7.12.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b1aab7302a87bafebfe76b12af681b56ff446dc6f32ed178ff9c092ca776e6bc", size = 250619, upload-time = "2025-11-18T13:33:04.336Z" },
+ { url = "https://files.pythonhosted.org/packages/95/87/924c6dc64f9203f7a3c1832a6a0eee5a8335dbe5f1bdadcc278d6f1b4d74/coverage-7.12.0-cp313-cp313-win32.whl", hash = "sha256:d7e0d0303c13b54db495eb636bc2465b2fb8475d4c8bcec8fe4b5ca454dfbae8", size = 220261, upload-time = "2025-11-18T13:33:06.493Z" },
+ { url = "https://files.pythonhosted.org/packages/91/77/dd4aff9af16ff776bf355a24d87eeb48fc6acde54c907cc1ea89b14a8804/coverage-7.12.0-cp313-cp313-win_amd64.whl", hash = "sha256:ce61969812d6a98a981d147d9ac583a36ac7db7766f2e64a9d4d059c2fe29d07", size = 221072, upload-time = "2025-11-18T13:33:07.926Z" },
+ { url = "https://files.pythonhosted.org/packages/70/49/5c9dc46205fef31b1b226a6e16513193715290584317fd4df91cdaf28b22/coverage-7.12.0-cp313-cp313-win_arm64.whl", hash = "sha256:bcec6f47e4cb8a4c2dc91ce507f6eefc6a1b10f58df32cdc61dff65455031dfc", size = 219702, upload-time = "2025-11-18T13:33:09.631Z" },
+ { url = "https://files.pythonhosted.org/packages/9b/62/f87922641c7198667994dd472a91e1d9b829c95d6c29529ceb52132436ad/coverage-7.12.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:459443346509476170d553035e4a3eed7b860f4fe5242f02de1010501956ce87", size = 218420, upload-time = "2025-11-18T13:33:11.153Z" },
+ { url = "https://files.pythonhosted.org/packages/85/dd/1cc13b2395ef15dbb27d7370a2509b4aee77890a464fb35d72d428f84871/coverage-7.12.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:04a79245ab2b7a61688958f7a855275997134bc84f4a03bc240cf64ff132abf6", size = 218773, upload-time = "2025-11-18T13:33:12.569Z" },
+ { url = "https://files.pythonhosted.org/packages/74/40/35773cc4bb1e9d4658d4fb669eb4195b3151bef3bbd6f866aba5cd5dac82/coverage-7.12.0-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:09a86acaaa8455f13d6a99221d9654df249b33937b4e212b4e5a822065f12aa7", size = 260078, upload-time = "2025-11-18T13:33:14.037Z" },
+ { url = "https://files.pythonhosted.org/packages/ec/ee/231bb1a6ffc2905e396557585ebc6bdc559e7c66708376d245a1f1d330fc/coverage-7.12.0-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:907e0df1b71ba77463687a74149c6122c3f6aac56c2510a5d906b2f368208560", size = 262144, upload-time = "2025-11-18T13:33:15.601Z" },
+ { url = "https://files.pythonhosted.org/packages/28/be/32f4aa9f3bf0b56f3971001b56508352c7753915345d45fab4296a986f01/coverage-7.12.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9b57e2d0ddd5f0582bae5437c04ee71c46cd908e7bc5d4d0391f9a41e812dd12", size = 264574, upload-time = "2025-11-18T13:33:17.354Z" },
+ { url = "https://files.pythonhosted.org/packages/68/7c/00489fcbc2245d13ab12189b977e0cf06ff3351cb98bc6beba8bd68c5902/coverage-7.12.0-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:58c1c6aa677f3a1411fe6fb28ec3a942e4f665df036a3608816e0847fad23296", size = 259298, upload-time = "2025-11-18T13:33:18.958Z" },
+ { url = "https://files.pythonhosted.org/packages/96/b4/f0760d65d56c3bea95b449e02570d4abd2549dc784bf39a2d4721a2d8ceb/coverage-7.12.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4c589361263ab2953e3c4cd2a94db94c4ad4a8e572776ecfbad2389c626e4507", size = 262150, upload-time = "2025-11-18T13:33:20.644Z" },
+ { url = "https://files.pythonhosted.org/packages/c5/71/9a9314df00f9326d78c1e5a910f520d599205907432d90d1c1b7a97aa4b1/coverage-7.12.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:91b810a163ccad2e43b1faa11d70d3cf4b6f3d83f9fd5f2df82a32d47b648e0d", size = 259763, upload-time = "2025-11-18T13:33:22.189Z" },
+ { url = "https://files.pythonhosted.org/packages/10/34/01a0aceed13fbdf925876b9a15d50862eb8845454301fe3cdd1df08b2182/coverage-7.12.0-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:40c867af715f22592e0d0fb533a33a71ec9e0f73a6945f722a0c85c8c1cbe3a2", size = 258653, upload-time = "2025-11-18T13:33:24.239Z" },
+ { url = "https://files.pythonhosted.org/packages/8d/04/81d8fd64928acf1574bbb0181f66901c6c1c6279c8ccf5f84259d2c68ae9/coverage-7.12.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:68b0d0a2d84f333de875666259dadf28cc67858bc8fd8b3f1eae84d3c2bec455", size = 260856, upload-time = "2025-11-18T13:33:26.365Z" },
+ { url = "https://files.pythonhosted.org/packages/f2/76/fa2a37bfaeaf1f766a2d2360a25a5297d4fb567098112f6517475eee120b/coverage-7.12.0-cp313-cp313t-win32.whl", hash = "sha256:73f9e7fbd51a221818fd11b7090eaa835a353ddd59c236c57b2199486b116c6d", size = 220936, upload-time = "2025-11-18T13:33:28.165Z" },
+ { url = "https://files.pythonhosted.org/packages/f9/52/60f64d932d555102611c366afb0eb434b34266b1d9266fc2fe18ab641c47/coverage-7.12.0-cp313-cp313t-win_amd64.whl", hash = "sha256:24cff9d1f5743f67db7ba46ff284018a6e9aeb649b67aa1e70c396aa1b7cb23c", size = 222001, upload-time = "2025-11-18T13:33:29.656Z" },
+ { url = "https://files.pythonhosted.org/packages/77/df/c303164154a5a3aea7472bf323b7c857fed93b26618ed9fc5c2955566bb0/coverage-7.12.0-cp313-cp313t-win_arm64.whl", hash = "sha256:c87395744f5c77c866d0f5a43d97cc39e17c7f1cb0115e54a2fe67ca75c5d14d", size = 220273, upload-time = "2025-11-18T13:33:31.415Z" },
+ { url = "https://files.pythonhosted.org/packages/bf/2e/fc12db0883478d6e12bbd62d481210f0c8daf036102aa11434a0c5755825/coverage-7.12.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:a1c59b7dc169809a88b21a936eccf71c3895a78f5592051b1af8f4d59c2b4f92", size = 217777, upload-time = "2025-11-18T13:33:32.86Z" },
+ { url = "https://files.pythonhosted.org/packages/1f/c1/ce3e525d223350c6ec16b9be8a057623f54226ef7f4c2fee361ebb6a02b8/coverage-7.12.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8787b0f982e020adb732b9f051f3e49dd5054cebbc3f3432061278512a2b1360", size = 218100, upload-time = "2025-11-18T13:33:34.532Z" },
+ { url = "https://files.pythonhosted.org/packages/15/87/113757441504aee3808cb422990ed7c8bcc2d53a6779c66c5adef0942939/coverage-7.12.0-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:5ea5a9f7dc8877455b13dd1effd3202e0bca72f6f3ab09f9036b1bcf728f69ac", size = 249151, upload-time = "2025-11-18T13:33:36.135Z" },
+ { url = "https://files.pythonhosted.org/packages/d9/1d/9529d9bd44049b6b05bb319c03a3a7e4b0a8a802d28fa348ad407e10706d/coverage-7.12.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:fdba9f15849534594f60b47c9a30bc70409b54947319a7c4fd0e8e3d8d2f355d", size = 251667, upload-time = "2025-11-18T13:33:37.996Z" },
+ { url = "https://files.pythonhosted.org/packages/11/bb/567e751c41e9c03dc29d3ce74b8c89a1e3396313e34f255a2a2e8b9ebb56/coverage-7.12.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a00594770eb715854fb1c57e0dea08cce6720cfbc531accdb9850d7c7770396c", size = 253003, upload-time = "2025-11-18T13:33:39.553Z" },
+ { url = "https://files.pythonhosted.org/packages/e4/b3/c2cce2d8526a02fb9e9ca14a263ca6fc074449b33a6afa4892838c903528/coverage-7.12.0-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:5560c7e0d82b42eb1951e4f68f071f8017c824ebfd5a6ebe42c60ac16c6c2434", size = 249185, upload-time = "2025-11-18T13:33:42.086Z" },
+ { url = "https://files.pythonhosted.org/packages/0e/a7/967f93bb66e82c9113c66a8d0b65ecf72fc865adfba5a145f50c7af7e58d/coverage-7.12.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:d6c2e26b481c9159c2773a37947a9718cfdc58893029cdfb177531793e375cfc", size = 251025, upload-time = "2025-11-18T13:33:43.634Z" },
+ { url = "https://files.pythonhosted.org/packages/b9/b2/f2f6f56337bc1af465d5b2dc1ee7ee2141b8b9272f3bf6213fcbc309a836/coverage-7.12.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:6e1a8c066dabcde56d5d9fed6a66bc19a2883a3fe051f0c397a41fc42aedd4cc", size = 248979, upload-time = "2025-11-18T13:33:46.04Z" },
+ { url = "https://files.pythonhosted.org/packages/f4/7a/bf4209f45a4aec09d10a01a57313a46c0e0e8f4c55ff2965467d41a92036/coverage-7.12.0-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:f7ba9da4726e446d8dd8aae5a6cd872511184a5d861de80a86ef970b5dacce3e", size = 248800, upload-time = "2025-11-18T13:33:47.546Z" },
+ { url = "https://files.pythonhosted.org/packages/b8/b7/1e01b8696fb0521810f60c5bbebf699100d6754183e6cc0679bf2ed76531/coverage-7.12.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e0f483ab4f749039894abaf80c2f9e7ed77bbf3c737517fb88c8e8e305896a17", size = 250460, upload-time = "2025-11-18T13:33:49.537Z" },
+ { url = "https://files.pythonhosted.org/packages/71/ae/84324fb9cb46c024760e706353d9b771a81b398d117d8c1fe010391c186f/coverage-7.12.0-cp314-cp314-win32.whl", hash = "sha256:76336c19a9ef4a94b2f8dc79f8ac2da3f193f625bb5d6f51a328cd19bfc19933", size = 220533, upload-time = "2025-11-18T13:33:51.16Z" },
+ { url = "https://files.pythonhosted.org/packages/e2/71/1033629deb8460a8f97f83e6ac4ca3b93952e2b6f826056684df8275e015/coverage-7.12.0-cp314-cp314-win_amd64.whl", hash = "sha256:7c1059b600aec6ef090721f8f633f60ed70afaffe8ecab85b59df748f24b31fe", size = 221348, upload-time = "2025-11-18T13:33:52.776Z" },
+ { url = "https://files.pythonhosted.org/packages/0a/5f/ac8107a902f623b0c251abdb749be282dc2ab61854a8a4fcf49e276fce2f/coverage-7.12.0-cp314-cp314-win_arm64.whl", hash = "sha256:172cf3a34bfef42611963e2b661302a8931f44df31629e5b1050567d6b90287d", size = 219922, upload-time = "2025-11-18T13:33:54.316Z" },
+ { url = "https://files.pythonhosted.org/packages/79/6e/f27af2d4da367f16077d21ef6fe796c874408219fa6dd3f3efe7751bd910/coverage-7.12.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:aa7d48520a32cb21c7a9b31f81799e8eaec7239db36c3b670be0fa2403828d1d", size = 218511, upload-time = "2025-11-18T13:33:56.343Z" },
+ { url = "https://files.pythonhosted.org/packages/67/dd/65fd874aa460c30da78f9d259400d8e6a4ef457d61ab052fd248f0050558/coverage-7.12.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:90d58ac63bc85e0fb919f14d09d6caa63f35a5512a2205284b7816cafd21bb03", size = 218771, upload-time = "2025-11-18T13:33:57.966Z" },
+ { url = "https://files.pythonhosted.org/packages/55/e0/7c6b71d327d8068cb79c05f8f45bf1b6145f7a0de23bbebe63578fe5240a/coverage-7.12.0-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ca8ecfa283764fdda3eae1bdb6afe58bf78c2c3ec2b2edcb05a671f0bba7b3f9", size = 260151, upload-time = "2025-11-18T13:33:59.597Z" },
+ { url = "https://files.pythonhosted.org/packages/49/ce/4697457d58285b7200de6b46d606ea71066c6e674571a946a6ea908fb588/coverage-7.12.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:874fe69a0785d96bd066059cd4368022cebbec1a8958f224f0016979183916e6", size = 262257, upload-time = "2025-11-18T13:34:01.166Z" },
+ { url = "https://files.pythonhosted.org/packages/2f/33/acbc6e447aee4ceba88c15528dbe04a35fb4d67b59d393d2e0d6f1e242c1/coverage-7.12.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5b3c889c0b8b283a24d721a9eabc8ccafcfc3aebf167e4cd0d0e23bf8ec4e339", size = 264671, upload-time = "2025-11-18T13:34:02.795Z" },
+ { url = "https://files.pythonhosted.org/packages/87/ec/e2822a795c1ed44d569980097be839c5e734d4c0c1119ef8e0a073496a30/coverage-7.12.0-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8bb5b894b3ec09dcd6d3743229dc7f2c42ef7787dc40596ae04c0edda487371e", size = 259231, upload-time = "2025-11-18T13:34:04.397Z" },
+ { url = "https://files.pythonhosted.org/packages/72/c5/a7ec5395bb4a49c9b7ad97e63f0c92f6bf4a9e006b1393555a02dae75f16/coverage-7.12.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:79a44421cd5fba96aa57b5e3b5a4d3274c449d4c622e8f76882d76635501fd13", size = 262137, upload-time = "2025-11-18T13:34:06.068Z" },
+ { url = "https://files.pythonhosted.org/packages/67/0c/02c08858b764129f4ecb8e316684272972e60777ae986f3865b10940bdd6/coverage-7.12.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:33baadc0efd5c7294f436a632566ccc1f72c867f82833eb59820ee37dc811c6f", size = 259745, upload-time = "2025-11-18T13:34:08.04Z" },
+ { url = "https://files.pythonhosted.org/packages/5a/04/4fd32b7084505f3829a8fe45c1a74a7a728cb251aaadbe3bec04abcef06d/coverage-7.12.0-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:c406a71f544800ef7e9e0000af706b88465f3573ae8b8de37e5f96c59f689ad1", size = 258570, upload-time = "2025-11-18T13:34:09.676Z" },
+ { url = "https://files.pythonhosted.org/packages/48/35/2365e37c90df4f5342c4fa202223744119fe31264ee2924f09f074ea9b6d/coverage-7.12.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:e71bba6a40883b00c6d571599b4627f50c360b3d0d02bfc658168936be74027b", size = 260899, upload-time = "2025-11-18T13:34:11.259Z" },
+ { url = "https://files.pythonhosted.org/packages/05/56/26ab0464ca733fa325e8e71455c58c1c374ce30f7c04cebb88eabb037b18/coverage-7.12.0-cp314-cp314t-win32.whl", hash = "sha256:9157a5e233c40ce6613dead4c131a006adfda70e557b6856b97aceed01b0e27a", size = 221313, upload-time = "2025-11-18T13:34:12.863Z" },
+ { url = "https://files.pythonhosted.org/packages/da/1c/017a3e1113ed34d998b27d2c6dba08a9e7cb97d362f0ec988fcd873dcf81/coverage-7.12.0-cp314-cp314t-win_amd64.whl", hash = "sha256:e84da3a0fd233aeec797b981c51af1cabac74f9bd67be42458365b30d11b5291", size = 222423, upload-time = "2025-11-18T13:34:15.14Z" },
+ { url = "https://files.pythonhosted.org/packages/4c/36/bcc504fdd5169301b52568802bb1b9cdde2e27a01d39fbb3b4b508ab7c2c/coverage-7.12.0-cp314-cp314t-win_arm64.whl", hash = "sha256:01d24af36fedda51c2b1aca56e4330a3710f83b02a5ff3743a6b015ffa7c9384", size = 220459, upload-time = "2025-11-18T13:34:17.222Z" },
+ { url = "https://files.pythonhosted.org/packages/ce/a3/43b749004e3c09452e39bb56347a008f0a0668aad37324a99b5c8ca91d9e/coverage-7.12.0-py3-none-any.whl", hash = "sha256:159d50c0b12e060b15ed3d39f87ed43d4f7f7ad40b8a534f4dd331adbb51104a", size = 209503, upload-time = "2025-11-18T13:34:18.892Z" },
]
[[package]]
name = "cryptography"
-version = "45.0.6"
+version = "46.0.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "cffi", marker = "platform_python_implementation != 'PyPy'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/d6/0d/d13399c94234ee8f3df384819dc67e0c5ce215fb751d567a55a1f4b028c7/cryptography-45.0.6.tar.gz", hash = "sha256:5c966c732cf6e4a276ce83b6e4c729edda2df6929083a952cc7da973c539c719", size = 744949, upload-time = "2025-08-05T23:59:27.93Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/8c/29/2793d178d0eda1ca4a09a7c4e09a5185e75738cc6d526433e8663b460ea6/cryptography-45.0.6-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:048e7ad9e08cf4c0ab07ff7f36cc3115924e22e2266e034450a890d9e312dd74", size = 7042702, upload-time = "2025-08-05T23:58:23.464Z" },
- { url = "https://files.pythonhosted.org/packages/b3/b6/cabd07410f222f32c8d55486c464f432808abaa1f12af9afcbe8f2f19030/cryptography-45.0.6-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:44647c5d796f5fc042bbc6d61307d04bf29bccb74d188f18051b635f20a9c75f", size = 4206483, upload-time = "2025-08-05T23:58:27.132Z" },
- { url = "https://files.pythonhosted.org/packages/8b/9e/f9c7d36a38b1cfeb1cc74849aabe9bf817990f7603ff6eb485e0d70e0b27/cryptography-45.0.6-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e40b80ecf35ec265c452eea0ba94c9587ca763e739b8e559c128d23bff7ebbbf", size = 4429679, upload-time = "2025-08-05T23:58:29.152Z" },
- { url = "https://files.pythonhosted.org/packages/9c/2a/4434c17eb32ef30b254b9e8b9830cee4e516f08b47fdd291c5b1255b8101/cryptography-45.0.6-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:00e8724bdad672d75e6f069b27970883179bd472cd24a63f6e620ca7e41cc0c5", size = 4210553, upload-time = "2025-08-05T23:58:30.596Z" },
- { url = "https://files.pythonhosted.org/packages/ef/1d/09a5df8e0c4b7970f5d1f3aff1b640df6d4be28a64cae970d56c6cf1c772/cryptography-45.0.6-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7a3085d1b319d35296176af31c90338eeb2ddac8104661df79f80e1d9787b8b2", size = 3894499, upload-time = "2025-08-05T23:58:32.03Z" },
- { url = "https://files.pythonhosted.org/packages/79/62/120842ab20d9150a9d3a6bdc07fe2870384e82f5266d41c53b08a3a96b34/cryptography-45.0.6-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1b7fa6a1c1188c7ee32e47590d16a5a0646270921f8020efc9a511648e1b2e08", size = 4458484, upload-time = "2025-08-05T23:58:33.526Z" },
- { url = "https://files.pythonhosted.org/packages/fd/80/1bc3634d45ddfed0871bfba52cf8f1ad724761662a0c792b97a951fb1b30/cryptography-45.0.6-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:275ba5cc0d9e320cd70f8e7b96d9e59903c815ca579ab96c1e37278d231fc402", size = 4210281, upload-time = "2025-08-05T23:58:35.445Z" },
- { url = "https://files.pythonhosted.org/packages/7d/fe/ffb12c2d83d0ee625f124880a1f023b5878f79da92e64c37962bbbe35f3f/cryptography-45.0.6-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:f4028f29a9f38a2025abedb2e409973709c660d44319c61762202206ed577c42", size = 4456890, upload-time = "2025-08-05T23:58:36.923Z" },
- { url = "https://files.pythonhosted.org/packages/8c/8e/b3f3fe0dc82c77a0deb5f493b23311e09193f2268b77196ec0f7a36e3f3e/cryptography-45.0.6-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ee411a1b977f40bd075392c80c10b58025ee5c6b47a822a33c1198598a7a5f05", size = 4333247, upload-time = "2025-08-05T23:58:38.781Z" },
- { url = "https://files.pythonhosted.org/packages/b3/a6/c3ef2ab9e334da27a1d7b56af4a2417d77e7806b2e0f90d6267ce120d2e4/cryptography-45.0.6-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e2a21a8eda2d86bb604934b6b37691585bd095c1f788530c1fcefc53a82b3453", size = 4565045, upload-time = "2025-08-05T23:58:40.415Z" },
- { url = "https://files.pythonhosted.org/packages/31/c3/77722446b13fa71dddd820a5faab4ce6db49e7e0bf8312ef4192a3f78e2f/cryptography-45.0.6-cp311-abi3-win32.whl", hash = "sha256:d063341378d7ee9c91f9d23b431a3502fc8bfacd54ef0a27baa72a0843b29159", size = 2928923, upload-time = "2025-08-05T23:58:41.919Z" },
- { url = "https://files.pythonhosted.org/packages/38/63/a025c3225188a811b82932a4dcc8457a26c3729d81578ccecbcce2cb784e/cryptography-45.0.6-cp311-abi3-win_amd64.whl", hash = "sha256:833dc32dfc1e39b7376a87b9a6a4288a10aae234631268486558920029b086ec", size = 3403805, upload-time = "2025-08-05T23:58:43.792Z" },
- { url = "https://files.pythonhosted.org/packages/5b/af/bcfbea93a30809f126d51c074ee0fac5bd9d57d068edf56c2a73abedbea4/cryptography-45.0.6-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:3436128a60a5e5490603ab2adbabc8763613f638513ffa7d311c900a8349a2a0", size = 7020111, upload-time = "2025-08-05T23:58:45.316Z" },
- { url = "https://files.pythonhosted.org/packages/98/c6/ea5173689e014f1a8470899cd5beeb358e22bb3cf5a876060f9d1ca78af4/cryptography-45.0.6-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0d9ef57b6768d9fa58e92f4947cea96ade1233c0e236db22ba44748ffedca394", size = 4198169, upload-time = "2025-08-05T23:58:47.121Z" },
- { url = "https://files.pythonhosted.org/packages/ba/73/b12995edc0c7e2311ffb57ebd3b351f6b268fed37d93bfc6f9856e01c473/cryptography-45.0.6-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea3c42f2016a5bbf71825537c2ad753f2870191134933196bee408aac397b3d9", size = 4421273, upload-time = "2025-08-05T23:58:48.557Z" },
- { url = "https://files.pythonhosted.org/packages/f7/6e/286894f6f71926bc0da67408c853dd9ba953f662dcb70993a59fd499f111/cryptography-45.0.6-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:20ae4906a13716139d6d762ceb3e0e7e110f7955f3bc3876e3a07f5daadec5f3", size = 4199211, upload-time = "2025-08-05T23:58:50.139Z" },
- { url = "https://files.pythonhosted.org/packages/de/34/a7f55e39b9623c5cb571d77a6a90387fe557908ffc44f6872f26ca8ae270/cryptography-45.0.6-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2dac5ec199038b8e131365e2324c03d20e97fe214af051d20c49db129844e8b3", size = 3883732, upload-time = "2025-08-05T23:58:52.253Z" },
- { url = "https://files.pythonhosted.org/packages/f9/b9/c6d32edbcba0cd9f5df90f29ed46a65c4631c4fbe11187feb9169c6ff506/cryptography-45.0.6-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:18f878a34b90d688982e43f4b700408b478102dd58b3e39de21b5ebf6509c301", size = 4450655, upload-time = "2025-08-05T23:58:53.848Z" },
- { url = "https://files.pythonhosted.org/packages/77/2d/09b097adfdee0227cfd4c699b3375a842080f065bab9014248933497c3f9/cryptography-45.0.6-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:5bd6020c80c5b2b2242d6c48487d7b85700f5e0038e67b29d706f98440d66eb5", size = 4198956, upload-time = "2025-08-05T23:58:55.209Z" },
- { url = "https://files.pythonhosted.org/packages/55/66/061ec6689207d54effdff535bbdf85cc380d32dd5377173085812565cf38/cryptography-45.0.6-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:eccddbd986e43014263eda489abbddfbc287af5cddfd690477993dbb31e31016", size = 4449859, upload-time = "2025-08-05T23:58:56.639Z" },
- { url = "https://files.pythonhosted.org/packages/41/ff/e7d5a2ad2d035e5a2af116e1a3adb4d8fcd0be92a18032917a089c6e5028/cryptography-45.0.6-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:550ae02148206beb722cfe4ef0933f9352bab26b087af00e48fdfb9ade35c5b3", size = 4320254, upload-time = "2025-08-05T23:58:58.833Z" },
- { url = "https://files.pythonhosted.org/packages/82/27/092d311af22095d288f4db89fcaebadfb2f28944f3d790a4cf51fe5ddaeb/cryptography-45.0.6-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5b64e668fc3528e77efa51ca70fadcd6610e8ab231e3e06ae2bab3b31c2b8ed9", size = 4554815, upload-time = "2025-08-05T23:59:00.283Z" },
- { url = "https://files.pythonhosted.org/packages/7e/01/aa2f4940262d588a8fdf4edabe4cda45854d00ebc6eaac12568b3a491a16/cryptography-45.0.6-cp37-abi3-win32.whl", hash = "sha256:780c40fb751c7d2b0c6786ceee6b6f871e86e8718a8ff4bc35073ac353c7cd02", size = 2912147, upload-time = "2025-08-05T23:59:01.716Z" },
- { url = "https://files.pythonhosted.org/packages/0a/bc/16e0276078c2de3ceef6b5a34b965f4436215efac45313df90d55f0ba2d2/cryptography-45.0.6-cp37-abi3-win_amd64.whl", hash = "sha256:20d15aed3ee522faac1a39fbfdfee25d17b1284bafd808e1640a74846d7c4d1b", size = 3390459, upload-time = "2025-08-05T23:59:03.358Z" },
+sdist = { url = "https://files.pythonhosted.org/packages/9f/33/c00162f49c0e2fe8064a62cb92b93e50c74a72bc370ab92f86112b33ff62/cryptography-46.0.3.tar.gz", hash = "sha256:a8b17438104fed022ce745b362294d9ce35b4c2e45c1d958ad4a4b019285f4a1", size = 749258, upload-time = "2025-10-15T23:18:31.74Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/1d/42/9c391dd801d6cf0d561b5890549d4b27bafcc53b39c31a817e69d87c625b/cryptography-46.0.3-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:109d4ddfadf17e8e7779c39f9b18111a09efb969a301a31e987416a0191ed93a", size = 7225004, upload-time = "2025-10-15T23:16:52.239Z" },
+ { url = "https://files.pythonhosted.org/packages/1c/67/38769ca6b65f07461eb200e85fc1639b438bdc667be02cf7f2cd6a64601c/cryptography-46.0.3-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:09859af8466b69bc3c27bdf4f5d84a665e0f7ab5088412e9e2ec49758eca5cbc", size = 4296667, upload-time = "2025-10-15T23:16:54.369Z" },
+ { url = "https://files.pythonhosted.org/packages/5c/49/498c86566a1d80e978b42f0d702795f69887005548c041636df6ae1ca64c/cryptography-46.0.3-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:01ca9ff2885f3acc98c29f1860552e37f6d7c7d013d7334ff2a9de43a449315d", size = 4450807, upload-time = "2025-10-15T23:16:56.414Z" },
+ { url = "https://files.pythonhosted.org/packages/4b/0a/863a3604112174c8624a2ac3c038662d9e59970c7f926acdcfaed8d61142/cryptography-46.0.3-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6eae65d4c3d33da080cff9c4ab1f711b15c1d9760809dad6ea763f3812d254cb", size = 4299615, upload-time = "2025-10-15T23:16:58.442Z" },
+ { url = "https://files.pythonhosted.org/packages/64/02/b73a533f6b64a69f3cd3872acb6ebc12aef924d8d103133bb3ea750dc703/cryptography-46.0.3-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e5bf0ed4490068a2e72ac03d786693adeb909981cc596425d09032d372bcc849", size = 4016800, upload-time = "2025-10-15T23:17:00.378Z" },
+ { url = "https://files.pythonhosted.org/packages/25/d5/16e41afbfa450cde85a3b7ec599bebefaef16b5c6ba4ec49a3532336ed72/cryptography-46.0.3-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:5ecfccd2329e37e9b7112a888e76d9feca2347f12f37918facbb893d7bb88ee8", size = 4984707, upload-time = "2025-10-15T23:17:01.98Z" },
+ { url = "https://files.pythonhosted.org/packages/c9/56/e7e69b427c3878352c2fb9b450bd0e19ed552753491d39d7d0a2f5226d41/cryptography-46.0.3-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:a2c0cd47381a3229c403062f764160d57d4d175e022c1df84e168c6251a22eec", size = 4482541, upload-time = "2025-10-15T23:17:04.078Z" },
+ { url = "https://files.pythonhosted.org/packages/78/f6/50736d40d97e8483172f1bb6e698895b92a223dba513b0ca6f06b2365339/cryptography-46.0.3-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:549e234ff32571b1f4076ac269fcce7a808d3bf98b76c8dd560e42dbc66d7d91", size = 4299464, upload-time = "2025-10-15T23:17:05.483Z" },
+ { url = "https://files.pythonhosted.org/packages/00/de/d8e26b1a855f19d9994a19c702fa2e93b0456beccbcfe437eda00e0701f2/cryptography-46.0.3-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:c0a7bb1a68a5d3471880e264621346c48665b3bf1c3759d682fc0864c540bd9e", size = 4950838, upload-time = "2025-10-15T23:17:07.425Z" },
+ { url = "https://files.pythonhosted.org/packages/8f/29/798fc4ec461a1c9e9f735f2fc58741b0daae30688f41b2497dcbc9ed1355/cryptography-46.0.3-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:10b01676fc208c3e6feeb25a8b83d81767e8059e1fe86e1dc62d10a3018fa926", size = 4481596, upload-time = "2025-10-15T23:17:09.343Z" },
+ { url = "https://files.pythonhosted.org/packages/15/8d/03cd48b20a573adfff7652b76271078e3045b9f49387920e7f1f631d125e/cryptography-46.0.3-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0abf1ffd6e57c67e92af68330d05760b7b7efb243aab8377e583284dbab72c71", size = 4426782, upload-time = "2025-10-15T23:17:11.22Z" },
+ { url = "https://files.pythonhosted.org/packages/fa/b1/ebacbfe53317d55cf33165bda24c86523497a6881f339f9aae5c2e13e57b/cryptography-46.0.3-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:a04bee9ab6a4da801eb9b51f1b708a1b5b5c9eb48c03f74198464c66f0d344ac", size = 4698381, upload-time = "2025-10-15T23:17:12.829Z" },
+ { url = "https://files.pythonhosted.org/packages/96/92/8a6a9525893325fc057a01f654d7efc2c64b9de90413adcf605a85744ff4/cryptography-46.0.3-cp311-abi3-win32.whl", hash = "sha256:f260d0d41e9b4da1ed1e0f1ce571f97fe370b152ab18778e9e8f67d6af432018", size = 3055988, upload-time = "2025-10-15T23:17:14.65Z" },
+ { url = "https://files.pythonhosted.org/packages/7e/bf/80fbf45253ea585a1e492a6a17efcb93467701fa79e71550a430c5e60df0/cryptography-46.0.3-cp311-abi3-win_amd64.whl", hash = "sha256:a9a3008438615669153eb86b26b61e09993921ebdd75385ddd748702c5adfddb", size = 3514451, upload-time = "2025-10-15T23:17:16.142Z" },
+ { url = "https://files.pythonhosted.org/packages/2e/af/9b302da4c87b0beb9db4e756386a7c6c5b8003cd0e742277888d352ae91d/cryptography-46.0.3-cp311-abi3-win_arm64.whl", hash = "sha256:5d7f93296ee28f68447397bf5198428c9aeeab45705a55d53a6343455dcb2c3c", size = 2928007, upload-time = "2025-10-15T23:17:18.04Z" },
+ { url = "https://files.pythonhosted.org/packages/f5/e2/a510aa736755bffa9d2f75029c229111a1d02f8ecd5de03078f4c18d91a3/cryptography-46.0.3-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:00a5e7e87938e5ff9ff5447ab086a5706a957137e6e433841e9d24f38a065217", size = 7158012, upload-time = "2025-10-15T23:17:19.982Z" },
+ { url = "https://files.pythonhosted.org/packages/73/dc/9aa866fbdbb95b02e7f9d086f1fccfeebf8953509b87e3f28fff927ff8a0/cryptography-46.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c8daeb2d2174beb4575b77482320303f3d39b8e81153da4f0fb08eb5fe86a6c5", size = 4288728, upload-time = "2025-10-15T23:17:21.527Z" },
+ { url = "https://files.pythonhosted.org/packages/c5/fd/bc1daf8230eaa075184cbbf5f8cd00ba9db4fd32d63fb83da4671b72ed8a/cryptography-46.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:39b6755623145ad5eff1dab323f4eae2a32a77a7abef2c5089a04a3d04366715", size = 4435078, upload-time = "2025-10-15T23:17:23.042Z" },
+ { url = "https://files.pythonhosted.org/packages/82/98/d3bd5407ce4c60017f8ff9e63ffee4200ab3e23fe05b765cab805a7db008/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:db391fa7c66df6762ee3f00c95a89e6d428f4d60e7abc8328f4fe155b5ac6e54", size = 4293460, upload-time = "2025-10-15T23:17:24.885Z" },
+ { url = "https://files.pythonhosted.org/packages/26/e9/e23e7900983c2b8af7a08098db406cf989d7f09caea7897e347598d4cd5b/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:78a97cf6a8839a48c49271cdcbd5cf37ca2c1d6b7fdd86cc864f302b5e9bf459", size = 3995237, upload-time = "2025-10-15T23:17:26.449Z" },
+ { url = "https://files.pythonhosted.org/packages/91/15/af68c509d4a138cfe299d0d7ddb14afba15233223ebd933b4bbdbc7155d3/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:dfb781ff7eaa91a6f7fd41776ec37c5853c795d3b358d4896fdbb5df168af422", size = 4967344, upload-time = "2025-10-15T23:17:28.06Z" },
+ { url = "https://files.pythonhosted.org/packages/ca/e3/8643d077c53868b681af077edf6b3cb58288b5423610f21c62aadcbe99f4/cryptography-46.0.3-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:6f61efb26e76c45c4a227835ddeae96d83624fb0d29eb5df5b96e14ed1a0afb7", size = 4466564, upload-time = "2025-10-15T23:17:29.665Z" },
+ { url = "https://files.pythonhosted.org/packages/0e/43/c1e8726fa59c236ff477ff2b5dc071e54b21e5a1e51aa2cee1676f1c986f/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:23b1a8f26e43f47ceb6d6a43115f33a5a37d57df4ea0ca295b780ae8546e8044", size = 4292415, upload-time = "2025-10-15T23:17:31.686Z" },
+ { url = "https://files.pythonhosted.org/packages/42/f9/2f8fefdb1aee8a8e3256a0568cffc4e6d517b256a2fe97a029b3f1b9fe7e/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:b419ae593c86b87014b9be7396b385491ad7f320bde96826d0dd174459e54665", size = 4931457, upload-time = "2025-10-15T23:17:33.478Z" },
+ { url = "https://files.pythonhosted.org/packages/79/30/9b54127a9a778ccd6d27c3da7563e9f2d341826075ceab89ae3b41bf5be2/cryptography-46.0.3-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:50fc3343ac490c6b08c0cf0d704e881d0d660be923fd3076db3e932007e726e3", size = 4466074, upload-time = "2025-10-15T23:17:35.158Z" },
+ { url = "https://files.pythonhosted.org/packages/ac/68/b4f4a10928e26c941b1b6a179143af9f4d27d88fe84a6a3c53592d2e76bf/cryptography-46.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:22d7e97932f511d6b0b04f2bfd818d73dcd5928db509460aaf48384778eb6d20", size = 4420569, upload-time = "2025-10-15T23:17:37.188Z" },
+ { url = "https://files.pythonhosted.org/packages/a3/49/3746dab4c0d1979888f125226357d3262a6dd40e114ac29e3d2abdf1ec55/cryptography-46.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:d55f3dffadd674514ad19451161118fd010988540cee43d8bc20675e775925de", size = 4681941, upload-time = "2025-10-15T23:17:39.236Z" },
+ { url = "https://files.pythonhosted.org/packages/fd/30/27654c1dbaf7e4a3531fa1fc77986d04aefa4d6d78259a62c9dc13d7ad36/cryptography-46.0.3-cp314-cp314t-win32.whl", hash = "sha256:8a6e050cb6164d3f830453754094c086ff2d0b2f3a897a1d9820f6139a1f0914", size = 3022339, upload-time = "2025-10-15T23:17:40.888Z" },
+ { url = "https://files.pythonhosted.org/packages/f6/30/640f34ccd4d2a1bc88367b54b926b781b5a018d65f404d409aba76a84b1c/cryptography-46.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:760f83faa07f8b64e9c33fc963d790a2edb24efb479e3520c14a45741cd9b2db", size = 3494315, upload-time = "2025-10-15T23:17:42.769Z" },
+ { url = "https://files.pythonhosted.org/packages/ba/8b/88cc7e3bd0a8e7b861f26981f7b820e1f46aa9d26cc482d0feba0ecb4919/cryptography-46.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:516ea134e703e9fe26bcd1277a4b59ad30586ea90c365a87781d7887a646fe21", size = 2919331, upload-time = "2025-10-15T23:17:44.468Z" },
+ { url = "https://files.pythonhosted.org/packages/fd/23/45fe7f376a7df8daf6da3556603b36f53475a99ce4faacb6ba2cf3d82021/cryptography-46.0.3-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:cb3d760a6117f621261d662bccc8ef5bc32ca673e037c83fbe565324f5c46936", size = 7218248, upload-time = "2025-10-15T23:17:46.294Z" },
+ { url = "https://files.pythonhosted.org/packages/27/32/b68d27471372737054cbd34c84981f9edbc24fe67ca225d389799614e27f/cryptography-46.0.3-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4b7387121ac7d15e550f5cb4a43aef2559ed759c35df7336c402bb8275ac9683", size = 4294089, upload-time = "2025-10-15T23:17:48.269Z" },
+ { url = "https://files.pythonhosted.org/packages/26/42/fa8389d4478368743e24e61eea78846a0006caffaf72ea24a15159215a14/cryptography-46.0.3-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:15ab9b093e8f09daab0f2159bb7e47532596075139dd74365da52ecc9cb46c5d", size = 4440029, upload-time = "2025-10-15T23:17:49.837Z" },
+ { url = "https://files.pythonhosted.org/packages/5f/eb/f483db0ec5ac040824f269e93dd2bd8a21ecd1027e77ad7bdf6914f2fd80/cryptography-46.0.3-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:46acf53b40ea38f9c6c229599a4a13f0d46a6c3fa9ef19fc1a124d62e338dfa0", size = 4297222, upload-time = "2025-10-15T23:17:51.357Z" },
+ { url = "https://files.pythonhosted.org/packages/fd/cf/da9502c4e1912cb1da3807ea3618a6829bee8207456fbbeebc361ec38ba3/cryptography-46.0.3-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:10ca84c4668d066a9878890047f03546f3ae0a6b8b39b697457b7757aaf18dbc", size = 4012280, upload-time = "2025-10-15T23:17:52.964Z" },
+ { url = "https://files.pythonhosted.org/packages/6b/8f/9adb86b93330e0df8b3dcf03eae67c33ba89958fc2e03862ef1ac2b42465/cryptography-46.0.3-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:36e627112085bb3b81b19fed209c05ce2a52ee8b15d161b7c643a7d5a88491f3", size = 4978958, upload-time = "2025-10-15T23:17:54.965Z" },
+ { url = "https://files.pythonhosted.org/packages/d1/a0/5fa77988289c34bdb9f913f5606ecc9ada1adb5ae870bd0d1054a7021cc4/cryptography-46.0.3-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1000713389b75c449a6e979ffc7dcc8ac90b437048766cef052d4d30b8220971", size = 4473714, upload-time = "2025-10-15T23:17:56.754Z" },
+ { url = "https://files.pythonhosted.org/packages/14/e5/fc82d72a58d41c393697aa18c9abe5ae1214ff6f2a5c18ac470f92777895/cryptography-46.0.3-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:b02cf04496f6576afffef5ddd04a0cb7d49cf6be16a9059d793a30b035f6b6ac", size = 4296970, upload-time = "2025-10-15T23:17:58.588Z" },
+ { url = "https://files.pythonhosted.org/packages/78/06/5663ed35438d0b09056973994f1aec467492b33bd31da36e468b01ec1097/cryptography-46.0.3-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:71e842ec9bc7abf543b47cf86b9a743baa95f4677d22baa4c7d5c69e49e9bc04", size = 4940236, upload-time = "2025-10-15T23:18:00.897Z" },
+ { url = "https://files.pythonhosted.org/packages/fc/59/873633f3f2dcd8a053b8dd1d38f783043b5fce589c0f6988bf55ef57e43e/cryptography-46.0.3-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:402b58fc32614f00980b66d6e56a5b4118e6cb362ae8f3fda141ba4689bd4506", size = 4472642, upload-time = "2025-10-15T23:18:02.749Z" },
+ { url = "https://files.pythonhosted.org/packages/3d/39/8e71f3930e40f6877737d6f69248cf74d4e34b886a3967d32f919cc50d3b/cryptography-46.0.3-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ef639cb3372f69ec44915fafcd6698b6cc78fbe0c2ea41be867f6ed612811963", size = 4423126, upload-time = "2025-10-15T23:18:04.85Z" },
+ { url = "https://files.pythonhosted.org/packages/cd/c7/f65027c2810e14c3e7268353b1681932b87e5a48e65505d8cc17c99e36ae/cryptography-46.0.3-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b51b8ca4f1c6453d8829e1eb7299499ca7f313900dd4d89a24b8b87c0a780d4", size = 4686573, upload-time = "2025-10-15T23:18:06.908Z" },
+ { url = "https://files.pythonhosted.org/packages/0a/6e/1c8331ddf91ca4730ab3086a0f1be19c65510a33b5a441cb334e7a2d2560/cryptography-46.0.3-cp38-abi3-win32.whl", hash = "sha256:6276eb85ef938dc035d59b87c8a7dc559a232f954962520137529d77b18ff1df", size = 3036695, upload-time = "2025-10-15T23:18:08.672Z" },
+ { url = "https://files.pythonhosted.org/packages/90/45/b0d691df20633eff80955a0fc7695ff9051ffce8b69741444bd9ed7bd0db/cryptography-46.0.3-cp38-abi3-win_amd64.whl", hash = "sha256:416260257577718c05135c55958b674000baef9a1c7d9e8f306ec60d71db850f", size = 3501720, upload-time = "2025-10-15T23:18:10.632Z" },
+ { url = "https://files.pythonhosted.org/packages/e8/cb/2da4cc83f5edb9c3257d09e1e7ab7b23f049c7962cae8d842bbef0a9cec9/cryptography-46.0.3-cp38-abi3-win_arm64.whl", hash = "sha256:d89c3468de4cdc4f08a57e214384d0471911a3830fcdaf7a8cc587e42a866372", size = 2918740, upload-time = "2025-10-15T23:18:12.277Z" },
]
[[package]]
name = "cyclopts"
-version = "3.22.5"
+version = "4.3.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "attrs" },
- { name = "docstring-parser", marker = "python_full_version < '4'" },
+ { name = "docstring-parser" },
{ name = "rich" },
{ name = "rich-rst" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/a3/d5/24c6c894f3833bc93d4944c2064309dfd633c0becf93e16fc79d76edd388/cyclopts-3.22.5.tar.gz", hash = "sha256:fa2450b9840abc41c6aa37af5eaeafc7a1264e08054e3a2fe39d49aa154f592a", size = 74890, upload-time = "2025-07-31T18:18:37.336Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/1b/0f/fe026df2ab8301e30a2b0bd425ff1462ad858fd4f991c1ac0389c2059c24/cyclopts-4.3.0.tar.gz", hash = "sha256:e95179cd0a959ce250ecfb2f0262a5996a92c1f9467bccad2f3d829e6833cef5", size = 151411, upload-time = "2025-11-25T02:59:33.572Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/df/e5/a7b6db64f08cfe065e531ec6b508fa7dac704fab70d05adb5bc0c2c1d1b6/cyclopts-3.22.5-py3-none-any.whl", hash = "sha256:92efb4a094d9812718d7efe0bffa319a19cb661f230dbf24406c18cd8809fb82", size = 84994, upload-time = "2025-07-31T18:18:35.939Z" },
+ { url = "https://files.pythonhosted.org/packages/7a/e8/77a231ae531cf38765b75ddf27dae28bb5f70b41d8bb4f15ce1650e93f57/cyclopts-4.3.0-py3-none-any.whl", hash = "sha256:91a30b69faf128ada7cfeaefd7d9649dc222e8b2a8697f1fc99e4ee7b7ca44f3", size = 187184, upload-time = "2025-11-25T02:59:32.21Z" },
]
[[package]]
name = "datamodel-code-generator"
-version = "0.32.0"
+version = "0.40.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "argcomplete" },
@@ -266,18 +359,27 @@ dependencies = [
{ name = "pydantic" },
{ name = "pyyaml" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/3f/66/5ad66a2b5ff34ed67808570f7476261f6f1de3263d0764db9483384878b7/datamodel_code_generator-0.32.0.tar.gz", hash = "sha256:c6f84a6a7683ef9841940b0931aa1ee338b19950ba5b10c920f9c7ad6f5e5b72", size = 457172, upload-time = "2025-07-25T14:12:06.692Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/fe/dc/7991dd4b6c1b02f72307e8229864ce5eb8bc4d781e083010290e9d8e3210/datamodel_code_generator-0.40.0.tar.gz", hash = "sha256:e3be14bdc857a6f3ec8e3e2f3c6eeea57c2b2b135020c6613734b376ce5f7377", size = 456159, upload-time = "2025-12-03T19:54:31.249Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/3b/a8/04faa5bea6640525700a0f85c4e8f12bcc99ae775904977d2ccc72f0e824/datamodel_code_generator-0.40.0-py3-none-any.whl", hash = "sha256:93d44c665ad2ea445ffd6e59ac93d4d610c997e17b0271c47207acdf444aa929", size = 153945, upload-time = "2025-12-03T19:54:29.724Z" },
+]
+
+[[package]]
+name = "diskcache"
+version = "5.6.3"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/3f/21/1c1ffc1a039ddcc459db43cc108658f32c57d271d7289a2794e401d0fdb6/diskcache-5.6.3.tar.gz", hash = "sha256:2c3a3fa2743d8535d832ec61c2054a1641f41775aa7c556758a109941e33e4fc", size = 67916, upload-time = "2023-08-31T06:12:00.316Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/2e/0a/ef2472343f7b2ec7257a646a21c3c29605939c2ff526959dc6ea2ac4ad7a/datamodel_code_generator-0.32.0-py3-none-any.whl", hash = "sha256:48f3cabbb792398112ee756b23a319e17b001ee534896b324893a98ff10e0a55", size = 120051, upload-time = "2025-07-25T14:12:04.969Z" },
+ { url = "https://files.pythonhosted.org/packages/3f/27/4570e78fc0bf5ea0ca45eb1de3818a23787af9b390c0b0a0033a1b8236f9/diskcache-5.6.3-py3-none-any.whl", hash = "sha256:5e31b2d5fbad117cc363ebaf6b689474db18a1f6438bc82358b024abd4c2ca19", size = 45550, upload-time = "2023-08-31T06:11:58.822Z" },
]
[[package]]
name = "dnspython"
-version = "2.7.0"
+version = "2.8.0"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197, upload-time = "2024-10-05T20:14:59.362Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/8c/8b/57666417c0f90f08bcafa776861060426765fdb422eb10212086fb811d26/dnspython-2.8.0.tar.gz", hash = "sha256:181d3c6996452cb1189c4046c61599b84a5a86e099562ffde77d26984ff26d0f", size = 368251, upload-time = "2025-09-07T18:58:00.022Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632, upload-time = "2024-10-05T20:14:57.687Z" },
+ { url = "https://files.pythonhosted.org/packages/ba/5a/18ad964b0086c6e62e2e7500f7edc89e3faa45033c71c1893d34eed2b2de/dnspython-2.8.0-py3-none-any.whl", hash = "sha256:01d9bbc4a2d76bf0db7c1f729812ded6d912bd318d3b1cf81d30c0f845dbf3af", size = 331094, upload-time = "2025-09-07T18:57:58.071Z" },
]
[[package]]
@@ -291,55 +393,59 @@ wheels = [
[[package]]
name = "docutils"
-version = "0.22"
+version = "0.22.3"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/e9/86/5b41c32ecedcfdb4c77b28b6cb14234f252075f8cdb254531727a35547dd/docutils-0.22.tar.gz", hash = "sha256:ba9d57750e92331ebe7c08a1bbf7a7f8143b86c476acd51528b042216a6aad0f", size = 2277984, upload-time = "2025-07-29T15:20:31.06Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/d9/02/111134bfeb6e6c7ac4c74594e39a59f6c0195dc4846afbeac3cba60f1927/docutils-0.22.3.tar.gz", hash = "sha256:21486ae730e4ca9f622677b1412b879af1791efcfba517e4c6f60be543fc8cdd", size = 2290153, upload-time = "2025-11-06T02:35:55.655Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/44/57/8db39bc5f98f042e0153b1de9fb88e1a409a33cda4dd7f723c2ed71e01f6/docutils-0.22-py3-none-any.whl", hash = "sha256:4ed966a0e96a0477d852f7af31bdcb3adc049fbb35ccba358c2ea8a03287615e", size = 630709, upload-time = "2025-07-29T15:20:28.335Z" },
+ { url = "https://files.pythonhosted.org/packages/11/a8/c6a4b901d17399c77cd81fb001ce8961e9f5e04d3daf27e8925cb012e163/docutils-0.22.3-py3-none-any.whl", hash = "sha256:bd772e4aca73aff037958d44f2be5229ded4c09927fcf8690c577b66234d6ceb", size = 633032, upload-time = "2025-11-06T02:35:52.391Z" },
]
[[package]]
name = "email-validator"
-version = "2.2.0"
+version = "2.3.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "dnspython" },
{ name = "idna" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/48/ce/13508a1ec3f8bb981ae4ca79ea40384becc868bfae97fd1c942bb3a001b1/email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7", size = 48967, upload-time = "2024-06-20T11:30:30.034Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/f5/22/900cb125c76b7aaa450ce02fd727f452243f2e91a61af068b40adba60ea9/email_validator-2.3.0.tar.gz", hash = "sha256:9fc05c37f2f6cf439ff414f8fc46d917929974a82244c20eb10231ba60c54426", size = 51238, upload-time = "2025-08-26T13:09:06.831Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/d7/ee/bf0adb559ad3c786f12bcbc9296b3f5675f529199bef03e2df281fa1fadb/email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631", size = 33521, upload-time = "2024-06-20T11:30:28.248Z" },
+ { url = "https://files.pythonhosted.org/packages/de/15/545e2b6cf2e3be84bc1ed85613edd75b8aea69807a71c26f4ca6a9258e82/email_validator-2.3.0-py3-none-any.whl", hash = "sha256:80f13f623413e6b197ae73bb10bf4eb0908faf509ad8362c5edeb0be7fd450b4", size = 35604, upload-time = "2025-08-26T13:09:05.858Z" },
]
[[package]]
name = "exceptiongroup"
-version = "1.3.0"
+version = "1.3.1"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10", size = 16674, upload-time = "2025-05-10T17:42:49.33Z" },
+ { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" },
]
[[package]]
name = "fastmcp"
-version = "2.12.4"
+version = "2.13.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "authlib" },
{ name = "cyclopts" },
{ name = "exceptiongroup" },
{ name = "httpx" },
+ { name = "jsonschema-path" },
{ name = "mcp" },
- { name = "openapi-core" },
{ name = "openapi-pydantic" },
+ { name = "platformdirs" },
+ { name = "py-key-value-aio", extra = ["disk", "memory"] },
{ name = "pydantic", extra = ["email"] },
{ name = "pyperclip" },
{ name = "python-dotenv" },
{ name = "rich" },
+ { name = "uvicorn" },
+ { name = "websockets" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/a8/b2/57845353a9bc63002995a982e66f3d0be4ec761e7bcb89e7d0638518d42a/fastmcp-2.12.4.tar.gz", hash = "sha256:b55fe89537038f19d0f4476544f9ca5ac171033f61811cc8f12bdeadcbea5016", size = 7167745, upload-time = "2025-09-26T16:43:27.71Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/21/a1/a507bfb73f51983759cbbc3702b6f4780128cff68ebbc51db2f10170c950/fastmcp-2.13.3.tar.gz", hash = "sha256:ebca59e99412c596dd75ebdd5147800f6abc2490d025af76fa8ea4fc5f68781d", size = 8185958, upload-time = "2025-12-03T23:58:00.434Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/e2/c7/562ff39f25de27caec01e4c1e88cbb5fcae5160802ba3d90be33165df24f/fastmcp-2.12.4-py3-none-any.whl", hash = "sha256:56188fbbc1a9df58c537063f25958c57b5c4d715f73e395c41b51550b247d140", size = 329090, upload-time = "2025-09-26T16:43:25.314Z" },
+ { url = "https://files.pythonhosted.org/packages/db/bc/56925f1202357dbfcfdfd0c75afc6c27ec1e6ef1d89b7e7410df3945ceb4/fastmcp-2.13.3-py3-none-any.whl", hash = "sha256:5173d335f4e6aabcfb5a5131af3fa092f604b303130fd3a49226b7a844a48e65", size = 385644, upload-time = "2025-12-03T23:58:02.246Z" },
]
[[package]]
@@ -390,20 +496,20 @@ wheels = [
[[package]]
name = "httpx-sse"
-version = "0.4.1"
+version = "0.4.3"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/6e/fa/66bd985dd0b7c109a3bcb89272ee0bfb7e2b4d06309ad7b38ff866734b2a/httpx_sse-0.4.1.tar.gz", hash = "sha256:8f44d34414bc7b21bf3602713005c5df4917884f76072479b21f68befa4ea26e", size = 12998, upload-time = "2025-06-24T13:21:05.71Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/0f/4c/751061ffa58615a32c31b2d82e8482be8dd4a89154f003147acee90f2be9/httpx_sse-0.4.3.tar.gz", hash = "sha256:9b1ed0127459a66014aec3c56bebd93da3c1bc8bb6618c8082039a44889a755d", size = 15943, upload-time = "2025-10-10T21:48:22.271Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/25/0a/6269e3473b09aed2dab8aa1a600c70f31f00ae1349bee30658f7e358a159/httpx_sse-0.4.1-py3-none-any.whl", hash = "sha256:cba42174344c3a5b06f255ce65b350880f962d99ead85e776f23c6618a377a37", size = 8054, upload-time = "2025-06-24T13:21:04.772Z" },
+ { url = "https://files.pythonhosted.org/packages/d2/fd/6668e5aec43ab844de6fc74927e155a3b37bf40d7c3790e49fc0406b6578/httpx_sse-0.4.3-py3-none-any.whl", hash = "sha256:0ac1c9fe3c0afad2e0ebb25a934a59f4c7823b60792691f779fad2c5568830fc", size = 8960, upload-time = "2025-10-10T21:48:21.158Z" },
]
[[package]]
name = "idna"
-version = "3.10"
+version = "3.11"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" },
+ { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" },
]
[[package]]
@@ -421,29 +527,20 @@ wheels = [
[[package]]
name = "iniconfig"
-version = "2.1.0"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" },
-]
-
-[[package]]
-name = "isodate"
-version = "0.7.2"
+version = "2.3.0"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705, upload-time = "2024-10-08T23:04:11.5Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload-time = "2024-10-08T23:04:09.501Z" },
+ { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" },
]
[[package]]
name = "isort"
-version = "6.0.1"
+version = "7.0.0"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/b8/21/1e2a441f74a653a144224d7d21afe8f4169e6c7c20bb13aec3a2dc3815e0/isort-6.0.1.tar.gz", hash = "sha256:1cb5df28dfbc742e490c5e41bad6da41b805b0a8be7bc93cd0fb2a8a890ac450", size = 821955, upload-time = "2025-02-26T21:13:16.955Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/63/53/4f3c058e3bace40282876f9b553343376ee687f3c35a525dc79dbd450f88/isort-7.0.0.tar.gz", hash = "sha256:5513527951aadb3ac4292a41a16cbc50dd1642432f5e8c20057d414bdafb4187", size = 805049, upload-time = "2025-10-11T13:30:59.107Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/c1/11/114d0a5f4dabbdcedc1125dee0888514c3c3b16d3e9facad87ed96fad97c/isort-6.0.1-py3-none-any.whl", hash = "sha256:2dc5d7f65c9678d94c88dfc29161a320eec67328bc97aad576874cb4be1e9615", size = 94186, upload-time = "2025-02-26T21:13:14.911Z" },
+ { url = "https://files.pythonhosted.org/packages/7f/ed/e3705d6d02b4f7aea715a353c8ce193efd0b5db13e204df895d38734c244/isort-7.0.0-py3-none-any.whl", hash = "sha256:1bcabac8bc3c36c7fb7b98a76c8abb18e0f841a3ba81decac7691008592499c1", size = 94672, upload-time = "2025-10-11T13:30:57.665Z" },
]
[[package]]
@@ -460,7 +557,7 @@ wheels = [
[[package]]
name = "jsonschema"
-version = "4.25.0"
+version = "4.25.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "attrs" },
@@ -468,9 +565,9 @@ dependencies = [
{ name = "referencing" },
{ name = "rpds-py" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/d5/00/a297a868e9d0784450faa7365c2172a7d6110c763e30ba861867c32ae6a9/jsonschema-4.25.0.tar.gz", hash = "sha256:e63acf5c11762c0e6672ffb61482bdf57f0876684d8d249c0fe2d730d48bc55f", size = 356830, upload-time = "2025-07-18T15:39:45.11Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/74/69/f7185de793a29082a9f3c7728268ffb31cb5095131a9c139a74078e27336/jsonschema-4.25.1.tar.gz", hash = "sha256:e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85", size = 357342, upload-time = "2025-08-18T17:03:50.038Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/fe/54/c86cd8e011fe98803d7e382fd67c0df5ceab8d2b7ad8c5a81524f791551c/jsonschema-4.25.0-py3-none-any.whl", hash = "sha256:24c2e8da302de79c8b9382fee3e76b355e44d2a4364bb207159ce10b517bd716", size = 89184, upload-time = "2025-07-18T15:39:42.956Z" },
+ { url = "https://files.pythonhosted.org/packages/bf/9c/8c95d856233c1f82500c2450b8c68576b4cf1c871db3afac5c34ff84e6fd/jsonschema-4.25.1-py3-none-any.whl", hash = "sha256:3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63", size = 90040, upload-time = "2025-08-18T17:03:48.373Z" },
]
[[package]]
@@ -490,14 +587,14 @@ wheels = [
[[package]]
name = "jsonschema-specifications"
-version = "2025.4.1"
+version = "2025.9.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "referencing" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload-time = "2025-04-23T12:34:07.418Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload-time = "2025-09-08T01:34:59.186Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload-time = "2025-04-23T12:34:05.422Z" },
+ { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload-time = "2025-09-08T01:34:57.871Z" },
]
[[package]]
@@ -547,62 +644,73 @@ test = [
{ name = "respx", specifier = ">=0.21.0" },
]
-[[package]]
-name = "lazy-object-proxy"
-version = "1.11.0"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/57/f9/1f56571ed82fb324f293661690635cf42c41deb8a70a6c9e6edc3e9bb3c8/lazy_object_proxy-1.11.0.tar.gz", hash = "sha256:18874411864c9fbbbaa47f9fc1dd7aea754c86cfde21278ef427639d1dd78e9c", size = 44736, upload-time = "2025-04-16T16:53:48.482Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/a8/0f/6e004f928f7ff5abae2b8e1f68835a3870252f886e006267702e1efc5c7b/lazy_object_proxy-1.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:fd4c84eafd8dd15ea16f7d580758bc5c2ce1f752faec877bb2b1f9f827c329cd", size = 28149, upload-time = "2025-04-16T16:53:40.135Z" },
- { url = "https://files.pythonhosted.org/packages/63/cb/b8363110e32cc1fd82dc91296315f775d37a39df1c1cfa976ec1803dac89/lazy_object_proxy-1.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:d2503427bda552d3aefcac92f81d9e7ca631e680a2268cbe62cd6a58de6409b7", size = 28389, upload-time = "2025-04-16T16:53:43.612Z" },
- { url = "https://files.pythonhosted.org/packages/7b/89/68c50fcfd81e11480cd8ee7f654c9bd790a9053b9a0efe9983d46106f6a9/lazy_object_proxy-1.11.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0613116156801ab3fccb9e2b05ed83b08ea08c2517fdc6c6bc0d4697a1a376e3", size = 28777, upload-time = "2025-04-16T16:53:41.371Z" },
- { url = "https://files.pythonhosted.org/packages/39/d0/7e967689e24de8ea6368ec33295f9abc94b9f3f0cd4571bfe148dc432190/lazy_object_proxy-1.11.0-cp313-cp313t-win_amd64.whl", hash = "sha256:bb03c507d96b65f617a6337dedd604399d35face2cdf01526b913fb50c4cb6e8", size = 29598, upload-time = "2025-04-16T16:53:42.513Z" },
- { url = "https://files.pythonhosted.org/packages/e7/1e/fb441c07b6662ec1fc92b249225ba6e6e5221b05623cb0131d082f782edc/lazy_object_proxy-1.11.0-py3-none-any.whl", hash = "sha256:a56a5093d433341ff7da0e89f9b486031ccd222ec8e52ec84d0ec1cdc819674b", size = 16635, upload-time = "2025-04-16T16:53:47.198Z" },
-]
-
[[package]]
name = "markdown-it-py"
-version = "3.0.0"
+version = "4.0.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "mdurl" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload-time = "2023-06-03T06:41:14.443Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload-time = "2025-08-11T12:57:52.854Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload-time = "2023-06-03T06:41:11.019Z" },
+ { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload-time = "2025-08-11T12:57:51.923Z" },
]
[[package]]
name = "markupsafe"
-version = "3.0.2"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload-time = "2024-10-18T15:21:24.577Z" },
- { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload-time = "2024-10-18T15:21:25.382Z" },
- { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload-time = "2024-10-18T15:21:26.199Z" },
- { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload-time = "2024-10-18T15:21:27.029Z" },
- { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload-time = "2024-10-18T15:21:27.846Z" },
- { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload-time = "2024-10-18T15:21:28.744Z" },
- { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload-time = "2024-10-18T15:21:29.545Z" },
- { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload-time = "2024-10-18T15:21:30.366Z" },
- { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload-time = "2024-10-18T15:21:31.207Z" },
- { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload-time = "2024-10-18T15:21:32.032Z" },
- { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload-time = "2024-10-18T15:21:33.625Z" },
- { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload-time = "2024-10-18T15:21:34.611Z" },
- { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload-time = "2024-10-18T15:21:35.398Z" },
- { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload-time = "2024-10-18T15:21:36.231Z" },
- { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload-time = "2024-10-18T15:21:37.073Z" },
- { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload-time = "2024-10-18T15:21:37.932Z" },
- { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload-time = "2024-10-18T15:21:39.799Z" },
- { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload-time = "2024-10-18T15:21:40.813Z" },
- { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload-time = "2024-10-18T15:21:41.814Z" },
- { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload-time = "2024-10-18T15:21:42.784Z" },
+version = "3.0.3"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/7e/99/7690b6d4034fffd95959cbe0c02de8deb3098cc577c67bb6a24fe5d7caa7/markupsafe-3.0.3.tar.gz", hash = "sha256:722695808f4b6457b320fdc131280796bdceb04ab50fe1795cd540799ebe1698", size = 80313, upload-time = "2025-09-27T18:37:40.426Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/38/2f/907b9c7bbba283e68f20259574b13d005c121a0fa4c175f9bed27c4597ff/markupsafe-3.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1cf1972137e83c5d4c136c43ced9ac51d0e124706ee1c8aa8532c1287fa8795", size = 11622, upload-time = "2025-09-27T18:36:41.777Z" },
+ { url = "https://files.pythonhosted.org/packages/9c/d9/5f7756922cdd676869eca1c4e3c0cd0df60ed30199ffd775e319089cb3ed/markupsafe-3.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:116bb52f642a37c115f517494ea5feb03889e04df47eeff5b130b1808ce7c219", size = 12029, upload-time = "2025-09-27T18:36:43.257Z" },
+ { url = "https://files.pythonhosted.org/packages/00/07/575a68c754943058c78f30db02ee03a64b3c638586fba6a6dd56830b30a3/markupsafe-3.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:133a43e73a802c5562be9bbcd03d090aa5a1fe899db609c29e8c8d815c5f6de6", size = 24374, upload-time = "2025-09-27T18:36:44.508Z" },
+ { url = "https://files.pythonhosted.org/packages/a9/21/9b05698b46f218fc0e118e1f8168395c65c8a2c750ae2bab54fc4bd4e0e8/markupsafe-3.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ccfcd093f13f0f0b7fdd0f198b90053bf7b2f02a3927a30e63f3ccc9df56b676", size = 22980, upload-time = "2025-09-27T18:36:45.385Z" },
+ { url = "https://files.pythonhosted.org/packages/7f/71/544260864f893f18b6827315b988c146b559391e6e7e8f7252839b1b846a/markupsafe-3.0.3-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:509fa21c6deb7a7a273d629cf5ec029bc209d1a51178615ddf718f5918992ab9", size = 21990, upload-time = "2025-09-27T18:36:46.916Z" },
+ { url = "https://files.pythonhosted.org/packages/c2/28/b50fc2f74d1ad761af2f5dcce7492648b983d00a65b8c0e0cb457c82ebbe/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4afe79fb3de0b7097d81da19090f4df4f8d3a2b3adaa8764138aac2e44f3af1", size = 23784, upload-time = "2025-09-27T18:36:47.884Z" },
+ { url = "https://files.pythonhosted.org/packages/ed/76/104b2aa106a208da8b17a2fb72e033a5a9d7073c68f7e508b94916ed47a9/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:795e7751525cae078558e679d646ae45574b47ed6e7771863fcc079a6171a0fc", size = 21588, upload-time = "2025-09-27T18:36:48.82Z" },
+ { url = "https://files.pythonhosted.org/packages/b5/99/16a5eb2d140087ebd97180d95249b00a03aa87e29cc224056274f2e45fd6/markupsafe-3.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8485f406a96febb5140bfeca44a73e3ce5116b2501ac54fe953e488fb1d03b12", size = 23041, upload-time = "2025-09-27T18:36:49.797Z" },
+ { url = "https://files.pythonhosted.org/packages/19/bc/e7140ed90c5d61d77cea142eed9f9c303f4c4806f60a1044c13e3f1471d0/markupsafe-3.0.3-cp313-cp313-win32.whl", hash = "sha256:bdd37121970bfd8be76c5fb069c7751683bdf373db1ed6c010162b2a130248ed", size = 14543, upload-time = "2025-09-27T18:36:51.584Z" },
+ { url = "https://files.pythonhosted.org/packages/05/73/c4abe620b841b6b791f2edc248f556900667a5a1cf023a6646967ae98335/markupsafe-3.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:9a1abfdc021a164803f4d485104931fb8f8c1efd55bc6b748d2f5774e78b62c5", size = 15113, upload-time = "2025-09-27T18:36:52.537Z" },
+ { url = "https://files.pythonhosted.org/packages/f0/3a/fa34a0f7cfef23cf9500d68cb7c32dd64ffd58a12b09225fb03dd37d5b80/markupsafe-3.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:7e68f88e5b8799aa49c85cd116c932a1ac15caaa3f5db09087854d218359e485", size = 13911, upload-time = "2025-09-27T18:36:53.513Z" },
+ { url = "https://files.pythonhosted.org/packages/e4/d7/e05cd7efe43a88a17a37b3ae96e79a19e846f3f456fe79c57ca61356ef01/markupsafe-3.0.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:218551f6df4868a8d527e3062d0fb968682fe92054e89978594c28e642c43a73", size = 11658, upload-time = "2025-09-27T18:36:54.819Z" },
+ { url = "https://files.pythonhosted.org/packages/99/9e/e412117548182ce2148bdeacdda3bb494260c0b0184360fe0d56389b523b/markupsafe-3.0.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:3524b778fe5cfb3452a09d31e7b5adefeea8c5be1d43c4f810ba09f2ceb29d37", size = 12066, upload-time = "2025-09-27T18:36:55.714Z" },
+ { url = "https://files.pythonhosted.org/packages/bc/e6/fa0ffcda717ef64a5108eaa7b4f5ed28d56122c9a6d70ab8b72f9f715c80/markupsafe-3.0.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4e885a3d1efa2eadc93c894a21770e4bc67899e3543680313b09f139e149ab19", size = 25639, upload-time = "2025-09-27T18:36:56.908Z" },
+ { url = "https://files.pythonhosted.org/packages/96/ec/2102e881fe9d25fc16cb4b25d5f5cde50970967ffa5dddafdb771237062d/markupsafe-3.0.3-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8709b08f4a89aa7586de0aadc8da56180242ee0ada3999749b183aa23df95025", size = 23569, upload-time = "2025-09-27T18:36:57.913Z" },
+ { url = "https://files.pythonhosted.org/packages/4b/30/6f2fce1f1f205fc9323255b216ca8a235b15860c34b6798f810f05828e32/markupsafe-3.0.3-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b8512a91625c9b3da6f127803b166b629725e68af71f8184ae7e7d54686a56d6", size = 23284, upload-time = "2025-09-27T18:36:58.833Z" },
+ { url = "https://files.pythonhosted.org/packages/58/47/4a0ccea4ab9f5dcb6f79c0236d954acb382202721e704223a8aafa38b5c8/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b79b7a16f7fedff2495d684f2b59b0457c3b493778c9eed31111be64d58279f", size = 24801, upload-time = "2025-09-27T18:36:59.739Z" },
+ { url = "https://files.pythonhosted.org/packages/6a/70/3780e9b72180b6fecb83a4814d84c3bf4b4ae4bf0b19c27196104149734c/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:12c63dfb4a98206f045aa9563db46507995f7ef6d83b2f68eda65c307c6829eb", size = 22769, upload-time = "2025-09-27T18:37:00.719Z" },
+ { url = "https://files.pythonhosted.org/packages/98/c5/c03c7f4125180fc215220c035beac6b9cb684bc7a067c84fc69414d315f5/markupsafe-3.0.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8f71bc33915be5186016f675cd83a1e08523649b0e33efdb898db577ef5bb009", size = 23642, upload-time = "2025-09-27T18:37:01.673Z" },
+ { url = "https://files.pythonhosted.org/packages/80/d6/2d1b89f6ca4bff1036499b1e29a1d02d282259f3681540e16563f27ebc23/markupsafe-3.0.3-cp313-cp313t-win32.whl", hash = "sha256:69c0b73548bc525c8cb9a251cddf1931d1db4d2258e9599c28c07ef3580ef354", size = 14612, upload-time = "2025-09-27T18:37:02.639Z" },
+ { url = "https://files.pythonhosted.org/packages/2b/98/e48a4bfba0a0ffcf9925fe2d69240bfaa19c6f7507b8cd09c70684a53c1e/markupsafe-3.0.3-cp313-cp313t-win_amd64.whl", hash = "sha256:1b4b79e8ebf6b55351f0d91fe80f893b4743f104bff22e90697db1590e47a218", size = 15200, upload-time = "2025-09-27T18:37:03.582Z" },
+ { url = "https://files.pythonhosted.org/packages/0e/72/e3cc540f351f316e9ed0f092757459afbc595824ca724cbc5a5d4263713f/markupsafe-3.0.3-cp313-cp313t-win_arm64.whl", hash = "sha256:ad2cf8aa28b8c020ab2fc8287b0f823d0a7d8630784c31e9ee5edea20f406287", size = 13973, upload-time = "2025-09-27T18:37:04.929Z" },
+ { url = "https://files.pythonhosted.org/packages/33/8a/8e42d4838cd89b7dde187011e97fe6c3af66d8c044997d2183fbd6d31352/markupsafe-3.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:eaa9599de571d72e2daf60164784109f19978b327a3910d3e9de8c97b5b70cfe", size = 11619, upload-time = "2025-09-27T18:37:06.342Z" },
+ { url = "https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026", size = 12029, upload-time = "2025-09-27T18:37:07.213Z" },
+ { url = "https://files.pythonhosted.org/packages/da/ef/e648bfd021127bef5fa12e1720ffed0c6cbb8310c8d9bea7266337ff06de/markupsafe-3.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f34c41761022dd093b4b6896d4810782ffbabe30f2d443ff5f083e0cbbb8c737", size = 24408, upload-time = "2025-09-27T18:37:09.572Z" },
+ { url = "https://files.pythonhosted.org/packages/41/3c/a36c2450754618e62008bf7435ccb0f88053e07592e6028a34776213d877/markupsafe-3.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:457a69a9577064c05a97c41f4e65148652db078a3a509039e64d3467b9e7ef97", size = 23005, upload-time = "2025-09-27T18:37:10.58Z" },
+ { url = "https://files.pythonhosted.org/packages/bc/20/b7fdf89a8456b099837cd1dc21974632a02a999ec9bf7ca3e490aacd98e7/markupsafe-3.0.3-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e8afc3f2ccfa24215f8cb28dcf43f0113ac3c37c2f0f0806d8c70e4228c5cf4d", size = 22048, upload-time = "2025-09-27T18:37:11.547Z" },
+ { url = "https://files.pythonhosted.org/packages/9a/a7/591f592afdc734f47db08a75793a55d7fbcc6902a723ae4cfbab61010cc5/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ec15a59cf5af7be74194f7ab02d0f59a62bdcf1a537677ce67a2537c9b87fcda", size = 23821, upload-time = "2025-09-27T18:37:12.48Z" },
+ { url = "https://files.pythonhosted.org/packages/7d/33/45b24e4f44195b26521bc6f1a82197118f74df348556594bd2262bda1038/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:0eb9ff8191e8498cca014656ae6b8d61f39da5f95b488805da4bb029cccbfbaf", size = 21606, upload-time = "2025-09-27T18:37:13.485Z" },
+ { url = "https://files.pythonhosted.org/packages/ff/0e/53dfaca23a69fbfbbf17a4b64072090e70717344c52eaaaa9c5ddff1e5f0/markupsafe-3.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2713baf880df847f2bece4230d4d094280f4e67b1e813eec43b4c0e144a34ffe", size = 23043, upload-time = "2025-09-27T18:37:14.408Z" },
+ { url = "https://files.pythonhosted.org/packages/46/11/f333a06fc16236d5238bfe74daccbca41459dcd8d1fa952e8fbd5dccfb70/markupsafe-3.0.3-cp314-cp314-win32.whl", hash = "sha256:729586769a26dbceff69f7a7dbbf59ab6572b99d94576a5592625d5b411576b9", size = 14747, upload-time = "2025-09-27T18:37:15.36Z" },
+ { url = "https://files.pythonhosted.org/packages/28/52/182836104b33b444e400b14f797212f720cbc9ed6ba34c800639d154e821/markupsafe-3.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:bdc919ead48f234740ad807933cdf545180bfbe9342c2bb451556db2ed958581", size = 15341, upload-time = "2025-09-27T18:37:16.496Z" },
+ { url = "https://files.pythonhosted.org/packages/6f/18/acf23e91bd94fd7b3031558b1f013adfa21a8e407a3fdb32745538730382/markupsafe-3.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:5a7d5dc5140555cf21a6fefbdbf8723f06fcd2f63ef108f2854de715e4422cb4", size = 14073, upload-time = "2025-09-27T18:37:17.476Z" },
+ { url = "https://files.pythonhosted.org/packages/3c/f0/57689aa4076e1b43b15fdfa646b04653969d50cf30c32a102762be2485da/markupsafe-3.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:1353ef0c1b138e1907ae78e2f6c63ff67501122006b0f9abad68fda5f4ffc6ab", size = 11661, upload-time = "2025-09-27T18:37:18.453Z" },
+ { url = "https://files.pythonhosted.org/packages/89/c3/2e67a7ca217c6912985ec766c6393b636fb0c2344443ff9d91404dc4c79f/markupsafe-3.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1085e7fbddd3be5f89cc898938f42c0b3c711fdcb37d75221de2666af647c175", size = 12069, upload-time = "2025-09-27T18:37:19.332Z" },
+ { url = "https://files.pythonhosted.org/packages/f0/00/be561dce4e6ca66b15276e184ce4b8aec61fe83662cce2f7d72bd3249d28/markupsafe-3.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1b52b4fb9df4eb9ae465f8d0c228a00624de2334f216f178a995ccdcf82c4634", size = 25670, upload-time = "2025-09-27T18:37:20.245Z" },
+ { url = "https://files.pythonhosted.org/packages/50/09/c419f6f5a92e5fadde27efd190eca90f05e1261b10dbd8cbcb39cd8ea1dc/markupsafe-3.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:fed51ac40f757d41b7c48425901843666a6677e3e8eb0abcff09e4ba6e664f50", size = 23598, upload-time = "2025-09-27T18:37:21.177Z" },
+ { url = "https://files.pythonhosted.org/packages/22/44/a0681611106e0b2921b3033fc19bc53323e0b50bc70cffdd19f7d679bb66/markupsafe-3.0.3-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:f190daf01f13c72eac4efd5c430a8de82489d9cff23c364c3ea822545032993e", size = 23261, upload-time = "2025-09-27T18:37:22.167Z" },
+ { url = "https://files.pythonhosted.org/packages/5f/57/1b0b3f100259dc9fffe780cfb60d4be71375510e435efec3d116b6436d43/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e56b7d45a839a697b5eb268c82a71bd8c7f6c94d6fd50c3d577fa39a9f1409f5", size = 24835, upload-time = "2025-09-27T18:37:23.296Z" },
+ { url = "https://files.pythonhosted.org/packages/26/6a/4bf6d0c97c4920f1597cc14dd720705eca0bf7c787aebc6bb4d1bead5388/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:f3e98bb3798ead92273dc0e5fd0f31ade220f59a266ffd8a4f6065e0a3ce0523", size = 22733, upload-time = "2025-09-27T18:37:24.237Z" },
+ { url = "https://files.pythonhosted.org/packages/14/c7/ca723101509b518797fedc2fdf79ba57f886b4aca8a7d31857ba3ee8281f/markupsafe-3.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5678211cb9333a6468fb8d8be0305520aa073f50d17f089b5b4b477ea6e67fdc", size = 23672, upload-time = "2025-09-27T18:37:25.271Z" },
+ { url = "https://files.pythonhosted.org/packages/fb/df/5bd7a48c256faecd1d36edc13133e51397e41b73bb77e1a69deab746ebac/markupsafe-3.0.3-cp314-cp314t-win32.whl", hash = "sha256:915c04ba3851909ce68ccc2b8e2cd691618c4dc4c4232fb7982bca3f41fd8c3d", size = 14819, upload-time = "2025-09-27T18:37:26.285Z" },
+ { url = "https://files.pythonhosted.org/packages/1a/8a/0402ba61a2f16038b48b39bccca271134be00c5c9f0f623208399333c448/markupsafe-3.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4faffd047e07c38848ce017e8725090413cd80cbc23d86e55c587bf979e579c9", size = 15426, upload-time = "2025-09-27T18:37:27.316Z" },
+ { url = "https://files.pythonhosted.org/packages/70/bc/6f1c2f612465f5fa89b95bead1f44dcb607670fd42891d8fdcd5d039f4f4/markupsafe-3.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:32001d6a8fc98c8cb5c947787c5d08b0a50663d139f1305bac5885d98d9b40fa", size = 14146, upload-time = "2025-09-27T18:37:28.327Z" },
]
[[package]]
name = "mcp"
-version = "1.12.4"
+version = "1.22.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "anyio" },
@@ -611,15 +719,18 @@ dependencies = [
{ name = "jsonschema" },
{ name = "pydantic" },
{ name = "pydantic-settings" },
+ { name = "pyjwt", extra = ["crypto"] },
{ name = "python-multipart" },
{ name = "pywin32", marker = "sys_platform == 'win32'" },
{ name = "sse-starlette" },
{ name = "starlette" },
+ { name = "typing-extensions" },
+ { name = "typing-inspection" },
{ name = "uvicorn", marker = "sys_platform != 'emscripten'" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/31/88/f6cb7e7c260cd4b4ce375f2b1614b33ce401f63af0f49f7141a2e9bf0a45/mcp-1.12.4.tar.gz", hash = "sha256:0765585e9a3a5916a3c3ab8659330e493adc7bd8b2ca6120c2d7a0c43e034ca5", size = 431148, upload-time = "2025-08-07T20:31:18.082Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/a3/a2/c5ec0ab38b35ade2ae49a90fada718fbc76811dc5aa1760414c6aaa6b08a/mcp-1.22.0.tar.gz", hash = "sha256:769b9ac90ed42134375b19e777a2858ca300f95f2e800982b3e2be62dfc0ba01", size = 471788, upload-time = "2025-11-20T20:11:28.095Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/ad/68/316cbc54b7163fa22571dcf42c9cc46562aae0a021b974e0a8141e897200/mcp-1.12.4-py3-none-any.whl", hash = "sha256:7aa884648969fab8e78b89399d59a683202972e12e6bc9a1c88ce7eda7743789", size = 160145, upload-time = "2025-08-07T20:31:15.69Z" },
+ { url = "https://files.pythonhosted.org/packages/a9/bb/711099f9c6bb52770f56e56401cdfb10da5b67029f701e0df29362df4c8e/mcp-1.22.0-py3-none-any.whl", hash = "sha256:bed758e24df1ed6846989c909ba4e3df339a27b4f30f1b8b627862a4bade4e98", size = 175489, upload-time = "2025-11-20T20:11:26.542Z" },
]
[[package]]
@@ -633,11 +744,11 @@ wheels = [
[[package]]
name = "more-itertools"
-version = "10.7.0"
+version = "10.8.0"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/ce/a0/834b0cebabbfc7e311f30b46c8188790a37f89fc8d756660346fe5abfd09/more_itertools-10.7.0.tar.gz", hash = "sha256:9fddd5403be01a94b204faadcff459ec3568cf110265d3c54323e1e866ad29d3", size = 127671, upload-time = "2025-04-22T14:17:41.838Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/ea/5d/38b681d3fce7a266dd9ab73c66959406d565b3e85f21d5e66e1181d93721/more_itertools-10.8.0.tar.gz", hash = "sha256:f638ddf8a1a0d134181275fb5d58b086ead7c6a72429ad725c67503f13ba30bd", size = 137431, upload-time = "2025-09-02T15:23:11.018Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/2b/9f/7ba6f94fc1e9ac3d2b853fdff3035fb2fa5afbed898c4a72b8a020610594/more_itertools-10.7.0-py3-none-any.whl", hash = "sha256:d43980384673cb07d2f7d2d918c616b30c659c089ee23953f601d6609c67510e", size = 65278, upload-time = "2025-04-22T14:17:40.49Z" },
+ { url = "https://files.pythonhosted.org/packages/a4/8e/469e5a4a2f5855992e425f3cb33804cc07bf18d48f2db061aec61ce50270/more_itertools-10.8.0-py3-none-any.whl", hash = "sha256:52d4362373dcf7c52546bc4af9a86ee7c4579df9a8dc268be0a2f949d376cc9b", size = 69667, upload-time = "2025-09-02T15:23:09.635Z" },
]
[[package]]
@@ -649,26 +760,6 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" },
]
-[[package]]
-name = "openapi-core"
-version = "0.19.5"
-source = { registry = "https://pypi.org/simple" }
-dependencies = [
- { name = "isodate" },
- { name = "jsonschema" },
- { name = "jsonschema-path" },
- { name = "more-itertools" },
- { name = "openapi-schema-validator" },
- { name = "openapi-spec-validator" },
- { name = "parse" },
- { name = "typing-extensions" },
- { name = "werkzeug" },
-]
-sdist = { url = "https://files.pythonhosted.org/packages/b1/35/1acaa5f2fcc6e54eded34a2ec74b479439c4e469fc4e8d0e803fda0234db/openapi_core-0.19.5.tar.gz", hash = "sha256:421e753da56c391704454e66afe4803a290108590ac8fa6f4a4487f4ec11f2d3", size = 103264, upload-time = "2025-03-20T20:17:28.193Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/27/6f/83ead0e2e30a90445ee4fc0135f43741aebc30cca5b43f20968b603e30b6/openapi_core-0.19.5-py3-none-any.whl", hash = "sha256:ef7210e83a59394f46ce282639d8d26ad6fc8094aa904c9c16eb1bac8908911f", size = 106595, upload-time = "2025-03-20T20:17:26.77Z" },
-]
-
[[package]]
name = "openapi-pydantic"
version = "0.5.1"
@@ -681,35 +772,6 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/12/cf/03675d8bd8ecbf4445504d8071adab19f5f993676795708e36402ab38263/openapi_pydantic-0.5.1-py3-none-any.whl", hash = "sha256:a3a09ef4586f5bd760a8df7f43028b60cafb6d9f61de2acba9574766255ab146", size = 96381, upload-time = "2025-01-08T19:29:25.275Z" },
]
-[[package]]
-name = "openapi-schema-validator"
-version = "0.6.3"
-source = { registry = "https://pypi.org/simple" }
-dependencies = [
- { name = "jsonschema" },
- { name = "jsonschema-specifications" },
- { name = "rfc3339-validator" },
-]
-sdist = { url = "https://files.pythonhosted.org/packages/8b/f3/5507ad3325169347cd8ced61c232ff3df70e2b250c49f0fe140edb4973c6/openapi_schema_validator-0.6.3.tar.gz", hash = "sha256:f37bace4fc2a5d96692f4f8b31dc0f8d7400fd04f3a937798eaf880d425de6ee", size = 11550, upload-time = "2025-01-10T18:08:22.268Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/21/c6/ad0fba32775ae749016829dace42ed80f4407b171da41313d1a3a5f102e4/openapi_schema_validator-0.6.3-py3-none-any.whl", hash = "sha256:f3b9870f4e556b5a62a1c39da72a6b4b16f3ad9c73dc80084b1b11e74ba148a3", size = 8755, upload-time = "2025-01-10T18:08:19.758Z" },
-]
-
-[[package]]
-name = "openapi-spec-validator"
-version = "0.7.2"
-source = { registry = "https://pypi.org/simple" }
-dependencies = [
- { name = "jsonschema" },
- { name = "jsonschema-path" },
- { name = "lazy-object-proxy" },
- { name = "openapi-schema-validator" },
-]
-sdist = { url = "https://files.pythonhosted.org/packages/82/af/fe2d7618d6eae6fb3a82766a44ed87cd8d6d82b4564ed1c7cfb0f6378e91/openapi_spec_validator-0.7.2.tar.gz", hash = "sha256:cc029309b5c5dbc7859df0372d55e9d1ff43e96d678b9ba087f7c56fc586f734", size = 36855, upload-time = "2025-06-07T14:48:56.299Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/27/dd/b3fd642260cb17532f66cc1e8250f3507d1e580483e209dc1e9d13bd980d/openapi_spec_validator-0.7.2-py3-none-any.whl", hash = "sha256:4bbdc0894ec85f1d1bea1d6d9c8b2c3c8d7ccaa13577ef40da9c006c9fd0eb60", size = 39713, upload-time = "2025-06-07T14:48:54.077Z" },
-]
-
[[package]]
name = "packaging"
version = "25.0"
@@ -719,15 +781,6 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" },
]
-[[package]]
-name = "parse"
-version = "1.20.2"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/4f/78/d9b09ba24bb36ef8b83b71be547e118d46214735b6dfb39e4bfde0e9b9dd/parse-1.20.2.tar.gz", hash = "sha256:b41d604d16503c79d81af5165155c0b20f6c8d6c559efa66b4b695c3e5a0a0ce", size = 29391, upload-time = "2024-06-11T04:41:57.34Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/d0/31/ba45bf0b2aa7898d81cbbfac0e88c267befb59ad91a19e36e1bc5578ddb1/parse-1.20.2-py2.py3-none-any.whl", hash = "sha256:967095588cb802add9177d0c0b6133b5ba33b1ea9007ca800e526f42a85af558", size = 20126, upload-time = "2024-06-11T04:41:55.057Z" },
-]
-
[[package]]
name = "pathable"
version = "0.4.4"
@@ -746,13 +799,22 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" },
]
+[[package]]
+name = "pathvalidate"
+version = "3.3.1"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/fa/2a/52a8da6fe965dea6192eb716b357558e103aea0a1e9a8352ad575a8406ca/pathvalidate-3.3.1.tar.gz", hash = "sha256:b18c07212bfead624345bb8e1d6141cdcf15a39736994ea0b94035ad2b1ba177", size = 63262, upload-time = "2025-06-15T09:07:20.736Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/9a/70/875f4a23bfc4731703a5835487d0d2fb999031bd415e7d17c0ae615c18b7/pathvalidate-3.3.1-py3-none-any.whl", hash = "sha256:5263baab691f8e1af96092fa5137ee17df5bdfbd6cff1fcac4d6ef4bc2e1735f", size = 24305, upload-time = "2025-06-15T09:07:19.117Z" },
+]
+
[[package]]
name = "platformdirs"
-version = "4.3.8"
+version = "4.5.0"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/61/33/9611380c2bdb1225fdef633e2a9610622310fed35ab11dac9620972ee088/platformdirs-4.5.0.tar.gz", hash = "sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312", size = 21632, upload-time = "2025-10-08T17:44:48.791Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" },
+ { url = "https://files.pythonhosted.org/packages/73/cb/ac7874b3e5d58441674fb70742e6c374b28b0c7cb988d37d991cde47166c/platformdirs-4.5.0-py3-none-any.whl", hash = "sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3", size = 18651, upload-time = "2025-10-08T17:44:47.223Z" },
]
[[package]]
@@ -764,18 +826,53 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" },
]
+[[package]]
+name = "py-key-value-aio"
+version = "0.3.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "beartype" },
+ { name = "py-key-value-shared" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/93/ce/3136b771dddf5ac905cc193b461eb67967cf3979688c6696e1f2cdcde7ea/py_key_value_aio-0.3.0.tar.gz", hash = "sha256:858e852fcf6d696d231266da66042d3355a7f9871650415feef9fca7a6cd4155", size = 50801, upload-time = "2025-11-17T16:50:04.711Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/99/10/72f6f213b8f0bce36eff21fda0a13271834e9eeff7f9609b01afdc253c79/py_key_value_aio-0.3.0-py3-none-any.whl", hash = "sha256:1c781915766078bfd608daa769fefb97e65d1d73746a3dfb640460e322071b64", size = 96342, upload-time = "2025-11-17T16:50:03.801Z" },
+]
+
+[package.optional-dependencies]
+disk = [
+ { name = "diskcache" },
+ { name = "pathvalidate" },
+]
+memory = [
+ { name = "cachetools" },
+]
+
+[[package]]
+name = "py-key-value-shared"
+version = "0.3.0"
+source = { registry = "https://pypi.org/simple" }
+dependencies = [
+ { name = "beartype" },
+ { name = "typing-extensions" },
+]
+sdist = { url = "https://files.pythonhosted.org/packages/7b/e4/1971dfc4620a3a15b4579fe99e024f5edd6e0967a71154771a059daff4db/py_key_value_shared-0.3.0.tar.gz", hash = "sha256:8fdd786cf96c3e900102945f92aa1473138ebe960ef49da1c833790160c28a4b", size = 11666, upload-time = "2025-11-17T16:50:06.849Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/51/e4/b8b0a03ece72f47dce2307d36e1c34725b7223d209fc679315ffe6a4e2c3/py_key_value_shared-0.3.0-py3-none-any.whl", hash = "sha256:5b0efba7ebca08bb158b1e93afc2f07d30b8f40c2fc12ce24a4c0d84f42f9298", size = 19560, upload-time = "2025-11-17T16:50:05.954Z" },
+]
+
[[package]]
name = "pycparser"
-version = "2.22"
+version = "2.23"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload-time = "2024-03-30T13:22:22.564Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734, upload-time = "2025-09-09T13:23:47.91Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" },
+ { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140, upload-time = "2025-09-09T13:23:46.651Z" },
]
[[package]]
name = "pydantic"
-version = "2.11.7"
+version = "2.12.5"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "annotated-types" },
@@ -783,9 +880,9 @@ dependencies = [
{ name = "typing-extensions" },
{ name = "typing-inspection" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload-time = "2025-06-14T08:33:17.137Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/69/44/36f1a6e523abc58ae5f928898e4aca2e0ea509b5aa6f6f392a5d882be928/pydantic-2.12.5.tar.gz", hash = "sha256:4d351024c75c0f085a9febbb665ce8c0c6ec5d30e903bdb6394b7ede26aebb49", size = 821591, upload-time = "2025-11-26T15:11:46.471Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload-time = "2025-06-14T08:33:14.905Z" },
+ { url = "https://files.pythonhosted.org/packages/5a/87/b70ad306ebb6f9b585f114d0ac2137d792b48be34d732d60e597c2f8465a/pydantic-2.12.5-py3-none-any.whl", hash = "sha256:e561593fccf61e8a20fc46dfc2dfe075b8be7d0188df33f221ad1f0139180f9d", size = 463580, upload-time = "2025-11-26T15:11:44.605Z" },
]
[package.optional-dependencies]
@@ -795,44 +892,69 @@ email = [
[[package]]
name = "pydantic-core"
-version = "2.33.2"
+version = "2.41.5"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "typing-extensions" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload-time = "2025-04-23T18:31:53.175Z" },
- { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload-time = "2025-04-23T18:31:54.79Z" },
- { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload-time = "2025-04-23T18:31:57.393Z" },
- { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload-time = "2025-04-23T18:31:59.065Z" },
- { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload-time = "2025-04-23T18:32:00.78Z" },
- { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload-time = "2025-04-23T18:32:02.418Z" },
- { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload-time = "2025-04-23T18:32:04.152Z" },
- { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload-time = "2025-04-23T18:32:06.129Z" },
- { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload-time = "2025-04-23T18:32:08.178Z" },
- { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload-time = "2025-04-23T18:32:10.242Z" },
- { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload-time = "2025-04-23T18:32:12.382Z" },
- { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload-time = "2025-04-23T18:32:14.034Z" },
- { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload-time = "2025-04-23T18:32:15.783Z" },
- { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload-time = "2025-04-23T18:32:18.473Z" },
- { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload-time = "2025-04-23T18:32:20.188Z" },
- { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload-time = "2025-04-23T18:32:22.354Z" },
- { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload-time = "2025-04-23T18:32:25.088Z" },
+sdist = { url = "https://files.pythonhosted.org/packages/71/70/23b021c950c2addd24ec408e9ab05d59b035b39d97cdc1130e1bce647bb6/pydantic_core-2.41.5.tar.gz", hash = "sha256:08daa51ea16ad373ffd5e7606252cc32f07bc72b28284b6bc9c6df804816476e", size = 460952, upload-time = "2025-11-04T13:43:49.098Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/87/06/8806241ff1f70d9939f9af039c6c35f2360cf16e93c2ca76f184e76b1564/pydantic_core-2.41.5-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:941103c9be18ac8daf7b7adca8228f8ed6bb7a1849020f643b3a14d15b1924d9", size = 2120403, upload-time = "2025-11-04T13:40:25.248Z" },
+ { url = "https://files.pythonhosted.org/packages/94/02/abfa0e0bda67faa65fef1c84971c7e45928e108fe24333c81f3bfe35d5f5/pydantic_core-2.41.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:112e305c3314f40c93998e567879e887a3160bb8689ef3d2c04b6cc62c33ac34", size = 1896206, upload-time = "2025-11-04T13:40:27.099Z" },
+ { url = "https://files.pythonhosted.org/packages/15/df/a4c740c0943e93e6500f9eb23f4ca7ec9bf71b19e608ae5b579678c8d02f/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cbaad15cb0c90aa221d43c00e77bb33c93e8d36e0bf74760cd00e732d10a6a0", size = 1919307, upload-time = "2025-11-04T13:40:29.806Z" },
+ { url = "https://files.pythonhosted.org/packages/9a/e3/6324802931ae1d123528988e0e86587c2072ac2e5394b4bc2bc34b61ff6e/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:03ca43e12fab6023fc79d28ca6b39b05f794ad08ec2feccc59a339b02f2b3d33", size = 2063258, upload-time = "2025-11-04T13:40:33.544Z" },
+ { url = "https://files.pythonhosted.org/packages/c9/d4/2230d7151d4957dd79c3044ea26346c148c98fbf0ee6ebd41056f2d62ab5/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dc799088c08fa04e43144b164feb0c13f9a0bc40503f8df3e9fde58a3c0c101e", size = 2214917, upload-time = "2025-11-04T13:40:35.479Z" },
+ { url = "https://files.pythonhosted.org/packages/e6/9f/eaac5df17a3672fef0081b6c1bb0b82b33ee89aa5cec0d7b05f52fd4a1fa/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:97aeba56665b4c3235a0e52b2c2f5ae9cd071b8a8310ad27bddb3f7fb30e9aa2", size = 2332186, upload-time = "2025-11-04T13:40:37.436Z" },
+ { url = "https://files.pythonhosted.org/packages/cf/4e/35a80cae583a37cf15604b44240e45c05e04e86f9cfd766623149297e971/pydantic_core-2.41.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:406bf18d345822d6c21366031003612b9c77b3e29ffdb0f612367352aab7d586", size = 2073164, upload-time = "2025-11-04T13:40:40.289Z" },
+ { url = "https://files.pythonhosted.org/packages/bf/e3/f6e262673c6140dd3305d144d032f7bd5f7497d3871c1428521f19f9efa2/pydantic_core-2.41.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b93590ae81f7010dbe380cdeab6f515902ebcbefe0b9327cc4804d74e93ae69d", size = 2179146, upload-time = "2025-11-04T13:40:42.809Z" },
+ { url = "https://files.pythonhosted.org/packages/75/c7/20bd7fc05f0c6ea2056a4565c6f36f8968c0924f19b7d97bbfea55780e73/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:01a3d0ab748ee531f4ea6c3e48ad9dac84ddba4b0d82291f87248f2f9de8d740", size = 2137788, upload-time = "2025-11-04T13:40:44.752Z" },
+ { url = "https://files.pythonhosted.org/packages/3a/8d/34318ef985c45196e004bc46c6eab2eda437e744c124ef0dbe1ff2c9d06b/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:6561e94ba9dacc9c61bce40e2d6bdc3bfaa0259d3ff36ace3b1e6901936d2e3e", size = 2340133, upload-time = "2025-11-04T13:40:46.66Z" },
+ { url = "https://files.pythonhosted.org/packages/9c/59/013626bf8c78a5a5d9350d12e7697d3d4de951a75565496abd40ccd46bee/pydantic_core-2.41.5-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:915c3d10f81bec3a74fbd4faebe8391013ba61e5a1a8d48c4455b923bdda7858", size = 2324852, upload-time = "2025-11-04T13:40:48.575Z" },
+ { url = "https://files.pythonhosted.org/packages/1a/d9/c248c103856f807ef70c18a4f986693a46a8ffe1602e5d361485da502d20/pydantic_core-2.41.5-cp313-cp313-win32.whl", hash = "sha256:650ae77860b45cfa6e2cdafc42618ceafab3a2d9a3811fcfbd3bbf8ac3c40d36", size = 1994679, upload-time = "2025-11-04T13:40:50.619Z" },
+ { url = "https://files.pythonhosted.org/packages/9e/8b/341991b158ddab181cff136acd2552c9f35bd30380422a639c0671e99a91/pydantic_core-2.41.5-cp313-cp313-win_amd64.whl", hash = "sha256:79ec52ec461e99e13791ec6508c722742ad745571f234ea6255bed38c6480f11", size = 2019766, upload-time = "2025-11-04T13:40:52.631Z" },
+ { url = "https://files.pythonhosted.org/packages/73/7d/f2f9db34af103bea3e09735bb40b021788a5e834c81eedb541991badf8f5/pydantic_core-2.41.5-cp313-cp313-win_arm64.whl", hash = "sha256:3f84d5c1b4ab906093bdc1ff10484838aca54ef08de4afa9de0f5f14d69639cd", size = 1981005, upload-time = "2025-11-04T13:40:54.734Z" },
+ { url = "https://files.pythonhosted.org/packages/ea/28/46b7c5c9635ae96ea0fbb779e271a38129df2550f763937659ee6c5dbc65/pydantic_core-2.41.5-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:3f37a19d7ebcdd20b96485056ba9e8b304e27d9904d233d7b1015db320e51f0a", size = 2119622, upload-time = "2025-11-04T13:40:56.68Z" },
+ { url = "https://files.pythonhosted.org/packages/74/1a/145646e5687e8d9a1e8d09acb278c8535ebe9e972e1f162ed338a622f193/pydantic_core-2.41.5-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:1d1d9764366c73f996edd17abb6d9d7649a7eb690006ab6adbda117717099b14", size = 1891725, upload-time = "2025-11-04T13:40:58.807Z" },
+ { url = "https://files.pythonhosted.org/packages/23/04/e89c29e267b8060b40dca97bfc64a19b2a3cf99018167ea1677d96368273/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25e1c2af0fce638d5f1988b686f3b3ea8cd7de5f244ca147c777769e798a9cd1", size = 1915040, upload-time = "2025-11-04T13:41:00.853Z" },
+ { url = "https://files.pythonhosted.org/packages/84/a3/15a82ac7bd97992a82257f777b3583d3e84bdb06ba6858f745daa2ec8a85/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:506d766a8727beef16b7adaeb8ee6217c64fc813646b424d0804d67c16eddb66", size = 2063691, upload-time = "2025-11-04T13:41:03.504Z" },
+ { url = "https://files.pythonhosted.org/packages/74/9b/0046701313c6ef08c0c1cf0e028c67c770a4e1275ca73131563c5f2a310a/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4819fa52133c9aa3c387b3328f25c1facc356491e6135b459f1de698ff64d869", size = 2213897, upload-time = "2025-11-04T13:41:05.804Z" },
+ { url = "https://files.pythonhosted.org/packages/8a/cd/6bac76ecd1b27e75a95ca3a9a559c643b3afcd2dd62086d4b7a32a18b169/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b761d210c9ea91feda40d25b4efe82a1707da2ef62901466a42492c028553a2", size = 2333302, upload-time = "2025-11-04T13:41:07.809Z" },
+ { url = "https://files.pythonhosted.org/packages/4c/d2/ef2074dc020dd6e109611a8be4449b98cd25e1b9b8a303c2f0fca2f2bcf7/pydantic_core-2.41.5-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:22f0fb8c1c583a3b6f24df2470833b40207e907b90c928cc8d3594b76f874375", size = 2064877, upload-time = "2025-11-04T13:41:09.827Z" },
+ { url = "https://files.pythonhosted.org/packages/18/66/e9db17a9a763d72f03de903883c057b2592c09509ccfe468187f2a2eef29/pydantic_core-2.41.5-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:2782c870e99878c634505236d81e5443092fba820f0373997ff75f90f68cd553", size = 2180680, upload-time = "2025-11-04T13:41:12.379Z" },
+ { url = "https://files.pythonhosted.org/packages/d3/9e/3ce66cebb929f3ced22be85d4c2399b8e85b622db77dad36b73c5387f8f8/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:0177272f88ab8312479336e1d777f6b124537d47f2123f89cb37e0accea97f90", size = 2138960, upload-time = "2025-11-04T13:41:14.627Z" },
+ { url = "https://files.pythonhosted.org/packages/a6/62/205a998f4327d2079326b01abee48e502ea739d174f0a89295c481a2272e/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_armv7l.whl", hash = "sha256:63510af5e38f8955b8ee5687740d6ebf7c2a0886d15a6d65c32814613681bc07", size = 2339102, upload-time = "2025-11-04T13:41:16.868Z" },
+ { url = "https://files.pythonhosted.org/packages/3c/0d/f05e79471e889d74d3d88f5bd20d0ed189ad94c2423d81ff8d0000aab4ff/pydantic_core-2.41.5-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:e56ba91f47764cc14f1daacd723e3e82d1a89d783f0f5afe9c364b8bb491ccdb", size = 2326039, upload-time = "2025-11-04T13:41:18.934Z" },
+ { url = "https://files.pythonhosted.org/packages/ec/e1/e08a6208bb100da7e0c4b288eed624a703f4d129bde2da475721a80cab32/pydantic_core-2.41.5-cp314-cp314-win32.whl", hash = "sha256:aec5cf2fd867b4ff45b9959f8b20ea3993fc93e63c7363fe6851424c8a7e7c23", size = 1995126, upload-time = "2025-11-04T13:41:21.418Z" },
+ { url = "https://files.pythonhosted.org/packages/48/5d/56ba7b24e9557f99c9237e29f5c09913c81eeb2f3217e40e922353668092/pydantic_core-2.41.5-cp314-cp314-win_amd64.whl", hash = "sha256:8e7c86f27c585ef37c35e56a96363ab8de4e549a95512445b85c96d3e2f7c1bf", size = 2015489, upload-time = "2025-11-04T13:41:24.076Z" },
+ { url = "https://files.pythonhosted.org/packages/4e/bb/f7a190991ec9e3e0ba22e4993d8755bbc4a32925c0b5b42775c03e8148f9/pydantic_core-2.41.5-cp314-cp314-win_arm64.whl", hash = "sha256:e672ba74fbc2dc8eea59fb6d4aed6845e6905fc2a8afe93175d94a83ba2a01a0", size = 1977288, upload-time = "2025-11-04T13:41:26.33Z" },
+ { url = "https://files.pythonhosted.org/packages/92/ed/77542d0c51538e32e15afe7899d79efce4b81eee631d99850edc2f5e9349/pydantic_core-2.41.5-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:8566def80554c3faa0e65ac30ab0932b9e3a5cd7f8323764303d468e5c37595a", size = 2120255, upload-time = "2025-11-04T13:41:28.569Z" },
+ { url = "https://files.pythonhosted.org/packages/bb/3d/6913dde84d5be21e284439676168b28d8bbba5600d838b9dca99de0fad71/pydantic_core-2.41.5-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:b80aa5095cd3109962a298ce14110ae16b8c1aece8b72f9dafe81cf597ad80b3", size = 1863760, upload-time = "2025-11-04T13:41:31.055Z" },
+ { url = "https://files.pythonhosted.org/packages/5a/f0/e5e6b99d4191da102f2b0eb9687aaa7f5bea5d9964071a84effc3e40f997/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3006c3dd9ba34b0c094c544c6006cc79e87d8612999f1a5d43b769b89181f23c", size = 1878092, upload-time = "2025-11-04T13:41:33.21Z" },
+ { url = "https://files.pythonhosted.org/packages/71/48/36fb760642d568925953bcc8116455513d6e34c4beaa37544118c36aba6d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72f6c8b11857a856bcfa48c86f5368439f74453563f951e473514579d44aa612", size = 2053385, upload-time = "2025-11-04T13:41:35.508Z" },
+ { url = "https://files.pythonhosted.org/packages/20/25/92dc684dd8eb75a234bc1c764b4210cf2646479d54b47bf46061657292a8/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cb1b2f9742240e4bb26b652a5aeb840aa4b417c7748b6f8387927bc6e45e40d", size = 2218832, upload-time = "2025-11-04T13:41:37.732Z" },
+ { url = "https://files.pythonhosted.org/packages/e2/09/f53e0b05023d3e30357d82eb35835d0f6340ca344720a4599cd663dca599/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bd3d54f38609ff308209bd43acea66061494157703364ae40c951f83ba99a1a9", size = 2327585, upload-time = "2025-11-04T13:41:40Z" },
+ { url = "https://files.pythonhosted.org/packages/aa/4e/2ae1aa85d6af35a39b236b1b1641de73f5a6ac4d5a7509f77b814885760c/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ff4321e56e879ee8d2a879501c8e469414d948f4aba74a2d4593184eb326660", size = 2041078, upload-time = "2025-11-04T13:41:42.323Z" },
+ { url = "https://files.pythonhosted.org/packages/cd/13/2e215f17f0ef326fc72afe94776edb77525142c693767fc347ed6288728d/pydantic_core-2.41.5-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0d2568a8c11bf8225044aa94409e21da0cb09dcdafe9ecd10250b2baad531a9", size = 2173914, upload-time = "2025-11-04T13:41:45.221Z" },
+ { url = "https://files.pythonhosted.org/packages/02/7a/f999a6dcbcd0e5660bc348a3991c8915ce6599f4f2c6ac22f01d7a10816c/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:a39455728aabd58ceabb03c90e12f71fd30fa69615760a075b9fec596456ccc3", size = 2129560, upload-time = "2025-11-04T13:41:47.474Z" },
+ { url = "https://files.pythonhosted.org/packages/3a/b1/6c990ac65e3b4c079a4fb9f5b05f5b013afa0f4ed6780a3dd236d2cbdc64/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_armv7l.whl", hash = "sha256:239edca560d05757817c13dc17c50766136d21f7cd0fac50295499ae24f90fdf", size = 2329244, upload-time = "2025-11-04T13:41:49.992Z" },
+ { url = "https://files.pythonhosted.org/packages/d9/02/3c562f3a51afd4d88fff8dffb1771b30cfdfd79befd9883ee094f5b6c0d8/pydantic_core-2.41.5-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:2a5e06546e19f24c6a96a129142a75cee553cc018ffee48a460059b1185f4470", size = 2331955, upload-time = "2025-11-04T13:41:54.079Z" },
+ { url = "https://files.pythonhosted.org/packages/5c/96/5fb7d8c3c17bc8c62fdb031c47d77a1af698f1d7a406b0f79aaa1338f9ad/pydantic_core-2.41.5-cp314-cp314t-win32.whl", hash = "sha256:b4ececa40ac28afa90871c2cc2b9ffd2ff0bf749380fbdf57d165fd23da353aa", size = 1988906, upload-time = "2025-11-04T13:41:56.606Z" },
+ { url = "https://files.pythonhosted.org/packages/22/ed/182129d83032702912c2e2d8bbe33c036f342cc735737064668585dac28f/pydantic_core-2.41.5-cp314-cp314t-win_amd64.whl", hash = "sha256:80aa89cad80b32a912a65332f64a4450ed00966111b6615ca6816153d3585a8c", size = 1981607, upload-time = "2025-11-04T13:41:58.889Z" },
+ { url = "https://files.pythonhosted.org/packages/9f/ed/068e41660b832bb0b1aa5b58011dea2a3fe0ba7861ff38c4d4904c1c1a99/pydantic_core-2.41.5-cp314-cp314t-win_arm64.whl", hash = "sha256:35b44f37a3199f771c3eaa53051bc8a70cd7b54f333531c59e29fd4db5d15008", size = 1974769, upload-time = "2025-11-04T13:42:01.186Z" },
]
[[package]]
name = "pydantic-settings"
-version = "2.10.1"
+version = "2.12.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "pydantic" },
{ name = "python-dotenv" },
{ name = "typing-inspection" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/68/85/1ea668bbab3c50071ca613c6ab30047fb36ab0da1b92fa8f17bbc38fd36c/pydantic_settings-2.10.1.tar.gz", hash = "sha256:06f0062169818d0f5524420a360d632d5857b83cffd4d42fe29597807a1614ee", size = 172583, upload-time = "2025-06-24T13:26:46.841Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/43/4b/ac7e0aae12027748076d72a8764ff1c9d82ca75a7a52622e67ed3f765c54/pydantic_settings-2.12.0.tar.gz", hash = "sha256:005538ef951e3c2a68e1c08b292b5f2e71490def8589d4221b95dab00dafcfd0", size = 194184, upload-time = "2025-11-10T14:25:47.013Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/58/f0/427018098906416f580e3cf1366d3b1abfb408a0652e9f31600c24a1903c/pydantic_settings-2.10.1-py3-none-any.whl", hash = "sha256:a60952460b99cf661dc25c29c0ef171721f98bfcb52ef8d9ea4c943d7c8cc796", size = 45235, upload-time = "2025-06-24T13:26:45.485Z" },
+ { url = "https://files.pythonhosted.org/packages/c1/60/5d4751ba3f4a40a6891f24eec885f51afd78d208498268c734e256fb13c4/pydantic_settings-2.12.0-py3-none-any.whl", hash = "sha256:fddb9fd99a5b18da837b29710391e945b1e30c135477f484084ee513adb93809", size = 51880, upload-time = "2025-11-10T14:25:45.546Z" },
]
[[package]]
@@ -844,15 +966,32 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" },
]
+[[package]]
+name = "pyjwt"
+version = "2.10.1"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785, upload-time = "2024-11-28T03:43:29.933Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997, upload-time = "2024-11-28T03:43:27.893Z" },
+]
+
+[package.optional-dependencies]
+crypto = [
+ { name = "cryptography" },
+]
+
[[package]]
name = "pyperclip"
-version = "1.9.0"
+version = "1.11.0"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/30/23/2f0a3efc4d6a32f3b63cdff36cd398d9701d26cda58e3ab97ac79fb5e60d/pyperclip-1.9.0.tar.gz", hash = "sha256:b7de0142ddc81bfc5c7507eea19da920b92252b548b96186caf94a5e2527d310", size = 20961, upload-time = "2024-06-18T20:38:48.401Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/e8/52/d87eba7cb129b81563019d1679026e7a112ef76855d6159d24754dbd2a51/pyperclip-1.11.0.tar.gz", hash = "sha256:244035963e4428530d9e3a6101a1ef97209c6825edab1567beac148ccc1db1b6", size = 12185, upload-time = "2025-09-26T14:40:37.245Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/df/80/fc9d01d5ed37ba4c42ca2b55b4339ae6e200b456be3a1aaddf4a9fa99b8c/pyperclip-1.11.0-py3-none-any.whl", hash = "sha256:299403e9ff44581cb9ba2ffeed69c7aa96a008622ad0c46cb575ca75b5b84273", size = 11063, upload-time = "2025-09-26T14:40:36.069Z" },
+]
[[package]]
name = "pytest"
-version = "8.4.1"
+version = "9.0.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "colorama", marker = "sys_platform == 'win32'" },
@@ -861,69 +1000,69 @@ dependencies = [
{ name = "pluggy" },
{ name = "pygments" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload-time = "2025-06-18T05:48:06.109Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/07/56/f013048ac4bc4c1d9be45afd4ab209ea62822fb1598f40687e6bf45dcea4/pytest-9.0.1.tar.gz", hash = "sha256:3e9c069ea73583e255c3b21cf46b8d3c56f6e3a1a8f6da94ccb0fcf57b9d73c8", size = 1564125, upload-time = "2025-11-12T13:05:09.333Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload-time = "2025-06-18T05:48:03.955Z" },
+ { url = "https://files.pythonhosted.org/packages/0b/8b/6300fb80f858cda1c51ffa17075df5d846757081d11ab4aa35cef9e6258b/pytest-9.0.1-py3-none-any.whl", hash = "sha256:67be0030d194df2dfa7b556f2e56fb3c3315bd5c8822c6951162b92b32ce7dad", size = 373668, upload-time = "2025-11-12T13:05:07.379Z" },
]
[[package]]
name = "pytest-asyncio"
-version = "1.1.0"
+version = "1.3.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "pytest" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/4e/51/f8794af39eeb870e87a8c8068642fc07bce0c854d6865d7dd0f2a9d338c2/pytest_asyncio-1.1.0.tar.gz", hash = "sha256:796aa822981e01b68c12e4827b8697108f7205020f24b5793b3c41555dab68ea", size = 46652, upload-time = "2025-07-16T04:29:26.393Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/90/2c/8af215c0f776415f3590cac4f9086ccefd6fd463befeae41cd4d3f193e5a/pytest_asyncio-1.3.0.tar.gz", hash = "sha256:d7f52f36d231b80ee124cd216ffb19369aa168fc10095013c6b014a34d3ee9e5", size = 50087, upload-time = "2025-11-10T16:07:47.256Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/c7/9d/bf86eddabf8c6c9cb1ea9a869d6873b46f105a5d292d3a6f7071f5b07935/pytest_asyncio-1.1.0-py3-none-any.whl", hash = "sha256:5fe2d69607b0bd75c656d1211f969cadba035030156745ee09e7d71740e58ecf", size = 15157, upload-time = "2025-07-16T04:29:24.929Z" },
+ { url = "https://files.pythonhosted.org/packages/e5/35/f8b19922b6a25bc0880171a2f1a003eaeb93657475193ab516fd87cac9da/pytest_asyncio-1.3.0-py3-none-any.whl", hash = "sha256:611e26147c7f77640e6d0a92a38ed17c3e9848063698d5c93d5aa7aa11cebff5", size = 15075, upload-time = "2025-11-10T16:07:45.537Z" },
]
[[package]]
name = "pytest-cov"
-version = "6.2.1"
+version = "7.0.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "coverage" },
{ name = "pluggy" },
{ name = "pytest" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/18/99/668cade231f434aaa59bbfbf49469068d2ddd945000621d3d165d2e7dd7b/pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2", size = 69432, upload-time = "2025-06-12T10:47:47.684Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/5e/f7/c933acc76f5208b3b00089573cf6a2bc26dc80a8aece8f52bb7d6b1855ca/pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1", size = 54328, upload-time = "2025-09-09T10:57:02.113Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/bc/16/4ea354101abb1287856baa4af2732be351c7bee728065aed451b678153fd/pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5", size = 24644, upload-time = "2025-06-12T10:47:45.932Z" },
+ { url = "https://files.pythonhosted.org/packages/ee/49/1377b49de7d0c1ce41292161ea0f721913fa8722c19fb9c1e3aa0367eecb/pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861", size = 22424, upload-time = "2025-09-09T10:57:00.695Z" },
]
[[package]]
name = "pytest-httpx"
-version = "0.35.0"
+version = "0.36.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "httpx" },
{ name = "pytest" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/1f/89/5b12b7b29e3d0af3a4b9c071ee92fa25a9017453731a38f08ba01c280f4c/pytest_httpx-0.35.0.tar.gz", hash = "sha256:d619ad5d2e67734abfbb224c3d9025d64795d4b8711116b1a13f72a251ae511f", size = 54146, upload-time = "2024-11-28T19:16:54.237Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/5574834da9499066fa1a5ea9c336f94dba2eae02298d36dab192fcf95c86/pytest_httpx-0.36.0.tar.gz", hash = "sha256:9edb66a5fd4388ce3c343189bc67e7e1cb50b07c2e3fc83b97d511975e8a831b", size = 56793, upload-time = "2025-12-02T16:34:57.414Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/b0/ed/026d467c1853dd83102411a78126b4842618e86c895f93528b0528c7a620/pytest_httpx-0.35.0-py3-none-any.whl", hash = "sha256:ee11a00ffcea94a5cbff47af2114d34c5b231c326902458deed73f9c459fd744", size = 19442, upload-time = "2024-11-28T19:16:52.787Z" },
+ { url = "https://files.pythonhosted.org/packages/e2/d2/1eb1ea9c84f0d2033eb0b49675afdc71aa4ea801b74615f00f3c33b725e3/pytest_httpx-0.36.0-py3-none-any.whl", hash = "sha256:bd4c120bb80e142df856e825ec9f17981effb84d159f9fa29ed97e2357c3a9c8", size = 20229, upload-time = "2025-12-02T16:34:56.45Z" },
]
[[package]]
name = "pytest-mock"
-version = "3.14.1"
+version = "3.15.1"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "pytest" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/71/28/67172c96ba684058a4d24ffe144d64783d2a270d0af0d9e792737bddc75c/pytest_mock-3.14.1.tar.gz", hash = "sha256:159e9edac4c451ce77a5cdb9fc5d1100708d2dd4ba3c3df572f14097351af80e", size = 33241, upload-time = "2025-05-26T13:58:45.167Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/68/14/eb014d26be205d38ad5ad20d9a80f7d201472e08167f0bb4361e251084a9/pytest_mock-3.15.1.tar.gz", hash = "sha256:1849a238f6f396da19762269de72cb1814ab44416fa73a8686deac10b0d87a0f", size = 34036, upload-time = "2025-09-16T16:37:27.081Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/b2/05/77b60e520511c53d1c1ca75f1930c7dd8e971d0c4379b7f4b3f9644685ba/pytest_mock-3.14.1-py3-none-any.whl", hash = "sha256:178aefcd11307d874b4cd3100344e7e2d888d9791a6a1d9bfe90fbc1b74fd1d0", size = 9923, upload-time = "2025-05-26T13:58:43.487Z" },
+ { url = "https://files.pythonhosted.org/packages/5a/cc/06253936f4a7fa2e0f48dfe6d851d9c56df896a9ab09ac019d70b760619c/pytest_mock-3.15.1-py3-none-any.whl", hash = "sha256:0a25e2eb88fe5168d535041d09a4529a188176ae608a6d249ee65abc0949630d", size = 10095, upload-time = "2025-09-16T16:37:25.734Z" },
]
[[package]]
name = "python-dotenv"
-version = "1.1.1"
+version = "1.2.1"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/f6/b0/4bc07ccd3572a2f9df7e6782f52b0c6c90dcbb803ac4a167702d7d0dfe1e/python_dotenv-1.1.1.tar.gz", hash = "sha256:a8a6399716257f45be6a007360200409fce5cda2661e3dec71d23dc15f6189ab", size = 41978, upload-time = "2025-06-24T04:21:07.341Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/f0/26/19cadc79a718c5edbec86fd4919a6b6d3f681039a2f6d66d14be94e75fb9/python_dotenv-1.2.1.tar.gz", hash = "sha256:42667e897e16ab0d66954af0e60a9caa94f0fd4ecf3aaf6d2d260eec1aa36ad6", size = 44221, upload-time = "2025-10-26T15:12:10.434Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/5f/ed/539768cf28c661b5b068d66d96a2f155c4971a5d55684a514c1a0e0dec2f/python_dotenv-1.1.1-py3-none-any.whl", hash = "sha256:31f23644fe2602f88ff55e1f5c79ba497e01224ee7737937930c448e4d0e24dc", size = 20556, upload-time = "2025-06-24T04:21:06.073Z" },
+ { url = "https://files.pythonhosted.org/packages/14/1b/a298b06749107c305e1fe0f814c6c74aea7b2f1e10989cb30f544a1b3253/python_dotenv-1.2.1-py3-none-any.whl", hash = "sha256:b81ee9561e9ca4004139c6cbba3a238c32b03e4894671e181b671e8cb8425d61", size = 21230, upload-time = "2025-10-26T15:12:09.109Z" },
]
[[package]]
@@ -935,6 +1074,15 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546, upload-time = "2024-12-16T19:45:44.423Z" },
]
+[[package]]
+name = "pytokens"
+version = "0.3.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/4e/8d/a762be14dae1c3bf280202ba3172020b2b0b4c537f94427435f19c413b72/pytokens-0.3.0.tar.gz", hash = "sha256:2f932b14ed08de5fcf0b391ace2642f858f1394c0857202959000b68ed7a458a", size = 17644, upload-time = "2025-11-05T13:36:35.34Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/84/25/d9db8be44e205a124f6c98bc0324b2bb149b7431c53877fc6d1038dddaf5/pytokens-0.3.0-py3-none-any.whl", hash = "sha256:95b2b5eaf832e469d141a378872480ede3f251a5a5041b8ec6e581d3ac71bbf3", size = 12195, upload-time = "2025-11-05T13:36:33.183Z" },
+]
+
[[package]]
name = "pywin32"
version = "311"
@@ -950,19 +1098,38 @@ wheels = [
[[package]]
name = "pyyaml"
-version = "6.0.2"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload-time = "2024-08-06T20:32:43.4Z" },
- { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload-time = "2024-08-06T20:32:44.801Z" },
- { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload-time = "2024-08-06T20:32:46.432Z" },
- { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload-time = "2024-08-06T20:32:51.188Z" },
- { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload-time = "2024-08-06T20:32:53.019Z" },
- { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload-time = "2024-08-06T20:32:54.708Z" },
- { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload-time = "2024-08-06T20:32:56.985Z" },
- { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload-time = "2024-08-06T20:33:03.001Z" },
- { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload-time = "2024-08-06T20:33:04.33Z" },
+version = "6.0.3"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" },
+ { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" },
+ { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" },
+ { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" },
+ { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" },
+ { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" },
+ { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" },
+ { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" },
+ { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" },
+ { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" },
+ { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" },
+ { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" },
+ { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" },
+ { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" },
+ { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" },
+ { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" },
+ { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" },
+ { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" },
+ { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" },
+ { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" },
+ { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" },
+ { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" },
+ { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" },
+ { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" },
+ { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" },
+ { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" },
+ { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" },
+ { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" },
]
[[package]]
@@ -980,7 +1147,7 @@ wheels = [
[[package]]
name = "requests"
-version = "2.32.4"
+version = "2.32.5"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "certifi" },
@@ -988,9 +1155,9 @@ dependencies = [
{ name = "idna" },
{ name = "urllib3" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload-time = "2025-06-09T16:43:07.34Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload-time = "2025-06-09T16:43:05.728Z" },
+ { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" },
]
[[package]]
@@ -1005,176 +1172,146 @@ wheels = [
{ url = "https://files.pythonhosted.org/packages/8e/67/afbb0978d5399bc9ea200f1d4489a23c9a1dad4eee6376242b8182389c79/respx-0.22.0-py2.py3-none-any.whl", hash = "sha256:631128d4c9aba15e56903fb5f66fb1eff412ce28dd387ca3a81339e52dbd3ad0", size = 25127, upload-time = "2024-12-19T22:33:57.837Z" },
]
-[[package]]
-name = "rfc3339-validator"
-version = "0.1.4"
-source = { registry = "https://pypi.org/simple" }
-dependencies = [
- { name = "six" },
-]
-sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload-time = "2021-05-12T16:37:54.178Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload-time = "2021-05-12T16:37:52.536Z" },
-]
-
[[package]]
name = "rich"
-version = "14.1.0"
+version = "14.2.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "markdown-it-py" },
{ name = "pygments" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/fe/75/af448d8e52bf1d8fa6a9d089ca6c07ff4453d86c65c145d0a300bb073b9b/rich-14.1.0.tar.gz", hash = "sha256:e497a48b844b0320d45007cdebfeaeed8db2a4f4bcf49f15e455cfc4af11eaa8", size = 224441, upload-time = "2025-07-25T07:32:58.125Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/fb/d2/8920e102050a0de7bfabeb4c4614a49248cf8d5d7a8d01885fbb24dc767a/rich-14.2.0.tar.gz", hash = "sha256:73ff50c7c0c1c77c8243079283f4edb376f0f6442433aecb8ce7e6d0b92d1fe4", size = 219990, upload-time = "2025-10-09T14:16:53.064Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/e3/30/3c4d035596d3cf444529e0b2953ad0466f6049528a879d27534700580395/rich-14.1.0-py3-none-any.whl", hash = "sha256:536f5f1785986d6dbdea3c75205c473f970777b4a0d6c6dd1b696aa05a3fa04f", size = 243368, upload-time = "2025-07-25T07:32:56.73Z" },
+ { url = "https://files.pythonhosted.org/packages/25/7a/b0178788f8dc6cafce37a212c99565fa1fe7872c70c6c9c1e1a372d9d88f/rich-14.2.0-py3-none-any.whl", hash = "sha256:76bc51fe2e57d2b1be1f96c524b890b816e334ab4c1e45888799bfaab0021edd", size = 243393, upload-time = "2025-10-09T14:16:51.245Z" },
]
[[package]]
name = "rich-rst"
-version = "1.3.1"
+version = "1.3.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "docutils" },
{ name = "rich" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/b0/69/5514c3a87b5f10f09a34bb011bc0927bc12c596c8dae5915604e71abc386/rich_rst-1.3.1.tar.gz", hash = "sha256:fad46e3ba42785ea8c1785e2ceaa56e0ffa32dbe5410dec432f37e4107c4f383", size = 13839, upload-time = "2024-04-30T04:40:38.125Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/bc/6d/a506aaa4a9eaa945ed8ab2b7347859f53593864289853c5d6d62b77246e0/rich_rst-1.3.2.tar.gz", hash = "sha256:a1196fdddf1e364b02ec68a05e8ff8f6914fee10fbca2e6b6735f166bb0da8d4", size = 14936, upload-time = "2025-10-14T16:49:45.332Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/fd/bc/cc4e3dbc5e7992398dcb7a8eda0cbcf4fb792a0cdb93f857b478bf3cf884/rich_rst-1.3.1-py3-none-any.whl", hash = "sha256:498a74e3896507ab04492d326e794c3ef76e7cda078703aa592d1853d91098c1", size = 11621, upload-time = "2024-04-30T04:40:32.619Z" },
+ { url = "https://files.pythonhosted.org/packages/13/2f/b4530fbf948867702d0a3f27de4a6aab1d156f406d72852ab902c4d04de9/rich_rst-1.3.2-py3-none-any.whl", hash = "sha256:a99b4907cbe118cf9d18b0b44de272efa61f15117c61e39ebdc431baf5df722a", size = 12567, upload-time = "2025-10-14T16:49:42.953Z" },
]
[[package]]
name = "rpds-py"
-version = "0.27.0"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/1e/d9/991a0dee12d9fc53ed027e26a26a64b151d77252ac477e22666b9688bc16/rpds_py-0.27.0.tar.gz", hash = "sha256:8b23cf252f180cda89220b378d917180f29d313cd6a07b2431c0d3b776aae86f", size = 27420, upload-time = "2025-08-07T08:26:39.624Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/81/d2/dfdfd42565a923b9e5a29f93501664f5b984a802967d48d49200ad71be36/rpds_py-0.27.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:443d239d02d9ae55b74015234f2cd8eb09e59fbba30bf60baeb3123ad4c6d5ff", size = 362133, upload-time = "2025-08-07T08:24:04.508Z" },
- { url = "https://files.pythonhosted.org/packages/ac/4a/0a2e2460c4b66021d349ce9f6331df1d6c75d7eea90df9785d333a49df04/rpds_py-0.27.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b8a7acf04fda1f30f1007f3cc96d29d8cf0a53e626e4e1655fdf4eabc082d367", size = 347128, upload-time = "2025-08-07T08:24:05.695Z" },
- { url = "https://files.pythonhosted.org/packages/35/8d/7d1e4390dfe09d4213b3175a3f5a817514355cb3524593380733204f20b9/rpds_py-0.27.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d0f92b78cfc3b74a42239fdd8c1266f4715b573204c234d2f9fc3fc7a24f185", size = 384027, upload-time = "2025-08-07T08:24:06.841Z" },
- { url = "https://files.pythonhosted.org/packages/c1/65/78499d1a62172891c8cd45de737b2a4b84a414b6ad8315ab3ac4945a5b61/rpds_py-0.27.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ce4ed8e0c7dbc5b19352b9c2c6131dd23b95fa8698b5cdd076307a33626b72dc", size = 399973, upload-time = "2025-08-07T08:24:08.143Z" },
- { url = "https://files.pythonhosted.org/packages/10/a1/1c67c1d8cc889107b19570bb01f75cf49852068e95e6aee80d22915406fc/rpds_py-0.27.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fde355b02934cc6b07200cc3b27ab0c15870a757d1a72fd401aa92e2ea3c6bfe", size = 515295, upload-time = "2025-08-07T08:24:09.711Z" },
- { url = "https://files.pythonhosted.org/packages/df/27/700ec88e748436b6c7c4a2262d66e80f8c21ab585d5e98c45e02f13f21c0/rpds_py-0.27.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:13bbc4846ae4c993f07c93feb21a24d8ec637573d567a924b1001e81c8ae80f9", size = 406737, upload-time = "2025-08-07T08:24:11.182Z" },
- { url = "https://files.pythonhosted.org/packages/33/cc/6b0ee8f0ba3f2df2daac1beda17fde5cf10897a7d466f252bd184ef20162/rpds_py-0.27.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be0744661afbc4099fef7f4e604e7f1ea1be1dd7284f357924af12a705cc7d5c", size = 385898, upload-time = "2025-08-07T08:24:12.798Z" },
- { url = "https://files.pythonhosted.org/packages/e8/7e/c927b37d7d33c0a0ebf249cc268dc2fcec52864c1b6309ecb960497f2285/rpds_py-0.27.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:069e0384a54f427bd65d7fda83b68a90606a3835901aaff42185fcd94f5a9295", size = 405785, upload-time = "2025-08-07T08:24:14.906Z" },
- { url = "https://files.pythonhosted.org/packages/5b/d2/8ed50746d909dcf402af3fa58b83d5a590ed43e07251d6b08fad1a535ba6/rpds_py-0.27.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4bc262ace5a1a7dc3e2eac2fa97b8257ae795389f688b5adf22c5db1e2431c43", size = 419760, upload-time = "2025-08-07T08:24:16.129Z" },
- { url = "https://files.pythonhosted.org/packages/d3/60/2b2071aee781cb3bd49f94d5d35686990b925e9b9f3e3d149235a6f5d5c1/rpds_py-0.27.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2fe6e18e5c8581f0361b35ae575043c7029d0a92cb3429e6e596c2cdde251432", size = 561201, upload-time = "2025-08-07T08:24:17.645Z" },
- { url = "https://files.pythonhosted.org/packages/98/1f/27b67304272521aaea02be293fecedce13fa351a4e41cdb9290576fc6d81/rpds_py-0.27.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d93ebdb82363d2e7bec64eecdc3632b59e84bd270d74fe5be1659f7787052f9b", size = 591021, upload-time = "2025-08-07T08:24:18.999Z" },
- { url = "https://files.pythonhosted.org/packages/db/9b/a2fadf823164dd085b1f894be6443b0762a54a7af6f36e98e8fcda69ee50/rpds_py-0.27.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:0954e3a92e1d62e83a54ea7b3fdc9efa5d61acef8488a8a3d31fdafbfb00460d", size = 556368, upload-time = "2025-08-07T08:24:20.54Z" },
- { url = "https://files.pythonhosted.org/packages/24/f3/6d135d46a129cda2e3e6d4c5e91e2cc26ea0428c6cf152763f3f10b6dd05/rpds_py-0.27.0-cp313-cp313-win32.whl", hash = "sha256:2cff9bdd6c7b906cc562a505c04a57d92e82d37200027e8d362518df427f96cd", size = 221236, upload-time = "2025-08-07T08:24:22.144Z" },
- { url = "https://files.pythonhosted.org/packages/c5/44/65d7494f5448ecc755b545d78b188440f81da98b50ea0447ab5ebfdf9bd6/rpds_py-0.27.0-cp313-cp313-win_amd64.whl", hash = "sha256:dc79d192fb76fc0c84f2c58672c17bbbc383fd26c3cdc29daae16ce3d927e8b2", size = 232634, upload-time = "2025-08-07T08:24:23.642Z" },
- { url = "https://files.pythonhosted.org/packages/70/d9/23852410fadab2abb611733933401de42a1964ce6600a3badae35fbd573e/rpds_py-0.27.0-cp313-cp313-win_arm64.whl", hash = "sha256:5b3a5c8089eed498a3af23ce87a80805ff98f6ef8f7bdb70bd1b7dae5105f6ac", size = 222783, upload-time = "2025-08-07T08:24:25.098Z" },
- { url = "https://files.pythonhosted.org/packages/15/75/03447917f78512b34463f4ef11066516067099a0c466545655503bed0c77/rpds_py-0.27.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:90fb790138c1a89a2e58c9282fe1089638401f2f3b8dddd758499041bc6e0774", size = 359154, upload-time = "2025-08-07T08:24:26.249Z" },
- { url = "https://files.pythonhosted.org/packages/6b/fc/4dac4fa756451f2122ddaf136e2c6aeb758dc6fdbe9ccc4bc95c98451d50/rpds_py-0.27.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:010c4843a3b92b54373e3d2291a7447d6c3fc29f591772cc2ea0e9f5c1da434b", size = 343909, upload-time = "2025-08-07T08:24:27.405Z" },
- { url = "https://files.pythonhosted.org/packages/7b/81/723c1ed8e6f57ed9d8c0c07578747a2d3d554aaefc1ab89f4e42cfeefa07/rpds_py-0.27.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c9ce7a9e967afc0a2af7caa0d15a3e9c1054815f73d6a8cb9225b61921b419bd", size = 379340, upload-time = "2025-08-07T08:24:28.714Z" },
- { url = "https://files.pythonhosted.org/packages/98/16/7e3740413de71818ce1997df82ba5f94bae9fff90c0a578c0e24658e6201/rpds_py-0.27.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aa0bf113d15e8abdfee92aa4db86761b709a09954083afcb5bf0f952d6065fdb", size = 391655, upload-time = "2025-08-07T08:24:30.223Z" },
- { url = "https://files.pythonhosted.org/packages/e0/63/2a9f510e124d80660f60ecce07953f3f2d5f0b96192c1365443859b9c87f/rpds_py-0.27.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb91d252b35004a84670dfeafadb042528b19842a0080d8b53e5ec1128e8f433", size = 513017, upload-time = "2025-08-07T08:24:31.446Z" },
- { url = "https://files.pythonhosted.org/packages/2c/4e/cf6ff311d09776c53ea1b4f2e6700b9d43bb4e99551006817ade4bbd6f78/rpds_py-0.27.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:db8a6313dbac934193fc17fe7610f70cd8181c542a91382531bef5ed785e5615", size = 402058, upload-time = "2025-08-07T08:24:32.613Z" },
- { url = "https://files.pythonhosted.org/packages/88/11/5e36096d474cb10f2a2d68b22af60a3bc4164fd8db15078769a568d9d3ac/rpds_py-0.27.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce96ab0bdfcef1b8c371ada2100767ace6804ea35aacce0aef3aeb4f3f499ca8", size = 383474, upload-time = "2025-08-07T08:24:33.767Z" },
- { url = "https://files.pythonhosted.org/packages/db/a2/3dff02805b06058760b5eaa6d8cb8db3eb3e46c9e452453ad5fc5b5ad9fe/rpds_py-0.27.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:7451ede3560086abe1aa27dcdcf55cd15c96b56f543fb12e5826eee6f721f858", size = 400067, upload-time = "2025-08-07T08:24:35.021Z" },
- { url = "https://files.pythonhosted.org/packages/67/87/eed7369b0b265518e21ea836456a4ed4a6744c8c12422ce05bce760bb3cf/rpds_py-0.27.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:32196b5a99821476537b3f7732432d64d93a58d680a52c5e12a190ee0135d8b5", size = 412085, upload-time = "2025-08-07T08:24:36.267Z" },
- { url = "https://files.pythonhosted.org/packages/8b/48/f50b2ab2fbb422fbb389fe296e70b7a6b5ea31b263ada5c61377e710a924/rpds_py-0.27.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a029be818059870664157194e46ce0e995082ac49926f1423c1f058534d2aaa9", size = 555928, upload-time = "2025-08-07T08:24:37.573Z" },
- { url = "https://files.pythonhosted.org/packages/98/41/b18eb51045d06887666c3560cd4bbb6819127b43d758f5adb82b5f56f7d1/rpds_py-0.27.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3841f66c1ffdc6cebce8aed64e36db71466f1dc23c0d9a5592e2a782a3042c79", size = 585527, upload-time = "2025-08-07T08:24:39.391Z" },
- { url = "https://files.pythonhosted.org/packages/be/03/a3dd6470fc76499959b00ae56295b76b4bdf7c6ffc60d62006b1217567e1/rpds_py-0.27.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:42894616da0fc0dcb2ec08a77896c3f56e9cb2f4b66acd76fc8992c3557ceb1c", size = 554211, upload-time = "2025-08-07T08:24:40.6Z" },
- { url = "https://files.pythonhosted.org/packages/bf/d1/ee5fd1be395a07423ac4ca0bcc05280bf95db2b155d03adefeb47d5ebf7e/rpds_py-0.27.0-cp313-cp313t-win32.whl", hash = "sha256:b1fef1f13c842a39a03409e30ca0bf87b39a1e2a305a9924deadb75a43105d23", size = 216624, upload-time = "2025-08-07T08:24:42.204Z" },
- { url = "https://files.pythonhosted.org/packages/1c/94/4814c4c858833bf46706f87349c37ca45e154da7dbbec9ff09f1abeb08cc/rpds_py-0.27.0-cp313-cp313t-win_amd64.whl", hash = "sha256:183f5e221ba3e283cd36fdfbe311d95cd87699a083330b4f792543987167eff1", size = 230007, upload-time = "2025-08-07T08:24:43.329Z" },
- { url = "https://files.pythonhosted.org/packages/0e/a5/8fffe1c7dc7c055aa02df310f9fb71cfc693a4d5ccc5de2d3456ea5fb022/rpds_py-0.27.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:f3cd110e02c5bf17d8fb562f6c9df5c20e73029d587cf8602a2da6c5ef1e32cb", size = 362595, upload-time = "2025-08-07T08:24:44.478Z" },
- { url = "https://files.pythonhosted.org/packages/bc/c7/4e4253fd2d4bb0edbc0b0b10d9f280612ca4f0f990e3c04c599000fe7d71/rpds_py-0.27.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8d0e09cf4863c74106b5265c2c310f36146e2b445ff7b3018a56799f28f39f6f", size = 347252, upload-time = "2025-08-07T08:24:45.678Z" },
- { url = "https://files.pythonhosted.org/packages/f3/c8/3d1a954d30f0174dd6baf18b57c215da03cf7846a9d6e0143304e784cddc/rpds_py-0.27.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64f689ab822f9b5eb6dfc69893b4b9366db1d2420f7db1f6a2adf2a9ca15ad64", size = 384886, upload-time = "2025-08-07T08:24:46.86Z" },
- { url = "https://files.pythonhosted.org/packages/e0/52/3c5835f2df389832b28f9276dd5395b5a965cea34226e7c88c8fbec2093c/rpds_py-0.27.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e36c80c49853b3ffda7aa1831bf175c13356b210c73128c861f3aa93c3cc4015", size = 399716, upload-time = "2025-08-07T08:24:48.174Z" },
- { url = "https://files.pythonhosted.org/packages/40/73/176e46992461a1749686a2a441e24df51ff86b99c2d34bf39f2a5273b987/rpds_py-0.27.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6de6a7f622860af0146cb9ee148682ff4d0cea0b8fd3ad51ce4d40efb2f061d0", size = 517030, upload-time = "2025-08-07T08:24:49.52Z" },
- { url = "https://files.pythonhosted.org/packages/79/2a/7266c75840e8c6e70effeb0d38922a45720904f2cd695e68a0150e5407e2/rpds_py-0.27.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4045e2fc4b37ec4b48e8907a5819bdd3380708c139d7cc358f03a3653abedb89", size = 408448, upload-time = "2025-08-07T08:24:50.727Z" },
- { url = "https://files.pythonhosted.org/packages/e6/5f/a7efc572b8e235093dc6cf39f4dbc8a7f08e65fdbcec7ff4daeb3585eef1/rpds_py-0.27.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9da162b718b12c4219eeeeb68a5b7552fbc7aadedf2efee440f88b9c0e54b45d", size = 387320, upload-time = "2025-08-07T08:24:52.004Z" },
- { url = "https://files.pythonhosted.org/packages/a2/eb/9ff6bc92efe57cf5a2cb74dee20453ba444b6fdc85275d8c99e0d27239d1/rpds_py-0.27.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:0665be515767dc727ffa5f74bd2ef60b0ff85dad6bb8f50d91eaa6b5fb226f51", size = 407414, upload-time = "2025-08-07T08:24:53.664Z" },
- { url = "https://files.pythonhosted.org/packages/fb/bd/3b9b19b00d5c6e1bd0f418c229ab0f8d3b110ddf7ec5d9d689ef783d0268/rpds_py-0.27.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:203f581accef67300a942e49a37d74c12ceeef4514874c7cede21b012613ca2c", size = 420766, upload-time = "2025-08-07T08:24:55.917Z" },
- { url = "https://files.pythonhosted.org/packages/17/6b/521a7b1079ce16258c70805166e3ac6ec4ee2139d023fe07954dc9b2d568/rpds_py-0.27.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7873b65686a6471c0037139aa000d23fe94628e0daaa27b6e40607c90e3f5ec4", size = 562409, upload-time = "2025-08-07T08:24:57.17Z" },
- { url = "https://files.pythonhosted.org/packages/8b/bf/65db5bfb14ccc55e39de8419a659d05a2a9cd232f0a699a516bb0991da7b/rpds_py-0.27.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:249ab91ceaa6b41abc5f19513cb95b45c6f956f6b89f1fe3d99c81255a849f9e", size = 590793, upload-time = "2025-08-07T08:24:58.388Z" },
- { url = "https://files.pythonhosted.org/packages/db/b8/82d368b378325191ba7aae8f40f009b78057b598d4394d1f2cdabaf67b3f/rpds_py-0.27.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d2f184336bc1d6abfaaa1262ed42739c3789b1e3a65a29916a615307d22ffd2e", size = 558178, upload-time = "2025-08-07T08:24:59.756Z" },
- { url = "https://files.pythonhosted.org/packages/f6/ff/f270bddbfbc3812500f8131b1ebbd97afd014cd554b604a3f73f03133a36/rpds_py-0.27.0-cp314-cp314-win32.whl", hash = "sha256:d3c622c39f04d5751408f5b801ecb527e6e0a471b367f420a877f7a660d583f6", size = 222355, upload-time = "2025-08-07T08:25:01.027Z" },
- { url = "https://files.pythonhosted.org/packages/bf/20/fdab055b1460c02ed356a0e0b0a78c1dd32dc64e82a544f7b31c9ac643dc/rpds_py-0.27.0-cp314-cp314-win_amd64.whl", hash = "sha256:cf824aceaeffff029ccfba0da637d432ca71ab21f13e7f6f5179cd88ebc77a8a", size = 234007, upload-time = "2025-08-07T08:25:02.268Z" },
- { url = "https://files.pythonhosted.org/packages/4d/a8/694c060005421797a3be4943dab8347c76c2b429a9bef68fb2c87c9e70c7/rpds_py-0.27.0-cp314-cp314-win_arm64.whl", hash = "sha256:86aca1616922b40d8ac1b3073a1ead4255a2f13405e5700c01f7c8d29a03972d", size = 223527, upload-time = "2025-08-07T08:25:03.45Z" },
- { url = "https://files.pythonhosted.org/packages/1e/f9/77f4c90f79d2c5ca8ce6ec6a76cb4734ee247de6b3a4f337e289e1f00372/rpds_py-0.27.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:341d8acb6724c0c17bdf714319c393bb27f6d23d39bc74f94221b3e59fc31828", size = 359469, upload-time = "2025-08-07T08:25:04.648Z" },
- { url = "https://files.pythonhosted.org/packages/c0/22/b97878d2f1284286fef4172069e84b0b42b546ea7d053e5fb7adb9ac6494/rpds_py-0.27.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:6b96b0b784fe5fd03beffff2b1533dc0d85e92bab8d1b2c24ef3a5dc8fac5669", size = 343960, upload-time = "2025-08-07T08:25:05.863Z" },
- { url = "https://files.pythonhosted.org/packages/b1/b0/dfd55b5bb480eda0578ae94ef256d3061d20b19a0f5e18c482f03e65464f/rpds_py-0.27.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0c431bfb91478d7cbe368d0a699978050d3b112d7f1d440a41e90faa325557fd", size = 380201, upload-time = "2025-08-07T08:25:07.513Z" },
- { url = "https://files.pythonhosted.org/packages/28/22/e1fa64e50d58ad2b2053077e3ec81a979147c43428de9e6de68ddf6aff4e/rpds_py-0.27.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:20e222a44ae9f507d0f2678ee3dd0c45ec1e930f6875d99b8459631c24058aec", size = 392111, upload-time = "2025-08-07T08:25:09.149Z" },
- { url = "https://files.pythonhosted.org/packages/49/f9/43ab7a43e97aedf6cea6af70fdcbe18abbbc41d4ae6cdec1bfc23bbad403/rpds_py-0.27.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:184f0d7b342967f6cda94a07d0e1fae177d11d0b8f17d73e06e36ac02889f303", size = 515863, upload-time = "2025-08-07T08:25:10.431Z" },
- { url = "https://files.pythonhosted.org/packages/38/9b/9bd59dcc636cd04d86a2d20ad967770bf348f5eb5922a8f29b547c074243/rpds_py-0.27.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a00c91104c173c9043bc46f7b30ee5e6d2f6b1149f11f545580f5d6fdff42c0b", size = 402398, upload-time = "2025-08-07T08:25:11.819Z" },
- { url = "https://files.pythonhosted.org/packages/71/bf/f099328c6c85667aba6b66fa5c35a8882db06dcd462ea214be72813a0dd2/rpds_py-0.27.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f7a37dd208f0d658e0487522078b1ed68cd6bce20ef4b5a915d2809b9094b410", size = 384665, upload-time = "2025-08-07T08:25:13.194Z" },
- { url = "https://files.pythonhosted.org/packages/a9/c5/9c1f03121ece6634818490bd3c8be2c82a70928a19de03467fb25a3ae2a8/rpds_py-0.27.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:92f3b3ec3e6008a1fe00b7c0946a170f161ac00645cde35e3c9a68c2475e8156", size = 400405, upload-time = "2025-08-07T08:25:14.417Z" },
- { url = "https://files.pythonhosted.org/packages/b5/b8/e25d54af3e63ac94f0c16d8fe143779fe71ff209445a0c00d0f6984b6b2c/rpds_py-0.27.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a1b3db5fae5cbce2131b7420a3f83553d4d89514c03d67804ced36161fe8b6b2", size = 413179, upload-time = "2025-08-07T08:25:15.664Z" },
- { url = "https://files.pythonhosted.org/packages/f9/d1/406b3316433fe49c3021546293a04bc33f1478e3ec7950215a7fce1a1208/rpds_py-0.27.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5355527adaa713ab693cbce7c1e0ec71682f599f61b128cf19d07e5c13c9b1f1", size = 556895, upload-time = "2025-08-07T08:25:17.061Z" },
- { url = "https://files.pythonhosted.org/packages/5f/bc/3697c0c21fcb9a54d46ae3b735eb2365eea0c2be076b8f770f98e07998de/rpds_py-0.27.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:fcc01c57ce6e70b728af02b2401c5bc853a9e14eb07deda30624374f0aebfe42", size = 585464, upload-time = "2025-08-07T08:25:18.406Z" },
- { url = "https://files.pythonhosted.org/packages/63/09/ee1bb5536f99f42c839b177d552f6114aa3142d82f49cef49261ed28dbe0/rpds_py-0.27.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:3001013dae10f806380ba739d40dee11db1ecb91684febb8406a87c2ded23dae", size = 555090, upload-time = "2025-08-07T08:25:20.461Z" },
- { url = "https://files.pythonhosted.org/packages/7d/2c/363eada9e89f7059199d3724135a86c47082cbf72790d6ba2f336d146ddb/rpds_py-0.27.0-cp314-cp314t-win32.whl", hash = "sha256:0f401c369186a5743694dd9fc08cba66cf70908757552e1f714bfc5219c655b5", size = 218001, upload-time = "2025-08-07T08:25:21.761Z" },
- { url = "https://files.pythonhosted.org/packages/e2/3f/d6c216ed5199c9ef79e2a33955601f454ed1e7420a93b89670133bca5ace/rpds_py-0.27.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8a1dca5507fa1337f75dcd5070218b20bc68cf8844271c923c1b79dfcbc20391", size = 230993, upload-time = "2025-08-07T08:25:23.34Z" },
+version = "0.30.0"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/20/af/3f2f423103f1113b36230496629986e0ef7e199d2aa8392452b484b38ced/rpds_py-0.30.0.tar.gz", hash = "sha256:dd8ff7cf90014af0c0f787eea34794ebf6415242ee1d6fa91eaba725cc441e84", size = 69469, upload-time = "2025-11-30T20:24:38.837Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/ed/dc/d61221eb88ff410de3c49143407f6f3147acf2538c86f2ab7ce65ae7d5f9/rpds_py-0.30.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f83424d738204d9770830d35290ff3273fbb02b41f919870479fab14b9d303b2", size = 374887, upload-time = "2025-11-30T20:22:41.812Z" },
+ { url = "https://files.pythonhosted.org/packages/fd/32/55fb50ae104061dbc564ef15cc43c013dc4a9f4527a1f4d99baddf56fe5f/rpds_py-0.30.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:e7536cd91353c5273434b4e003cbda89034d67e7710eab8761fd918ec6c69cf8", size = 358904, upload-time = "2025-11-30T20:22:43.479Z" },
+ { url = "https://files.pythonhosted.org/packages/58/70/faed8186300e3b9bdd138d0273109784eea2396c68458ed580f885dfe7ad/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2771c6c15973347f50fece41fc447c054b7ac2ae0502388ce3b6738cd366e3d4", size = 389945, upload-time = "2025-11-30T20:22:44.819Z" },
+ { url = "https://files.pythonhosted.org/packages/bd/a8/073cac3ed2c6387df38f71296d002ab43496a96b92c823e76f46b8af0543/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:0a59119fc6e3f460315fe9d08149f8102aa322299deaa5cab5b40092345c2136", size = 407783, upload-time = "2025-11-30T20:22:46.103Z" },
+ { url = "https://files.pythonhosted.org/packages/77/57/5999eb8c58671f1c11eba084115e77a8899d6e694d2a18f69f0ba471ec8b/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:76fec018282b4ead0364022e3c54b60bf368b9d926877957a8624b58419169b7", size = 515021, upload-time = "2025-11-30T20:22:47.458Z" },
+ { url = "https://files.pythonhosted.org/packages/e0/af/5ab4833eadc36c0a8ed2bc5c0de0493c04f6c06de223170bd0798ff98ced/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:692bef75a5525db97318e8cd061542b5a79812d711ea03dbc1f6f8dbb0c5f0d2", size = 414589, upload-time = "2025-11-30T20:22:48.872Z" },
+ { url = "https://files.pythonhosted.org/packages/b7/de/f7192e12b21b9e9a68a6d0f249b4af3fdcdff8418be0767a627564afa1f1/rpds_py-0.30.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9027da1ce107104c50c81383cae773ef5c24d296dd11c99e2629dbd7967a20c6", size = 394025, upload-time = "2025-11-30T20:22:50.196Z" },
+ { url = "https://files.pythonhosted.org/packages/91/c4/fc70cd0249496493500e7cc2de87504f5aa6509de1e88623431fec76d4b6/rpds_py-0.30.0-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:9cf69cdda1f5968a30a359aba2f7f9aa648a9ce4b580d6826437f2b291cfc86e", size = 408895, upload-time = "2025-11-30T20:22:51.87Z" },
+ { url = "https://files.pythonhosted.org/packages/58/95/d9275b05ab96556fefff73a385813eb66032e4c99f411d0795372d9abcea/rpds_py-0.30.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a4796a717bf12b9da9d3ad002519a86063dcac8988b030e405704ef7d74d2d9d", size = 422799, upload-time = "2025-11-30T20:22:53.341Z" },
+ { url = "https://files.pythonhosted.org/packages/06/c1/3088fc04b6624eb12a57eb814f0d4997a44b0d208d6cace713033ff1a6ba/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5d4c2aa7c50ad4728a094ebd5eb46c452e9cb7edbfdb18f9e1221f597a73e1e7", size = 572731, upload-time = "2025-11-30T20:22:54.778Z" },
+ { url = "https://files.pythonhosted.org/packages/d8/42/c612a833183b39774e8ac8fecae81263a68b9583ee343db33ab571a7ce55/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ba81a9203d07805435eb06f536d95a266c21e5b2dfbf6517748ca40c98d19e31", size = 599027, upload-time = "2025-11-30T20:22:56.212Z" },
+ { url = "https://files.pythonhosted.org/packages/5f/60/525a50f45b01d70005403ae0e25f43c0384369ad24ffe46e8d9068b50086/rpds_py-0.30.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:945dccface01af02675628334f7cf49c2af4c1c904748efc5cf7bbdf0b579f95", size = 563020, upload-time = "2025-11-30T20:22:58.2Z" },
+ { url = "https://files.pythonhosted.org/packages/0b/5d/47c4655e9bcd5ca907148535c10e7d489044243cc9941c16ed7cd53be91d/rpds_py-0.30.0-cp313-cp313-win32.whl", hash = "sha256:b40fb160a2db369a194cb27943582b38f79fc4887291417685f3ad693c5a1d5d", size = 223139, upload-time = "2025-11-30T20:23:00.209Z" },
+ { url = "https://files.pythonhosted.org/packages/f2/e1/485132437d20aa4d3e1d8b3fb5a5e65aa8139f1e097080c2a8443201742c/rpds_py-0.30.0-cp313-cp313-win_amd64.whl", hash = "sha256:806f36b1b605e2d6a72716f321f20036b9489d29c51c91f4dd29a3e3afb73b15", size = 240224, upload-time = "2025-11-30T20:23:02.008Z" },
+ { url = "https://files.pythonhosted.org/packages/24/95/ffd128ed1146a153d928617b0ef673960130be0009c77d8fbf0abe306713/rpds_py-0.30.0-cp313-cp313-win_arm64.whl", hash = "sha256:d96c2086587c7c30d44f31f42eae4eac89b60dabbac18c7669be3700f13c3ce1", size = 230645, upload-time = "2025-11-30T20:23:03.43Z" },
+ { url = "https://files.pythonhosted.org/packages/ff/1b/b10de890a0def2a319a2626334a7f0ae388215eb60914dbac8a3bae54435/rpds_py-0.30.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:eb0b93f2e5c2189ee831ee43f156ed34e2a89a78a66b98cadad955972548be5a", size = 364443, upload-time = "2025-11-30T20:23:04.878Z" },
+ { url = "https://files.pythonhosted.org/packages/0d/bf/27e39f5971dc4f305a4fb9c672ca06f290f7c4e261c568f3dea16a410d47/rpds_py-0.30.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:922e10f31f303c7c920da8981051ff6d8c1a56207dbdf330d9047f6d30b70e5e", size = 353375, upload-time = "2025-11-30T20:23:06.342Z" },
+ { url = "https://files.pythonhosted.org/packages/40/58/442ada3bba6e8e6615fc00483135c14a7538d2ffac30e2d933ccf6852232/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cdc62c8286ba9bf7f47befdcea13ea0e26bf294bda99758fd90535cbaf408000", size = 383850, upload-time = "2025-11-30T20:23:07.825Z" },
+ { url = "https://files.pythonhosted.org/packages/14/14/f59b0127409a33c6ef6f5c1ebd5ad8e32d7861c9c7adfa9a624fc3889f6c/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:47f9a91efc418b54fb8190a6b4aa7813a23fb79c51f4bb84e418f5476c38b8db", size = 392812, upload-time = "2025-11-30T20:23:09.228Z" },
+ { url = "https://files.pythonhosted.org/packages/b3/66/e0be3e162ac299b3a22527e8913767d869e6cc75c46bd844aa43fb81ab62/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f3587eb9b17f3789ad50824084fa6f81921bbf9a795826570bda82cb3ed91f2", size = 517841, upload-time = "2025-11-30T20:23:11.186Z" },
+ { url = "https://files.pythonhosted.org/packages/3d/55/fa3b9cf31d0c963ecf1ba777f7cf4b2a2c976795ac430d24a1f43d25a6ba/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:39c02563fc592411c2c61d26b6c5fe1e51eaa44a75aa2c8735ca88b0d9599daa", size = 408149, upload-time = "2025-11-30T20:23:12.864Z" },
+ { url = "https://files.pythonhosted.org/packages/60/ca/780cf3b1a32b18c0f05c441958d3758f02544f1d613abf9488cd78876378/rpds_py-0.30.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:51a1234d8febafdfd33a42d97da7a43f5dcb120c1060e352a3fbc0c6d36e2083", size = 383843, upload-time = "2025-11-30T20:23:14.638Z" },
+ { url = "https://files.pythonhosted.org/packages/82/86/d5f2e04f2aa6247c613da0c1dd87fcd08fa17107e858193566048a1e2f0a/rpds_py-0.30.0-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:eb2c4071ab598733724c08221091e8d80e89064cd472819285a9ab0f24bcedb9", size = 396507, upload-time = "2025-11-30T20:23:16.105Z" },
+ { url = "https://files.pythonhosted.org/packages/4b/9a/453255d2f769fe44e07ea9785c8347edaf867f7026872e76c1ad9f7bed92/rpds_py-0.30.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6bdfdb946967d816e6adf9a3d8201bfad269c67efe6cefd7093ef959683c8de0", size = 414949, upload-time = "2025-11-30T20:23:17.539Z" },
+ { url = "https://files.pythonhosted.org/packages/a3/31/622a86cdc0c45d6df0e9ccb6becdba5074735e7033c20e401a6d9d0e2ca0/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c77afbd5f5250bf27bf516c7c4a016813eb2d3e116139aed0096940c5982da94", size = 565790, upload-time = "2025-11-30T20:23:19.029Z" },
+ { url = "https://files.pythonhosted.org/packages/1c/5d/15bbf0fb4a3f58a3b1c67855ec1efcc4ceaef4e86644665fff03e1b66d8d/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:61046904275472a76c8c90c9ccee9013d70a6d0f73eecefd38c1ae7c39045a08", size = 590217, upload-time = "2025-11-30T20:23:20.885Z" },
+ { url = "https://files.pythonhosted.org/packages/6d/61/21b8c41f68e60c8cc3b2e25644f0e3681926020f11d06ab0b78e3c6bbff1/rpds_py-0.30.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c5f36a861bc4b7da6516dbdf302c55313afa09b81931e8280361a4f6c9a2d27", size = 555806, upload-time = "2025-11-30T20:23:22.488Z" },
+ { url = "https://files.pythonhosted.org/packages/f9/39/7e067bb06c31de48de3eb200f9fc7c58982a4d3db44b07e73963e10d3be9/rpds_py-0.30.0-cp313-cp313t-win32.whl", hash = "sha256:3d4a69de7a3e50ffc214ae16d79d8fbb0922972da0356dcf4d0fdca2878559c6", size = 211341, upload-time = "2025-11-30T20:23:24.449Z" },
+ { url = "https://files.pythonhosted.org/packages/0a/4d/222ef0b46443cf4cf46764d9c630f3fe4abaa7245be9417e56e9f52b8f65/rpds_py-0.30.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f14fc5df50a716f7ece6a80b6c78bb35ea2ca47c499e422aa4463455dd96d56d", size = 225768, upload-time = "2025-11-30T20:23:25.908Z" },
+ { url = "https://files.pythonhosted.org/packages/86/81/dad16382ebbd3d0e0328776d8fd7ca94220e4fa0798d1dc5e7da48cb3201/rpds_py-0.30.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:68f19c879420aa08f61203801423f6cd5ac5f0ac4ac82a2368a9fcd6a9a075e0", size = 362099, upload-time = "2025-11-30T20:23:27.316Z" },
+ { url = "https://files.pythonhosted.org/packages/2b/60/19f7884db5d5603edf3c6bce35408f45ad3e97e10007df0e17dd57af18f8/rpds_py-0.30.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ec7c4490c672c1a0389d319b3a9cfcd098dcdc4783991553c332a15acf7249be", size = 353192, upload-time = "2025-11-30T20:23:29.151Z" },
+ { url = "https://files.pythonhosted.org/packages/bf/c4/76eb0e1e72d1a9c4703c69607cec123c29028bff28ce41588792417098ac/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f251c812357a3fed308d684a5079ddfb9d933860fc6de89f2b7ab00da481e65f", size = 384080, upload-time = "2025-11-30T20:23:30.785Z" },
+ { url = "https://files.pythonhosted.org/packages/72/87/87ea665e92f3298d1b26d78814721dc39ed8d2c74b86e83348d6b48a6f31/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ac98b175585ecf4c0348fd7b29c3864bda53b805c773cbf7bfdaffc8070c976f", size = 394841, upload-time = "2025-11-30T20:23:32.209Z" },
+ { url = "https://files.pythonhosted.org/packages/77/ad/7783a89ca0587c15dcbf139b4a8364a872a25f861bdb88ed99f9b0dec985/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3e62880792319dbeb7eb866547f2e35973289e7d5696c6e295476448f5b63c87", size = 516670, upload-time = "2025-11-30T20:23:33.742Z" },
+ { url = "https://files.pythonhosted.org/packages/5b/3c/2882bdac942bd2172f3da574eab16f309ae10a3925644e969536553cb4ee/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4e7fc54e0900ab35d041b0601431b0a0eb495f0851a0639b6ef90f7741b39a18", size = 408005, upload-time = "2025-11-30T20:23:35.253Z" },
+ { url = "https://files.pythonhosted.org/packages/ce/81/9a91c0111ce1758c92516a3e44776920b579d9a7c09b2b06b642d4de3f0f/rpds_py-0.30.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47e77dc9822d3ad616c3d5759ea5631a75e5809d5a28707744ef79d7a1bcfcad", size = 382112, upload-time = "2025-11-30T20:23:36.842Z" },
+ { url = "https://files.pythonhosted.org/packages/cf/8e/1da49d4a107027e5fbc64daeab96a0706361a2918da10cb41769244b805d/rpds_py-0.30.0-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:b4dc1a6ff022ff85ecafef7979a2c6eb423430e05f1165d6688234e62ba99a07", size = 399049, upload-time = "2025-11-30T20:23:38.343Z" },
+ { url = "https://files.pythonhosted.org/packages/df/5a/7ee239b1aa48a127570ec03becbb29c9d5a9eb092febbd1699d567cae859/rpds_py-0.30.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4559c972db3a360808309e06a74628b95eaccbf961c335c8fe0d590cf587456f", size = 415661, upload-time = "2025-11-30T20:23:40.263Z" },
+ { url = "https://files.pythonhosted.org/packages/70/ea/caa143cf6b772f823bc7929a45da1fa83569ee49b11d18d0ada7f5ee6fd6/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:0ed177ed9bded28f8deb6ab40c183cd1192aa0de40c12f38be4d59cd33cb5c65", size = 565606, upload-time = "2025-11-30T20:23:42.186Z" },
+ { url = "https://files.pythonhosted.org/packages/64/91/ac20ba2d69303f961ad8cf55bf7dbdb4763f627291ba3d0d7d67333cced9/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:ad1fa8db769b76ea911cb4e10f049d80bf518c104f15b3edb2371cc65375c46f", size = 591126, upload-time = "2025-11-30T20:23:44.086Z" },
+ { url = "https://files.pythonhosted.org/packages/21/20/7ff5f3c8b00c8a95f75985128c26ba44503fb35b8e0259d812766ea966c7/rpds_py-0.30.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:46e83c697b1f1c72b50e5ee5adb4353eef7406fb3f2043d64c33f20ad1c2fc53", size = 553371, upload-time = "2025-11-30T20:23:46.004Z" },
+ { url = "https://files.pythonhosted.org/packages/72/c7/81dadd7b27c8ee391c132a6b192111ca58d866577ce2d9b0ca157552cce0/rpds_py-0.30.0-cp314-cp314-win32.whl", hash = "sha256:ee454b2a007d57363c2dfd5b6ca4a5d7e2c518938f8ed3b706e37e5d470801ed", size = 215298, upload-time = "2025-11-30T20:23:47.696Z" },
+ { url = "https://files.pythonhosted.org/packages/3e/d2/1aaac33287e8cfb07aab2e6b8ac1deca62f6f65411344f1433c55e6f3eb8/rpds_py-0.30.0-cp314-cp314-win_amd64.whl", hash = "sha256:95f0802447ac2d10bcc69f6dc28fe95fdf17940367b21d34e34c737870758950", size = 228604, upload-time = "2025-11-30T20:23:49.501Z" },
+ { url = "https://files.pythonhosted.org/packages/e8/95/ab005315818cc519ad074cb7784dae60d939163108bd2b394e60dc7b5461/rpds_py-0.30.0-cp314-cp314-win_arm64.whl", hash = "sha256:613aa4771c99f03346e54c3f038e4cc574ac09a3ddfb0e8878487335e96dead6", size = 222391, upload-time = "2025-11-30T20:23:50.96Z" },
+ { url = "https://files.pythonhosted.org/packages/9e/68/154fe0194d83b973cdedcdcc88947a2752411165930182ae41d983dcefa6/rpds_py-0.30.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:7e6ecfcb62edfd632e56983964e6884851786443739dbfe3582947e87274f7cb", size = 364868, upload-time = "2025-11-30T20:23:52.494Z" },
+ { url = "https://files.pythonhosted.org/packages/83/69/8bbc8b07ec854d92a8b75668c24d2abcb1719ebf890f5604c61c9369a16f/rpds_py-0.30.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:a1d0bc22a7cdc173fedebb73ef81e07faef93692b8c1ad3733b67e31e1b6e1b8", size = 353747, upload-time = "2025-11-30T20:23:54.036Z" },
+ { url = "https://files.pythonhosted.org/packages/ab/00/ba2e50183dbd9abcce9497fa5149c62b4ff3e22d338a30d690f9af970561/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d08f00679177226c4cb8c5265012eea897c8ca3b93f429e546600c971bcbae7", size = 383795, upload-time = "2025-11-30T20:23:55.556Z" },
+ { url = "https://files.pythonhosted.org/packages/05/6f/86f0272b84926bcb0e4c972262f54223e8ecc556b3224d281e6598fc9268/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:5965af57d5848192c13534f90f9dd16464f3c37aaf166cc1da1cae1fd5a34898", size = 393330, upload-time = "2025-11-30T20:23:57.033Z" },
+ { url = "https://files.pythonhosted.org/packages/cb/e9/0e02bb2e6dc63d212641da45df2b0bf29699d01715913e0d0f017ee29438/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9a4e86e34e9ab6b667c27f3211ca48f73dba7cd3d90f8d5b11be56e5dbc3fb4e", size = 518194, upload-time = "2025-11-30T20:23:58.637Z" },
+ { url = "https://files.pythonhosted.org/packages/ee/ca/be7bca14cf21513bdf9c0606aba17d1f389ea2b6987035eb4f62bd923f25/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5d3e6b26f2c785d65cc25ef1e5267ccbe1b069c5c21b8cc724efee290554419", size = 408340, upload-time = "2025-11-30T20:24:00.2Z" },
+ { url = "https://files.pythonhosted.org/packages/c2/c7/736e00ebf39ed81d75544c0da6ef7b0998f8201b369acf842f9a90dc8fce/rpds_py-0.30.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:626a7433c34566535b6e56a1b39a7b17ba961e97ce3b80ec62e6f1312c025551", size = 383765, upload-time = "2025-11-30T20:24:01.759Z" },
+ { url = "https://files.pythonhosted.org/packages/4a/3f/da50dfde9956aaf365c4adc9533b100008ed31aea635f2b8d7b627e25b49/rpds_py-0.30.0-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:acd7eb3f4471577b9b5a41baf02a978e8bdeb08b4b355273994f8b87032000a8", size = 396834, upload-time = "2025-11-30T20:24:03.687Z" },
+ { url = "https://files.pythonhosted.org/packages/4e/00/34bcc2565b6020eab2623349efbdec810676ad571995911f1abdae62a3a0/rpds_py-0.30.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fe5fa731a1fa8a0a56b0977413f8cacac1768dad38d16b3a296712709476fbd5", size = 415470, upload-time = "2025-11-30T20:24:05.232Z" },
+ { url = "https://files.pythonhosted.org/packages/8c/28/882e72b5b3e6f718d5453bd4d0d9cf8df36fddeb4ddbbab17869d5868616/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:74a3243a411126362712ee1524dfc90c650a503502f135d54d1b352bd01f2404", size = 565630, upload-time = "2025-11-30T20:24:06.878Z" },
+ { url = "https://files.pythonhosted.org/packages/3b/97/04a65539c17692de5b85c6e293520fd01317fd878ea1995f0367d4532fb1/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:3e8eeb0544f2eb0d2581774be4c3410356eba189529a6b3e36bbbf9696175856", size = 591148, upload-time = "2025-11-30T20:24:08.445Z" },
+ { url = "https://files.pythonhosted.org/packages/85/70/92482ccffb96f5441aab93e26c4d66489eb599efdcf96fad90c14bbfb976/rpds_py-0.30.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:dbd936cde57abfee19ab3213cf9c26be06d60750e60a8e4dd85d1ab12c8b1f40", size = 556030, upload-time = "2025-11-30T20:24:10.956Z" },
+ { url = "https://files.pythonhosted.org/packages/20/53/7c7e784abfa500a2b6b583b147ee4bb5a2b3747a9166bab52fec4b5b5e7d/rpds_py-0.30.0-cp314-cp314t-win32.whl", hash = "sha256:dc824125c72246d924f7f796b4f63c1e9dc810c7d9e2355864b3c3a73d59ade0", size = 211570, upload-time = "2025-11-30T20:24:12.735Z" },
+ { url = "https://files.pythonhosted.org/packages/d0/02/fa464cdfbe6b26e0600b62c528b72d8608f5cc49f96b8d6e38c95d60c676/rpds_py-0.30.0-cp314-cp314t-win_amd64.whl", hash = "sha256:27f4b0e92de5bfbc6f86e43959e6edd1425c33b5e69aab0984a72047f2bcf1e3", size = 226532, upload-time = "2025-11-30T20:24:14.634Z" },
]
[[package]]
name = "ruff"
-version = "0.12.9"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/4a/45/2e403fa7007816b5fbb324cb4f8ed3c7402a927a0a0cb2b6279879a8bfdc/ruff-0.12.9.tar.gz", hash = "sha256:fbd94b2e3c623f659962934e52c2bea6fc6da11f667a427a368adaf3af2c866a", size = 5254702, upload-time = "2025-08-14T16:08:55.2Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/ad/20/53bf098537adb7b6a97d98fcdebf6e916fcd11b2e21d15f8c171507909cc/ruff-0.12.9-py3-none-linux_armv6l.whl", hash = "sha256:fcebc6c79fcae3f220d05585229463621f5dbf24d79fdc4936d9302e177cfa3e", size = 11759705, upload-time = "2025-08-14T16:08:12.968Z" },
- { url = "https://files.pythonhosted.org/packages/20/4d/c764ee423002aac1ec66b9d541285dd29d2c0640a8086c87de59ebbe80d5/ruff-0.12.9-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:aed9d15f8c5755c0e74467731a007fcad41f19bcce41cd75f768bbd687f8535f", size = 12527042, upload-time = "2025-08-14T16:08:16.54Z" },
- { url = "https://files.pythonhosted.org/packages/8b/45/cfcdf6d3eb5fc78a5b419e7e616d6ccba0013dc5b180522920af2897e1be/ruff-0.12.9-py3-none-macosx_11_0_arm64.whl", hash = "sha256:5b15ea354c6ff0d7423814ba6d44be2807644d0c05e9ed60caca87e963e93f70", size = 11724457, upload-time = "2025-08-14T16:08:18.686Z" },
- { url = "https://files.pythonhosted.org/packages/72/e6/44615c754b55662200c48bebb02196dbb14111b6e266ab071b7e7297b4ec/ruff-0.12.9-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d596c2d0393c2502eaabfef723bd74ca35348a8dac4267d18a94910087807c53", size = 11949446, upload-time = "2025-08-14T16:08:21.059Z" },
- { url = "https://files.pythonhosted.org/packages/fd/d1/9b7d46625d617c7df520d40d5ac6cdcdf20cbccb88fad4b5ecd476a6bb8d/ruff-0.12.9-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1b15599931a1a7a03c388b9c5df1bfa62be7ede6eb7ef753b272381f39c3d0ff", size = 11566350, upload-time = "2025-08-14T16:08:23.433Z" },
- { url = "https://files.pythonhosted.org/packages/59/20/b73132f66f2856bc29d2d263c6ca457f8476b0bbbe064dac3ac3337a270f/ruff-0.12.9-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3d02faa2977fb6f3f32ddb7828e212b7dd499c59eb896ae6c03ea5c303575756", size = 13270430, upload-time = "2025-08-14T16:08:25.837Z" },
- { url = "https://files.pythonhosted.org/packages/a2/21/eaf3806f0a3d4c6be0a69d435646fba775b65f3f2097d54898b0fd4bb12e/ruff-0.12.9-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:17d5b6b0b3a25259b69ebcba87908496e6830e03acfb929ef9fd4c58675fa2ea", size = 14264717, upload-time = "2025-08-14T16:08:27.907Z" },
- { url = "https://files.pythonhosted.org/packages/d2/82/1d0c53bd37dcb582b2c521d352fbf4876b1e28bc0d8894344198f6c9950d/ruff-0.12.9-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:72db7521860e246adbb43f6ef464dd2a532ef2ef1f5dd0d470455b8d9f1773e0", size = 13684331, upload-time = "2025-08-14T16:08:30.352Z" },
- { url = "https://files.pythonhosted.org/packages/3b/2f/1c5cf6d8f656306d42a686f1e207f71d7cebdcbe7b2aa18e4e8a0cb74da3/ruff-0.12.9-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a03242c1522b4e0885af63320ad754d53983c9599157ee33e77d748363c561ce", size = 12739151, upload-time = "2025-08-14T16:08:32.55Z" },
- { url = "https://files.pythonhosted.org/packages/47/09/25033198bff89b24d734e6479e39b1968e4c992e82262d61cdccaf11afb9/ruff-0.12.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fc83e4e9751e6c13b5046d7162f205d0a7bac5840183c5beebf824b08a27340", size = 12954992, upload-time = "2025-08-14T16:08:34.816Z" },
- { url = "https://files.pythonhosted.org/packages/52/8e/d0dbf2f9dca66c2d7131feefc386523404014968cd6d22f057763935ab32/ruff-0.12.9-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:881465ed56ba4dd26a691954650de6ad389a2d1fdb130fe51ff18a25639fe4bb", size = 12899569, upload-time = "2025-08-14T16:08:36.852Z" },
- { url = "https://files.pythonhosted.org/packages/a0/bd/b614d7c08515b1428ed4d3f1d4e3d687deffb2479703b90237682586fa66/ruff-0.12.9-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:43f07a3ccfc62cdb4d3a3348bf0588358a66da756aa113e071b8ca8c3b9826af", size = 11751983, upload-time = "2025-08-14T16:08:39.314Z" },
- { url = "https://files.pythonhosted.org/packages/58/d6/383e9f818a2441b1a0ed898d7875f11273f10882f997388b2b51cb2ae8b5/ruff-0.12.9-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:07adb221c54b6bba24387911e5734357f042e5669fa5718920ee728aba3cbadc", size = 11538635, upload-time = "2025-08-14T16:08:41.297Z" },
- { url = "https://files.pythonhosted.org/packages/20/9c/56f869d314edaa9fc1f491706d1d8a47747b9d714130368fbd69ce9024e9/ruff-0.12.9-py3-none-musllinux_1_2_i686.whl", hash = "sha256:f5cd34fabfdea3933ab85d72359f118035882a01bff15bd1d2b15261d85d5f66", size = 12534346, upload-time = "2025-08-14T16:08:43.39Z" },
- { url = "https://files.pythonhosted.org/packages/bd/4b/d8b95c6795a6c93b439bc913ee7a94fda42bb30a79285d47b80074003ee7/ruff-0.12.9-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:f6be1d2ca0686c54564da8e7ee9e25f93bdd6868263805f8c0b8fc6a449db6d7", size = 13017021, upload-time = "2025-08-14T16:08:45.889Z" },
- { url = "https://files.pythonhosted.org/packages/c7/c1/5f9a839a697ce1acd7af44836f7c2181cdae5accd17a5cb85fcbd694075e/ruff-0.12.9-py3-none-win32.whl", hash = "sha256:cc7a37bd2509974379d0115cc5608a1a4a6c4bff1b452ea69db83c8855d53f93", size = 11734785, upload-time = "2025-08-14T16:08:48.062Z" },
- { url = "https://files.pythonhosted.org/packages/fa/66/cdddc2d1d9a9f677520b7cfc490d234336f523d4b429c1298de359a3be08/ruff-0.12.9-py3-none-win_amd64.whl", hash = "sha256:6fb15b1977309741d7d098c8a3cb7a30bc112760a00fb6efb7abc85f00ba5908", size = 12840654, upload-time = "2025-08-14T16:08:50.158Z" },
- { url = "https://files.pythonhosted.org/packages/ac/fd/669816bc6b5b93b9586f3c1d87cd6bc05028470b3ecfebb5938252c47a35/ruff-0.12.9-py3-none-win_arm64.whl", hash = "sha256:63c8c819739d86b96d500cce885956a1a48ab056bbcbc61b747ad494b2485089", size = 11949623, upload-time = "2025-08-14T16:08:52.233Z" },
-]
-
-[[package]]
-name = "six"
-version = "1.17.0"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" },
-]
-
-[[package]]
-name = "sniffio"
-version = "1.3.1"
-source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" }
-wheels = [
- { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" },
+version = "0.14.7"
+source = { registry = "https://pypi.org/simple" }
+sdist = { url = "https://files.pythonhosted.org/packages/b7/5b/dd7406afa6c95e3d8fa9d652b6d6dd17dd4a6bf63cb477014e8ccd3dcd46/ruff-0.14.7.tar.gz", hash = "sha256:3417deb75d23bd14a722b57b0a1435561db65f0ad97435b4cf9f85ffcef34ae5", size = 5727324, upload-time = "2025-11-28T20:55:10.525Z" }
+wheels = [
+ { url = "https://files.pythonhosted.org/packages/8c/b1/7ea5647aaf90106f6d102230e5df874613da43d1089864da1553b899ba5e/ruff-0.14.7-py3-none-linux_armv6l.whl", hash = "sha256:b9d5cb5a176c7236892ad7224bc1e63902e4842c460a0b5210701b13e3de4fca", size = 13414475, upload-time = "2025-11-28T20:54:54.569Z" },
+ { url = "https://files.pythonhosted.org/packages/af/19/fddb4cd532299db9cdaf0efdc20f5c573ce9952a11cb532d3b859d6d9871/ruff-0.14.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:3f64fe375aefaf36ca7d7250292141e39b4cea8250427482ae779a2aa5d90015", size = 13634613, upload-time = "2025-11-28T20:55:17.54Z" },
+ { url = "https://files.pythonhosted.org/packages/40/2b/469a66e821d4f3de0440676ed3e04b8e2a1dc7575cf6fa3ba6d55e3c8557/ruff-0.14.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:93e83bd3a9e1a3bda64cb771c0d47cda0e0d148165013ae2d3554d718632d554", size = 12765458, upload-time = "2025-11-28T20:55:26.128Z" },
+ { url = "https://files.pythonhosted.org/packages/f1/05/0b001f734fe550bcfde4ce845948ac620ff908ab7241a39a1b39bb3c5f49/ruff-0.14.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3838948e3facc59a6070795de2ae16e5786861850f78d5914a03f12659e88f94", size = 13236412, upload-time = "2025-11-28T20:55:28.602Z" },
+ { url = "https://files.pythonhosted.org/packages/11/36/8ed15d243f011b4e5da75cd56d6131c6766f55334d14ba31cce5461f28aa/ruff-0.14.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:24c8487194d38b6d71cd0fd17a5b6715cda29f59baca1defe1e3a03240f851d1", size = 13182949, upload-time = "2025-11-28T20:55:33.265Z" },
+ { url = "https://files.pythonhosted.org/packages/3b/cf/fcb0b5a195455729834f2a6eadfe2e4519d8ca08c74f6d2b564a4f18f553/ruff-0.14.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:79c73db6833f058a4be8ffe4a0913b6d4ad41f6324745179bd2aa09275b01d0b", size = 13816470, upload-time = "2025-11-28T20:55:08.203Z" },
+ { url = "https://files.pythonhosted.org/packages/7f/5d/34a4748577ff7a5ed2f2471456740f02e86d1568a18c9faccfc73bd9ca3f/ruff-0.14.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:12eb7014fccff10fc62d15c79d8a6be4d0c2d60fe3f8e4d169a0d2def75f5dad", size = 15289621, upload-time = "2025-11-28T20:55:30.837Z" },
+ { url = "https://files.pythonhosted.org/packages/53/53/0a9385f047a858ba133d96f3f8e3c9c66a31cc7c4b445368ef88ebeac209/ruff-0.14.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c623bbdc902de7ff715a93fa3bb377a4e42dd696937bf95669118773dbf0c50", size = 14975817, upload-time = "2025-11-28T20:55:24.107Z" },
+ { url = "https://files.pythonhosted.org/packages/a8/d7/2f1c32af54c3b46e7fadbf8006d8b9bcfbea535c316b0bd8813d6fb25e5d/ruff-0.14.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f53accc02ed2d200fa621593cdb3c1ae06aa9b2c3cae70bc96f72f0000ae97a9", size = 14284549, upload-time = "2025-11-28T20:55:06.08Z" },
+ { url = "https://files.pythonhosted.org/packages/92/05/434ddd86becd64629c25fb6b4ce7637dd52a45cc4a4415a3008fe61c27b9/ruff-0.14.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:281f0e61a23fcdcffca210591f0f53aafaa15f9025b5b3f9706879aaa8683bc4", size = 14071389, upload-time = "2025-11-28T20:55:35.617Z" },
+ { url = "https://files.pythonhosted.org/packages/ff/50/fdf89d4d80f7f9d4f420d26089a79b3bb1538fe44586b148451bc2ba8d9c/ruff-0.14.7-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:dbbaa5e14148965b91cb090236931182ee522a5fac9bc5575bafc5c07b9f9682", size = 14202679, upload-time = "2025-11-28T20:55:01.472Z" },
+ { url = "https://files.pythonhosted.org/packages/77/54/87b34988984555425ce967f08a36df0ebd339bb5d9d0e92a47e41151eafc/ruff-0.14.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:1464b6e54880c0fe2f2d6eaefb6db15373331414eddf89d6b903767ae2458143", size = 13147677, upload-time = "2025-11-28T20:55:19.933Z" },
+ { url = "https://files.pythonhosted.org/packages/67/29/f55e4d44edfe053918a16a3299e758e1c18eef216b7a7092550d7a9ec51c/ruff-0.14.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:f217ed871e4621ea6128460df57b19ce0580606c23aeab50f5de425d05226784", size = 13151392, upload-time = "2025-11-28T20:55:21.967Z" },
+ { url = "https://files.pythonhosted.org/packages/36/69/47aae6dbd4f1d9b4f7085f4d9dcc84e04561ee7ad067bf52e0f9b02e3209/ruff-0.14.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:6be02e849440ed3602d2eb478ff7ff07d53e3758f7948a2a598829660988619e", size = 13412230, upload-time = "2025-11-28T20:55:12.749Z" },
+ { url = "https://files.pythonhosted.org/packages/b7/4b/6e96cb6ba297f2ba502a231cd732ed7c3de98b1a896671b932a5eefa3804/ruff-0.14.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:19a0f116ee5e2b468dfe80c41c84e2bbd6b74f7b719bee86c2ecde0a34563bcc", size = 14195397, upload-time = "2025-11-28T20:54:56.896Z" },
+ { url = "https://files.pythonhosted.org/packages/69/82/251d5f1aa4dcad30aed491b4657cecd9fb4274214da6960ffec144c260f7/ruff-0.14.7-py3-none-win32.whl", hash = "sha256:e33052c9199b347c8937937163b9b149ef6ab2e4bb37b042e593da2e6f6cccfa", size = 13126751, upload-time = "2025-11-28T20:55:03.47Z" },
+ { url = "https://files.pythonhosted.org/packages/a8/b5/d0b7d145963136b564806f6584647af45ab98946660d399ec4da79cae036/ruff-0.14.7-py3-none-win_amd64.whl", hash = "sha256:e17a20ad0d3fad47a326d773a042b924d3ac31c6ca6deb6c72e9e6b5f661a7c6", size = 14531726, upload-time = "2025-11-28T20:54:59.121Z" },
+ { url = "https://files.pythonhosted.org/packages/1d/d2/1637f4360ada6a368d3265bf39f2cf737a0aaab15ab520fc005903e883f8/ruff-0.14.7-py3-none-win_arm64.whl", hash = "sha256:be4d653d3bea1b19742fcc6502354e32f65cd61ff2fbdb365803ef2c2aec6228", size = 13609215, upload-time = "2025-11-28T20:55:15.375Z" },
]
[[package]]
name = "sse-starlette"
-version = "3.0.2"
+version = "3.0.3"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "anyio" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/42/6f/22ed6e33f8a9e76ca0a412405f31abb844b779d52c5f96660766edcd737c/sse_starlette-3.0.2.tar.gz", hash = "sha256:ccd60b5765ebb3584d0de2d7a6e4f745672581de4f5005ab31c3a25d10b52b3a", size = 20985, upload-time = "2025-07-27T09:07:44.565Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/db/3c/fa6517610dc641262b77cc7bf994ecd17465812c1b0585fe33e11be758ab/sse_starlette-3.0.3.tar.gz", hash = "sha256:88cfb08747e16200ea990c8ca876b03910a23b547ab3bd764c0d8eb81019b971", size = 21943, upload-time = "2025-10-30T18:44:20.117Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/ef/10/c78f463b4ef22eef8491f218f692be838282cd65480f6e423d7730dfd1fb/sse_starlette-3.0.2-py3-none-any.whl", hash = "sha256:16b7cbfddbcd4eaca11f7b586f3b8a080f1afe952c15813455b162edea619e5a", size = 11297, upload-time = "2025-07-27T09:07:43.268Z" },
+ { url = "https://files.pythonhosted.org/packages/23/a0/984525d19ca5c8a6c33911a0c164b11490dd0f90ff7fd689f704f84e9a11/sse_starlette-3.0.3-py3-none-any.whl", hash = "sha256:af5bf5a6f3933df1d9c7f8539633dc8444ca6a97ab2e2a7cd3b6e431ac03a431", size = 11765, upload-time = "2025-10-30T18:44:18.834Z" },
]
[[package]]
name = "starlette"
-version = "0.47.2"
+version = "0.50.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "anyio" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/04/57/d062573f391d062710d4088fa1369428c38d51460ab6fedff920efef932e/starlette-0.47.2.tar.gz", hash = "sha256:6ae9aa5db235e4846decc1e7b79c4f346adf41e9777aebeb49dfd09bbd7023d8", size = 2583948, upload-time = "2025-07-20T17:31:58.522Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/ba/b8/73a0e6a6e079a9d9cfa64113d771e421640b6f679a52eeb9b32f72d871a1/starlette-0.50.0.tar.gz", hash = "sha256:a2a17b22203254bcbc2e1f926d2d55f3f9497f769416b3190768befe598fa3ca", size = 2646985, upload-time = "2025-11-01T15:25:27.516Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/f7/1f/b876b1f83aef204198a42dc101613fefccb32258e5428b5f9259677864b4/starlette-0.47.2-py3-none-any.whl", hash = "sha256:c5847e96134e5c5371ee9fac6fdf1a67336d5815e09eb2a01fdb57a351ef915b", size = 72984, upload-time = "2025-07-20T17:31:56.738Z" },
+ { url = "https://files.pythonhosted.org/packages/d9/52/1064f510b141bd54025f9b55105e26d1fa970b9be67ad766380a3c9b74b0/starlette-0.50.0-py3-none-any.whl", hash = "sha256:9e5391843ec9b6e472eed1365a78c8098cfceb7a74bfd4d6b1c0c0095efb3bca", size = 74033, upload-time = "2025-11-01T15:25:25.461Z" },
]
[[package]]
@@ -1191,23 +1328,23 @@ wheels = [
[[package]]
name = "typing-extensions"
-version = "4.14.1"
+version = "4.15.0"
source = { registry = "https://pypi.org/simple" }
-sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673, upload-time = "2025-07-04T13:28:34.16Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload-time = "2025-07-04T13:28:32.743Z" },
+ { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" },
]
[[package]]
name = "typing-inspection"
-version = "0.4.1"
+version = "0.4.2"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "typing-extensions" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/55/e3/70399cb7dd41c10ac53367ae42139cf4b1ca5f36bb3dc6c9d33acdb43655/typing_inspection-0.4.2.tar.gz", hash = "sha256:ba561c48a67c5958007083d386c3295464928b01faa735ab8547c5692e87f464", size = 75949, upload-time = "2025-10-01T02:14:41.687Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" },
+ { url = "https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl", hash = "sha256:4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7", size = 14611, upload-time = "2025-10-01T02:14:40.154Z" },
]
[[package]]
@@ -1221,25 +1358,33 @@ wheels = [
[[package]]
name = "uvicorn"
-version = "0.35.0"
+version = "0.38.0"
source = { registry = "https://pypi.org/simple" }
dependencies = [
{ name = "click" },
{ name = "h11" },
]
-sdist = { url = "https://files.pythonhosted.org/packages/5e/42/e0e305207bb88c6b8d3061399c6a961ffe5fbb7e2aa63c9234df7259e9cd/uvicorn-0.35.0.tar.gz", hash = "sha256:bc662f087f7cf2ce11a1d7fd70b90c9f98ef2e2831556dd078d131b96cc94a01", size = 78473, upload-time = "2025-06-28T16:15:46.058Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/cb/ce/f06b84e2697fef4688ca63bdb2fdf113ca0a3be33f94488f2cadb690b0cf/uvicorn-0.38.0.tar.gz", hash = "sha256:fd97093bdd120a2609fc0d3afe931d4d4ad688b6e75f0f929fde1bc36fe0e91d", size = 80605, upload-time = "2025-10-18T13:46:44.63Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/d2/e2/dc81b1bd1dcfe91735810265e9d26bc8ec5da45b4c0f6237e286819194c3/uvicorn-0.35.0-py3-none-any.whl", hash = "sha256:197535216b25ff9b785e29a0b79199f55222193d47f820816e7da751e9bc8d4a", size = 66406, upload-time = "2025-06-28T16:15:44.816Z" },
+ { url = "https://files.pythonhosted.org/packages/ee/d9/d88e73ca598f4f6ff671fb5fde8a32925c2e08a637303a1d12883c7305fa/uvicorn-0.38.0-py3-none-any.whl", hash = "sha256:48c0afd214ceb59340075b4a052ea1ee91c16fbc2a9b1469cca0e54566977b02", size = 68109, upload-time = "2025-10-18T13:46:42.958Z" },
]
[[package]]
-name = "werkzeug"
-version = "3.1.1"
+name = "websockets"
+version = "15.0.1"
source = { registry = "https://pypi.org/simple" }
-dependencies = [
- { name = "markupsafe" },
-]
-sdist = { url = "https://files.pythonhosted.org/packages/32/af/d4502dc713b4ccea7175d764718d5183caf8d0867a4f0190d5d4a45cea49/werkzeug-3.1.1.tar.gz", hash = "sha256:8cd39dfbdfc1e051965f156163e2974e52c210f130810e9ad36858f0fd3edad4", size = 806453, upload-time = "2024-11-01T16:40:45.462Z" }
+sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016, upload-time = "2025-03-05T20:03:41.606Z" }
wheels = [
- { url = "https://files.pythonhosted.org/packages/ee/ea/c67e1dee1ba208ed22c06d1d547ae5e293374bfc43e0eb0ef5e262b68561/werkzeug-3.1.1-py3-none-any.whl", hash = "sha256:a71124d1ef06008baafa3d266c02f56e1836a5984afd6dd6c9230669d60d9fb5", size = 224371, upload-time = "2024-11-01T16:40:43.994Z" },
+ { url = "https://files.pythonhosted.org/packages/cb/9f/51f0cf64471a9d2b4d0fc6c534f323b664e7095640c34562f5182e5a7195/websockets-15.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ee443ef070bb3b6ed74514f5efaa37a252af57c90eb33b956d35c8e9c10a1931", size = 175440, upload-time = "2025-03-05T20:02:36.695Z" },
+ { url = "https://files.pythonhosted.org/packages/8a/05/aa116ec9943c718905997412c5989f7ed671bc0188ee2ba89520e8765d7b/websockets-15.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5a939de6b7b4e18ca683218320fc67ea886038265fd1ed30173f5ce3f8e85675", size = 173098, upload-time = "2025-03-05T20:02:37.985Z" },
+ { url = "https://files.pythonhosted.org/packages/ff/0b/33cef55ff24f2d92924923c99926dcce78e7bd922d649467f0eda8368923/websockets-15.0.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:746ee8dba912cd6fc889a8147168991d50ed70447bf18bcda7039f7d2e3d9151", size = 173329, upload-time = "2025-03-05T20:02:39.298Z" },
+ { url = "https://files.pythonhosted.org/packages/31/1d/063b25dcc01faa8fada1469bdf769de3768b7044eac9d41f734fd7b6ad6d/websockets-15.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:595b6c3969023ecf9041b2936ac3827e4623bfa3ccf007575f04c5a6aa318c22", size = 183111, upload-time = "2025-03-05T20:02:40.595Z" },
+ { url = "https://files.pythonhosted.org/packages/93/53/9a87ee494a51bf63e4ec9241c1ccc4f7c2f45fff85d5bde2ff74fcb68b9e/websockets-15.0.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3c714d2fc58b5ca3e285461a4cc0c9a66bd0e24c5da9911e30158286c9b5be7f", size = 182054, upload-time = "2025-03-05T20:02:41.926Z" },
+ { url = "https://files.pythonhosted.org/packages/ff/b2/83a6ddf56cdcbad4e3d841fcc55d6ba7d19aeb89c50f24dd7e859ec0805f/websockets-15.0.1-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f3c1e2ab208db911594ae5b4f79addeb3501604a165019dd221c0bdcabe4db8", size = 182496, upload-time = "2025-03-05T20:02:43.304Z" },
+ { url = "https://files.pythonhosted.org/packages/98/41/e7038944ed0abf34c45aa4635ba28136f06052e08fc2168520bb8b25149f/websockets-15.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:229cf1d3ca6c1804400b0a9790dc66528e08a6a1feec0d5040e8b9eb14422375", size = 182829, upload-time = "2025-03-05T20:02:48.812Z" },
+ { url = "https://files.pythonhosted.org/packages/e0/17/de15b6158680c7623c6ef0db361da965ab25d813ae54fcfeae2e5b9ef910/websockets-15.0.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:756c56e867a90fb00177d530dca4b097dd753cde348448a1012ed6c5131f8b7d", size = 182217, upload-time = "2025-03-05T20:02:50.14Z" },
+ { url = "https://files.pythonhosted.org/packages/33/2b/1f168cb6041853eef0362fb9554c3824367c5560cbdaad89ac40f8c2edfc/websockets-15.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:558d023b3df0bffe50a04e710bc87742de35060580a293c2a984299ed83bc4e4", size = 182195, upload-time = "2025-03-05T20:02:51.561Z" },
+ { url = "https://files.pythonhosted.org/packages/86/eb/20b6cdf273913d0ad05a6a14aed4b9a85591c18a987a3d47f20fa13dcc47/websockets-15.0.1-cp313-cp313-win32.whl", hash = "sha256:ba9e56e8ceeeedb2e080147ba85ffcd5cd0711b89576b83784d8605a7df455fa", size = 176393, upload-time = "2025-03-05T20:02:53.814Z" },
+ { url = "https://files.pythonhosted.org/packages/1b/6c/c65773d6cab416a64d191d6ee8a8b1c68a09970ea6909d16965d26bfed1e/websockets-15.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:e09473f095a819042ecb2ab9465aee615bd9c2028e4ef7d933600a8401c79561", size = 176837, upload-time = "2025-03-05T20:02:55.237Z" },
+ { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743, upload-time = "2025-03-05T20:03:39.41Z" },
]