{
  "openapi": "3.1.0",
  "info": {
    "title": "data-vNext",
    "description": "Reference data and deterministic rules for ERP, finance and treasury systems.\n\n* **Effective-dated**: pass `as_of` for the law in force on a date, `known_at` for a\n  point-in-time view of the dataset.\n* **Sourced**: every response lists the authorities and legal references it relies on.\n* **Decimal-safe**: rates and amounts are serialised as strings.\n\nNot tax or accounting advice. Verify against the cited sources for filings.\n",
    "version": "0.1.0"
  },
  "paths": {
    "/health": {
      "get": {
        "tags": [
          "meta"
        ],
        "summary": "Check that the service is running",
        "description": "Liveness check for monitors and load balancers. Returns `{\"status\": \"ok\"}` with status 200 whenever the process answers; it needs no API key and does not read the dataset or the stores.",
        "operationId": "healthz_health_get",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "type": "object",
                  "title": "Response Healthz Health Get"
                },
                "example": {
                  "status": "ok"
                }
              }
            }
          }
        },
        "security": []
      }
    },
    "/v1/calendars": {
      "get": {
        "tags": [
          "calendars"
        ],
        "summary": "List the business-day calendars",
        "description": "The available payment-system and public-holiday calendars.\n\n`data` lists each calendar with its id (use it in the other calendar endpoints),\njurisdiction, weekend days, the holiday rules and one-off adjustments the dates are\ngenerated from, the first date it answers for (`coverage_from`) and its sources. A\njurisdiction with no calendar gives an empty list.",
        "operationId": "list_calendars_v1_calendars_get",
        "parameters": [
          {
            "name": "jurisdiction",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only calendars that apply in this jurisdiction: its own, its parents' and its groups' (e.g. 'DE' -> eu.target2, 'US-CA' -> us.fedwire). ISO 3166 code, case-insensitive. Default: all calendars.",
              "examples": [
                "DE"
              ],
              "title": "Jurisdiction"
            },
            "description": "Only calendars that apply in this jurisdiction: its own, its parents' and its groups' (e.g. 'DE' -> eu.target2, 'US-CA' -> us.fedwire). ISO 3166 code, case-insensitive. Default: all calendars."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_Calendar__"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/calendars/{calendar_ids}/add-business-days": {
      "get": {
        "tags": [
          "calendars"
        ],
        "summary": "Add business days to a date",
        "description": "Move a date forwards or backwards by a number of business days.\n\nEach step skips weekends and the holidays of every named calendar. The start date is not\ncounted: one business day after a Wednesday is Thursday. `data.result` is the new date.\n404 for an unknown calendar id; 422 for a date outside the coverage or `days` beyond\n+-2500.",
        "operationId": "add_business_days_v1_calendars__calendar_ids__add_business_days_get",
        "parameters": [
          {
            "name": "calendar_ids",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "A calendar id, or several separated by commas (business day in all of them), e.g. 'ch.six.sic,eu.target2'. Ids are in GET /v1/calendars; unknown ids give 404.",
              "examples": [
                "ch.six.sic",
                "ch.six.sic,eu.target2"
              ],
              "title": "Calendar Ids"
            },
            "description": "A calendar id, or several separated by commas (business day in all of them), e.g. 'ch.six.sic,eu.target2'. Ids are in GET /v1/calendars; unknown ids give 404."
          },
          {
            "name": "date",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Start date (ISO 8601).",
              "examples": [
                "2026-11-25"
              ],
              "title": "Date"
            },
            "description": "Start date (ISO 8601)."
          },
          {
            "name": "days",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "description": "Business days to move; negative moves back. 0 returns the date if it is a business day, otherwise the next business day. Limited to +-2500.",
              "examples": [
                1
              ],
              "title": "Days"
            },
            "description": "Business days to move; negative moves back. 0 returns the date if it is a business day, otherwise the next business day. Limited to +-2500."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_ShiftedDate_"
                },
                "example": {
                  "data": {
                    "calendars": [
                      "us.fedwire"
                    ],
                    "date": "2026-11-25",
                    "days": 1,
                    "result": "2026-11-27"
                  },
                  "meta": {
                    "dataset_version": "3f2a9c1b7d4e",
                    "sources": [
                      {
                        "authority": "Board of Governors of the Federal Reserve System",
                        "url": "https://www.federalreserve.gov/aboutthefed/k8.htm",
                        "reference": "K.8 Holidays Observed by the Federal Reserve System 2026-2030",
                        "verified_at": "2026-10-01",
                        "kind": "official"
                      }
                    ],
                    "notes": []
                  }
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/calendars/{calendar_ids}/adjust": {
      "get": {
        "tags": [
          "calendars"
        ],
        "summary": "Adjust a date to a business day",
        "description": "Roll a due date or value date onto a business day.\n\nA date that already is a business day is returned unchanged. Otherwise the convention\ndecides the direction: `following` and `modified_following` roll forwards,\n`preceding` and `modified_preceding` backwards; the modified conventions go the other\nway when the first result would fall into another month. 404 for an unknown calendar id,\n422 for a date outside the coverage.",
        "operationId": "adjust_v1_calendars__calendar_ids__adjust_get",
        "parameters": [
          {
            "name": "calendar_ids",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "A calendar id, or several separated by commas (business day in all of them), e.g. 'ch.six.sic,eu.target2'. Ids are in GET /v1/calendars; unknown ids give 404.",
              "examples": [
                "ch.six.sic",
                "ch.six.sic,eu.target2"
              ],
              "title": "Calendar Ids"
            },
            "description": "A calendar id, or several separated by commas (business day in all of them), e.g. 'ch.six.sic,eu.target2'. Ids are in GET /v1/calendars; unknown ids give 404."
          },
          {
            "name": "date",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Date to adjust (ISO 8601).",
              "examples": [
                "2026-08-01"
              ],
              "title": "Date"
            },
            "description": "Date to adjust (ISO 8601)."
          },
          {
            "name": "convention",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "following",
                "modified_following",
                "modified_preceding",
                "preceding"
              ],
              "type": "string",
              "description": "Business day convention for a date that is not a business day: 'following', 'preceding', 'modified_following' (following unless that crosses into the next month) or 'modified_preceding'. Default 'following'.",
              "default": "following",
              "title": "Convention"
            },
            "description": "Business day convention for a date that is not a business day: 'following', 'preceding', 'modified_following' (following unless that crosses into the next month) or 'modified_preceding'. Default 'following'."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_AdjustedDate_"
                },
                "example": {
                  "data": {
                    "calendars": [
                      "ch.six.sic"
                    ],
                    "date": "2026-08-01",
                    "convention": "following",
                    "result": "2026-08-03"
                  },
                  "meta": {
                    "dataset_version": "3f2a9c1b7d4e",
                    "sources": [
                      {
                        "authority": "SIX Interbank Clearing",
                        "url": "https://www.six-group.com/en/products-services/banking-services/interbank-clearing/online-services/clearing-day-calendar.html",
                        "reference": "Clearing Day Calendar (CSV and API), service PCR_P (SIC CHF production)",
                        "verified_at": "2026-10-01",
                        "kind": "official"
                      }
                    ],
                    "notes": []
                  }
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/calendars/{calendar_ids}/holidays": {
      "get": {
        "tags": [
          "calendars"
        ],
        "summary": "List the holidays of a year",
        "description": "Holidays in a year. `origin` says whether a date comes from the publisher's\nfeed or from the curated rules.\n\nWith several calendars `data` merges their holidays, sorted by date then calendar; each\nrow names its `calendar`. 404 for an unknown calendar id, 422 for a year outside the\ncoverage.",
        "operationId": "holidays_v1_calendars__calendar_ids__holidays_get",
        "parameters": [
          {
            "name": "calendar_ids",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "A calendar id, or several separated by commas (business day in all of them), e.g. 'ch.six.sic,eu.target2'. Ids are in GET /v1/calendars; unknown ids give 404.",
              "examples": [
                "ch.six.sic",
                "ch.six.sic,eu.target2"
              ],
              "title": "Calendar Ids"
            },
            "description": "A calendar id, or several separated by commas (business day in all of them), e.g. 'ch.six.sic,eu.target2'. Ids are in GET /v1/calendars; unknown ids give 404."
          },
          {
            "name": "year",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Calendar year, e.g. 2027. Defaults to the current year. Years before the calendar's coverage and after 2199 give 422.",
              "examples": [
                2027
              ],
              "title": "Year"
            },
            "description": "Calendar year, e.g. 2027. Defaults to the current year. Years before the calendar's coverage and after 2199 give 422."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_Holiday__"
                },
                "example": {
                  "data": [
                    {
                      "calendar": "gb.england_wales",
                      "date": "2027-01-01",
                      "name": "New Year's Day",
                      "origin": "feed"
                    },
                    {
                      "calendar": "gb.england_wales",
                      "date": "2027-03-26",
                      "name": "Good Friday",
                      "origin": "feed"
                    }
                  ],
                  "meta": {
                    "dataset_version": "3f2a9c1b7d4e",
                    "sources": [
                      {
                        "authority": "GOV.UK",
                        "url": "https://www.gov.uk/bank-holidays",
                        "reference": "UK bank holidays: England and Wales (also published as /bank-holidays.json)",
                        "verified_at": "2026-10-01",
                        "kind": "official"
                      }
                    ],
                    "notes": []
                  }
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/calendars/{calendar_ids}/is-business-day": {
      "get": {
        "tags": [
          "calendars"
        ],
        "summary": "Check whether a date is a business day",
        "description": "Whether a date is a business day in every named calendar, and why not.\n\n`data.business_day` is false on a weekend or holiday of any of the calendars, and\n`reasons` names each calendar and the holiday or weekend. The nearest business days\nbefore and after are included for convenience. 404 for an unknown calendar id, 422 for\na date before the calendar's coverage or after 2199.",
        "operationId": "is_business_day_v1_calendars__calendar_ids__is_business_day_get",
        "parameters": [
          {
            "name": "calendar_ids",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "A calendar id, or several separated by commas (business day in all of them), e.g. 'ch.six.sic,eu.target2'. Ids are in GET /v1/calendars; unknown ids give 404.",
              "examples": [
                "ch.six.sic",
                "ch.six.sic,eu.target2"
              ],
              "title": "Calendar Ids"
            },
            "description": "A calendar id, or several separated by commas (business day in all of them), e.g. 'ch.six.sic,eu.target2'. Ids are in GET /v1/calendars; unknown ids give 404."
          },
          {
            "name": "date",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "The date to check (ISO 8601).",
              "examples": [
                "2026-05-14"
              ],
              "title": "Date"
            },
            "description": "The date to check (ISO 8601)."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_BusinessDay_"
                },
                "example": {
                  "data": {
                    "calendars": [
                      "ch.six.sic",
                      "eu.target2"
                    ],
                    "date": "2026-05-14",
                    "business_day": false,
                    "reasons": [
                      "ch.six.sic: Ascension Day"
                    ],
                    "previous_business_day": "2026-05-13",
                    "next_business_day": "2026-05-15"
                  },
                  "meta": {
                    "dataset_version": "3f2a9c1b7d4e",
                    "sources": [
                      {
                        "authority": "SIX Interbank Clearing",
                        "url": "https://www.six-group.com/en/products-services/banking-services/interbank-clearing/online-services/clearing-day-calendar.html",
                        "reference": "Clearing Day Calendar (CSV and API), service PCR_P (SIC CHF production)",
                        "verified_at": "2026-10-01",
                        "kind": "official"
                      }
                    ],
                    "notes": []
                  }
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/calendars/{calendar_id}": {
      "get": {
        "tags": [
          "calendars"
        ],
        "summary": "Get a calendar",
        "description": "One calendar with its holiday rules, one-off adjustments, weekend days and coverage.\n\n`meta.sources` and `meta.notes` repeat the calendar's sources and notes. 404 for an\nunknown calendar id.",
        "operationId": "get_calendar_v1_calendars__calendar_id__get",
        "parameters": [
          {
            "name": "calendar_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Calendar id, e.g. 'ch.six.sic' (see GET /v1/calendars).",
              "examples": [
                "ch.six.sic"
              ],
              "title": "Calendar Id"
            },
            "description": "Calendar id, e.g. 'ch.six.sic' (see GET /v1/calendars)."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_Calendar_"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/changes": {
      "get": {
        "tags": [
          "changes"
        ],
        "summary": "List recent and upcoming changes",
        "description": "Recently published records and changes taking effect or ending soon.\n\nPoll this (e.g. daily with `since` = last poll) to update tax codes and asset\nclasses before a change applies. `published` items depend on `published_at`,\nwhich bundle builds stamp automatically for new or changed records. Decision\ntables and accounting-standards topics and differences appear as `published` when\nthey are added and `updated` when their content changes.\n\n`data.items` is sorted by date. Each item has the kind of record (`tax_rate`,\n`tax_threshold`, `asset_class`, `pending`, `decision_table`, ...), the type of change\n(`published`, `updated`, `takes_effect`, `ends`, `decision_scheduled`), the record\nitself in `current` and the version it replaces in `previous`. `data.until` is the end of\nthe look-ahead window. 422 if `since` is in the future.",
        "operationId": "changes_v1_changes_get",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Include records published on or after this date (ISO 8601). Must not be in the future. A daily poller passes the date of its last poll.",
              "examples": [
                "2026-09-01"
              ],
              "title": "Since"
            },
            "description": "Include records published on or after this date (ISO 8601). Must not be in the future. A daily poller passes the date of its last poll."
          },
          {
            "name": "upcoming_days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 730,
              "minimum": 0,
              "description": "Look-ahead in days from today for changes that take effect, end or are decided soon (0-730). Default 90.",
              "examples": [
                90
              ],
              "default": 90,
              "title": "Upcoming Days"
            },
            "description": "Look-ahead in days from today for changes that take effect, end or are decided soon (0-730). Default 90."
          },
          {
            "name": "jurisdiction",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only changes in this jurisdiction, e.g. 'DE' or 'CA' (a country includes its subdivisions such as CA-ON). Case-insensitive. Default: all.",
              "examples": [
                "DE"
              ],
              "title": "Jurisdiction"
            },
            "description": "Only changes in this jurisdiction, e.g. 'DE' or 'CA' (a country includes its subdivisions such as CA-ON). Case-insensitive. Default: all."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_ChangeFeed_"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/currencies": {
      "get": {
        "tags": [
          "meta"
        ],
        "summary": "List the currencies",
        "description": "The ISO 4217 currencies the dataset knows, with their numeric code and minor units.\n\n`minor_units` is the number of decimals the API rounds converted amounts to (2 for EUR,\n0 for JPY).",
        "operationId": "currencies_v1_currencies_get",
        "parameters": [
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_Currency__"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/decision-tables": {
      "get": {
        "tags": [
          "decision tables"
        ],
        "summary": "List the decision tables",
        "description": "The deterministic rule tables: VAT place of supply, lease classification, IFRS 16\nexemptions, inventory cost formulas.\n\n`data` lists full tables: typed inputs, outputs, ordered rules with their legal\nreference, and limitations. Fetch a table to run it yourself, or POST inputs to\n`/{table_id}/evaluate` to have the API run it. An unknown domain returns an empty list.",
        "operationId": "list_tables_v1_decision_tables_get",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only tables of this domain or its sub-domains, e.g. 'tax.indirect' or 'standards' (which includes 'standards.us_gaap'). Default: all.",
              "examples": [
                "tax.indirect"
              ],
              "title": "Domain"
            },
            "description": "Only tables of this domain or its sub-domains, e.g. 'tax.indirect' or 'standards' (which includes 'standards.us_gaap'). Default: all."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_DecisionTable__"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/decision-tables/{table_id}": {
      "get": {
        "tags": [
          "decision tables"
        ],
        "summary": "Get a decision table",
        "description": "One decision table: inputs with their types and allowed values, outputs, and the\nordered rules.\n\nRules are matched in order. The hit policy `first` stops at the first matching rule,\n`collect` returns every matching rule. A rule's `when` maps an input to a literal or to an\noperator map (`in`, `not_in`, `ne`, `gt`, `gte`, `lt`, `lte`); an input that is not\nlisted matches anything. 404 for an unknown table id.",
        "operationId": "get_table_v1_decision_tables__table_id__get",
        "parameters": [
          {
            "name": "table_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Decision table id, e.g. 'us_gaap.asc842.lessee_lease_classification' (see GET /v1/decision-tables).",
              "examples": [
                "us_gaap.asc842.lessee_lease_classification"
              ],
              "title": "Table Id"
            },
            "description": "Decision table id, e.g. 'us_gaap.asc842.lessee_lease_classification' (see GET /v1/decision-tables)."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_DecisionTable_"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/decision-tables/{table_id}/evaluate": {
      "post": {
        "tags": [
          "decision tables"
        ],
        "summary": "Evaluate a decision table",
        "description": "Run a decision table on the given inputs and return the matched rule.\n\n`data.matches` lists the rules that matched, in table order: one with hit policy `first`,\nall with `collect`, none if no rule applies. Each match has the rule's `outputs` (for\nexample the lease `classification`), its legal `reference` and a `note`. `data.inputs`\nechoes the inputs as they were interpreted, and `meta.notes` repeats the table's\nlimitations. Refuses with 404 for an unknown table and with 422 for an unknown input\nname, a missing required input, or a value that does not fit the input's type or\nallowed values.",
        "operationId": "evaluate_table_v1_decision_tables__table_id__evaluate_post",
        "parameters": [
          {
            "name": "table_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Decision table id, e.g. 'us_gaap.asc842.lessee_lease_classification' (see GET /v1/decision-tables).",
              "examples": [
                "us_gaap.asc842.lessee_lease_classification"
              ],
              "title": "Table Id"
            },
            "description": "Decision table id, e.g. 'us_gaap.asc842.lessee_lease_classification' (see GET /v1/decision-tables)."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "additionalProperties": true,
                "description": "The table's inputs as a JSON object: input name to value. Names and allowed values are in the table (GET /v1/decision-tables/{table_id}). Booleans may be true/false, numbers JSON numbers or numeric strings; optional inputs may be omitted.",
                "title": "Inputs"
              },
              "examples": {
                "lease_classification": {
                  "summary": "us_gaap.asc842.lessee_lease_classification: a lease for 80% of the economic life",
                  "value": {
                    "transfers_ownership": false,
                    "purchase_option_reasonably_certain": false,
                    "lease_term_percent_of_economic_life": 80,
                    "commences_near_end_of_economic_life": false,
                    "pv_payments_percent_of_fair_value": 70,
                    "specialized_no_alternative_use": false
                  }
                },
                "inventory_cost_formula": {
                  "summary": "standards.inventory.cost_formula_permitted: is LIFO permitted under IFRS?",
                  "value": {
                    "framework": "ifrs",
                    "cost_formula": "lifo"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_Evaluation_"
                },
                "example": {
                  "data": {
                    "table_id": "us_gaap.asc842.lessee_lease_classification",
                    "hit_policy": "first",
                    "inputs": {
                      "transfers_ownership": false,
                      "purchase_option_reasonably_certain": false,
                      "lease_term_percent_of_economic_life": "80",
                      "commences_near_end_of_economic_life": false,
                      "pv_payments_percent_of_fair_value": "70",
                      "specialized_no_alternative_use": false
                    },
                    "matches": [
                      {
                        "rule_id": "major_part_of_economic_life",
                        "outputs": {
                          "classification": "finance",
                          "criterion": "lease_term"
                        },
                        "reference": "ASC 842-10-25-2(c), 842-10-55-2(a)-(b)"
                      }
                    ]
                  },
                  "meta": {
                    "dataset_version": "3f2a9c1b7d4e",
                    "sources": [
                      {
                        "authority": "FASB",
                        "url": "https://asc.fasb.org/842/showallinonepage",
                        "reference": "ASC 842-10-25-2",
                        "verified_at": "2026-09-29",
                        "kind": "official"
                      }
                    ],
                    "notes": [
                      "Short-term lease election (ASC 842-20-25-2) is not evaluated.",
                      "Paraphrased criteria; consult the Codification for the authoritative text."
                    ]
                  }
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/fixed-assets/depreciation-schedule": {
      "post": {
        "tags": [
          "fixed assets"
        ],
        "summary": "Compute a depreciation schedule",
        "description": "Compute a depreciation schedule for one asset.\n\nGive the cost, the start date and either an `asset_class` (which fills the method, life,\nconvention, rate and table from the catalog) or a `method` with its parameters; explicit\nrequest values override the asset class. All arithmetic is decimal and each period is\nrounded to `decimals`, with the last period absorbing the rounding difference, so the\nschedule sums exactly to the depreciable base. `data.periods` has one row per fiscal\nyear (opening, charge, accumulated and closing book value); `data.notes` says where\nparameters came from and how the schedule ends, each by a `code` with the values it names\n(`details`) and in English (`text`). Refuses with 422 when `method` and `asset_class` are\nboth missing, a parameter the method needs is missing (e.g. `useful_life_years` for\nstraight line), the asset class or table is unknown or not in force on `start_date`, or\nsalvage is not below cost.",
        "operationId": "schedule_v1_fixed_assets_depreciation_schedule_post",
        "parameters": [
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScheduleRequest"
              },
              "examples": {
                "macrs_5y": {
                  "summary": "US MACRS 5-year property from the asset class",
                  "value": {
                    "cost": "50000",
                    "start_date": "2026-05-01",
                    "asset_class": "us.macrs.gds.5y"
                  }
                },
                "straight_line": {
                  "summary": "Straight line over 5 years with salvage value, pro rata from September",
                  "value": {
                    "cost": "12000.00",
                    "salvage": "2000.00",
                    "start_date": "2026-09-01",
                    "method": "straight_line",
                    "useful_life_years": "5",
                    "convention": "pro_rata_months"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_Schedule_"
                },
                "example": {
                  "data": {
                    "method": "table",
                    "convention": "half_year",
                    "cost": "50000",
                    "salvage": "0",
                    "depreciable_base": "50000.00",
                    "useful_life_years": "5",
                    "table": "us.macrs.gds.hy.5y",
                    "asset_class": "us.macrs.gds.5y",
                    "total_depreciation": "50000.00",
                    "periods": [
                      {
                        "period": 1,
                        "fiscal_year": 2026,
                        "fraction": "1",
                        "opening_book_value": "50000.00",
                        "depreciation": "10000.00",
                        "accumulated": "10000.00",
                        "closing_book_value": "40000.00"
                      },
                      {
                        "period": 2,
                        "fiscal_year": 2027,
                        "fraction": "1",
                        "opening_book_value": "40000.00",
                        "depreciation": "16000.00",
                        "accumulated": "26000.00",
                        "closing_book_value": "24000.00"
                      }
                    ],
                    "notes": [
                      {
                        "code": "class_parameters",
                        "details": {
                          "asset_class": "us.macrs.gds.5y",
                          "name": "5-year property"
                        },
                        "text": "Parameters from asset class 'us.macrs.gds.5y' (5-year property)."
                      }
                    ]
                  },
                  "meta": {
                    "dataset_version": "3f2a9c1b7d4e",
                    "sources": [
                      {
                        "authority": "Internal Revenue Service",
                        "url": "https://www.irs.gov/pub/irs-pdf/p946.pdf",
                        "reference": "Publication 946 (2025), Table A-1",
                        "verified_at": "2026-09-29",
                        "kind": "official"
                      }
                    ],
                    "notes": []
                  }
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/fixed-assets/methods": {
      "get": {
        "tags": [
          "fixed assets"
        ],
        "summary": "List the depreciation methods",
        "description": "The depreciation methods the schedule endpoint supports.\n\n`data` lists each method id (the values of `method` in the schedule request:\n`straight_line`, `declining_balance`, `sum_of_years_digits`, `units_of_production`,\n`table`), what it does, its formula and the request parameters it needs.",
        "operationId": "methods_v1_fixed_assets_methods_get",
        "parameters": [
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_DepreciationMethod__"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/fixed-assets/regimes": {
      "get": {
        "tags": [
          "fixed assets"
        ],
        "summary": "List the depreciation regimes",
        "description": "Depreciation regimes: US MACRS, UK capital allowances, German AfA, Swiss ESTV rates.\n\n`data` lists each regime with its id (use it in `/regimes/{regime_id}`), whether it is a\n`tax` or `book` basis, the methods it allows and its default convention.",
        "operationId": "regimes_v1_fixed_assets_regimes_get",
        "parameters": [
          {
            "name": "jurisdiction",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only regimes of this country, ISO 3166 alpha-2, case-insensitive, e.g. 'DE'. Default: all. An unknown code gives an empty list.",
              "examples": [
                "DE"
              ],
              "title": "Jurisdiction"
            },
            "description": "Only regimes of this country, ISO 3166 alpha-2, case-insensitive, e.g. 'DE'. Default: all. An unknown code gives an empty list."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_Regime__"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/fixed-assets/regimes/{regime_id}": {
      "get": {
        "tags": [
          "fixed assets"
        ],
        "summary": "Get a regime with its asset classes",
        "description": "A regime with its asset classes, percentage tables and allowances.\n\nAsset classes and allowances are those in force on `as_of`; tables are returned in full.\nThe asset class ids are what the schedule request takes as `asset_class`. `meta.as_of`\nis the date used. 404 for an unknown regime id.",
        "operationId": "regime_v1_fixed_assets_regimes__regime_id__get",
        "parameters": [
          {
            "name": "regime_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Regime id, e.g. 'us.macrs.gds' (see GET /v1/fixed-assets/regimes).",
              "examples": [
                "us.macrs.gds"
              ],
              "title": "Regime Id"
            },
            "description": "Regime id, e.g. 'us.macrs.gds' (see GET /v1/fixed-assets/regimes)."
          },
          {
            "name": "as_of",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Legal effective date: return the records in force on this date (valid_from on or before it, valid_to on or after it or empty). ISO 8601, e.g. 2020-08-01. Defaults to today (server date).",
              "examples": [
                "2020-08-01"
              ],
              "title": "As Of"
            },
            "description": "Legal effective date: return the records in force on this date (valid_from on or before it, valid_to on or after it or empty). ISO 8601, e.g. 2020-08-01. Defaults to today (server date)."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_RegimeDetail_"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/fx/convert": {
      "get": {
        "tags": [
          "fx"
        ],
        "summary": "Convert an amount at the ECB reference rate",
        "description": "Convert an amount between two currencies at the ECB euro reference rate.\n\nCurrencies other than EUR are triangulated through EUR (`data.path` shows the route).\n`rate` is the cross rate rounded to 10 decimals and `converted` the amount rounded\nhalf-even to the minor unit of the target currency. `fixing_date` is the ECB day used.\nFor VAT or IAS 21 purposes use `/tax-rates` or `/period-rates` instead. 404 if there is\nno fixing within 7 days before the date or a currency is not published by the ECB.",
        "operationId": "convert_v1_fx_convert_get",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 3,
              "maxLength": 3,
              "description": "ISO 4217 code of the currency to convert from, case-insensitive.",
              "examples": [
                "USD"
              ],
              "title": "From"
            },
            "description": "ISO 4217 code of the currency to convert from, case-insensitive."
          },
          {
            "name": "to",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 3,
              "maxLength": 3,
              "description": "ISO 4217 code of the currency to convert to, case-insensitive.",
              "examples": [
                "SEK"
              ],
              "title": "To"
            },
            "description": "ISO 4217 code of the currency to convert to, case-insensitive."
          },
          {
            "name": "amount",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "string",
                  "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
                }
              ],
              "description": "Amount in the `from` currency, as a decimal number. Default 1.",
              "examples": [
                "1000"
              ],
              "default": "1",
              "title": "Amount"
            },
            "description": "Amount in the `from` currency, as a decimal number. Default 1."
          },
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Rate date (ISO 8601, e.g. 2026-09-25). The latest ECB fixing on or before it (up to 7 days back) is used. Defaults to today.",
              "examples": [
                "2026-09-25"
              ],
              "title": "Date"
            },
            "description": "Rate date (ISO 8601, e.g. 2026-09-25). The latest ECB fixing on or before it (up to 7 days back) is used. Defaults to today."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_Conversion_"
                },
                "example": {
                  "data": {
                    "source": "ecb",
                    "requested_date": "2026-09-25",
                    "fixing_date": "2026-09-25",
                    "from_currency": "USD",
                    "to_currency": "SEK",
                    "amount": "1000",
                    "rate": "9.9009032711",
                    "converted": "9900.90",
                    "path": [
                      "USD",
                      "EUR",
                      "SEK"
                    ]
                  },
                  "meta": {
                    "dataset_version": "3f2a9c1b7d4e",
                    "as_of": "2026-09-25",
                    "sources": [
                      {
                        "authority": "European Central Bank",
                        "url": "https://data.ecb.europa.eu/data/datasets/EXR",
                        "reference": "Euro reference rates",
                        "verified_at": "2026-10-01",
                        "kind": "official"
                      }
                    ],
                    "notes": [
                      "ECB euro reference rates are for information purposes; the most recent fixing on or before the requested date is used."
                    ]
                  }
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/fx/history": {
      "get": {
        "tags": [
          "fx"
        ],
        "summary": "List the daily ECB cross rates of a currency pair",
        "description": "The ECB cross rate of a pair on every fixing day of a range, oldest first.\n\nEach point in `data.points` is the rate of one ECB fixing day, triangulated through EUR\nand rounded to 10 decimals half-even, so it equals the `rate` of `/convert` for that\nday. Weekends and holidays have no point (the ECB publishes none); a day on which the\nECB did not publish both currencies is left out too. The mean of the points is the IAS 21\naverage that `/period-rates` returns for a calendar period. 422 if base and quote are\nequal, the range is reversed or longer than the limit; 404 if the range holds no fixing of\nboth currencies.",
        "operationId": "history_v1_fx_history_get",
        "parameters": [
          {
            "name": "base",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 3,
              "maxLength": 3,
              "description": "ISO 4217 code of the base currency (the unit being priced), case-insensitive.",
              "examples": [
                "USD"
              ],
              "title": "Base"
            },
            "description": "ISO 4217 code of the base currency (the unit being priced), case-insensitive."
          },
          {
            "name": "quote",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 3,
              "maxLength": 3,
              "description": "ISO 4217 code of the quote currency, case-insensitive; each rate is units of quote per one unit of base. Must differ from base.",
              "examples": [
                "CHF"
              ],
              "title": "Quote"
            },
            "description": "ISO 4217 code of the quote currency, case-insensitive; each rate is units of quote per one unit of base. Must differ from base."
          },
          {
            "name": "start",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "First day of the range (ISO 8601, e.g. 2026-08-01).",
              "examples": [
                "2026-08-01"
              ],
              "title": "Start"
            },
            "description": "First day of the range (ISO 8601, e.g. 2026-08-01)."
          },
          {
            "name": "end",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Last day of the range (ISO 8601), on or after `start`; the range covers at most 1830 days.",
              "examples": [
                "2026-08-31"
              ],
              "title": "End"
            },
            "description": "Last day of the range (ISO 8601), on or after `start`; the range covers at most 1830 days."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_FxHistory_"
                },
                "example": {
                  "data": {
                    "source": "ecb",
                    "base": "USD",
                    "quote": "CHF",
                    "start": "2026-09-21",
                    "end": "2026-09-25",
                    "points": [
                      {
                        "date": "2026-09-24",
                        "rate": "0.8231234567"
                      },
                      {
                        "date": "2026-09-25",
                        "rate": "0.8282908356"
                      }
                    ]
                  },
                  "meta": {
                    "dataset_version": "3f2a9c1b7d4e",
                    "as_of": "2026-09-25",
                    "sources": [
                      {
                        "authority": "European Central Bank",
                        "url": "https://data.ecb.europa.eu/data/datasets/EXR",
                        "reference": "Euro reference rates",
                        "verified_at": "2026-10-01",
                        "kind": "official"
                      }
                    ],
                    "notes": [
                      "ECB euro reference rates are for information purposes; the most recent fixing on or before the requested date is used."
                    ]
                  }
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/fx/period-rates": {
      "get": {
        "tags": [
          "fx"
        ],
        "summary": "Get the IAS 21 average or closing rate of a period",
        "description": "IAS 21 average or closing rate for a calendar period, derived from ECB fixings.\n\n`data.rate` is units of `quote` per one unit of `base`, rounded to 10 decimals;\n`fixings` is the number of daily ECB fixings used, from `first_fixing` to `last_fixing`.\n`meta.notes` explains the method. 422 if the period is malformed or has not ended, or\nbase and quote are equal; 404 if the stored ECB fixings for the period are incomplete or\na currency is not published.",
        "operationId": "period_rates_v1_fx_period_rates_get",
        "parameters": [
          {
            "name": "base",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 3,
              "maxLength": 3,
              "description": "ISO 4217 code of the base currency (the unit being priced).",
              "examples": [
                "CHF"
              ],
              "title": "Base"
            },
            "description": "ISO 4217 code of the base currency (the unit being priced)."
          },
          {
            "name": "quote",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 3,
              "maxLength": 3,
              "description": "ISO 4217 code of the quote currency; `rate` is units of quote per one unit of base. Must differ from base.",
              "examples": [
                "EUR"
              ],
              "title": "Quote"
            },
            "description": "ISO 4217 code of the quote currency; `rate` is units of quote per one unit of base. Must differ from base."
          },
          {
            "name": "period",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Calendar period: YYYY-MM (month), YYYY-Qn (quarter) or YYYY (year). It must have ended before today.",
              "examples": [
                "2026-08",
                "2026-Q3",
                "2025"
              ],
              "title": "Period"
            },
            "description": "Calendar period: YYYY-MM (month), YYYY-Qn (quarter) or YYYY (year). It must have ended before today."
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "average",
                "closing"
              ],
              "type": "string",
              "description": "'average': mean of the daily cross rates over the period (income and expenses, IAS 21.40); 'closing': the last fixing on or before the period end (monetary items, IAS 21.23). Default 'average'.",
              "default": "average",
              "title": "Kind"
            },
            "description": "'average': mean of the daily cross rates over the period (income and expenses, IAS 21.40); 'closing': the last fixing on or before the period end (monetary items, IAS 21.23). Default 'average'."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_PeriodRate_"
                },
                "example": {
                  "data": {
                    "source": "ecb",
                    "base": "CHF",
                    "quote": "EUR",
                    "period": "2026-08",
                    "period_start": "2026-08-01",
                    "period_end": "2026-08-31",
                    "kind": "average",
                    "rate": "1.0681709886",
                    "fixings": 21,
                    "first_fixing": "2026-08-03",
                    "last_fixing": "2026-08-31"
                  },
                  "meta": {
                    "dataset_version": "3f2a9c1b7d4e",
                    "sources": [
                      {
                        "authority": "European Central Bank",
                        "url": "https://data.ecb.europa.eu/data/datasets/EXR",
                        "reference": "Euro reference rates",
                        "verified_at": "2026-10-01",
                        "kind": "official"
                      },
                      {
                        "authority": "IFRS Foundation",
                        "url": "https://www.ifrs.org/issued-standards/list-of-standards/ias-21-the-effects-of-changes-in-foreign-exchange-rates/",
                        "reference": "IAS 21.9, 21.21, 21.23, 21.39",
                        "verified_at": "2026-09-29",
                        "kind": "official"
                      }
                    ],
                    "notes": [
                      "Average: the arithmetic mean of the daily cross rates on every ECB fixing day in the period (each day triangulated through EUR, then averaged), rounded to 10 decimals."
                    ]
                  }
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/fx/rates": {
      "get": {
        "tags": [
          "fx"
        ],
        "summary": "List ECB reference rates",
        "description": "ECB euro reference rates, rebased to any published currency.\n\n`data.rates` maps each currency to the units of that currency per one unit of `base`,\nas decimal strings with 10 decimals. `fixing_date` is the ECB publication day actually\nused (weekends and holidays fall back to the previous fixing); `requested_date` is what\nyou asked for and `meta.as_of` repeats it. 404 if there is no fixing within 7 days\nbefore the date or the base currency is not published by the ECB.",
        "operationId": "rates_v1_fx_rates_get",
        "parameters": [
          {
            "name": "base",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "ISO 4217 code of the base currency, case-insensitive. The ECB publishes its rates against EUR; any other base is derived from them. Default EUR.",
              "examples": [
                "EUR"
              ],
              "default": "EUR",
              "title": "Base"
            },
            "description": "ISO 4217 code of the base currency, case-insensitive. The ECB publishes its rates against EUR; any other base is derived from them. Default EUR."
          },
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Rate date (ISO 8601, e.g. 2026-09-25). The latest ECB fixing on or before it (up to 7 days back) is used. Defaults to today.",
              "examples": [
                "2026-09-25"
              ],
              "title": "Date"
            },
            "description": "Rate date (ISO 8601, e.g. 2026-09-25). The latest ECB fixing on or before it (up to 7 days back) is used. Defaults to today."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_FxRates_"
                },
                "example": {
                  "data": {
                    "source": "ecb",
                    "base": "EUR",
                    "requested_date": "2026-09-25",
                    "fixing_date": "2026-09-25",
                    "rates": {
                      "CHF": "0.9445000000",
                      "GBP": "0.8604500000",
                      "SEK": "11.2900000000"
                    }
                  },
                  "meta": {
                    "dataset_version": "3f2a9c1b7d4e",
                    "as_of": "2026-09-25",
                    "sources": [
                      {
                        "authority": "European Central Bank",
                        "url": "https://data.ecb.europa.eu/data/datasets/EXR",
                        "reference": "Euro reference rates",
                        "verified_at": "2026-10-01",
                        "kind": "official"
                      }
                    ],
                    "notes": [
                      "ECB euro reference rates are for information purposes; the most recent fixing on or before the requested date is used."
                    ]
                  }
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/fx/tax-rates": {
      "get": {
        "tags": [
          "fx"
        ],
        "summary": "Get the official VAT exchange rate",
        "description": "The official VAT exchange rate for a foreign currency on a date.\n\n`data.rate` is the published rate and `quoted_as` says how it is quoted (CHF per 1 USD\nfor Switzerland, USD per 1 EUR for Germany); `tax_currency_per_unit` is always the tax\ncurrency per one unit of foreign currency. `fixing_date` is the publication date used\nand `period` the month it covers. `meta.notes` states which rate applies and when it is\npublished. 422 for a jurisdiction or kind with no series, or for the tax currency\nitself; 404 when the rate is not published yet or does not list the currency.",
        "operationId": "tax_rates_v1_fx_tax_rates_get",
        "parameters": [
          {
            "name": "jurisdiction",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Country whose VAT exchange rate applies: 'CH' (ESTV, published by BAZG) or 'DE' (BMF, UStG §16 Abs. 6). Case-insensitive.",
              "examples": [
                "CH"
              ],
              "title": "Jurisdiction"
            },
            "description": "Country whose VAT exchange rate applies: 'CH' (ESTV, published by BAZG) or 'DE' (BMF, UStG §16 Abs. 6). Case-insensitive."
          },
          {
            "name": "currency",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 3,
              "maxLength": 3,
              "description": "ISO 4217 code of the foreign currency, case-insensitive. It must differ from the jurisdiction's tax currency (CHF or EUR).",
              "examples": [
                "USD"
              ],
              "title": "Currency"
            },
            "description": "ISO 4217 code of the foreign currency, case-insensitive. It must differ from the jurisdiction's tax currency (CHF or EUR)."
          },
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Tax point: the date of the supply or invoice (ISO 8601). It selects the month (monthly) or the latest published day (daily). Defaults to today.",
              "examples": [
                "2026-10-15"
              ],
              "title": "Date"
            },
            "description": "Tax point: the date of the supply or invoice (ISO 8601). It selects the month (monthly) or the latest published day (daily). Defaults to today."
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "daily",
                "monthly"
              ],
              "type": "string",
              "description": "'monthly': the monthly average rate; 'daily': the daily rate (published for Switzerland). Default 'monthly'.",
              "default": "monthly",
              "title": "Kind"
            },
            "description": "'monthly': the monthly average rate; 'daily': the daily rate (published for Switzerland). Default 'monthly'."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_TaxFxRate_"
                },
                "example": {
                  "data": {
                    "series": "ch-vat-monthly",
                    "jurisdiction": "CH",
                    "kind": "monthly",
                    "requested_date": "2026-10-15",
                    "fixing_date": "2026-10-01",
                    "period": "2026-10",
                    "currency": "USD",
                    "tax_currency": "CHF",
                    "rate": "0.8218",
                    "quotation": "direct",
                    "quoted_as": "CHF per 1 USD",
                    "tax_currency_per_unit": "0.8218"
                  },
                  "meta": {
                    "dataset_version": "3f2a9c1b7d4e",
                    "as_of": "2026-10-15",
                    "sources": [
                      {
                        "authority": "Eidgenössische Steuerverwaltung (ESTV)",
                        "url": "https://www.estv.admin.ch/de/mwst-fremdwaehrungskurse",
                        "reference": "Fremdwährungskurse MWST",
                        "verified_at": "2026-10-01",
                        "kind": "official"
                      }
                    ],
                    "notes": [
                      "Published by BAZG on the 25th of the previous month (or the next working day)."
                    ]
                  }
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/fx/tax-rates/convert": {
      "get": {
        "tags": [
          "fx"
        ],
        "summary": "Convert an amount at the official VAT exchange rate",
        "description": "Convert a foreign-currency amount into the tax currency at the official VAT rate,\nrounded half up to the tax currency's minor unit.\n\nThe response has the rate fields of `/tax-rates` plus `amount` and `converted` (decimal\nstrings, `converted` in the tax currency). Errors as for `/tax-rates`: 422 for a\njurisdiction or kind without a series or for the tax currency itself, 404 when the rate\nis not published yet or does not list the currency.",
        "operationId": "tax_convert_v1_fx_tax_rates_convert_get",
        "parameters": [
          {
            "name": "jurisdiction",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Country whose VAT exchange rate applies: 'CH' (ESTV, published by BAZG) or 'DE' (BMF, UStG §16 Abs. 6). Case-insensitive.",
              "examples": [
                "CH"
              ],
              "title": "Jurisdiction"
            },
            "description": "Country whose VAT exchange rate applies: 'CH' (ESTV, published by BAZG) or 'DE' (BMF, UStG §16 Abs. 6). Case-insensitive."
          },
          {
            "name": "currency",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 3,
              "maxLength": 3,
              "description": "ISO 4217 code of the foreign currency, case-insensitive. It must differ from the jurisdiction's tax currency (CHF or EUR).",
              "examples": [
                "USD"
              ],
              "title": "Currency"
            },
            "description": "ISO 4217 code of the foreign currency, case-insensitive. It must differ from the jurisdiction's tax currency (CHF or EUR)."
          },
          {
            "name": "amount",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "string",
                  "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
                }
              ],
              "description": "Amount in the foreign currency, as a decimal number. Default 1.",
              "examples": [
                "1000"
              ],
              "default": "1",
              "title": "Amount"
            },
            "description": "Amount in the foreign currency, as a decimal number. Default 1."
          },
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Tax point: the date of the supply or invoice (ISO 8601). It selects the month (monthly) or the latest published day (daily). Defaults to today.",
              "examples": [
                "2026-10-15"
              ],
              "title": "Date"
            },
            "description": "Tax point: the date of the supply or invoice (ISO 8601). It selects the month (monthly) or the latest published day (daily). Defaults to today."
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "daily",
                "monthly"
              ],
              "type": "string",
              "description": "'monthly': the monthly average rate; 'daily': the daily rate (published for Switzerland). Default 'monthly'.",
              "default": "monthly",
              "title": "Kind"
            },
            "description": "'monthly': the monthly average rate; 'daily': the daily rate (published for Switzerland). Default 'monthly'."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_TaxFxConversion_"
                },
                "example": {
                  "data": {
                    "series": "de-vat-monthly",
                    "jurisdiction": "DE",
                    "kind": "monthly",
                    "requested_date": "2026-08-20",
                    "fixing_date": "2026-08-01",
                    "period": "2026-08",
                    "currency": "USD",
                    "tax_currency": "EUR",
                    "rate": "1.1593",
                    "quotation": "indirect",
                    "quoted_as": "USD per 1 EUR",
                    "tax_currency_per_unit": "0.8625894937",
                    "amount": "1000",
                    "converted": "862.59"
                  },
                  "meta": {
                    "dataset_version": "3f2a9c1b7d4e",
                    "as_of": "2026-08-20",
                    "sources": [
                      {
                        "authority": "Bundesamt für Justiz (gesetze-im-internet.de)",
                        "url": "https://www.gesetze-im-internet.de/ustg_1980/__16.html",
                        "reference": "UStG §16 Abs. 6",
                        "verified_at": "2026-10-01",
                        "kind": "official"
                      }
                    ],
                    "notes": [
                      "The average for the month in which the supply is made (or a prepayment is received; under cash accounting, the month the consideration is received). Rates are units of foreign currency per 1 EUR."
                    ]
                  }
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/jurisdictions": {
      "get": {
        "tags": [
          "meta"
        ],
        "summary": "List the jurisdictions",
        "description": "Countries and subdivisions the dataset knows, with their currency and tax system.\n\nThe `code` is what the other endpoints take as `jurisdiction`: ISO 3166-1 alpha-2 for a\ncountry, ISO 3166-2 for a subdivision (US-CA). `groups` lists memberships such as EU,\n`parent` the country of a subdivision and `indirect_tax_system` whether it levies VAT,\nGST, sales tax or none. The filters narrow the list; an unknown value returns an empty\nlist.",
        "operationId": "jurisdictions_v1_jurisdictions_get",
        "parameters": [
          {
            "name": "group",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only members of this group, case-insensitive: 'EU' or 'EEA'. Default: all.",
              "examples": [
                "EU"
              ],
              "title": "Group"
            },
            "description": "Only members of this group, case-insensitive: 'EU' or 'EEA'. Default: all."
          },
          {
            "name": "parent",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only subdivisions of this country, ISO 3166 alpha-2, case-insensitive, e.g. 'CA' for its provinces. Default: all.",
              "examples": [
                "CA"
              ],
              "title": "Parent"
            },
            "description": "Only subdivisions of this country, ISO 3166 alpha-2, case-insensitive, e.g. 'CA' for its provinces. Default: all."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_Jurisdiction__"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/jurisdictions/{code}": {
      "get": {
        "tags": [
          "meta"
        ],
        "summary": "Get a jurisdiction",
        "description": "One jurisdiction: name, level, parent, currency, group memberships and tax system.\n\n404 for an unknown code.",
        "operationId": "jurisdiction_v1_jurisdictions__code__get",
        "parameters": [
          {
            "name": "code",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ISO 3166 code of a country or subdivision, case-insensitive, e.g. 'DE' or 'CA-ON'.",
              "examples": [
                "DE"
              ],
              "title": "Code"
            },
            "description": "ISO 3166 code of a country or subdivision, case-insensitive, e.g. 'DE' or 'CA-ON'."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_Jurisdiction_"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/meta/datasets": {
      "get": {
        "tags": [
          "meta"
        ],
        "summary": "List the datasets and their versions",
        "description": "The datasets behind the API, how many records each has and how fresh the series are.\n\n`data.dataset_version` identifies the bundle that answered; it is also in every response's\n`meta.dataset_version` and can be passed back as the `dataset_version` query parameter to\nreproduce an answer later. Curated datasets (tax rates, decision tables, calendars, ...)\nhave a record count; market time series (`fx.ecb`, `rates.sofr`, ...) have `latest`, their\nnewest stored date. For a judgement of freshness use `/v1/sources/status`.",
        "operationId": "datasets_v1_meta_datasets_get",
        "parameters": [
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_DatasetsInfo_"
                },
                "example": {
                  "data": {
                    "dataset_version": "3f2a9c1b7d4e",
                    "built_at": "2026-10-01T06:00:00Z",
                    "datasets": [
                      {
                        "id": "jurisdictions",
                        "kind": "curated",
                        "records": 52
                      },
                      {
                        "id": "tax.indirect.rates",
                        "kind": "curated",
                        "records": 415
                      },
                      {
                        "id": "fx.ecb",
                        "kind": "timeseries",
                        "latest": "2026-09-30"
                      }
                    ]
                  },
                  "meta": {
                    "dataset_version": "3f2a9c1b7d4e",
                    "sources": [],
                    "notes": []
                  }
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/rates/benchmarks": {
      "get": {
        "tags": [
          "benchmark rates"
        ],
        "summary": "List the benchmark rates",
        "description": "The overnight benchmark rates: SOFR (USD), EUR STR, SONIA (GBP) and SARON (CHF).\n\n`data` describes each benchmark: its id (use it in the other endpoints), administrator,\ncurrency, tenor, day-count convention, whether it is secured, when and where the fixing\nis published, and the business-day calendar it follows.",
        "operationId": "benchmarks_v1_rates_benchmarks_get",
        "parameters": [
          {
            "name": "currency",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only benchmarks in this currency, ISO 4217, case-insensitive, e.g. 'USD'. Default: all.",
              "examples": [
                "USD"
              ],
              "title": "Currency"
            },
            "description": "Only benchmarks in this currency, ISO 4217, case-insensitive, e.g. 'USD'. Default: all."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_Benchmark__"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/rates/benchmarks/{benchmark_id}": {
      "get": {
        "tags": [
          "benchmark rates"
        ],
        "summary": "Get a benchmark rate",
        "description": "One benchmark's definition and sources: administrator, day count, publication time.\n\nIt does not return fixings; use `/observations` or `/latest` for the values. 404 for an\nunknown benchmark id.",
        "operationId": "benchmark_v1_rates_benchmarks__benchmark_id__get",
        "parameters": [
          {
            "name": "benchmark_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Benchmark id: 'sofr', 'estr', 'sonia' or 'saron' (see GET /v1/rates/benchmarks).",
              "examples": [
                "sofr"
              ],
              "title": "Benchmark Id"
            },
            "description": "Benchmark id: 'sofr', 'estr', 'sonia' or 'saron' (see GET /v1/rates/benchmarks)."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_Benchmark_"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/rates/benchmarks/{benchmark_id}/latest": {
      "get": {
        "tags": [
          "benchmark rates"
        ],
        "summary": "Get the latest fixing of a benchmark",
        "description": "The most recent fixing of a benchmark, optionally as of a date.\n\n`data.value` is the rate in percent per annum as a decimal string and `data.date` the\nday it was published for. `meta.as_of` repeats the `as_of` parameter (null when omitted).\n404 for an unknown benchmark id or when no fixing is stored on or before the date.",
        "operationId": "latest_v1_rates_benchmarks__benchmark_id__latest_get",
        "parameters": [
          {
            "name": "benchmark_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Benchmark id: 'sofr', 'estr', 'sonia' or 'saron' (see GET /v1/rates/benchmarks).",
              "examples": [
                "sofr"
              ],
              "title": "Benchmark Id"
            },
            "description": "Benchmark id: 'sofr', 'estr', 'sonia' or 'saron' (see GET /v1/rates/benchmarks)."
          },
          {
            "name": "as_of",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Latest fixing on or before this date (ISO 8601). Defaults to the most recent fixing stored.",
              "examples": [
                "2026-09-25"
              ],
              "title": "As Of"
            },
            "description": "Latest fixing on or before this date (ISO 8601). Defaults to the most recent fixing stored."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_RateObservation_"
                },
                "example": {
                  "data": {
                    "benchmark_id": "sofr",
                    "date": "2026-09-25",
                    "value": "3.9",
                    "source": "nyfed"
                  },
                  "meta": {
                    "dataset_version": "3f2a9c1b7d4e",
                    "sources": [
                      {
                        "authority": "Federal Reserve Bank of New York",
                        "url": "https://www.newyorkfed.org/markets/reference-rates/sofr",
                        "reference": "SOFR reference rate",
                        "verified_at": "2026-09-29",
                        "kind": "official"
                      }
                    ],
                    "notes": []
                  }
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/rates/benchmarks/{benchmark_id}/observations": {
      "get": {
        "tags": [
          "benchmark rates"
        ],
        "summary": "List the fixings of a benchmark",
        "description": "Daily fixings of a benchmark between two dates.\n\n`data` has one row per publication day, oldest first: `value` is the rate in percent per\nannum as a decimal string (3.87 means 3.87%). Days with no publication (weekends,\nholidays) have no row. The window is at most about 10 years. 404 for an unknown\nbenchmark id; 422 when `start` is after `end` or the range is longer than 10 years (use\nthe bulk exports for more).",
        "operationId": "observations_v1_rates_benchmarks__benchmark_id__observations_get",
        "parameters": [
          {
            "name": "benchmark_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Benchmark id: 'sofr', 'estr', 'sonia' or 'saron' (see GET /v1/rates/benchmarks).",
              "examples": [
                "sofr"
              ],
              "title": "Benchmark Id"
            },
            "description": "Benchmark id: 'sofr', 'estr', 'sonia' or 'saron' (see GET /v1/rates/benchmarks)."
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "First fixing date to include (ISO 8601, inclusive). Defaults to 30 days before `end`.",
              "examples": [
                "2026-09-20"
              ],
              "title": "Start"
            },
            "description": "First fixing date to include (ISO 8601, inclusive). Defaults to 30 days before `end`."
          },
          {
            "name": "end",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Last fixing date to include (ISO 8601, inclusive). Defaults to today.",
              "examples": [
                "2026-09-30"
              ],
              "title": "End"
            },
            "description": "Last fixing date to include (ISO 8601, inclusive). Defaults to today."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_RateObservation__"
                },
                "example": {
                  "data": [
                    {
                      "benchmark_id": "sofr",
                      "date": "2026-09-21",
                      "value": "3.85",
                      "source": "nyfed"
                    },
                    {
                      "benchmark_id": "sofr",
                      "date": "2026-09-22",
                      "value": "3.87",
                      "source": "nyfed"
                    }
                  ],
                  "meta": {
                    "dataset_version": "3f2a9c1b7d4e",
                    "sources": [
                      {
                        "authority": "Federal Reserve Bank of New York",
                        "url": "https://www.newyorkfed.org/markets/reference-rates/sofr",
                        "reference": "SOFR reference rate",
                        "verified_at": "2026-09-29",
                        "kind": "official"
                      }
                    ],
                    "notes": []
                  }
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/sources": {
      "get": {
        "tags": [
          "meta"
        ],
        "summary": "List the source authorities",
        "description": "The source registry: the one authority each domain is collected from, per jurisdiction.\n\nEach authority lists its official web hosts, the domains it provides, how (`feed` pulled\nby a connector or `curated` by hand), how often and where the data is published. With\n`domain` and `jurisdiction` the answer is the single primary authority (or an empty list).",
        "operationId": "sources_v1_sources_get",
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "accounting_standards",
                    "benchmark_rates",
                    "calendars",
                    "e_invoicing",
                    "fixed_assets",
                    "fx_reference",
                    "indirect_tax",
                    "legislation",
                    "recapitulative_statements",
                    "tax_fx",
                    "tax_returns"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only authorities that provide this domain: 'indirect_tax', 'tax_fx', 'fx_reference', 'benchmark_rates', 'calendars', 'fixed_assets', 'e_invoicing', 'legislation', 'accounting_standards', 'tax_returns' or 'recapitulative_statements'. Default: all.",
              "examples": [
                "indirect_tax"
              ],
              "title": "Domain"
            },
            "description": "Only authorities that provide this domain: 'indirect_tax', 'tax_fx', 'fx_reference', 'benchmark_rates', 'calendars', 'fixed_assets', 'e_invoicing', 'legislation', 'accounting_standards', 'tax_returns' or 'recapitulative_statements'. Default: all."
          },
          {
            "name": "jurisdiction",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only the authority that is primary here (or for a parent). Requires `domain`; without it the call gives 422. ISO 3166 code, case-insensitive.",
              "examples": [
                "DE"
              ],
              "title": "Jurisdiction"
            },
            "description": "Only the authority that is primary here (or for a parent). Requires `domain`; without it the call gives 422. ISO 3166 code, case-insensitive."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_SourceAuthority__"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/sources/register": {
      "get": {
        "tags": [
          "meta"
        ],
        "summary": "Get the source register",
        "description": "Every data point we collect: its authority, how and how often it arrives, the records\nit produces and which endpoints and ERP features use it (docs/source-register.md).\n\n`data.domains` describes each kind of data and the endpoints that serve it,\n`data.data_points` has one row per authority and domain, and `data.authorities` lists the\npublishers. It is the same content as the generated register in the repository.",
        "operationId": "source_register_v1_sources_register_get",
        "parameters": [
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_Register_"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/sources/status": {
      "get": {
        "tags": [
          "meta"
        ],
        "summary": "Check whether the data is current",
        "description": "Whether each data point of the register is current: per ingest feed the newest stored\ndate, its freshness rule and the connector's last run; per curated data point the\nrecords, the oldest and newest verification dates and the source watcher's coverage.\nStates: `ok`, `stale`, `no_data`, `error` (see docs/data-sources.md).\n\n`meta.as_of` is the date freshness was judged on. A data point is `error` when the last\ningest run failed, `no_data` when nothing is stored, `stale` when older than its rule\nallows and `ok` otherwise.",
        "operationId": "source_status_v1_sources_status_get",
        "parameters": [
          {
            "name": "as_of",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Judge freshness on this date (ISO 8601, e.g. 2026-10-01). Defaults to today.",
              "examples": [
                "2026-10-01"
              ],
              "title": "As Of"
            },
            "description": "Judge freshness on this date (ISO 8601, e.g. 2026-10-01). Defaults to today."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_SourcesStatus_"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/standards/compare/{area}": {
      "get": {
        "tags": [
          "accounting standards"
        ],
        "summary": "Compare IFRS and US GAAP in an area",
        "description": "The topics and differences of one subject area side by side.\n\n`data.topics` are the IFRS and US GAAP topics of the area and `data.differences` the\nkey differences. 404 for an area that has no topics; the error message lists the known\nareas.",
        "operationId": "compare_v1_standards_compare__area__get",
        "parameters": [
          {
            "name": "area",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Subject area: 'fx', 'impairment', 'income_taxes', 'intangibles', 'inventory', 'leases', 'ppe' or 'revenue'.",
              "examples": [
                "leases"
              ],
              "title": "Area"
            },
            "description": "Subject area: 'fx', 'impairment', 'income_taxes', 'intangibles', 'inventory', 'leases', 'ppe' or 'revenue'."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_Comparison_"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/standards/differences": {
      "get": {
        "tags": [
          "accounting standards"
        ],
        "summary": "List the IFRS and US GAAP differences",
        "description": "Key differences between IFRS and US GAAP, in our own words.\n\nEach difference names the topics it relates to and gives the treatment under each\nframework in `positions` (framework id to text), plus what it means for an ERP. An\nunknown filter value returns an empty list.",
        "operationId": "differences_v1_standards_differences_get",
        "parameters": [
          {
            "name": "area",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only differences in this subject area, e.g. 'ppe' or 'leases' (the areas listed for GET /v1/standards/topics). Default: all.",
              "examples": [
                "inventory"
              ],
              "title": "Area"
            },
            "description": "Only differences in this subject area, e.g. 'ppe' or 'leases' (the areas listed for GET /v1/standards/topics). Default: all."
          },
          {
            "name": "topic",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only differences that involve this topic id, e.g. 'ifrs.ias2'. Default: all.",
              "examples": [
                "ifrs.ias2"
              ],
              "title": "Topic"
            },
            "description": "Only differences that involve this topic id, e.g. 'ifrs.ias2'. Default: all."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_Difference__"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/standards/frameworks": {
      "get": {
        "tags": [
          "accounting standards"
        ],
        "summary": "List the accounting frameworks",
        "description": "The accounting frameworks covered: IFRS and US GAAP.\n\n`data` lists each framework's id (use it as `framework` in `/topics`), name, issuer and\nhomepage.",
        "operationId": "frameworks_v1_standards_frameworks_get",
        "parameters": [
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_Framework__"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/standards/topics": {
      "get": {
        "tags": [
          "accounting standards"
        ],
        "summary": "List the accounting standards topics",
        "description": "The map of accounting standards by topic, e.g. IAS 16 and ASC 360 for property, plant\nand equipment.\n\nEach topic has the official designation (`code`), its subject `area`, our own short\nsummary (not standard text), the counterpart topics in the other framework and what an\nERP must support. An unknown filter value returns an empty list.",
        "operationId": "topics_v1_standards_topics_get",
        "parameters": [
          {
            "name": "framework",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only topics of this framework: 'ifrs' or 'us_gaap'. Default: both.",
              "examples": [
                "ifrs"
              ],
              "title": "Framework"
            },
            "description": "Only topics of this framework: 'ifrs' or 'us_gaap'. Default: both."
          },
          {
            "name": "area",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only topics of this subject area: 'fx', 'impairment', 'income_taxes', 'intangibles', 'inventory', 'leases', 'ppe' or 'revenue'. Default: all.",
              "examples": [
                "leases"
              ],
              "title": "Area"
            },
            "description": "Only topics of this subject area: 'fx', 'impairment', 'income_taxes', 'intangibles', 'inventory', 'leases', 'ppe' or 'revenue'. Default: all."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_Topic__"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/standards/topics/{topic_id}": {
      "get": {
        "tags": [
          "accounting standards"
        ],
        "summary": "Get an accounting standards topic",
        "description": "One topic with its summary, counterparts and ERP impact.\n\n404 for an unknown topic id.",
        "operationId": "topic_v1_standards_topics__topic_id__get",
        "parameters": [
          {
            "name": "topic_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Topic id, e.g. 'ifrs.ias16' or 'us_gaap.asc360' (see GET /v1/standards/topics).",
              "examples": [
                "ifrs.ias16"
              ],
              "title": "Topic Id"
            },
            "description": "Topic id, e.g. 'ifrs.ias16' or 'us_gaap.asc360' (see GET /v1/standards/topics)."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_Topic_"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/tax/indirect/determine": {
      "post": {
        "tags": [
          "indirect tax"
        ],
        "summary": "Determine the VAT treatment of a supply",
        "description": "Where is the supply taxed, who is liable, and at what rate?\n\nThe request describes one supply (supplier and customer jurisdictions, B2B or B2C, type\nof supply, date). The service picks the place-of-supply decision table for the pair of\ncountries, evaluates it, and looks up the rate in force in the taxing jurisdiction.\n`data.liable_party` says who accounts for the tax, `invoice_rate` is the percent the\nsupplier charges on the invoice (0 under reverse charge or for an exempt supply),\n`accounted_rate` the percent due, `components` the rates used, and `trace` the rule that\nmatched with its legal reference. `meta.as_of` is the tax point used.\nRefuses with 404 for an unknown jurisdiction, a supply type that is not modelled for\nthat pair of countries, or no rate of the requested type on that date; with 422 when\nseveral rates match and a `category` is needed, or when `place_of_performance` is\nmissing for a place-of-performance supply type. Not tax advice.",
        "operationId": "determine_v1_tax_indirect_determine_post",
        "parameters": [
          {
            "name": "known_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Point-in-time view of the dataset: only records published on or before this date (records without a publication date always count). Combine with as_of to reproduce what the API answered on that day. ISO 8601, e.g. 2026-01-15. Defaults to no limit.",
              "examples": [
                "2026-01-15"
              ],
              "title": "Known At"
            },
            "description": "Point-in-time view of the dataset: only records published on or before this date (records without a publication date always count). Combine with as_of to reproduce what the API answered on that day. ISO 8601, e.g. 2026-01-15. Defaults to no limit."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DetermineRequest"
              },
              "examples": {
                "b2b_services_eu": {
                  "summary": "German supplier, French business customer, services",
                  "value": {
                    "seller_jurisdiction": "DE",
                    "buyer_jurisdiction": "FR",
                    "customer_type": "B2B",
                    "supply_type": "services",
                    "date": "2026-03-01"
                  }
                },
                "b2c_goods_below_threshold": {
                  "summary": "German supplier, Swedish private customer, goods, distance-sales turnover below EUR 10,000",
                  "value": {
                    "seller_jurisdiction": "DE",
                    "buyer_jurisdiction": "SE",
                    "customer_type": "B2C",
                    "supply_type": "goods",
                    "date": "2026-09-15",
                    "seller_eu_cross_border_turnover_eur": "4000"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_Determination_"
                },
                "example": {
                  "data": {
                    "taxing_jurisdiction": "FR",
                    "treatment": "reverse_charge",
                    "liable_party": "customer",
                    "invoice_rate": "0",
                    "accounted_rate": "20",
                    "components": [
                      {
                        "series": "fr.vat.standard",
                        "jurisdiction": "FR",
                        "tax_type": "vat",
                        "rate_type": "standard",
                        "rate": "20",
                        "categories": [
                          "general"
                        ],
                        "supersedes": [],
                        "valid_from": "2019-01-01",
                        "id": "fr.vat.standard@2019-01-01",
                        "sources": [
                          {
                            "authority": "Ministère de l'Économie",
                            "url": "https://www.economie.gouv.fr/particuliers/impots-et-fiscalite/gerer-mes-autres-impots-et-taxes/tva-quels-sont-les-taux-de-votre-quotidien",
                            "reference": "CGI art. 278 à 281 nonies",
                            "verified_at": "2026-09-29",
                            "kind": "official"
                          }
                        ]
                      }
                    ],
                    "trace": {
                      "table_id": "eu.vat.place_of_supply",
                      "rule_id": "b2b_services_general_rule",
                      "reference": "Directive 2006/112/EC Art. 44 (place of supply), Art. 196 (reverse charge)",
                      "note": "Invoice must state \"Reverse charge\" (Art. 226(11a))."
                    },
                    "thresholds": [],
                    "notes": [
                      "Reverse charge: the customer self-assesses tax in FR.",
                      "Invoice must state \"Reverse charge\" (Art. 226(11a))."
                    ],
                    "limitations": [
                      "Other specific place-of-supply rules are not modelled: intermediaries (Art. 46), transport of goods (Art. 49-52), ancillary transport, valuations and work on movable property for private customers (Art. 54(2)), and services to private customers outside the EU (Art. 59)."
                    ]
                  },
                  "meta": {
                    "dataset_version": "3f2a9c1b7d4e",
                    "as_of": "2026-03-01",
                    "sources": [
                      {
                        "authority": "Ministère de l'Économie",
                        "url": "https://www.economie.gouv.fr/particuliers/impots-et-fiscalite/gerer-mes-autres-impots-et-taxes/tva-quels-sont-les-taux-de-votre-quotidien",
                        "reference": "CGI art. 278 à 281 nonies",
                        "verified_at": "2026-09-29",
                        "kind": "official"
                      }
                    ],
                    "notes": []
                  }
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/tax/indirect/net-tax-rates": {
      "get": {
        "tags": [
          "indirect tax"
        ],
        "summary": "List net and flat tax rates by activity",
        "description": "Net and flat tax rates by activity in force on a date (CH: MWSTG Art. 37).\n\nA taxable person on the net tax rate method pays turnover incl. VAT x rate and deducts\nno input tax. These rates never replace the statutory rate on the invoice. `data` is\nsorted by scheme and activity; `rate` is a percent of gross turnover as a decimal string.\nOnly Switzerland has data; other jurisdictions return an empty list, an unknown one 404.",
        "operationId": "net_tax_rates_v1_tax_indirect_net_tax_rates_get",
        "parameters": [
          {
            "name": "jurisdiction",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ISO 3166 code of a country or subdivision, case-insensitive, e.g. 'DE', 'CH', 'CA-ON', 'US-CA' (see GET /v1/jurisdictions). Unknown codes give 404.",
              "examples": [
                "DE"
              ],
              "title": "Jurisdiction"
            },
            "description": "ISO 3166 code of a country or subdivision, case-insensitive, e.g. 'DE', 'CH', 'CA-ON', 'US-CA' (see GET /v1/jurisdictions). Unknown codes give 404."
          },
          {
            "name": "as_of",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Legal effective date: return the records in force on this date (valid_from on or before it, valid_to on or after it or empty). ISO 8601, e.g. 2020-08-01. Defaults to today (server date).",
              "examples": [
                "2020-08-01"
              ],
              "title": "As Of"
            },
            "description": "Legal effective date: return the records in force on this date (valid_from on or before it, valid_to on or after it or empty). ISO 8601, e.g. 2020-08-01. Defaults to today (server date)."
          },
          {
            "name": "known_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Point-in-time view of the dataset: only records published on or before this date (records without a publication date always count). Combine with as_of to reproduce what the API answered on that day. ISO 8601, e.g. 2026-01-15. Defaults to no limit.",
              "examples": [
                "2026-01-15"
              ],
              "title": "Known At"
            },
            "description": "Point-in-time view of the dataset: only records published on or before this date (records without a publication date always count). Combine with as_of to reproduce what the API answered on that day. ISO 8601, e.g. 2026-01-15. Defaults to no limit."
          },
          {
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Case-insensitive text to find in the activity name, e.g. 'Anwalt'. Default: all activities.",
              "examples": [
                "Anwalt"
              ],
              "title": "Q"
            },
            "description": "Case-insensitive text to find in the activity name, e.g. 'Anwalt'. Default: all activities."
          },
          {
            "name": "scheme",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "flat_tax_rate",
                    "net_tax_rate",
                    "quick_method"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "'net_tax_rate' (Saldosteuersatz) or 'flat_tax_rate' (Pauschalsteuersatz). Default: both.",
              "examples": [
                "net_tax_rate"
              ],
              "title": "Scheme"
            },
            "description": "'net_tax_rate' (Saldosteuersatz) or 'flat_tax_rate' (Pauschalsteuersatz). Default: both."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_NetTaxRate__"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/tax/indirect/net-tax-rates/thresholds": {
      "get": {
        "tags": [
          "indirect tax"
        ],
        "summary": "List the eligibility limits of the net tax rate method",
        "description": "Eligibility limits of the net tax rate method (CH: MWSTG Art. 37 Abs. 1; CA: RC4058).\n\n`data` lists the maximum annual turnover and tax payable (decimal strings, with the\ncurrency) up to which a taxable person may use a simplified scheme, valid on the date.\nSwitzerland and Canada have data; other jurisdictions return an empty list, an unknown\none 404.",
        "operationId": "net_tax_thresholds_v1_tax_indirect_net_tax_rates_thresholds_get",
        "parameters": [
          {
            "name": "jurisdiction",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ISO 3166 code of a country or subdivision, case-insensitive, e.g. 'DE', 'CH', 'CA-ON', 'US-CA' (see GET /v1/jurisdictions). Unknown codes give 404.",
              "examples": [
                "DE"
              ],
              "title": "Jurisdiction"
            },
            "description": "ISO 3166 code of a country or subdivision, case-insensitive, e.g. 'DE', 'CH', 'CA-ON', 'US-CA' (see GET /v1/jurisdictions). Unknown codes give 404."
          },
          {
            "name": "as_of",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Legal effective date: return the records in force on this date (valid_from on or before it, valid_to on or after it or empty). ISO 8601, e.g. 2020-08-01. Defaults to today (server date).",
              "examples": [
                "2020-08-01"
              ],
              "title": "As Of"
            },
            "description": "Legal effective date: return the records in force on this date (valid_from on or before it, valid_to on or after it or empty). ISO 8601, e.g. 2020-08-01. Defaults to today (server date)."
          },
          {
            "name": "known_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Point-in-time view of the dataset: only records published on or before this date (records without a publication date always count). Combine with as_of to reproduce what the API answered on that day. ISO 8601, e.g. 2026-01-15. Defaults to no limit.",
              "examples": [
                "2026-01-15"
              ],
              "title": "Known At"
            },
            "description": "Point-in-time view of the dataset: only records published on or before this date (records without a publication date always count). Combine with as_of to reproduce what the API answered on that day. ISO 8601, e.g. 2026-01-15. Defaults to no limit."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_NetTaxThreshold__"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/tax/indirect/pending": {
      "get": {
        "tags": [
          "indirect tax"
        ],
        "summary": "List pending VAT legislation",
        "description": "Pending legislation: proposals, adopted bills awaiting a vote, scheduled referendums.\n\nInformational only. Pending changes are never applied to `/rates` or `/determine`;\nwhen one is enacted, the new rate versions are added to the curated rates. `data` is\nsorted by the date of the next decision (`decision_date`), each with its `status`, the\nnext step, when it would apply if adopted, and the series it would change. A\njurisdiction filter also matches its subdivisions; an unknown one gives 404.",
        "operationId": "pending_v1_tax_indirect_pending_get",
        "parameters": [
          {
            "name": "jurisdiction",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "ISO 3166 code of a country or subdivision, case-insensitive, e.g. 'CH'. Empty means all jurisdictions. Unknown codes give 404.",
              "examples": [
                "CH"
              ],
              "title": "Jurisdiction"
            },
            "description": "ISO 3166 code of a country or subdivision, case-insensitive, e.g. 'CH'. Empty means all jurisdictions. Unknown codes give 404."
          },
          {
            "name": "include_closed",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Also return enacted, rejected and withdrawn proposals. Default false (only open ones).",
              "default": false,
              "title": "Include Closed"
            },
            "description": "Also return enacted, rejected and withdrawn proposals. Default false (only open ones)."
          },
          {
            "name": "known_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Point-in-time view of the dataset: only records published on or before this date (records without a publication date always count). Combine with as_of to reproduce what the API answered on that day. ISO 8601, e.g. 2026-01-15. Defaults to no limit.",
              "examples": [
                "2026-01-15"
              ],
              "title": "Known At"
            },
            "description": "Point-in-time view of the dataset: only records published on or before this date (records without a publication date always count). Combine with as_of to reproduce what the API answered on that day. ISO 8601, e.g. 2026-01-15. Defaults to no limit."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_PendingChange__"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/tax/indirect/rates": {
      "get": {
        "tags": [
          "indirect tax"
        ],
        "summary": "List the VAT rates in force",
        "description": "VAT, GST and sales-tax rates in force in a jurisdiction on a date.\n\n`data` lists one rate per series (standard, reduced, zero, exempt and special rates),\nstandard rate first, each with `rate` in percent as a decimal string, its validity\nperiod, categories and sources. Pass `as_of` for the law on a date and `known_at` for\nwhat the dataset knew on a date. `meta.as_of` is the date used and `meta.notes` carries\njurisdiction-specific caveats. An unknown jurisdiction gives 404; an empty list means no\nrate was in force on that date (history starts 2019-01-01).",
        "operationId": "rates_v1_tax_indirect_rates_get",
        "parameters": [
          {
            "name": "jurisdiction",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ISO 3166 code of a country or subdivision, case-insensitive, e.g. 'DE', 'CH', 'CA-ON', 'US-CA' (see GET /v1/jurisdictions). Unknown codes give 404.",
              "examples": [
                "DE"
              ],
              "title": "Jurisdiction"
            },
            "description": "ISO 3166 code of a country or subdivision, case-insensitive, e.g. 'DE', 'CH', 'CA-ON', 'US-CA' (see GET /v1/jurisdictions). Unknown codes give 404."
          },
          {
            "name": "as_of",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Legal effective date: return the records in force on this date (valid_from on or before it, valid_to on or after it or empty). ISO 8601, e.g. 2020-08-01. Defaults to today (server date).",
              "examples": [
                "2020-08-01"
              ],
              "title": "As Of"
            },
            "description": "Legal effective date: return the records in force on this date (valid_from on or before it, valid_to on or after it or empty). ISO 8601, e.g. 2020-08-01. Defaults to today (server date)."
          },
          {
            "name": "known_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Point-in-time view of the dataset: only records published on or before this date (records without a publication date always count). Combine with as_of to reproduce what the API answered on that day. ISO 8601, e.g. 2026-01-15. Defaults to no limit.",
              "examples": [
                "2026-01-15"
              ],
              "title": "Known At"
            },
            "description": "Point-in-time view of the dataset: only records published on or before this date (records without a publication date always count). Combine with as_of to reproduce what the API answered on that day. ISO 8601, e.g. 2026-01-15. Defaults to no limit."
          },
          {
            "name": "include_parents",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include the national rates a subdivision inherits (US-CA also returns the rates of US). A subdivision rate that supersedes a national one replaces it. Default true.",
              "default": true,
              "title": "Include Parents"
            },
            "description": "Include the national rates a subdivision inherits (US-CA also returns the rates of US). A subdivision rate that supersedes a national one replaces it. Default true."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_TaxRate__"
                },
                "example": {
                  "data": [
                    {
                      "series": "de.vat.standard",
                      "jurisdiction": "DE",
                      "tax_type": "vat",
                      "rate_type": "standard",
                      "rate": "16",
                      "categories": [
                        "general"
                      ],
                      "description": "Temporary COVID-19 reduction",
                      "supersedes": [],
                      "valid_from": "2020-07-01",
                      "valid_to": "2020-12-31",
                      "id": "de.vat.standard@2020-07-01",
                      "sources": [
                        {
                          "authority": "Bundesministerium der Finanzen",
                          "url": "https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Steuerarten/Umsatzsteuer/2020-06-12-befristete-Senkung-umsatzsteuer-juli-2020.html",
                          "reference": "Befristete Absenkung des allgemeinen und ermäßigten Umsatzsteuersatzes zum 1. Juli 2020; UStG §28 Abs. 1 and 2 (2020)",
                          "verified_at": "2026-10-01",
                          "kind": "official"
                        }
                      ]
                    }
                  ],
                  "meta": {
                    "dataset_version": "3f2a9c1b7d4e",
                    "as_of": "2020-08-01",
                    "sources": [
                      {
                        "authority": "Bundesministerium der Finanzen",
                        "url": "https://www.bundesfinanzministerium.de/Content/DE/Downloads/BMF_Schreiben/Steuerarten/Umsatzsteuer/2020-06-12-befristete-Senkung-umsatzsteuer-juli-2020.html",
                        "reference": "Befristete Absenkung des allgemeinen und ermäßigten Umsatzsteuersatzes zum 1. Juli 2020; UStG §28 Abs. 1 and 2 (2020)",
                        "verified_at": "2026-10-01",
                        "kind": "official"
                      }
                    ],
                    "notes": [
                      "History in this dataset starts 2019-01-01; a valid_from of 2019-01-01 means the rate was already in force."
                    ]
                  }
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/tax/indirect/rates/history/{series}": {
      "get": {
        "tags": [
          "indirect tax"
        ],
        "summary": "Get the history of a rate series",
        "description": "Every version of a rate series, oldest first, e.g. `de.vat.standard`.\n\nUse it to see when a rate changed (each version has `valid_from` and `valid_to`, the\nlast day it applied). The series id is the `series` field of a rate from `/rates`.\n404 if no rate has that series id.",
        "operationId": "history_v1_tax_indirect_rates_history__series__get",
        "parameters": [
          {
            "name": "series",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Rate series id, e.g. 'de.vat.standard' (the `series` of a rate).",
              "examples": [
                "de.vat.standard"
              ],
              "title": "Series"
            },
            "description": "Rate series id, e.g. 'de.vat.standard' (the `series` of a rate)."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_TaxRate__"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/tax/indirect/return-forms": {
      "get": {
        "tags": [
          "indirect tax"
        ],
        "summary": "List the official VAT return forms in force",
        "description": "Official VAT return forms in force on a date: their boxes, as numbered by the\nauthority, and the rules that map tax-tagged ledger lines to the boxes.\n\nThe rules are DMN-lite (hit policy first) over the line facts described in the\nform model; a client evaluates them per ledger line and sums the boxes. A subdivision\nresolves to its country's forms. An empty list means no form is modelled for the\njurisdiction on that date; an unknown jurisdiction gives 404.",
        "operationId": "return_forms_v1_tax_indirect_return_forms_get",
        "parameters": [
          {
            "name": "jurisdiction",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "description": "ISO 3166 code of a country or subdivision, case-insensitive, e.g. 'DE', 'CH', 'CA-ON', 'US-CA' (see GET /v1/jurisdictions). Unknown codes give 404.",
              "examples": [
                "DE"
              ],
              "title": "Jurisdiction"
            },
            "description": "ISO 3166 code of a country or subdivision, case-insensitive, e.g. 'DE', 'CH', 'CA-ON', 'US-CA' (see GET /v1/jurisdictions). Unknown codes give 404."
          },
          {
            "name": "as_of",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Legal effective date: return the records in force on this date (valid_from on or before it, valid_to on or after it or empty). ISO 8601, e.g. 2020-08-01. Defaults to today (server date).",
              "examples": [
                "2020-08-01"
              ],
              "title": "As Of"
            },
            "description": "Legal effective date: return the records in force on this date (valid_from on or before it, valid_to on or after it or empty). ISO 8601, e.g. 2020-08-01. Defaults to today (server date)."
          },
          {
            "name": "known_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Point-in-time view of the dataset: only records published on or before this date (records without a publication date always count). Combine with as_of to reproduce what the API answered on that day. ISO 8601, e.g. 2026-01-15. Defaults to no limit.",
              "examples": [
                "2026-01-15"
              ],
              "title": "Known At"
            },
            "description": "Point-in-time view of the dataset: only records published on or before this date (records without a publication date always count). Combine with as_of to reproduce what the API answered on that day. ISO 8601, e.g. 2026-01-15. Defaults to no limit."
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "annual_summary",
                    "oss_return",
                    "pst_return_bc",
                    "pst_return_sk",
                    "qst_return",
                    "recapitulative_statement",
                    "rst_return_mb",
                    "vat_return"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "'vat_return', 'recapitulative_statement' (EC sales list), 'annual_summary' (annual VAT return) or a Canadian provincial return ('qst_return', 'pst_return_bc', 'pst_return_sk', 'rst_return_mb'). Default: all.",
              "examples": [
                "vat_return"
              ],
              "title": "Kind"
            },
            "description": "'vat_return', 'recapitulative_statement' (EC sales list), 'annual_summary' (annual VAT return) or a Canadian provincial return ('qst_return', 'pst_return_bc', 'pst_return_sk', 'rst_return_mb'). Default: all."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_ReturnForm__"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/tax/indirect/return-forms/{form_id}": {
      "get": {
        "tags": [
          "indirect tax"
        ],
        "summary": "Get a VAT return form",
        "description": "One return form version by id, e.g. `de.bmf.ustva.2026`.\n\n`data` has the form's boxes (with the official field number in `code`), the rules that\nroute ledger lines to boxes, and how the amount payable is computed from the boxes.\n404 for an unknown id.",
        "operationId": "return_form_v1_tax_indirect_return_forms__form_id__get",
        "parameters": [
          {
            "name": "form_id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Return form id, e.g. 'de.bmf.ustva.2026' (the `id` from /return-forms).",
              "examples": [
                "de.bmf.ustva.2026"
              ],
              "title": "Form Id"
            },
            "description": "Return form id, e.g. 'de.bmf.ustva.2026' (the `id` from /return-forms)."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_ReturnForm_"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/tax/indirect/thresholds": {
      "get": {
        "tags": [
          "indirect tax"
        ],
        "summary": "List the VAT thresholds in force",
        "description": "VAT thresholds in force on a date: the EU-wide EUR 10,000 distance-sales threshold,\nthe EUR 150 import one-stop-shop consignment limit, and small-business exemption limits.\n\n`data` lists the thresholds (amount as a decimal string, currency, what it is compared\nwith, which supplies it covers) sorted by jurisdiction and kind. `meta.as_of` is the date\nused. Combine with `known_at` for a point-in-time view. An unknown jurisdiction gives 404.",
        "operationId": "thresholds_v1_tax_indirect_thresholds_get",
        "parameters": [
          {
            "name": "jurisdiction",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "A jurisdiction (its own, its parents' and its groups' thresholds, e.g. AT also returns the EU ones), a group such as 'EU', or empty for all. Unknown codes give 404.",
              "examples": [
                "AT"
              ],
              "title": "Jurisdiction"
            },
            "description": "A jurisdiction (its own, its parents' and its groups' thresholds, e.g. AT also returns the EU ones), a group such as 'EU', or empty for all. Unknown codes give 404."
          },
          {
            "name": "kind",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "enum": [
                    "distance_sales",
                    "low_value_consignment",
                    "small_business_exemption",
                    "sme_union_turnover"
                  ],
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Only this kind: 'distance_sales', 'low_value_consignment', 'small_business_exemption' or 'sme_union_turnover'. Default: all kinds.",
              "examples": [
                "distance_sales"
              ],
              "title": "Kind"
            },
            "description": "Only this kind: 'distance_sales', 'low_value_consignment', 'small_business_exemption' or 'sme_union_turnover'. Default: all kinds."
          },
          {
            "name": "as_of",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Legal effective date: return the records in force on this date (valid_from on or before it, valid_to on or after it or empty). ISO 8601, e.g. 2020-08-01. Defaults to today (server date).",
              "examples": [
                "2020-08-01"
              ],
              "title": "As Of"
            },
            "description": "Legal effective date: return the records in force on this date (valid_from on or before it, valid_to on or after it or empty). ISO 8601, e.g. 2020-08-01. Defaults to today (server date)."
          },
          {
            "name": "known_at",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "date"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Point-in-time view of the dataset: only records published on or before this date (records without a publication date always count). Combine with as_of to reproduce what the API answered on that day. ISO 8601, e.g. 2026-01-15. Defaults to no limit.",
              "examples": [
                "2026-01-15"
              ],
              "title": "Known At"
            },
            "description": "Point-in-time view of the dataset: only records published on or before this date (records without a publication date always count). Combine with as_of to reproduce what the API answered on that day. ISO 8601, e.g. 2026-01-15. Defaults to no limit."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_TaxThreshold__"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/v1/tax/indirect/thresholds/history/{series}": {
      "get": {
        "tags": [
          "indirect tax"
        ],
        "summary": "Get the history of a threshold series",
        "description": "Every version of a threshold series, oldest first, e.g.\n`eu.vat.distance_sales_threshold`.\n\nEach version has its `valid_from` and `valid_to` (the last day it applied). The series id\nis the `series` field of a threshold from `/thresholds`. 404 if no threshold has that\nseries id.",
        "operationId": "threshold_history_v1_tax_indirect_thresholds_history__series__get",
        "parameters": [
          {
            "name": "series",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "description": "Threshold series id, e.g. 'eu.vat.distance_sales_threshold' (the `series` of a threshold).",
              "examples": [
                "eu.vat.distance_sales_threshold"
              ],
              "title": "Series"
            },
            "description": "Threshold series id, e.g. 'eu.vat.distance_sales_threshold' (the `series` of a threshold)."
          },
          {
            "name": "dataset_version",
            "in": "query",
            "required": false,
            "schema": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404.",
              "examples": [
                "3f2a9c1b7d4e"
              ],
              "title": "Dataset Version"
            },
            "description": "Pin the response to an archived dataset version (git SHA). Defaults to the current version. Also accepted as the X-Dataset-Version header. The version that answered is in meta.dataset_version; an archived version that does not exist gives 404."
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Envelope_list_TaxThreshold__"
                }
              }
            }
          },
          "422": {
            "description": "The request is invalid: `{\"detail\": \"…\"}` for a rule the service checks, or FastAPI's `{\"detail\": [{\"loc\", \"msg\", \"type\"}]}` for a malformed parameter or body.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          },
          "401": {
            "description": "Missing or invalid API key.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "Nothing found for the identifier, or the pinned `dataset_version` is not archived.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        },
        "security": [
          {
            "apiKeyAuth": []
          },
          {
            "bearerAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "AdjustedDate": {
        "properties": {
          "calendars": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Calendars",
            "description": "The calendar ids the answer is for, as resolved."
          },
          "date": {
            "type": "string",
            "format": "date",
            "title": "Date",
            "description": "The date that was adjusted (ISO 8601)."
          },
          "convention": {
            "type": "string",
            "enum": [
              "following",
              "modified_following",
              "modified_preceding",
              "preceding"
            ],
            "title": "Convention",
            "description": "The business day convention that was applied."
          },
          "result": {
            "type": "string",
            "format": "date",
            "title": "Result",
            "description": "The adjusted date; equal to `date` when it already is a business day."
          }
        },
        "type": "object",
        "required": [
          "calendars",
          "date",
          "convention",
          "result"
        ],
        "title": "AdjustedDate"
      },
      "Agreement": {
        "properties": {
          "boxes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "minItems": 1,
            "title": "Boxes",
            "description": "The boxes that take a difference."
          },
          "equal_to": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "minItems": 1,
            "title": "Equal To",
            "description": "The boxes they equal."
          },
          "reference": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "boxes",
          "equal_to"
        ],
        "title": "Agreement",
        "description": "Two groups of boxes whose amounts the authority requires to be equal (FR: the taxed\noperations of the CA3 and the bases of its rate lines). Rounding each box to whole units\ncan part them by a few units: the largest box of ``boxes`` takes the difference."
      },
      "Allowance": {
        "properties": {
          "sources": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": "array",
            "minItems": 1,
            "title": "Sources",
            "description": "Where the rules come from (at least one), e.g. the authority's page."
          },
          "valid_from": {
            "type": "string",
            "format": "date",
            "title": "Valid From"
          },
          "valid_to": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Valid To"
          },
          "published_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "id": {
            "type": "string",
            "title": "Id",
            "description": "Allowance id."
          },
          "regime": {
            "type": "string",
            "title": "Regime",
            "description": "Id of the regime the allowance belongs to."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Name of the allowance."
          },
          "description": {
            "type": "string",
            "title": "Description",
            "description": "What the allowance permits."
          },
          "limit": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Limit",
            "description": "Annual cap as a decimal string, in `currency`; null if none."
          },
          "currency": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency",
            "description": "ISO 4217 code of the limit."
          },
          "percent": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Percent",
            "description": "Share of cost allowed in the first year, in percent."
          },
          "multiple": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Multiple",
            "description": "Declining balance: the highest multiple of the straight-line rate (DE degressive AfA); `percent` is then the highest rate."
          }
        },
        "type": "object",
        "required": [
          "sources",
          "valid_from",
          "id",
          "regime",
          "name",
          "description"
        ],
        "title": "Allowance",
        "description": "Caps and first-year allowances, e.g. UK Annual Investment Allowance."
      },
      "AssetClass": {
        "properties": {
          "sources": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": "array",
            "minItems": 1,
            "title": "Sources",
            "description": "Where the rules come from (at least one), e.g. the authority's page."
          },
          "valid_from": {
            "type": "string",
            "format": "date",
            "title": "Valid From"
          },
          "valid_to": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Valid To"
          },
          "published_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9_.-]+$",
            "title": "Id",
            "description": "Asset class id, e.g. 'us.macrs.gds.5y'; the `asset_class` of a schedule."
          },
          "regime": {
            "type": "string",
            "title": "Regime",
            "description": "Id of the regime the class belongs to."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Name of the class, e.g. '5-year property'."
          },
          "examples": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Examples",
            "description": "Typical assets in the class."
          },
          "method": {
            "type": "string",
            "enum": [
              "declining_balance",
              "straight_line",
              "sum_of_years_digits",
              "table",
              "units_of_production"
            ],
            "title": "Method",
            "description": "Depreciation method a schedule uses for the class."
          },
          "convention": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "full_year",
                  "half_year",
                  "mid_month",
                  "pro_rata_months"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Convention",
            "description": "First-year convention; null means the regime's default."
          },
          "useful_life_years": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Useful Life Years",
            "description": "Recovery or useful life in years, if the class has one."
          },
          "rate_percent": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rate Percent",
            "description": "Annual rate for rate-based (pool / reducing balance) regimes."
          },
          "straight_line_rate_percent": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Straight Line Rate Percent",
            "description": "Alternative straight-line rate on cost, used when a schedule asks for straight_line (CH: half the declining-balance rate, ESTV Merkblatt A 1995)."
          },
          "table": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Table",
            "description": "DepreciationTable id when method=table."
          },
          "retirement": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "keep",
                  "pool",
                  "write_off"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Retirement",
            "description": "The regime's retirement rule for this class, when it differs: 'keep' for a class that depreciates only down to the value of its land."
          },
          "reference": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference",
            "description": "Legal or administrative reference for the class."
          }
        },
        "type": "object",
        "required": [
          "sources",
          "valid_from",
          "id",
          "regime",
          "name",
          "method"
        ],
        "title": "AssetClass"
      },
      "AuthorityEntry": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "name": {
            "type": "string",
            "title": "Name"
          },
          "jurisdiction": {
            "type": "string",
            "title": "Jurisdiction"
          },
          "homepage": {
            "type": "string",
            "title": "Homepage"
          },
          "hosts": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Hosts"
          },
          "licence": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Licence"
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "jurisdiction",
          "homepage",
          "hosts"
        ],
        "title": "AuthorityEntry"
      },
      "Benchmark": {
        "properties": {
          "sources": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": "array",
            "minItems": 1,
            "title": "Sources",
            "description": "Where the rules come from (at least one), e.g. the authority's page."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9_]+$",
            "title": "Id",
            "description": "Benchmark id used in the URLs, e.g. 'sofr'."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Official name, e.g. 'Secured Overnight Financing Rate'."
          },
          "currency": {
            "type": "string",
            "title": "Currency",
            "description": "ISO 4217 code of the currency the rate is for."
          },
          "administrator": {
            "type": "string",
            "title": "Administrator",
            "description": "The body that calculates and publishes the rate."
          },
          "tenor": {
            "type": "string",
            "title": "Tenor",
            "description": "'ON' for overnight rates."
          },
          "day_count": {
            "type": "string",
            "enum": [
              "30/360",
              "ACT/360",
              "ACT/365F",
              "ACT/ACT"
            ],
            "title": "Day Count",
            "description": "Day-count convention for accruing interest at this rate."
          },
          "secured": {
            "type": "boolean",
            "title": "Secured",
            "description": "True if the rate is based on secured (collateralised) funding."
          },
          "publication": {
            "type": "string",
            "title": "Publication",
            "description": "When and where the fixing is published."
          },
          "ingest_source": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ingest Source",
            "description": "Ingest connector id that maintains this series."
          },
          "calendar": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Calendar",
            "description": "Business-day calendar the fixing follows (see /v1/calendars), e.g. 'eu.target2' for €STR."
          }
        },
        "type": "object",
        "required": [
          "sources",
          "id",
          "name",
          "currency",
          "administrator",
          "tenor",
          "day_count",
          "secured",
          "publication"
        ],
        "title": "Benchmark"
      },
      "BusinessDay": {
        "properties": {
          "calendars": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Calendars",
            "description": "The calendar ids the answer is for, as resolved."
          },
          "date": {
            "type": "string",
            "format": "date",
            "title": "Date",
            "description": "The date that was checked (ISO 8601)."
          },
          "business_day": {
            "type": "boolean",
            "title": "Business Day",
            "description": "True if the date is a business day in every calendar."
          },
          "reasons": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Reasons",
            "description": "Why the date is not a business day, per calendar, e.g. 'ch.six.sic: Ascension Day' or 'eu.target2: weekend'. Empty for a business day."
          },
          "previous_business_day": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Previous Business Day",
            "description": "The last business day before the date, in all calendars. Null when it would fall before the calendar's coverage."
          },
          "next_business_day": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Business Day",
            "description": "The first business day after the date, in all calendars. Null when it cannot be found (beyond the supported years)."
          }
        },
        "type": "object",
        "required": [
          "calendars",
          "date",
          "business_day",
          "reasons",
          "previous_business_day",
          "next_business_day"
        ],
        "title": "BusinessDay"
      },
      "Calendar": {
        "properties": {
          "sources": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": "array",
            "minItems": 1,
            "title": "Sources",
            "description": "Where the rules come from (at least one), e.g. the authority's page."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9_]+(\\.[a-z0-9_]+)+$",
            "title": "Id",
            "description": "Dotted slug: jurisdiction, publisher or system, e.g. 'ch.six.sic'."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Name of the calendar, e.g. 'SIC clearing days (Swiss franc payments)'."
          },
          "jurisdiction": {
            "type": "string",
            "title": "Jurisdiction",
            "description": "Jurisdiction or group, e.g. 'CH', 'EU'."
          },
          "description": {
            "type": "string",
            "title": "Description",
            "description": "What the calendar is for and who publishes it."
          },
          "weekend": {
            "items": {
              "type": "string",
              "enum": [
                "friday",
                "monday",
                "saturday",
                "sunday",
                "thursday",
                "tuesday",
                "wednesday"
              ]
            },
            "type": "array",
            "title": "Weekend",
            "description": "Weekdays that are never business days (default saturday and sunday)."
          },
          "rules": {
            "items": {
              "$ref": "#/components/schemas/HolidayRule"
            },
            "type": "array",
            "title": "Rules",
            "description": "Recurring holidays that generate dates for any year."
          },
          "adjustments": {
            "items": {
              "$ref": "#/components/schemas/HolidayAdjustment"
            },
            "type": "array",
            "title": "Adjustments",
            "description": "One-off additions or removals the publisher announced for a year."
          },
          "coverage_from": {
            "type": "string",
            "format": "date",
            "title": "Coverage From",
            "description": "First date the calendar answers for; earlier dates are rejected.",
            "default": "2019-01-01"
          },
          "ingest_source": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Ingest Source",
            "description": "Feed connector that stores the publisher's own list of dates. For years the feed covers its dates are used; the rules cover every other year."
          },
          "notes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Notes",
            "description": "Caveats about the calendar's coverage or rules."
          }
        },
        "type": "object",
        "required": [
          "sources",
          "id",
          "name",
          "jurisdiction",
          "description"
        ],
        "title": "Calendar"
      },
      "CarryForward": {
        "properties": {
          "pending": {
            "type": "string",
            "title": "Pending",
            "description": "Carried from earlier periods (Modelo 303: 110)."
          },
          "applied": {
            "type": "string",
            "title": "Applied",
            "description": "Of it, applied in this period (78)."
          },
          "remaining": {
            "type": "string",
            "title": "Remaining",
            "description": "Left for later periods (87 = pending - applied)."
          },
          "cap": {
            "type": "string",
            "title": "Cap",
            "description": "The result the applied amount may not exceed (66)."
          },
          "result": {
            "type": "string",
            "title": "Result",
            "description": "The period's result, negative when carried (71)."
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "pending",
          "applied",
          "remaining",
          "cap",
          "result"
        ],
        "title": "CarryForward",
        "description": "A periodic return whose negative result is carried to the next return of the year rather\nthan refunded, and refunded only in the year's last period (Spain: LIVA art. 99.Cinco, 115):\nthe boxes holding the carried amounts."
      },
      "ChangeFeed": {
        "properties": {
          "since": {
            "type": "string",
            "format": "date",
            "title": "Since"
          },
          "until": {
            "type": "string",
            "format": "date",
            "title": "Until"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/ChangeItem"
            },
            "type": "array",
            "title": "Items"
          }
        },
        "type": "object",
        "required": [
          "since",
          "until",
          "items"
        ],
        "title": "ChangeFeed"
      },
      "ChangeItem": {
        "properties": {
          "change": {
            "type": "string",
            "enum": [
              "decision_scheduled",
              "ends",
              "published",
              "takes_effect",
              "updated"
            ],
            "title": "Change"
          },
          "date": {
            "type": "string",
            "format": "date",
            "title": "Date",
            "description": "Publication, effective, end or decision date, depending on change."
          },
          "kind": {
            "type": "string",
            "enum": [
              "allowance",
              "asset_class",
              "decision_table",
              "net_tax_rate",
              "pending",
              "standard_difference",
              "standard_topic",
              "tax_rate",
              "tax_threshold"
            ],
            "title": "Kind"
          },
          "series": {
            "type": "string",
            "title": "Series"
          },
          "record_id": {
            "type": "string",
            "title": "Record Id"
          },
          "jurisdiction": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Jurisdiction"
          },
          "current": {
            "additionalProperties": true,
            "type": "object",
            "title": "Current"
          },
          "previous": {
            "anyOf": [
              {
                "additionalProperties": true,
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Previous",
            "description": "The version this one replaces, if any."
          },
          "sources": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": "array",
            "title": "Sources"
          }
        },
        "type": "object",
        "required": [
          "change",
          "date",
          "kind",
          "series",
          "record_id",
          "current",
          "sources"
        ],
        "title": "ChangeItem"
      },
      "CitationStatus": {
        "properties": {
          "records": {
            "type": "integer",
            "title": "Records"
          },
          "cited_urls": {
            "type": "integer",
            "title": "Cited Urls"
          },
          "watched_urls": {
            "type": "integer",
            "title": "Watched Urls",
            "description": "Cited URLs the source watcher fetches each week."
          },
          "oldest_verified_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Oldest Verified At"
          },
          "newest_verified_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Newest Verified At"
          },
          "unreachable_urls": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Unreachable Urls",
            "description": "Cited URLs the latest watcher run could not fetch."
          },
          "changed_urls": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Changed Urls",
            "description": "Cited URLs whose content changed in the latest run."
          }
        },
        "type": "object",
        "required": [
          "records",
          "cited_urls",
          "watched_urls"
        ],
        "title": "CitationStatus"
      },
      "Comparison": {
        "properties": {
          "area": {
            "type": "string",
            "title": "Area"
          },
          "topics": {
            "items": {
              "$ref": "#/components/schemas/Topic"
            },
            "type": "array",
            "title": "Topics"
          },
          "differences": {
            "items": {
              "$ref": "#/components/schemas/Difference"
            },
            "type": "array",
            "title": "Differences"
          }
        },
        "type": "object",
        "required": [
          "area",
          "topics",
          "differences"
        ],
        "title": "Comparison"
      },
      "Conversion": {
        "properties": {
          "source": {
            "type": "string",
            "title": "Source"
          },
          "requested_date": {
            "type": "string",
            "format": "date",
            "title": "Requested Date"
          },
          "fixing_date": {
            "type": "string",
            "format": "date",
            "title": "Fixing Date"
          },
          "from_currency": {
            "type": "string",
            "title": "From Currency"
          },
          "to_currency": {
            "type": "string",
            "title": "To Currency"
          },
          "amount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Amount"
          },
          "rate": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rate"
          },
          "converted": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Converted"
          },
          "path": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Path"
          }
        },
        "type": "object",
        "required": [
          "source",
          "requested_date",
          "fixing_date",
          "from_currency",
          "to_currency",
          "amount",
          "rate",
          "converted",
          "path"
        ],
        "title": "Conversion"
      },
      "Currency": {
        "properties": {
          "code": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "title": "Code",
            "description": "ISO 4217 alphabetic code, e.g. 'CHF'."
          },
          "numeric": {
            "type": "string",
            "pattern": "^[0-9]{3}$",
            "title": "Numeric",
            "description": "ISO 4217 numeric code, e.g. '756'."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "English name, e.g. 'Swiss franc'."
          },
          "minor_units": {
            "type": "integer",
            "maximum": 4.0,
            "minimum": 0.0,
            "title": "Minor Units",
            "description": "Decimals of the smallest unit (2 for EUR, 0 for JPY); amounts round to it."
          }
        },
        "type": "object",
        "required": [
          "code",
          "numeric",
          "name",
          "minor_units"
        ],
        "title": "Currency"
      },
      "DataPoint": {
        "properties": {
          "authority": {
            "type": "string",
            "title": "Authority"
          },
          "domain": {
            "type": "string",
            "title": "Domain"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "jurisdictions": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Jurisdictions"
          },
          "method": {
            "type": "string",
            "title": "Method"
          },
          "cadence": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cadence"
          },
          "url": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Url"
          },
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes"
          },
          "feeds": {
            "items": {
              "$ref": "#/components/schemas/Feed"
            },
            "type": "array",
            "title": "Feeds"
          },
          "records": {
            "items": {
              "$ref": "#/components/schemas/Records"
            },
            "type": "array",
            "title": "Records"
          }
        },
        "type": "object",
        "required": [
          "authority",
          "domain",
          "title",
          "jurisdictions",
          "method"
        ],
        "title": "DataPoint",
        "description": "One kind of data one authority is the primary source for."
      },
      "DataPointStatus": {
        "properties": {
          "authority": {
            "type": "string",
            "title": "Authority"
          },
          "domain": {
            "type": "string",
            "title": "Domain"
          },
          "jurisdictions": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Jurisdictions"
          },
          "method": {
            "type": "string",
            "title": "Method"
          },
          "state": {
            "type": "string",
            "enum": [
              "error",
              "no_data",
              "ok",
              "stale"
            ],
            "title": "State"
          },
          "detail": {
            "type": "string",
            "title": "Detail"
          },
          "feeds": {
            "items": {
              "$ref": "#/components/schemas/FeedStatus"
            },
            "type": "array",
            "title": "Feeds"
          },
          "citations": {
            "$ref": "#/components/schemas/CitationStatus"
          }
        },
        "type": "object",
        "required": [
          "authority",
          "domain",
          "jurisdictions",
          "method",
          "state",
          "detail",
          "feeds",
          "citations"
        ],
        "title": "DataPointStatus"
      },
      "Dataset": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id",
            "description": "Dataset id, e.g. 'tax.indirect.rates', 'fx.ecb' or 'rates.sofr'."
          },
          "kind": {
            "type": "string",
            "title": "Kind",
            "description": "'curated': reviewed YAML records in the bundle; 'timeseries': market data ingested from a publisher's feed."
          },
          "records": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Records",
            "description": "Number of records of a curated dataset; null for time series."
          },
          "latest": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latest",
            "description": "Newest stored date of a time series; null for curated datasets or when nothing is stored."
          }
        },
        "type": "object",
        "required": [
          "id",
          "kind"
        ],
        "title": "Dataset"
      },
      "DatasetsInfo": {
        "properties": {
          "dataset_version": {
            "type": "string",
            "title": "Dataset Version",
            "description": "Identifier of the dataset bundle that answered (the commit it was built from); pass it as `dataset_version` to pin later calls to it."
          },
          "built_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Built At",
            "description": "When the bundle was built (ISO 8601 UTC); null for a local build."
          },
          "datasets": {
            "items": {
              "$ref": "#/components/schemas/Dataset"
            },
            "type": "array",
            "title": "Datasets",
            "description": "Every dataset the API serves."
          }
        },
        "type": "object",
        "required": [
          "dataset_version",
          "built_at",
          "datasets"
        ],
        "title": "DatasetsInfo"
      },
      "DecisionInput": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Name of the input, as rules refer to it."
          },
          "type": {
            "type": "string",
            "enum": [
              "boolean",
              "enum",
              "number",
              "string"
            ],
            "title": "Type",
            "description": "`string`, `boolean`, `number` or `enum`."
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "What the input means; optional."
          },
          "values": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Values",
            "description": "Allowed values for enum inputs."
          },
          "required": {
            "type": "boolean",
            "title": "Required",
            "description": "Whether callers must supply the input; default true.",
            "default": true
          },
          "default": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "boolean"
              },
              {
                "type": "integer"
              },
              {
                "type": "number"
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Default",
            "description": "Value used when an optional input is not supplied."
          }
        },
        "type": "object",
        "required": [
          "name",
          "type"
        ],
        "title": "DecisionInput"
      },
      "DecisionOutput": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Name of the output, as rules yield it."
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "What the output means; optional."
          }
        },
        "type": "object",
        "required": [
          "name"
        ],
        "title": "DecisionOutput"
      },
      "DecisionRule": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id",
            "description": "Unique id of the rule within the table."
          },
          "when": {
            "additionalProperties": true,
            "type": "object",
            "title": "When",
            "description": "Conditions on the inputs: an input name mapped to a literal or an operator map (`in`, `not_in`, `ne`, `gt`, `gte`, `lt`, `lte`). Every condition must hold; an empty object always matches."
          },
          "then": {
            "additionalProperties": true,
            "type": "object",
            "title": "Then",
            "description": "The outputs when the rule matches: an output name mapped to its value."
          },
          "reference": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference",
            "description": "Where the rule comes from, e.g. a policy clause; optional."
          },
          "note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Note",
            "description": "A remark on the rule; optional."
          }
        },
        "type": "object",
        "required": [
          "id",
          "then"
        ],
        "title": "DecisionRule"
      },
      "DecisionTable": {
        "properties": {
          "published_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At",
            "description": "When this record entered the dataset."
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "description": "When its content last changed after publication."
          },
          "sources": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": "array",
            "minItems": 1,
            "title": "Sources",
            "description": "Where the rules come from (at least one), e.g. the authority's page."
          },
          "id": {
            "type": "string",
            "title": "Id",
            "description": "Identifier of the table."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Human-readable name."
          },
          "description": {
            "type": "string",
            "title": "Description",
            "description": "What the table decides, in a sentence or two."
          },
          "domain": {
            "type": "string",
            "title": "Domain",
            "description": "e.g. 'tax.indirect', 'standards.us_gaap'."
          },
          "hit_policy": {
            "type": "string",
            "enum": [
              "collect",
              "first"
            ],
            "title": "Hit Policy",
            "description": "`first`: the first rule whose conditions all match decides. `collect`: every matching rule is returned.",
            "default": "first"
          },
          "inputs": {
            "items": {
              "$ref": "#/components/schemas/DecisionInput"
            },
            "type": "array",
            "title": "Inputs",
            "description": "The inputs rules can test."
          },
          "outputs": {
            "items": {
              "$ref": "#/components/schemas/DecisionOutput"
            },
            "type": "array",
            "title": "Outputs",
            "description": "What a rule yields."
          },
          "rules": {
            "items": {
              "$ref": "#/components/schemas/DecisionRule"
            },
            "type": "array",
            "minItems": 1,
            "title": "Rules",
            "description": "The rules, tried in order; an input a rule leaves out matches anything."
          },
          "limitations": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Limitations",
            "description": "Known gaps of the table, as sentences; may be empty."
          }
        },
        "type": "object",
        "required": [
          "sources",
          "id",
          "name",
          "description",
          "domain",
          "inputs",
          "outputs",
          "rules"
        ],
        "title": "DecisionTable"
      },
      "DepreciationMethod": {
        "properties": {
          "sources": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": "array",
            "minItems": 1,
            "title": "Sources",
            "description": "Where the rules come from (at least one), e.g. the authority's page."
          },
          "id": {
            "type": "string",
            "enum": [
              "declining_balance",
              "straight_line",
              "sum_of_years_digits",
              "table",
              "units_of_production"
            ],
            "title": "Id",
            "description": "Method id; the value of `method` in a schedule request."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Name of the method."
          },
          "description": {
            "type": "string",
            "title": "Description",
            "description": "How the method spreads the cost."
          },
          "formula": {
            "type": "string",
            "title": "Formula",
            "description": "The yearly charge as a formula."
          },
          "parameters": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Parameters",
            "description": "Schedule request fields the method needs, e.g. 'useful_life_years'."
          }
        },
        "type": "object",
        "required": [
          "sources",
          "id",
          "name",
          "description",
          "formula"
        ],
        "title": "DepreciationMethod"
      },
      "DepreciationTable": {
        "properties": {
          "sources": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": "array",
            "minItems": 1,
            "title": "Sources",
            "description": "Where the rules come from (at least one), e.g. the authority's page."
          },
          "id": {
            "type": "string",
            "title": "Id",
            "description": "Table id, e.g. 'us.macrs.gds.hy.5y'; the `table` of a schedule."
          },
          "regime": {
            "type": "string",
            "title": "Regime",
            "description": "Id of the regime the table belongs to."
          },
          "recovery_period_years": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Recovery Period Years",
            "description": "Recovery period in years."
          },
          "convention": {
            "type": "string",
            "enum": [
              "full_year",
              "half_year",
              "mid_month",
              "pro_rata_months"
            ],
            "title": "Convention",
            "description": "The first-year convention the percentages embed."
          },
          "basis_method": {
            "type": "string",
            "title": "Basis Method",
            "description": "e.g. '200DB' or 'SL'"
          },
          "percentages": {
            "items": {
              "type": "string",
              "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
            },
            "type": "array",
            "title": "Percentages",
            "description": "Percent of cost depreciated in each year, first year first; they sum to 100."
          }
        },
        "type": "object",
        "required": [
          "sources",
          "id",
          "regime",
          "recovery_period_years",
          "convention",
          "basis_method",
          "percentages"
        ],
        "title": "DepreciationTable",
        "description": "Published percentage table, e.g. IRS Pub 946 Table A-1."
      },
      "Determination": {
        "properties": {
          "taxing_jurisdiction": {
            "type": "string",
            "title": "Taxing Jurisdiction"
          },
          "treatment": {
            "type": "string",
            "title": "Treatment"
          },
          "liable_party": {
            "type": "string",
            "enum": [
              "customer",
              "none",
              "supplier"
            ],
            "title": "Liable Party"
          },
          "invoice_rate": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Invoice Rate",
            "description": "Percent the supplier charges on the invoice."
          },
          "accounted_rate": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Accounted Rate",
            "description": "Total percent due in the taxing jurisdiction, by whoever is liable."
          },
          "components": {
            "items": {
              "$ref": "#/components/schemas/TaxRate"
            },
            "type": "array",
            "title": "Components"
          },
          "trace": {
            "$ref": "#/components/schemas/RuleTrace"
          },
          "thresholds": {
            "items": {
              "$ref": "#/components/schemas/TaxThreshold"
            },
            "type": "array",
            "title": "Thresholds",
            "description": "Thresholds the determination relied on."
          },
          "notes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Notes"
          },
          "limitations": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Limitations"
          }
        },
        "type": "object",
        "required": [
          "taxing_jurisdiction",
          "treatment",
          "liable_party",
          "invoice_rate",
          "accounted_rate",
          "components",
          "trace",
          "notes",
          "limitations"
        ],
        "title": "Determination"
      },
      "DetermineRequest": {
        "properties": {
          "seller_jurisdiction": {
            "type": "string",
            "title": "Seller Jurisdiction",
            "description": "ISO 3166 code of the supplier, e.g. 'DE'."
          },
          "buyer_jurisdiction": {
            "type": "string",
            "title": "Buyer Jurisdiction",
            "description": "ISO 3166 code of the customer, e.g. 'US-CA'."
          },
          "customer_type": {
            "type": "string",
            "enum": [
              "B2B",
              "B2C"
            ],
            "title": "Customer Type",
            "description": "B2B: the customer is a taxable person (a business with a VAT number); B2C: a private person or a customer without taxable status."
          },
          "supply_type": {
            "type": "string",
            "enum": [
              "electronic_services",
              "event_admission",
              "goods",
              "immovable_property_services",
              "long_term_transport_hire",
              "passenger_transport",
              "restaurant_catering",
              "services",
              "short_term_transport_hire"
            ],
            "title": "Supply Type",
            "description": "goods, services and electronic_services follow the general rules. immovable_property_services (incl. hotel accommodation), passenger_transport, event_admission, restaurant_catering and short_term_transport_hire are taxed where they are performed (pass place_of_performance); long_term_transport_hire follows the customer."
          },
          "rate_type": {
            "type": "string",
            "enum": [
              "exempt",
              "parking",
              "reduced",
              "special",
              "standard",
              "super_reduced",
              "zero"
            ],
            "title": "Rate Type",
            "description": "Which rate of the taxing jurisdiction to apply: standard, reduced, super_reduced, parking, zero, special or exempt. Ignored when category is given.",
            "default": "standard"
          },
          "category": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Category",
            "description": "Match a rate by category label instead of rate type: a rate with exactly that label wins (of those, one of `rate_type`), else one whose label contains it."
          },
          "date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Date",
            "description": "Tax point: the date whose law applies (ISO 8601, e.g. 2026-03-01). Defaults to today (server date)."
          },
          "annual_acquisitions_chf": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Annual Acquisitions Chf",
            "description": "CH only: a non-registered Swiss recipient's purchases of services from foreign suppliers in the calendar year, in CHF. Above CHF 10,000 the recipient accounts for acquisition tax (MWSTG Art. 45 Abs. 2 Bst. b)."
          },
          "place_of_performance": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Place Of Performance",
            "description": "ISO 3166 code where the property is located, the event or transport takes place, the meal is served or the means of transport is put at the customer's disposal. Required for the place-of-performance supply types."
          },
          "seller_eu_cross_border_turnover_eur": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Seller Eu Cross Border Turnover Eur",
            "description": "EU only: the supplier's B2C distance sales of goods and electronic services to other member states (EUR, excl. VAT) in the current calendar year, or the preceding one if higher. Up to the EUR 10,000 threshold (Art. 59c) such supplies stay taxed at origin. Leave empty to assume destination taxation."
          },
          "opted_for_destination": {
            "type": "boolean",
            "title": "Opted For Destination",
            "description": "EU only: the supplier opted for destination taxation below the threshold.",
            "default": false
          }
        },
        "type": "object",
        "required": [
          "seller_jurisdiction",
          "buyer_jurisdiction",
          "customer_type",
          "supply_type"
        ],
        "title": "DetermineRequest",
        "examples": [
          {
            "buyer_jurisdiction": "FR",
            "customer_type": "B2B",
            "date": "2026-03-01",
            "seller_jurisdiction": "DE",
            "supply_type": "services"
          },
          {
            "buyer_jurisdiction": "SE",
            "customer_type": "B2C",
            "date": "2026-09-15",
            "seller_eu_cross_border_turnover_eur": "4000",
            "seller_jurisdiction": "DE",
            "supply_type": "goods"
          }
        ]
      },
      "Difference": {
        "properties": {
          "published_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At",
            "description": "When this record entered the dataset."
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "description": "When its content last changed after publication."
          },
          "sources": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": "array",
            "minItems": 1,
            "title": "Sources",
            "description": "Where the rules come from (at least one), e.g. the authority's page."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9_.]+$",
            "title": "Id",
            "description": "Stable id, e.g. 'inventory.lifo'."
          },
          "area": {
            "type": "string",
            "title": "Area",
            "description": "Cross-framework subject area, e.g. 'inventory'."
          },
          "subject": {
            "type": "string",
            "title": "Subject",
            "description": "What differs, in a few words."
          },
          "topics": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Topics",
            "description": "Ids of the topics the difference relates to."
          },
          "positions": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Positions",
            "description": "Framework id -> treatment under it."
          },
          "erp_impact": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Erp Impact",
            "description": "What the difference means for an ERP's configuration or reporting."
          }
        },
        "type": "object",
        "required": [
          "sources",
          "id",
          "area",
          "subject",
          "topics",
          "positions"
        ],
        "title": "Difference"
      },
      "DomainEntry": {
        "properties": {
          "domain": {
            "type": "string",
            "title": "Domain"
          },
          "title": {
            "type": "string",
            "title": "Title"
          },
          "purpose": {
            "type": "string",
            "title": "Purpose"
          },
          "api": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Api"
          },
          "erp": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Erp"
          },
          "authorities": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Authorities"
          }
        },
        "type": "object",
        "required": [
          "domain",
          "title",
          "purpose",
          "api",
          "erp",
          "authorities"
        ],
        "title": "DomainEntry"
      },
      "Envelope_AdjustedDate_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/AdjustedDate"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[AdjustedDate]"
      },
      "Envelope_Benchmark_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Benchmark"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[Benchmark]"
      },
      "Envelope_BusinessDay_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/BusinessDay"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[BusinessDay]"
      },
      "Envelope_Calendar_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Calendar"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[Calendar]"
      },
      "Envelope_ChangeFeed_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ChangeFeed"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[ChangeFeed]"
      },
      "Envelope_Comparison_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Comparison"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[Comparison]"
      },
      "Envelope_Conversion_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Conversion"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[Conversion]"
      },
      "Envelope_DatasetsInfo_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DatasetsInfo"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[DatasetsInfo]"
      },
      "Envelope_DecisionTable_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/DecisionTable"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[DecisionTable]"
      },
      "Envelope_Determination_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Determination"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[Determination]"
      },
      "Envelope_Evaluation_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Evaluation"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[Evaluation]"
      },
      "Envelope_FxHistory_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FxHistory"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[FxHistory]"
      },
      "Envelope_FxRates_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/FxRates"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[FxRates]"
      },
      "Envelope_Jurisdiction_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Jurisdiction"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[Jurisdiction]"
      },
      "Envelope_PeriodRate_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/PeriodRate"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[PeriodRate]"
      },
      "Envelope_RateObservation_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/RateObservation"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[RateObservation]"
      },
      "Envelope_RegimeDetail_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/RegimeDetail"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[RegimeDetail]"
      },
      "Envelope_Register_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Register"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[Register]"
      },
      "Envelope_ReturnForm_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ReturnForm"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[ReturnForm]"
      },
      "Envelope_Schedule_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Schedule"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[Schedule]"
      },
      "Envelope_ShiftedDate_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/ShiftedDate"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[ShiftedDate]"
      },
      "Envelope_SourcesStatus_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/SourcesStatus"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[SourcesStatus]"
      },
      "Envelope_TaxFxConversion_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/TaxFxConversion"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[TaxFxConversion]"
      },
      "Envelope_TaxFxRate_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/TaxFxRate"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[TaxFxRate]"
      },
      "Envelope_Topic_": {
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Topic"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[Topic]"
      },
      "Envelope_list_Benchmark__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/Benchmark"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[Benchmark]]"
      },
      "Envelope_list_Calendar__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/Calendar"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[Calendar]]"
      },
      "Envelope_list_Currency__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/Currency"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[Currency]]"
      },
      "Envelope_list_DecisionTable__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/DecisionTable"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[DecisionTable]]"
      },
      "Envelope_list_DepreciationMethod__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/DepreciationMethod"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[DepreciationMethod]]"
      },
      "Envelope_list_Difference__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/Difference"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[Difference]]"
      },
      "Envelope_list_Framework__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/Framework"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[Framework]]"
      },
      "Envelope_list_Holiday__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/Holiday"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[Holiday]]"
      },
      "Envelope_list_Jurisdiction__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/Jurisdiction"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[Jurisdiction]]"
      },
      "Envelope_list_NetTaxRate__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/NetTaxRate"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[NetTaxRate]]"
      },
      "Envelope_list_NetTaxThreshold__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/NetTaxThreshold"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[NetTaxThreshold]]"
      },
      "Envelope_list_PendingChange__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/PendingChange"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[PendingChange]]"
      },
      "Envelope_list_RateObservation__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/RateObservation"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[RateObservation]]"
      },
      "Envelope_list_Regime__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/Regime"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[Regime]]"
      },
      "Envelope_list_ReturnForm__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/ReturnForm"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[ReturnForm]]"
      },
      "Envelope_list_SourceAuthority__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/SourceAuthority"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[SourceAuthority]]"
      },
      "Envelope_list_TaxRate__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/TaxRate"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[TaxRate]]"
      },
      "Envelope_list_TaxThreshold__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/TaxThreshold"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[TaxThreshold]]"
      },
      "Envelope_list_Topic__": {
        "properties": {
          "data": {
            "items": {
              "$ref": "#/components/schemas/Topic"
            },
            "type": "array",
            "title": "Data"
          },
          "meta": {
            "$ref": "#/components/schemas/Meta"
          }
        },
        "type": "object",
        "required": [
          "data",
          "meta"
        ],
        "title": "Envelope[list[Topic]]"
      },
      "Error": {
        "type": "object",
        "title": "Error",
        "description": "The body of a 401, 404 or 422 raised on purpose.",
        "required": [
          "detail"
        ],
        "properties": {
          "detail": {
            "type": "string",
            "description": "What went wrong, in a sentence.",
            "examples": [
              "no rate for DE on 2018-01-01"
            ]
          },
          "code": {
            "type": "string",
            "description": "Names the error when a caller may word it itself: `tax_category_needed` (several rates or kinds of exemption match; `details` has `country`, `date` and `choices`, the categories of each), `tax_rate_type_missing` (`rate_type`, `country`, `date`) or `tax_category_unknown` (`category`, `country`, `date`, `categories`)."
          },
          "details": {
            "type": "object",
            "description": "The values `code` names."
          }
        }
      },
      "Evaluation": {
        "properties": {
          "table_id": {
            "type": "string",
            "title": "Table Id"
          },
          "hit_policy": {
            "type": "string",
            "title": "Hit Policy"
          },
          "inputs": {
            "additionalProperties": true,
            "type": "object",
            "title": "Inputs"
          },
          "matches": {
            "items": {
              "$ref": "#/components/schemas/RuleMatch"
            },
            "type": "array",
            "title": "Matches"
          }
        },
        "type": "object",
        "required": [
          "table_id",
          "hit_policy",
          "inputs",
          "matches"
        ],
        "title": "Evaluation"
      },
      "Feed": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id"
          },
          "kind": {
            "type": "string",
            "title": "Kind",
            "description": "'ingest' (time series) or 'legislation' (watcher)."
          },
          "description": {
            "type": "string",
            "title": "Description"
          }
        },
        "type": "object",
        "required": [
          "id",
          "kind",
          "description"
        ],
        "title": "Feed"
      },
      "FeedStatus": {
        "properties": {
          "connector": {
            "type": "string",
            "title": "Connector"
          },
          "description": {
            "type": "string",
            "title": "Description"
          },
          "kind": {
            "type": "string",
            "title": "Kind"
          },
          "series": {
            "items": {
              "$ref": "#/components/schemas/SeriesLatest"
            },
            "type": "array",
            "title": "Series"
          },
          "latest": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latest",
            "description": "The oldest of the series' newest dates."
          },
          "age_days": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Age Days",
            "description": "Days from 'latest' to as_of (negative when dated ahead)."
          },
          "freshness": {
            "$ref": "#/components/schemas/FreshnessRule"
          },
          "state": {
            "type": "string",
            "enum": [
              "error",
              "no_data",
              "ok",
              "stale"
            ],
            "title": "State"
          },
          "detail": {
            "type": "string",
            "title": "Detail"
          },
          "last_run": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/IngestRun"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "type": "object",
        "required": [
          "connector",
          "description",
          "kind",
          "series",
          "latest",
          "age_days",
          "freshness",
          "state",
          "detail"
        ],
        "title": "FeedStatus"
      },
      "Framework": {
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9_]+$",
            "title": "Id",
            "description": "'ifrs' or 'us_gaap'."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Full name of the framework."
          },
          "issuer": {
            "type": "string",
            "title": "Issuer",
            "description": "The standard setter, e.g. 'IFRS Foundation' or 'FASB'."
          },
          "url": {
            "type": "string",
            "minLength": 1,
            "format": "uri",
            "title": "Url",
            "description": "The standard setter's website."
          },
          "description": {
            "type": "string",
            "title": "Description",
            "description": "Own-words description of the framework."
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "issuer",
          "url",
          "description"
        ],
        "title": "Framework"
      },
      "FreshnessRule": {
        "properties": {
          "max_age_days": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Max Age Days"
          },
          "min_horizon_days": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Min Horizon Days"
          },
          "rule": {
            "type": "string",
            "title": "Rule"
          }
        },
        "type": "object",
        "required": [
          "rule"
        ],
        "title": "FreshnessRule"
      },
      "FxHistory": {
        "properties": {
          "source": {
            "type": "string",
            "title": "Source"
          },
          "base": {
            "type": "string",
            "title": "Base"
          },
          "quote": {
            "type": "string",
            "title": "Quote"
          },
          "start": {
            "type": "string",
            "format": "date",
            "title": "Start"
          },
          "end": {
            "type": "string",
            "format": "date",
            "title": "End"
          },
          "points": {
            "items": {
              "$ref": "#/components/schemas/FxPoint"
            },
            "type": "array",
            "title": "Points"
          }
        },
        "type": "object",
        "required": [
          "source",
          "base",
          "quote",
          "start",
          "end",
          "points"
        ],
        "title": "FxHistory"
      },
      "FxPoint": {
        "properties": {
          "date": {
            "type": "string",
            "format": "date",
            "title": "Date"
          },
          "rate": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rate"
          }
        },
        "type": "object",
        "required": [
          "date",
          "rate"
        ],
        "title": "FxPoint"
      },
      "FxRates": {
        "properties": {
          "source": {
            "type": "string",
            "title": "Source"
          },
          "base": {
            "type": "string",
            "title": "Base"
          },
          "requested_date": {
            "type": "string",
            "format": "date",
            "title": "Requested Date"
          },
          "fixing_date": {
            "type": "string",
            "format": "date",
            "title": "Fixing Date"
          },
          "rates": {
            "additionalProperties": {
              "type": "string",
              "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
            },
            "type": "object",
            "title": "Rates"
          }
        },
        "type": "object",
        "required": [
          "source",
          "base",
          "requested_date",
          "fixing_date",
          "rates"
        ],
        "title": "FxRates"
      },
      "HTTPValidationError": {
        "properties": {
          "detail": {
            "items": {
              "$ref": "#/components/schemas/ValidationError"
            },
            "type": "array",
            "title": "Detail"
          }
        },
        "type": "object",
        "title": "HTTPValidationError"
      },
      "Holiday": {
        "properties": {
          "calendar": {
            "type": "string",
            "title": "Calendar",
            "description": "Id of the calendar the holiday belongs to."
          },
          "date": {
            "type": "string",
            "format": "date",
            "title": "Date",
            "description": "The holiday (ISO 8601)."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Name of the holiday, e.g. 'Good Friday'."
          },
          "origin": {
            "type": "string",
            "enum": [
              "adjustment",
              "feed",
              "rule"
            ],
            "title": "Origin",
            "description": "'rule' or 'adjustment': generated from the curated calendar; 'feed': the publisher's own list."
          }
        },
        "type": "object",
        "required": [
          "calendar",
          "date",
          "name",
          "origin"
        ],
        "title": "Holiday"
      },
      "HolidayAdjustment": {
        "properties": {
          "date": {
            "type": "string",
            "format": "date",
            "title": "Date",
            "description": "The date affected (ISO 8601)."
          },
          "action": {
            "type": "string",
            "enum": [
              "add",
              "remove"
            ],
            "title": "Action",
            "description": "'add': an extra closing day; 'remove': a rule date that does not apply."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Name of the added holiday, or of the removed rule date."
          },
          "reference": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference",
            "description": "Announcement or legal basis."
          }
        },
        "type": "object",
        "required": [
          "date",
          "action",
          "name"
        ],
        "title": "HolidayAdjustment",
        "description": "A one-off change the publisher announced: an extra closing day, or a rule date\nthat does not apply in that year (a moved holiday is a removal plus an addition)."
      },
      "HolidayRule": {
        "properties": {
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Name of the holiday, e.g. 'Good Friday'."
          },
          "kind": {
            "type": "string",
            "enum": [
              "easter",
              "fixed",
              "nth_weekday"
            ],
            "title": "Kind",
            "description": "How the date is derived: fixed (month and day), easter (offset from Easter Sunday) or nth_weekday (nth weekday of a month)."
          },
          "month": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 12.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Month",
            "description": "Month 1-12 (fixed and nth_weekday rules)."
          },
          "day": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 31.0,
                "minimum": 1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Day",
            "description": "Day of the month (fixed rules)."
          },
          "offset": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Offset",
            "description": "Days from Easter Sunday."
          },
          "weekday": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "friday",
                  "monday",
                  "saturday",
                  "sunday",
                  "thursday",
                  "tuesday",
                  "wednesday"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Weekday",
            "description": "Weekday name in lower case (nth_weekday rules)."
          },
          "nth": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 4.0,
                "minimum": -1.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Nth",
            "description": "1-4, or -1 for the last."
          },
          "observance": {
            "type": "string",
            "enum": [
              "none",
              "substitute_weekday",
              "sunday_to_monday"
            ],
            "title": "Observance",
            "description": "What happens when the date falls on a weekend: none, sunday_to_monday or substitute_weekday.",
            "default": "none"
          },
          "from_year": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "From Year",
            "description": "First year the rule applies."
          },
          "to_year": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "To Year",
            "description": "Last year the rule applies."
          }
        },
        "type": "object",
        "required": [
          "name",
          "kind"
        ],
        "title": "HolidayRule",
        "description": "One recurring holiday.\n\n* ``fixed``: ``month`` and ``day`` (25 December).\n* ``easter``: ``offset`` days from Western (Gregorian) Easter Sunday; Good Friday is -2.\n* ``nth_weekday``: the ``nth`` ``weekday`` of ``month``; ``nth: -1`` is the last one.\n\n``observance`` says what happens when the date falls on a weekend:\n\n* ``none``: nothing; the day is simply not an extra closing day.\n* ``sunday_to_monday``: a Sunday holiday closes the following Monday (US Federal\n  Reserve Banks; a Saturday holiday does not close the Friday).\n* ``substitute_weekday``: the next weekday that is not already a holiday is a\n  substitute day (UK bank holidays: Christmas on Saturday moves to Monday and\n  Boxing Day on Sunday to Tuesday)."
      },
      "IngestRun": {
        "properties": {
          "connector": {
            "type": "string",
            "title": "Connector",
            "description": "Connector id, e.g. 'ecb-fx'."
          },
          "started_at": {
            "type": "string",
            "format": "date-time",
            "title": "Started At",
            "description": "When the run started (UTC)."
          },
          "finished_at": {
            "type": "string",
            "format": "date-time",
            "title": "Finished At",
            "description": "When the run ended (UTC)."
          },
          "ok": {
            "type": "boolean",
            "title": "Ok",
            "description": "True if the run finished without error."
          },
          "window_start": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Window Start",
            "description": "First date the run asked the publisher for."
          },
          "window_end": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Window End",
            "description": "Last date the run asked the publisher for."
          },
          "fetched": {
            "type": "integer",
            "title": "Fetched",
            "description": "Records fetched from the publisher.",
            "default": 0
          },
          "stored": {
            "type": "integer",
            "title": "Stored",
            "description": "Records written to the store.",
            "default": 0
          },
          "warehoused": {
            "type": "integer",
            "title": "Warehoused",
            "description": "Records also written to the warehouse.",
            "default": 0
          },
          "error": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Error",
            "description": "Why the run failed (truncated)."
          },
          "last_success_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ],
            "title": "Last Success At",
            "description": "When the connector last ran without error (this run or before)."
          }
        },
        "type": "object",
        "required": [
          "connector",
          "started_at",
          "finished_at",
          "ok"
        ],
        "title": "IngestRun",
        "description": "The last run of one ingest connector, as the runner recorded it in the store."
      },
      "Interest": {
        "properties": {
          "rate": {
            "type": "number",
            "exclusiveMinimum": 0.0,
            "title": "Rate",
            "description": "Percent of the amount payable before interest."
          },
          "periods": {
            "items": {
              "type": "string",
              "enum": [
                "half_year",
                "month",
                "quarter",
                "two_months",
                "year"
              ]
            },
            "type": "array",
            "minItems": 1,
            "title": "Periods",
            "description": "Period kinds it applies to."
          },
          "reference": {
            "type": "string",
            "title": "Reference",
            "description": "Legal basis."
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "rate",
          "periods",
          "reference"
        ],
        "title": "Interest",
        "description": "Interest a filer adds to some periodic payments (Italy: DPR 542/1999 art. 7)."
      },
      "Jurisdiction": {
        "properties": {
          "code": {
            "type": "string",
            "pattern": "^[A-Z]{2}(-[A-Z0-9]{1,3})?$",
            "title": "Code",
            "description": "ISO 3166-1 alpha-2 for countries, ISO 3166-2 for subdivisions (e.g. US-CA)."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "English name, e.g. 'Germany'."
          },
          "level": {
            "type": "string",
            "enum": [
              "country",
              "subdivision"
            ],
            "title": "Level",
            "description": "'country' or 'subdivision' (state, province)."
          },
          "parent": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Parent",
            "description": "Code of the country a subdivision belongs to; null for countries."
          },
          "currency": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^[A-Z]{3}$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Currency",
            "description": "ISO 4217 code of the currency used, e.g. 'EUR'."
          },
          "groups": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Groups",
            "description": "Memberships relevant to tax rules, e.g. 'EU'."
          },
          "indirect_tax_system": {
            "type": "string",
            "enum": [
              "consumption_tax",
              "gst",
              "none",
              "sales_tax",
              "vat"
            ],
            "title": "Indirect Tax System",
            "description": "vat, gst, sales_tax, consumption_tax, or none if no indirect tax is levied.",
            "default": "none"
          }
        },
        "type": "object",
        "required": [
          "code",
          "name",
          "level"
        ],
        "title": "Jurisdiction"
      },
      "Meta": {
        "properties": {
          "dataset_version": {
            "type": "string",
            "title": "Dataset Version"
          },
          "as_of": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "As Of"
          },
          "known_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Known At"
          },
          "sources": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": "array",
            "title": "Sources"
          },
          "notes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Notes"
          }
        },
        "type": "object",
        "required": [
          "dataset_version"
        ],
        "title": "Meta"
      },
      "NetTaxRate": {
        "properties": {
          "sources": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": "array",
            "minItems": 1,
            "title": "Sources",
            "description": "Where the rules come from (at least one), e.g. the authority's page."
          },
          "valid_from": {
            "type": "string",
            "format": "date",
            "title": "Valid From"
          },
          "valid_to": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Valid To"
          },
          "published_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "series": {
            "type": "string",
            "pattern": "^[a-z0-9_.-]+$",
            "title": "Series",
            "description": "Stable id of the activity's rate across versions, e.g. 'ch.vat.net_rate.anwaltsbuero'."
          },
          "jurisdiction": {
            "type": "string",
            "title": "Jurisdiction",
            "description": "Country code, e.g. 'CH'."
          },
          "scheme": {
            "type": "string",
            "enum": [
              "flat_tax_rate",
              "net_tax_rate",
              "quick_method"
            ],
            "title": "Scheme",
            "description": "net_tax_rate (Saldosteuersatz), flat_tax_rate (Pauschalsteuersatz) or quick_method (Canada, GST/HST Quick Method remittance rate)."
          },
          "activity": {
            "type": "string",
            "title": "Activity",
            "description": "Industry or activity as officially designated."
          },
          "rate": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rate",
            "description": "Percent of gross turnover incl. VAT."
          },
          "secondary_activities": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Secondary Activities",
            "description": "Mixed industries: secondary activities that could be declared at this rate (CH until 2024, 50% rule)."
          },
          "successors": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Successors",
            "description": "Series that replace this activity when it is discontinued."
          },
          "remark": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Remark",
            "description": "Publisher's remark on the change."
          },
          "id": {
            "type": "string",
            "title": "Id",
            "description": "Unique id of this version: the series and valid_from.",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "sources",
          "valid_from",
          "series",
          "jurisdiction",
          "scheme",
          "activity",
          "rate",
          "id"
        ],
        "title": "NetTaxRate",
        "description": "A simplified-method rate for one activity: the tax due is the gross taxable turnover\n(including VAT) times the rate, with no input tax deduction.\n\nSwitzerland: net tax rates (Saldosteuersätze) and flat tax rates (Pauschalsteuersätze),\nMWSTG Art. 37. Never used for invoice rates; the supplier still invoices at the\nstatutory rate."
      },
      "NetTaxThreshold": {
        "properties": {
          "sources": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": "array",
            "minItems": 1,
            "title": "Sources",
            "description": "Where the rules come from (at least one), e.g. the authority's page."
          },
          "valid_from": {
            "type": "string",
            "format": "date",
            "title": "Valid From"
          },
          "valid_to": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Valid To"
          },
          "published_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9_.-]+$",
            "title": "Id",
            "description": "Stable id of the threshold."
          },
          "jurisdiction": {
            "type": "string",
            "title": "Jurisdiction",
            "description": "Country code, e.g. 'CH'."
          },
          "scheme": {
            "type": "string",
            "enum": [
              "flat_tax_rate",
              "net_tax_rate",
              "quick_method"
            ],
            "title": "Scheme",
            "description": "The simplified method the limit belongs to."
          },
          "kind": {
            "type": "string",
            "enum": [
              "tax",
              "turnover"
            ],
            "title": "Kind",
            "description": "'turnover': annual taxable turnover; 'tax': annual tax payable."
          },
          "amount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Amount",
            "description": "Maximum amount (inclusive)."
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "title": "Currency",
            "description": "ISO 4217 code of the amount."
          },
          "description": {
            "type": "string",
            "title": "Description",
            "description": "What the limit is, in words."
          }
        },
        "type": "object",
        "required": [
          "sources",
          "valid_from",
          "id",
          "jurisdiction",
          "scheme",
          "kind",
          "amount",
          "currency",
          "description"
        ],
        "title": "NetTaxThreshold",
        "description": "Eligibility limit of a simplified method, e.g. the turnover and tax limits of\nMWSTG Art. 37 Abs. 1."
      },
      "PendingChange": {
        "properties": {
          "sources": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": "array",
            "minItems": 1,
            "title": "Sources",
            "description": "Where the rules come from (at least one), e.g. the authority's page."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9_.-]+$",
            "title": "Id",
            "description": "e.g. 'ch.vat.pending.ahv13'."
          },
          "jurisdiction": {
            "type": "string",
            "title": "Jurisdiction",
            "description": "Country or subdivision code the bill concerns."
          },
          "domain": {
            "type": "string",
            "enum": [
              "accounting_standards",
              "benchmark_rates",
              "calendars",
              "e_invoicing",
              "fixed_assets",
              "fx_reference",
              "indirect_tax",
              "legislation",
              "recapitulative_statements",
              "tax_fx",
              "tax_returns"
            ],
            "title": "Domain",
            "description": "Kind of data it would change, e.g. 'indirect_tax'."
          },
          "title": {
            "type": "string",
            "title": "Title",
            "description": "Official title of the bill or decree."
          },
          "summary": {
            "type": "string",
            "title": "Summary",
            "description": "Own-words summary of what the proposal does and where it stands."
          },
          "status": {
            "type": "string",
            "enum": [
              "adopted_by_parliament",
              "enacted",
              "in_parliament",
              "proposed",
              "referendum_scheduled",
              "rejected",
              "withdrawn"
            ],
            "title": "Status",
            "description": "proposed, in_parliament, adopted_by_parliament, referendum_scheduled (open), or enacted, rejected, withdrawn (closed)."
          },
          "status_date": {
            "type": "string",
            "format": "date",
            "title": "Status Date",
            "description": "Date the current status was reached."
          },
          "next_step": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Next Step",
            "description": "The next decision, in words."
          },
          "decision_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Decision Date",
            "description": "Date of the next scheduled decision (vote, referendum)."
          },
          "expected_effective_from": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Expected Effective From",
            "description": "When the change would apply if adopted; not a legal fact."
          },
          "effective_date_note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Effective Date Note",
            "description": "Caveats on when the change would apply."
          },
          "business_number": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Business Number",
            "description": "Parliamentary business number, e.g. Curia Vista '24.073'."
          },
          "changes": {
            "items": {
              "$ref": "#/components/schemas/ProposedChange"
            },
            "type": "array",
            "title": "Changes",
            "description": "The series it would change and how."
          },
          "published_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At",
            "description": "When this record entered the dataset."
          }
        },
        "type": "object",
        "required": [
          "sources",
          "id",
          "jurisdiction",
          "domain",
          "title",
          "summary",
          "status",
          "status_date"
        ],
        "title": "PendingChange"
      },
      "Period": {
        "properties": {
          "period": {
            "type": "integer",
            "title": "Period"
          },
          "fiscal_year": {
            "type": "integer",
            "title": "Fiscal Year"
          },
          "fraction": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Fraction"
          },
          "opening_book_value": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Opening Book Value"
          },
          "depreciation": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Depreciation"
          },
          "accumulated": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Accumulated"
          },
          "closing_book_value": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Closing Book Value"
          }
        },
        "type": "object",
        "required": [
          "period",
          "fiscal_year",
          "fraction",
          "opening_book_value",
          "depreciation",
          "accumulated",
          "closing_book_value"
        ],
        "title": "Period"
      },
      "PeriodRate": {
        "properties": {
          "source": {
            "type": "string",
            "title": "Source"
          },
          "base": {
            "type": "string",
            "title": "Base"
          },
          "quote": {
            "type": "string",
            "title": "Quote"
          },
          "period": {
            "type": "string",
            "title": "Period"
          },
          "period_start": {
            "type": "string",
            "format": "date",
            "title": "Period Start"
          },
          "period_end": {
            "type": "string",
            "format": "date",
            "title": "Period End"
          },
          "kind": {
            "type": "string",
            "enum": [
              "average",
              "closing"
            ],
            "title": "Kind"
          },
          "rate": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rate"
          },
          "fixings": {
            "type": "integer",
            "title": "Fixings"
          },
          "first_fixing": {
            "type": "string",
            "format": "date",
            "title": "First Fixing"
          },
          "last_fixing": {
            "type": "string",
            "format": "date",
            "title": "Last Fixing"
          }
        },
        "type": "object",
        "required": [
          "source",
          "base",
          "quote",
          "period",
          "period_start",
          "period_end",
          "kind",
          "rate",
          "fixings",
          "first_fixing",
          "last_fixing"
        ],
        "title": "PeriodRate"
      },
      "PeriodicSummary": {
        "properties": {
          "source": {
            "$ref": "#/components/schemas/CarryForward",
            "description": "The boxes of the periodic return that carry its result (Modelo 303)."
          },
          "sums": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Sums",
            "description": "Annual box: the periodic box summed over the year (amounts entered by hand on the periodic returns, e.g. import VAT)."
          },
          "ties": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object",
            "title": "Ties",
            "description": "Annual box: the periodic box whose sum over the year it must equal."
          },
          "paid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Paid",
            "description": "The sum of the positive results."
          },
          "carried": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Carried",
            "description": "What the last return of the year left to carry forward."
          },
          "refunded": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Refunded",
            "description": "The last return's negative result, refunded."
          },
          "previous_year": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Previous Year",
            "description": "The previous year's carried amount applied in this year."
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "source"
        ],
        "title": "PeriodicSummary",
        "description": "An annual summary built from the year's final periodic returns (Modelo 390 from the 303s):\nwhich of its boxes add up which boxes of the periodic returns, and which must tie."
      },
      "ProposedChange": {
        "properties": {
          "series": {
            "type": "string",
            "title": "Series",
            "description": "The affected series, e.g. 'ch.vat.standard'."
          },
          "rate": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rate",
            "description": "Proposed percent."
          },
          "valid_to": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Valid To",
            "description": "Proposed last day of validity (e.g. an extended expiry)."
          },
          "description": {
            "type": "string",
            "title": "Description",
            "description": "What would change, in words."
          }
        },
        "type": "object",
        "required": [
          "series",
          "description"
        ],
        "title": "ProposedChange",
        "description": "What one curated series would look like if the proposal became law."
      },
      "Provision": {
        "properties": {
          "domain": {
            "type": "string",
            "enum": [
              "accounting_standards",
              "benchmark_rates",
              "calendars",
              "e_invoicing",
              "fixed_assets",
              "fx_reference",
              "indirect_tax",
              "legislation",
              "recapitulative_statements",
              "tax_fx",
              "tax_returns"
            ],
            "title": "Domain",
            "description": "The kind of data the authority is the source for."
          },
          "jurisdictions": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "minItems": 1,
            "title": "Jurisdictions",
            "description": "Jurisdiction codes, a group such as 'EU', or 'global'."
          },
          "method": {
            "type": "string",
            "enum": [
              "curated",
              "feed"
            ],
            "title": "Method",
            "description": "'feed': pulled automatically by an ingest connector; 'curated': maintained as YAML in data/ and checked by the source watcher."
          },
          "connectors": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Connectors",
            "description": "Ingest connector ids (method 'feed')."
          },
          "feeds": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Feeds",
            "description": "Legislation feeds (domain 'legislation') that the source watcher reads to discover new acts no record cites yet; ids from src/datavnext/watch/legislation.py."
          },
          "cadence": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Cadence",
            "description": "e.g. 'daily', 'monthly'."
          },
          "url": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "format": "uri"
              },
              {
                "type": "null"
              }
            ],
            "title": "Url",
            "description": "Where the data is published."
          },
          "notes": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Notes",
            "description": "Remarks on coverage or method."
          }
        },
        "type": "object",
        "required": [
          "domain",
          "jurisdictions",
          "method"
        ],
        "title": "Provision",
        "description": "One kind of data an authority is the primary source for."
      },
      "RateObservation": {
        "properties": {
          "benchmark_id": {
            "type": "string",
            "title": "Benchmark Id",
            "description": "The benchmark this fixing belongs to."
          },
          "date": {
            "type": "string",
            "format": "date",
            "title": "Date",
            "description": "The day the fixing is for (ISO 8601)."
          },
          "value": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Value",
            "description": "Percent per annum, as a decimal string (3.87 is 3.87%)."
          },
          "source": {
            "type": "string",
            "title": "Source",
            "description": "Ingest source the value came from, e.g. 'nyfed'."
          }
        },
        "type": "object",
        "required": [
          "benchmark_id",
          "date",
          "value",
          "source"
        ],
        "title": "RateObservation"
      },
      "Records": {
        "properties": {
          "dataset": {
            "type": "string",
            "title": "Dataset"
          },
          "records": {
            "type": "integer",
            "title": "Records"
          },
          "series": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Series",
            "description": "Distinct series, where versioned."
          }
        },
        "type": "object",
        "required": [
          "dataset",
          "records"
        ],
        "title": "Records"
      },
      "Regime": {
        "properties": {
          "sources": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": "array",
            "minItems": 1,
            "title": "Sources",
            "description": "Where the rules come from (at least one), e.g. the authority's page."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9_.]+$",
            "title": "Id",
            "description": "Regime id, e.g. 'us.macrs.gds'."
          },
          "jurisdiction": {
            "type": "string",
            "title": "Jurisdiction",
            "description": "Country the regime applies in, e.g. 'US'."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Name of the regime."
          },
          "basis": {
            "type": "string",
            "enum": [
              "book",
              "tax"
            ],
            "title": "Basis",
            "description": "'tax': depreciation for tax returns; 'book': for the financial statements."
          },
          "description": {
            "type": "string",
            "title": "Description",
            "description": "What the regime covers."
          },
          "methods": {
            "items": {
              "type": "string",
              "enum": [
                "declining_balance",
                "straight_line",
                "sum_of_years_digits",
                "table",
                "units_of_production"
              ]
            },
            "type": "array",
            "title": "Methods",
            "description": "The depreciation methods the regime allows."
          },
          "default_convention": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "full_year",
                  "half_year",
                  "mid_month",
                  "pro_rata_months"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Default Convention",
            "description": "Convention used for the first year unless a class overrides it."
          },
          "retirement": {
            "type": "string",
            "enum": [
              "keep",
              "pool",
              "write_off"
            ],
            "title": "Retirement",
            "description": "What a retired asset's remaining value does: 'write_off', deducted in the year of retirement; 'pool', stays in the pool and goes on reducing (UK); 'keep', stays on the books (land).",
            "default": "write_off"
          }
        },
        "type": "object",
        "required": [
          "sources",
          "id",
          "jurisdiction",
          "name",
          "basis",
          "description",
          "methods"
        ],
        "title": "Regime"
      },
      "RegimeDetail": {
        "properties": {
          "regime": {
            "$ref": "#/components/schemas/Regime",
            "description": "The regime itself."
          },
          "classes": {
            "items": {
              "$ref": "#/components/schemas/AssetClass"
            },
            "type": "array",
            "title": "Classes",
            "description": "Asset classes of the regime in force on `meta.as_of`, each with the method, useful life or rate, and convention a schedule uses."
          },
          "tables": {
            "items": {
              "$ref": "#/components/schemas/DepreciationTable"
            },
            "type": "array",
            "title": "Tables",
            "description": "Published percentage tables of the regime (all versions; they are not effective-dated)."
          },
          "allowances": {
            "items": {
              "$ref": "#/components/schemas/Allowance"
            },
            "type": "array",
            "title": "Allowances",
            "description": "Caps and first-year allowances of the regime in force on `meta.as_of`."
          }
        },
        "type": "object",
        "required": [
          "regime",
          "classes",
          "tables",
          "allowances"
        ],
        "title": "RegimeDetail"
      },
      "Register": {
        "properties": {
          "dataset_version": {
            "type": "string",
            "title": "Dataset Version"
          },
          "domains": {
            "items": {
              "$ref": "#/components/schemas/DomainEntry"
            },
            "type": "array",
            "title": "Domains"
          },
          "data_points": {
            "items": {
              "$ref": "#/components/schemas/DataPoint"
            },
            "type": "array",
            "title": "Data Points"
          },
          "authorities": {
            "items": {
              "$ref": "#/components/schemas/AuthorityEntry"
            },
            "type": "array",
            "title": "Authorities"
          }
        },
        "type": "object",
        "required": [
          "dataset_version",
          "domains",
          "data_points",
          "authorities"
        ],
        "title": "Register"
      },
      "ReturnBox": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id",
            "description": "Unique within the form, e.g. '303', 'kz81', 'line37'."
          },
          "code": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Code",
            "description": "The field number printed on the official form (Ziffer, Kennzahl, code); null for unnumbered lines."
          },
          "line": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Line",
            "description": "Official line number (Zeile), if any."
          },
          "label": {
            "type": "string",
            "title": "Label",
            "description": "Official wording, abridged."
          },
          "section": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Section",
            "description": "Section of the form the box is in."
          },
          "unit": {
            "type": "string",
            "enum": [
              "amount",
              "base",
              "tax"
            ],
            "title": "Unit",
            "description": "'base': turnover or taxable amount; 'tax': a tax amount; 'amount': other.",
            "default": "base"
          },
          "tax": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "net_tax_rate",
                  "rate"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Tax",
            "description": "Compute tax from the box amount at each line's rate ('rate') or at the filer's approved net tax rates ('net_tax_rate')."
          },
          "rate": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rate",
            "description": "The rate printed next to the box, for display (percent)."
          },
          "terms": {
            "items": {
              "$ref": "#/components/schemas/Term"
            },
            "type": "array",
            "title": "Terms",
            "description": "A computed box: the signed sum of these terms."
          },
          "floor_zero": {
            "type": "boolean",
            "title": "Floor Zero",
            "description": "Computed boxes: never below zero.",
            "default": false
          },
          "xml": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Xml",
            "description": "Element of the official electronic format, if any."
          },
          "fill": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "final_period_interest",
                  "periodic_interest",
                  "previous_credit",
                  "previous_debt_carried",
                  "year_adjustments",
                  "year_final_period_interest",
                  "year_periodic_due",
                  "year_periodic_interest",
                  "year_periodic_paid",
                  "year_periodic_settled"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Fill",
            "description": "A box the filer fills from its earlier returns, not from ledger lines (see ``Fill``); it takes no lines and no hand-entered amount."
          },
          "final_period_blank": {
            "type": "boolean",
            "title": "Final Period Blank",
            "description": "Left blank in the last period of the year that is paid with the annual balance (``interest.periods``; Italy: LIPE VP14 in a quarterly filer's fourth quarter).",
            "default": false
          },
          "fill_from": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Fill From",
            "description": "For ``year_adjustments`` and ``year_periodic_due``: the id of the box of the periodic returns it sums."
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "id",
          "label"
        ],
        "title": "ReturnBox"
      },
      "ReturnForm": {
        "properties": {
          "sources": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": "array",
            "minItems": 1,
            "title": "Sources",
            "description": "Where the rules come from (at least one), e.g. the authority's page."
          },
          "valid_from": {
            "type": "string",
            "format": "date",
            "title": "Valid From"
          },
          "valid_to": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Valid To"
          },
          "published_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9_.-]+$",
            "title": "Id",
            "description": "e.g. 'de.bmf.ustva.2026'."
          },
          "jurisdiction": {
            "type": "string",
            "title": "Jurisdiction",
            "description": "Country the form is filed in, e.g. 'DE'."
          },
          "kind": {
            "type": "string",
            "enum": [
              "annual_summary",
              "oss_return",
              "pst_return_bc",
              "pst_return_sk",
              "qst_return",
              "recapitulative_statement",
              "rst_return_mb",
              "vat_return"
            ],
            "title": "Kind",
            "description": "'vat_return', 'recapitulative_statement', a Canadian provincial return ('qst_return', 'pst_return_bc', 'pst_return_sk', 'rst_return_mb') or 'annual_summary' (an annual return that settles nothing: the Spanish Modelo 390, the Italian Dichiarazione IVA) or 'oss_return' (the EU One-Stop Shop return, filed for the jurisdiction 'EU')."
          },
          "subdivision": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Subdivision",
            "description": "The province or state the form is filed in when that is not the whole country, e.g. 'CA-QC' for the QST return. Such a form reads only the lines taxed there (their jurisdiction)."
          },
          "tax_types": {
            "anyOf": [
              {
                "items": {
                  "type": "string",
                  "enum": [
                    "consumption_tax",
                    "gst",
                    "hst",
                    "pst",
                    "qst",
                    "rst",
                    "sales_tax",
                    "vat"
                  ]
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Tax Types",
            "description": "The taxes the form reports: a tax line of another tax (a line tagged with another ``tax_type``; untagged lines are 'vat') is not read by the form. Null: every tax. Canada files GST/HST with the CRA and QST with Revenu Québec."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Official name of the form."
          },
          "method": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Method",
            "description": "Accounting method the form is for, e.g. 'effective'."
          },
          "version": {
            "type": "string",
            "title": "Version",
            "description": "Official form version or standard, as published."
          },
          "periods": {
            "items": {
              "type": "string",
              "enum": [
                "half_year",
                "month",
                "quarter",
                "two_months",
                "year"
              ]
            },
            "type": "array",
            "minItems": 1,
            "title": "Periods",
            "description": "Filing periods the form may be used for: month, two_months, quarter, half_year, year."
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "title": "Currency",
            "description": "ISO 4217 code of the amounts on the form."
          },
          "base_precision": {
            "type": "integer",
            "enum": [
              0,
              2
            ],
            "title": "Base Precision",
            "description": "Decimals of base amounts (0: whole currency units).",
            "default": 2
          },
          "tax_precision": {
            "type": "integer",
            "enum": [
              0,
              2
            ],
            "title": "Tax Precision",
            "description": "Decimals of tax amounts and totals (0: whole currency units).",
            "default": 2
          },
          "whole_units": {
            "type": "string",
            "enum": [
              "round",
              "truncate"
            ],
            "title": "Whole Units",
            "description": "How an amount in whole units drops its cents: cut off (DE: 'nur Beträge in vollen Euro') or rounded to the nearest unit, 50 cents up (FR, IT).",
            "default": "truncate"
          },
          "interest": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Interest"
              },
              {
                "type": "null"
              }
            ],
            "description": "Interest added to the periodic payments, if any."
          },
          "group_by": {
            "anyOf": [
              {
                "type": "string",
                "const": "counterparty_vat_number"
              },
              {
                "type": "null"
              }
            ],
            "title": "Group By",
            "description": "Recapitulative statements: one row per customer VAT number."
          },
          "boxes": {
            "items": {
              "$ref": "#/components/schemas/ReturnBox"
            },
            "type": "array",
            "minItems": 1,
            "title": "Boxes",
            "description": "The boxes of the form, in order; computed boxes follow their terms."
          },
          "rules": {
            "items": {
              "$ref": "#/components/schemas/DecisionRule"
            },
            "type": "array",
            "minItems": 1,
            "title": "Rules",
            "description": "Ordered rules (first match wins) routing a tax-tagged ledger line to boxes."
          },
          "payable": {
            "items": {
              "$ref": "#/components/schemas/Term"
            },
            "type": "array",
            "title": "Payable",
            "description": "The amount owed for the period (positive) or refundable (negative), as a linear combination of boxes; empty for statements without tax."
          },
          "agree": {
            "items": {
              "$ref": "#/components/schemas/Agreement"
            },
            "type": "array",
            "title": "Agree",
            "description": "Groups of boxes that must add up to the same amount."
          },
          "notes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Notes",
            "description": "How to read or fill the form."
          },
          "limitations": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Limitations",
            "description": "What the form model does not cover."
          },
          "carry_forward": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/CarryForward"
              },
              {
                "type": "null"
              }
            ],
            "description": "Periodic returns: a negative result before the year's last period is carried forward, not refunded."
          },
          "periodic": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/PeriodicSummary"
              },
              {
                "type": "null"
              }
            ],
            "description": "Annual summaries: the boxes taken from the periodic returns."
          }
        },
        "type": "object",
        "required": [
          "sources",
          "valid_from",
          "id",
          "jurisdiction",
          "kind",
          "name",
          "version",
          "periods",
          "currency",
          "boxes",
          "rules"
        ],
        "title": "ReturnForm"
      },
      "RuleMatch": {
        "properties": {
          "rule_id": {
            "type": "string",
            "title": "Rule Id"
          },
          "outputs": {
            "additionalProperties": true,
            "type": "object",
            "title": "Outputs"
          },
          "reference": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference"
          },
          "note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Note"
          }
        },
        "type": "object",
        "required": [
          "rule_id",
          "outputs"
        ],
        "title": "RuleMatch"
      },
      "RuleTrace": {
        "properties": {
          "table_id": {
            "type": "string",
            "title": "Table Id"
          },
          "rule_id": {
            "type": "string",
            "title": "Rule Id"
          },
          "reference": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference"
          },
          "note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Note"
          },
          "legend": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              {
                "type": "null"
              }
            ],
            "title": "Legend",
            "description": "The remark an invoice for this outcome carries, by language (`de`, `fr`, `it`, `en`), with its legal basis; null when the matched rule has none."
          }
        },
        "type": "object",
        "required": [
          "table_id",
          "rule_id",
          "reference",
          "note"
        ],
        "title": "RuleTrace"
      },
      "Schedule": {
        "properties": {
          "method": {
            "type": "string",
            "enum": [
              "declining_balance",
              "straight_line",
              "sum_of_years_digits",
              "table",
              "units_of_production"
            ],
            "title": "Method"
          },
          "convention": {
            "type": "string",
            "enum": [
              "full_year",
              "half_year",
              "mid_month",
              "pro_rata_months"
            ],
            "title": "Convention"
          },
          "cost": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Cost"
          },
          "salvage": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Salvage"
          },
          "depreciable_base": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Depreciable Base"
          },
          "useful_life_years": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Useful Life Years"
          },
          "rate_percent": {
            "anyOf": [
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rate Percent"
          },
          "table": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Table"
          },
          "asset_class": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Asset Class"
          },
          "total_depreciation": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Total Depreciation"
          },
          "periods": {
            "items": {
              "$ref": "#/components/schemas/Period"
            },
            "type": "array",
            "title": "Periods"
          },
          "notes": {
            "items": {
              "$ref": "#/components/schemas/ScheduleNote"
            },
            "type": "array",
            "title": "Notes",
            "description": "Where the parameters came from and how the schedule ends, each by a code with the values it names and in English."
          }
        },
        "type": "object",
        "required": [
          "method",
          "convention",
          "cost",
          "salvage",
          "depreciable_base",
          "useful_life_years",
          "rate_percent",
          "table",
          "asset_class",
          "total_depreciation",
          "periods",
          "notes"
        ],
        "title": "Schedule"
      },
      "ScheduleNote": {
        "properties": {
          "code": {
            "type": "string",
            "title": "Code",
            "description": "What the note says, by a stable code."
          },
          "details": {
            "additionalProperties": true,
            "type": "object",
            "title": "Details",
            "description": "The values the note names (rates and amounts as decimal strings)."
          },
          "text": {
            "type": "string",
            "title": "Text",
            "description": "The same in English words."
          }
        },
        "type": "object",
        "required": [
          "code",
          "details",
          "text"
        ],
        "title": "ScheduleNote"
      },
      "ScheduleRequest": {
        "properties": {
          "cost": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              }
            ],
            "title": "Cost",
            "description": "Acquisition cost to depreciate, as a decimal string in the asset's currency, e.g. '50000.00'. Must be greater than zero."
          },
          "start_date": {
            "type": "string",
            "format": "date",
            "title": "Start Date",
            "description": "Date the asset is placed in service (ISO 8601). It sets the first fiscal year and, with the convention, the share of that year that is depreciated."
          },
          "acquisition_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Acquisition Date",
            "description": "Date the asset was acquired or made, when it differs from start_date (the start of depreciation). A regime that allows declining balance only for acquisitions in a window checks this date (DE § 7 (2) EStG). Default: start_date."
          },
          "method": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "declining_balance",
                  "straight_line",
                  "sum_of_years_digits",
                  "table",
                  "units_of_production"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Method",
            "description": "straight_line, declining_balance, sum_of_years_digits, units_of_production or table (published percentages). Required unless asset_class supplies it."
          },
          "asset_class": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Asset Class",
            "description": "Catalog asset class id; fills method, life, convention, rate and table."
          },
          "salvage": {
            "anyOf": [
              {
                "type": "number",
                "minimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              }
            ],
            "title": "Salvage",
            "description": "Residual value at the end of life, as a decimal string; must be less than cost. Default 0. Ignored by the table method.",
            "default": "0"
          },
          "useful_life_years": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Useful Life Years",
            "description": "Useful life in years, e.g. '5' or '12.5'. Required for straight_line and sum_of_years_digits (a whole number for the latter) unless asset_class supplies it."
          },
          "convention": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "full_year",
                  "half_year",
                  "mid_month",
                  "pro_rata_months"
                ]
              },
              {
                "type": "null"
              }
            ],
            "title": "Convention",
            "description": "Share of the first year that is depreciated: full_year, half_year, mid_month (months left, the acquisition month counted as half) or pro_rata_months (months left including the acquisition month). Defaults to the asset class's convention, otherwise full_year."
          },
          "rate_percent": {
            "anyOf": [
              {
                "type": "number",
                "maximum": 100.0,
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Rate Percent",
            "description": "Annual rate in percent for declining_balance, e.g. '20'. Alternative to factor with useful_life_years; overrides the asset class's rate."
          },
          "factor": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Factor",
            "description": "e.g. 2 for double declining."
          },
          "switch_to_straight_line": {
            "type": "boolean",
            "title": "Switch To Straight Line",
            "description": "declining_balance only: switch to straight line over the remaining life once that gives the larger charge. Default true.",
            "default": true
          },
          "periods": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 100.0,
                "exclusiveMinimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Periods",
            "description": "Number of annual periods to show. Needed for declining_balance without a useful life, which never fully depreciates; for other methods it truncates the schedule."
          },
          "retire_in_period": {
            "anyOf": [
              {
                "type": "integer",
                "maximum": 100.0,
                "exclusiveMinimum": 0.0
              },
              {
                "type": "null"
              }
            ],
            "title": "Retire In Period",
            "description": "declining_balance only: the period (1 = the first fiscal year) the asset is retired in. The schedule ends there and what is left above salvage is written off in it, as on scrapping (CH ESTV). Overrides periods. Ignored for a regime that keeps a retired asset in its pool (UK capital allowances) or a class that keeps the value of its land (CH buildings with land), which then shows periods, by default 30."
          },
          "regime": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Regime",
            "description": "Regime id whose retirement rule applies when no asset_class is given, e.g. 'gb.capital_allowances' (a pool). Unknown ids are ignored."
          },
          "units": {
            "anyOf": [
              {
                "items": {
                  "anyOf": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "string",
                      "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
                    }
                  ]
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "title": "Units",
            "description": "units_of_production only: the units produced or used in each period, as decimal strings, e.g. ['10000', '12000']."
          },
          "total_units": {
            "anyOf": [
              {
                "type": "number",
                "exclusiveMinimum": 0.0
              },
              {
                "type": "string",
                "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$"
              },
              {
                "type": "null"
              }
            ],
            "title": "Total Units",
            "description": "units_of_production only: total units the asset can produce over its life (decimal string); the depreciable base is spread over it."
          },
          "table": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Table",
            "description": "Depreciation table id for the table method, e.g. 'us.macrs.gds.hy.5y' (see GET /v1/fixed-assets/regimes/{regime_id}). Taken from asset_class when omitted."
          },
          "fiscal_year_end_month": {
            "type": "integer",
            "maximum": 12.0,
            "minimum": 1.0,
            "title": "Fiscal Year End Month",
            "description": "Month number (1-12) in which the fiscal year ends. Default 12 (calendar year).",
            "default": 12
          },
          "decimals": {
            "type": "integer",
            "maximum": 6.0,
            "minimum": 0.0,
            "title": "Decimals",
            "description": "Decimal places of the amounts in the schedule (0-6). The last period absorbs the rounding difference. Default 2.",
            "default": 2
          }
        },
        "type": "object",
        "required": [
          "cost",
          "start_date"
        ],
        "title": "ScheduleRequest",
        "examples": [
          {
            "asset_class": "us.macrs.gds.5y",
            "cost": "50000",
            "start_date": "2026-05-01"
          },
          {
            "convention": "pro_rata_months",
            "cost": "12000.00",
            "method": "straight_line",
            "salvage": "2000.00",
            "start_date": "2026-09-01",
            "useful_life_years": "5"
          }
        ]
      },
      "SeriesLatest": {
        "properties": {
          "id": {
            "type": "string",
            "title": "Id",
            "description": "Store key: FX source, benchmark id or calendar id."
          },
          "kind": {
            "type": "string",
            "title": "Kind",
            "description": "'fx', 'rate' or 'calendar'."
          },
          "latest": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Latest",
            "description": "Newest stored date (newest holiday)."
          }
        },
        "type": "object",
        "required": [
          "id",
          "kind",
          "latest"
        ],
        "title": "SeriesLatest"
      },
      "ShiftedDate": {
        "properties": {
          "calendars": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Calendars",
            "description": "The calendar ids the answer is for, as resolved."
          },
          "date": {
            "type": "string",
            "format": "date",
            "title": "Date",
            "description": "The start date (ISO 8601)."
          },
          "days": {
            "type": "integer",
            "title": "Days",
            "description": "Business days moved; negative means backwards."
          },
          "result": {
            "type": "string",
            "format": "date",
            "title": "Result",
            "description": "The resulting business day (ISO 8601)."
          }
        },
        "type": "object",
        "required": [
          "calendars",
          "date",
          "days",
          "result"
        ],
        "title": "ShiftedDate"
      },
      "Source": {
        "properties": {
          "authority": {
            "type": "string",
            "title": "Authority",
            "description": "Publisher, e.g. 'European Commission', 'IRS'."
          },
          "url": {
            "type": "string",
            "minLength": 1,
            "format": "uri",
            "title": "Url",
            "description": "Address of the source, an http or https URL."
          },
          "reference": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Reference",
            "description": "Legal or paragraph reference, e.g. 'UStG §12', 'IAS 16.31'."
          },
          "verified_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Verified At",
            "description": "Date a maintainer last checked the value against the source."
          },
          "kind": {
            "type": "string",
            "enum": [
              "official",
              "secondary"
            ],
            "title": "Kind",
            "description": "'official' = publisher of the law or data; 'secondary' = professional summary used where the official page could not be checked.",
            "default": "official"
          }
        },
        "type": "object",
        "required": [
          "authority",
          "url"
        ],
        "title": "Source"
      },
      "SourceAuthority": {
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9-]+$",
            "title": "Id",
            "description": "e.g. 'ch-estv'."
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Official name of the publisher."
          },
          "jurisdiction": {
            "type": "string",
            "title": "Jurisdiction",
            "description": "Home jurisdiction, or 'global'."
          },
          "homepage": {
            "type": "string",
            "minLength": 1,
            "format": "uri",
            "title": "Homepage",
            "description": "The authority's website."
          },
          "hosts": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "minItems": 1,
            "title": "Hosts",
            "description": "Official web hosts. A record sourced from this authority must cite a URL on one of them (subdomains included)."
          },
          "licence": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Licence",
            "description": "Terms of reuse, if notable."
          },
          "provides": {
            "items": {
              "$ref": "#/components/schemas/Provision"
            },
            "type": "array",
            "minItems": 1,
            "title": "Provides",
            "description": "The kinds of data this authority is the primary source for."
          }
        },
        "type": "object",
        "required": [
          "id",
          "name",
          "jurisdiction",
          "homepage",
          "hosts",
          "provides"
        ],
        "title": "SourceAuthority"
      },
      "SourcesStatus": {
        "properties": {
          "dataset_version": {
            "type": "string",
            "title": "Dataset Version"
          },
          "as_of": {
            "type": "string",
            "format": "date",
            "title": "As Of"
          },
          "counts": {
            "additionalProperties": {
              "type": "integer"
            },
            "type": "object",
            "title": "Counts",
            "description": "Data points per state."
          },
          "data_points": {
            "items": {
              "$ref": "#/components/schemas/DataPointStatus"
            },
            "type": "array",
            "title": "Data Points"
          },
          "watcher": {
            "$ref": "#/components/schemas/WatcherStatus"
          }
        },
        "type": "object",
        "required": [
          "dataset_version",
          "as_of",
          "counts",
          "data_points",
          "watcher"
        ],
        "title": "SourcesStatus"
      },
      "TaxFxConversion": {
        "properties": {
          "series": {
            "type": "string",
            "title": "Series"
          },
          "jurisdiction": {
            "type": "string",
            "title": "Jurisdiction"
          },
          "kind": {
            "type": "string",
            "enum": [
              "daily",
              "monthly"
            ],
            "title": "Kind"
          },
          "requested_date": {
            "type": "string",
            "format": "date",
            "title": "Requested Date"
          },
          "fixing_date": {
            "type": "string",
            "format": "date",
            "title": "Fixing Date"
          },
          "period": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Period"
          },
          "currency": {
            "type": "string",
            "title": "Currency"
          },
          "tax_currency": {
            "type": "string",
            "title": "Tax Currency"
          },
          "rate": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rate"
          },
          "quotation": {
            "type": "string",
            "enum": [
              "direct",
              "indirect"
            ],
            "title": "Quotation"
          },
          "quoted_as": {
            "type": "string",
            "title": "Quoted As"
          },
          "tax_currency_per_unit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Tax Currency Per Unit"
          },
          "amount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Amount"
          },
          "converted": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Converted"
          }
        },
        "type": "object",
        "required": [
          "series",
          "jurisdiction",
          "kind",
          "requested_date",
          "fixing_date",
          "currency",
          "tax_currency",
          "rate",
          "quotation",
          "quoted_as",
          "tax_currency_per_unit",
          "amount",
          "converted"
        ],
        "title": "TaxFxConversion"
      },
      "TaxFxRate": {
        "properties": {
          "series": {
            "type": "string",
            "title": "Series"
          },
          "jurisdiction": {
            "type": "string",
            "title": "Jurisdiction"
          },
          "kind": {
            "type": "string",
            "enum": [
              "daily",
              "monthly"
            ],
            "title": "Kind"
          },
          "requested_date": {
            "type": "string",
            "format": "date",
            "title": "Requested Date"
          },
          "fixing_date": {
            "type": "string",
            "format": "date",
            "title": "Fixing Date"
          },
          "period": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Period"
          },
          "currency": {
            "type": "string",
            "title": "Currency"
          },
          "tax_currency": {
            "type": "string",
            "title": "Tax Currency"
          },
          "rate": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rate"
          },
          "quotation": {
            "type": "string",
            "enum": [
              "direct",
              "indirect"
            ],
            "title": "Quotation"
          },
          "quoted_as": {
            "type": "string",
            "title": "Quoted As"
          },
          "tax_currency_per_unit": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Tax Currency Per Unit"
          }
        },
        "type": "object",
        "required": [
          "series",
          "jurisdiction",
          "kind",
          "requested_date",
          "fixing_date",
          "currency",
          "tax_currency",
          "rate",
          "quotation",
          "quoted_as",
          "tax_currency_per_unit"
        ],
        "title": "TaxFxRate"
      },
      "TaxRate": {
        "properties": {
          "sources": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": "array",
            "minItems": 1,
            "title": "Sources",
            "description": "Where the rules come from (at least one), e.g. the authority's page."
          },
          "valid_from": {
            "type": "string",
            "format": "date",
            "title": "Valid From"
          },
          "valid_to": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Valid To"
          },
          "published_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "series": {
            "type": "string",
            "pattern": "^[a-z0-9_.-]+$",
            "title": "Series",
            "description": "Stable id of the rate across its history, e.g. 'de.vat.standard'."
          },
          "jurisdiction": {
            "type": "string",
            "title": "Jurisdiction",
            "description": "Country or subdivision code the rate applies in, e.g. 'DE', 'CA-ON'."
          },
          "tax_type": {
            "type": "string",
            "enum": [
              "consumption_tax",
              "gst",
              "hst",
              "pst",
              "qst",
              "rst",
              "sales_tax",
              "vat"
            ],
            "title": "Tax Type",
            "description": "vat, gst, hst, pst, qst, rst, sales_tax or consumption_tax."
          },
          "rate_type": {
            "type": "string",
            "enum": [
              "exempt",
              "parking",
              "reduced",
              "special",
              "standard",
              "super_reduced",
              "zero"
            ],
            "title": "Rate Type",
            "description": "standard, reduced, super_reduced, parking, zero (taxable at 0%), special or exempt (outside the tax, no input tax deduction)."
          },
          "rate": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Rate",
            "description": "Percent as a decimal string, e.g. '19' for 19%."
          },
          "categories": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Categories",
            "description": "Short labels of what the rate applies to."
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "What the rate covers or why it differs, when notable."
          },
          "supersedes": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Supersedes",
            "description": "Parent-level series this rate replaces in the subdivision (e.g. Ontario HST replaces federal GST)."
          },
          "option_to_tax": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Option To Tax",
            "description": "Exempt supplies only: whether the supplier may opt to tax the supply (e.g. MWSTG Art. 22). Restrictions are given in the description."
          },
          "id": {
            "type": "string",
            "title": "Id",
            "description": "Unique id of this version: the series and valid_from, e.g. 'de.vat.standard@2020-07-01'.",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "sources",
          "valid_from",
          "series",
          "jurisdiction",
          "tax_type",
          "rate_type",
          "rate",
          "id"
        ],
        "title": "TaxRate"
      },
      "TaxThreshold": {
        "properties": {
          "sources": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": "array",
            "minItems": 1,
            "title": "Sources",
            "description": "Where the rules come from (at least one), e.g. the authority's page."
          },
          "valid_from": {
            "type": "string",
            "format": "date",
            "title": "Valid From"
          },
          "valid_to": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Valid To"
          },
          "published_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At"
          },
          "series": {
            "type": "string",
            "pattern": "^[a-z0-9_.-]+$",
            "title": "Series",
            "description": "Stable id of the threshold across its history, e.g. 'eu.vat.distance_sales_threshold'."
          },
          "jurisdiction": {
            "type": "string",
            "title": "Jurisdiction",
            "description": "A jurisdiction code, or a group such as 'EU'."
          },
          "tax_type": {
            "type": "string",
            "enum": [
              "consumption_tax",
              "gst",
              "hst",
              "pst",
              "qst",
              "rst",
              "sales_tax",
              "vat"
            ],
            "title": "Tax Type",
            "default": "vat"
          },
          "kind": {
            "type": "string",
            "enum": [
              "distance_sales",
              "low_value_consignment",
              "small_business_exemption",
              "sme_union_turnover"
            ],
            "title": "Kind",
            "description": "distance_sales: EU-wide limit below which B2C distance sales and electronic services stay taxed at origin; low_value_consignment: import one-stop-shop limit per consignment; small_business_exemption: domestic turnover limit of the small-business scheme; sme_union_turnover: EU-wide turnover limit for using the small-business scheme in other member states."
          },
          "amount": {
            "type": "string",
            "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$",
            "title": "Amount",
            "description": "The limit as a decimal string, in `currency`."
          },
          "currency": {
            "type": "string",
            "pattern": "^[A-Z]{3}$",
            "title": "Currency",
            "description": "ISO 4217 code of the amount."
          },
          "basis": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Basis",
            "description": "What the amount is compared with, e.g. 'turnover in the preceding calendar year'."
          },
          "applies_to": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Applies To",
            "description": "Supply types the threshold applies to, e.g. ['goods', 'electronic_services']; empty means all supplies."
          },
          "description": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Description",
            "description": "What the threshold limits, in words."
          },
          "id": {
            "type": "string",
            "title": "Id",
            "description": "Unique id of this version: the series and valid_from.",
            "readOnly": true
          }
        },
        "type": "object",
        "required": [
          "sources",
          "valid_from",
          "series",
          "jurisdiction",
          "kind",
          "amount",
          "currency",
          "id"
        ],
        "title": "TaxThreshold",
        "description": "A monetary limit that switches a tax treatment on or off.\n\nExamples: the EU-wide EUR 10,000 limit for intra-EU distance sales (VAT Directive\nArt. 59c), the EUR 150 consignment limit for the import one-stop shop, and each\nmember state's small-business exemption limit."
      },
      "Term": {
        "properties": {
          "box": {
            "type": "string",
            "title": "Box",
            "description": "Id of the box whose value is added or subtracted."
          },
          "sign": {
            "type": "integer",
            "enum": [
              1,
              -1
            ],
            "title": "Sign",
            "description": "1 to add the box, -1 to subtract it.",
            "default": 1
          },
          "part": {
            "type": "string",
            "enum": [
              "amount",
              "tax"
            ],
            "title": "Part",
            "description": "The box's amount, or the tax it computes.",
            "default": "amount"
          }
        },
        "additionalProperties": false,
        "type": "object",
        "required": [
          "box"
        ],
        "title": "Term"
      },
      "Topic": {
        "properties": {
          "published_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Published At",
            "description": "When this record entered the dataset."
          },
          "updated_at": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Updated At",
            "description": "When its content last changed after publication."
          },
          "sources": {
            "items": {
              "$ref": "#/components/schemas/Source"
            },
            "type": "array",
            "minItems": 1,
            "title": "Sources",
            "description": "Where the rules come from (at least one), e.g. the authority's page."
          },
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9_.]+$",
            "title": "Id",
            "description": "e.g. 'ifrs.ias16', 'us_gaap.asc360'."
          },
          "framework": {
            "type": "string",
            "title": "Framework",
            "description": "Framework id: 'ifrs' or 'us_gaap'."
          },
          "code": {
            "type": "string",
            "title": "Code",
            "description": "Official designation, e.g. 'IAS 16', 'ASC 842'."
          },
          "title": {
            "type": "string",
            "title": "Title",
            "description": "Official title of the standard or topic."
          },
          "area": {
            "type": "string",
            "title": "Area",
            "description": "Cross-framework subject, e.g. 'ppe', 'leases'."
          },
          "summary": {
            "type": "string",
            "title": "Summary",
            "description": "Own-words paraphrase of scope and core principle."
          },
          "counterparts": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Counterparts",
            "description": "Ids of the topics in the other framework that cover the same subject."
          },
          "erp_impact": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Erp Impact",
            "description": "What an ERP must support to comply."
          }
        },
        "type": "object",
        "required": [
          "sources",
          "id",
          "framework",
          "code",
          "title",
          "area",
          "summary"
        ],
        "title": "Topic"
      },
      "ValidationError": {
        "properties": {
          "loc": {
            "items": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            "type": "array",
            "title": "Location"
          },
          "msg": {
            "type": "string",
            "title": "Message"
          },
          "type": {
            "type": "string",
            "title": "Error Type"
          },
          "input": {
            "title": "Input"
          },
          "ctx": {
            "type": "object",
            "title": "Context"
          }
        },
        "type": "object",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "title": "ValidationError"
      },
      "WatcherStatus": {
        "properties": {
          "available": {
            "type": "boolean",
            "title": "Available"
          },
          "run_date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ],
            "title": "Run Date"
          },
          "dry_run": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "title": "Dry Run"
          },
          "checked": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Checked"
          },
          "unreachable": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Unreachable"
          },
          "changed": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "title": "Changed"
          },
          "note": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "title": "Note"
          }
        },
        "type": "object",
        "required": [
          "available"
        ],
        "title": "WatcherStatus"
      }
    },
    "securitySchemes": {
      "apiKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key",
        "description": "Required where the service runs with `DATAVNEXT_AUTH=api_key` (the hosted API); a local server needs none."
      },
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "description": "The same API key as `Authorization: Bearer <key>`."
      }
    }
  },
  "tags": [
    {
      "name": "indirect tax",
      "description": "VAT, GST and sales-tax rates, thresholds, net tax rates, pending law, return forms, and the determination of tax for a transaction."
    },
    {
      "name": "fx",
      "description": "ECB reference rates, conversion with EUR triangulation, official VAT exchange rates and IAS 21 period rates."
    },
    {
      "name": "benchmark rates",
      "description": "SOFR, EUR STR, SONIA and SARON fixings."
    },
    {
      "name": "calendars",
      "description": "Payment-system and public-holiday calendars: business days and date arithmetic."
    },
    {
      "name": "fixed assets",
      "description": "Depreciation methods, tax regimes and depreciation schedules."
    },
    {
      "name": "accounting standards",
      "description": "The IFRS and US GAAP topic map and the differences between them."
    },
    {
      "name": "decision tables",
      "description": "Deterministic rule tables (lease classification, reverse charge): fetch or evaluate."
    },
    {
      "name": "changes",
      "description": "What changed in the dataset, and what changes soon."
    },
    {
      "name": "meta",
      "description": "Datasets, jurisdictions, currencies, the source register and data freshness."
    }
  ]
}
