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" }, ]