{
  "openapi": "3.0.3",
  "info": {
    "title": "Holidays & Business Days API",
    "version": "0.1.0",
    "description": "Callable Labs public endpoint reference. Obtain the base URL and credentials from the marketplace listing. Availability can differ by marketplace."
  },
  "paths": {
    "/v1/holidays/{year}/{country}": {
      "get": {
        "tags": [
          "Holidays"
        ],
        "summary": "List country holidays",
        "description": "Every holiday of `country` in `year`, sorted by date: name in English (or `language`), the\nlocal name, categories and whether an observance rule moved it. Add `subdivision` for state,\nprovince or region holidays, and `categories` for bank, government, optional or religious days.",
        "operationId": "List country holidays",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HolidayList"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. Verify the RapidAPI subscription and generated request headers."
          },
          "413": {
            "description": "The request body exceeds the configured gateway or endpoint limit."
          },
          "422": {
            "description": "Invalid parameters: `invalid_request`, `unknown_country`, `unknown_market`, `unknown_subdivision`, `unknown_category`, `unsupported_language`, `date_out_of_range`, `range_too_large`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "The subscriber's rate limit or monthly request allowance was exceeded."
          },
          "502": {
            "description": "The origin service is temporarily unavailable."
          },
          "503": {
            "description": "The service is unavailable or busy. Retry after `Retry-After` seconds, with backoff.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Suggested retry delay in seconds."
              }
            }
          }
        },
        "parameters": [
          {
            "name": "year",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "maximum": 2100,
              "minimum": 1900,
              "description": "Year, 1900–2100",
              "title": "Year",
              "example": 2026
            },
            "description": "Year, 1900–2100",
            "example": 2026
          },
          {
            "name": "country",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 3,
              "description": "ISO 3166-1 alpha-2 or alpha-3 code",
              "title": "Country",
              "example": "DE"
            },
            "description": "ISO 3166-1 alpha-2 or alpha-3 code",
            "example": "US"
          },
          {
            "name": "subdivision",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 64,
              "nullable": true,
              "title": "Subdivision",
              "description": "Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them)"
            },
            "description": "Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them)"
          },
          {
            "name": "categories",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 200,
              "nullable": true,
              "title": "Categories",
              "description": "Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`)."
            },
            "description": "Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`)."
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 10,
              "nullable": true,
              "title": "Language",
              "description": "Language for `name`, e.g. `en_US`, `de`, `fr`. Default: English when available."
            },
            "description": "Language for `name`, e.g. `en_US`, `de`, `fr`. Default: English when available."
          },
          {
            "name": "observed",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include days off moved by observance rules (e.g. a Sunday holiday observed on Monday)",
              "default": true,
              "title": "Observed"
            },
            "description": "Include days off moved by observance rules (e.g. a Sunday holiday observed on Monday)"
          }
        ]
      }
    },
    "/v1/holidays/check": {
      "get": {
        "tags": [
          "Holidays"
        ],
        "summary": "Check a date",
        "description": "Whether `date` is a holiday, a weekend day and a business day in one calendar, with the\nholidays that fall on it. Official weekend workdays (such as China's swapped days) count as\nbusiness days.",
        "operationId": "Check a date",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DayCheck"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. Verify the RapidAPI subscription and generated request headers."
          },
          "413": {
            "description": "The request body exceeds the configured gateway or endpoint limit."
          },
          "422": {
            "description": "Invalid parameters: `invalid_request`, `unknown_country`, `unknown_market`, `unknown_subdivision`, `unknown_category`, `unsupported_language`, `date_out_of_range`, `range_too_large`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "The subscriber's rate limit or monthly request allowance was exceeded."
          },
          "502": {
            "description": "The origin service is temporarily unavailable."
          },
          "503": {
            "description": "The service is unavailable or busy. Retry after `Retry-After` seconds, with backoff.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Suggested retry delay in seconds."
              }
            }
          }
        },
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true,
              "title": "Date",
              "description": "ISO date; default today (UTC)",
              "example": "2026-12-25"
            },
            "description": "ISO date; default today (UTC)",
            "example": "2026-12-25"
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 3,
              "nullable": true,
              "title": "Country",
              "description": "ISO 3166-1 alpha-2 or alpha-3 code, e.g. `US` or `DEU`. Give `country` or `market`."
            },
            "description": "ISO 3166-1 alpha-2 or alpha-3 code, e.g. `US` or `DEU`. Give `country` or `market`.",
            "example": "US"
          },
          {
            "name": "market",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 8,
              "nullable": true,
              "title": "Market",
              "description": "Exchange MIC or acronym, e.g. `XNYS` or `NYSE`. Give `country` or `market`."
            },
            "description": "Exchange MIC or acronym, e.g. `XNYS` or `NYSE`. Give `country` or `market`."
          },
          {
            "name": "subdivision",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 64,
              "nullable": true,
              "title": "Subdivision",
              "description": "Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them)"
            },
            "description": "Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them)"
          },
          {
            "name": "categories",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 200,
              "nullable": true,
              "title": "Categories",
              "description": "Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`)."
            },
            "description": "Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`)."
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 10,
              "nullable": true,
              "title": "Language",
              "description": "Language for `name`, e.g. `en_US`, `de`, `fr`. Default: English when available."
            },
            "description": "Language for `name`, e.g. `en_US`, `de`, `fr`. Default: English when available."
          },
          {
            "name": "weekend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 64,
              "nullable": true,
              "title": "Weekend",
              "description": "Override the weekend: weekday names or abbreviations such as `sat,sun` or `fri,sat`, or `none`. Default: the calendar's own."
            },
            "description": "Override the weekend: weekday names or abbreviations such as `sat,sun` or `fri,sat`, or `none`. Default: the calendar's own."
          }
        ]
      }
    },
    "/v1/holidays/upcoming": {
      "get": {
        "tags": [
          "Holidays"
        ],
        "summary": "Find upcoming holidays",
        "description": "The next `count` holidays strictly after `after`, looking up to three years ahead.",
        "operationId": "Find upcoming holidays",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UpcomingList"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. Verify the RapidAPI subscription and generated request headers."
          },
          "413": {
            "description": "The request body exceeds the configured gateway or endpoint limit."
          },
          "422": {
            "description": "Invalid parameters: `invalid_request`, `unknown_country`, `unknown_market`, `unknown_subdivision`, `unknown_category`, `unsupported_language`, `date_out_of_range`, `range_too_large`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "The subscriber's rate limit or monthly request allowance was exceeded."
          },
          "502": {
            "description": "The origin service is temporarily unavailable."
          },
          "503": {
            "description": "The service is unavailable or busy. Retry after `Retry-After` seconds, with backoff.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Suggested retry delay in seconds."
              }
            }
          }
        },
        "parameters": [
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 3,
              "nullable": true,
              "title": "Country",
              "description": "ISO 3166-1 alpha-2 or alpha-3 code, e.g. `US` or `DEU`. Give `country` or `market`."
            },
            "description": "ISO 3166-1 alpha-2 or alpha-3 code, e.g. `US` or `DEU`. Give `country` or `market`.",
            "example": "US"
          },
          {
            "name": "market",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 8,
              "nullable": true,
              "title": "Market",
              "description": "Exchange MIC or acronym, e.g. `XNYS` or `NYSE`. Give `country` or `market`."
            },
            "description": "Exchange MIC or acronym, e.g. `XNYS` or `NYSE`. Give `country` or `market`."
          },
          {
            "name": "after",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true,
              "title": "After",
              "description": "Start after this date; default today (UTC)",
              "example": "2026-10-06"
            },
            "description": "Start after this date; default today (UTC)",
            "example": "2026-10-13"
          },
          {
            "name": "count",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 50,
              "minimum": 1,
              "description": "How many holidays, 1–50",
              "default": 5,
              "title": "Count"
            },
            "description": "How many holidays, 1–50"
          },
          {
            "name": "subdivision",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 64,
              "nullable": true,
              "title": "Subdivision",
              "description": "Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them)"
            },
            "description": "Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them)"
          },
          {
            "name": "categories",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 200,
              "nullable": true,
              "title": "Categories",
              "description": "Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`)."
            },
            "description": "Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`)."
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 10,
              "nullable": true,
              "title": "Language",
              "description": "Language for `name`, e.g. `en_US`, `de`, `fr`. Default: English when available."
            },
            "description": "Language for `name`, e.g. `en_US`, `de`, `fr`. Default: English when available."
          },
          {
            "name": "observed",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include days off moved by observance rules (e.g. a Sunday holiday observed on Monday)",
              "default": true,
              "title": "Observed"
            },
            "description": "Include days off moved by observance rules (e.g. a Sunday holiday observed on Monday)"
          }
        ]
      }
    },
    "/v1/market-holidays/{year}/{market}": {
      "get": {
        "tags": [
          "Markets"
        ],
        "summary": "List exchange holidays",
        "description": "Days the exchange is closed in `year` (NYSE, NASDAQ, LSE, TARGET2, JPX, HKEX, NSE and more).\n`categories=half_day` lists early closes instead of full closures.",
        "operationId": "List exchange holidays",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HolidayList"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. Verify the RapidAPI subscription and generated request headers."
          },
          "413": {
            "description": "The request body exceeds the configured gateway or endpoint limit."
          },
          "422": {
            "description": "Invalid parameters: `invalid_request`, `unknown_country`, `unknown_market`, `unknown_subdivision`, `unknown_category`, `unsupported_language`, `date_out_of_range`, `range_too_large`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "The subscriber's rate limit or monthly request allowance was exceeded."
          },
          "502": {
            "description": "The origin service is temporarily unavailable."
          },
          "503": {
            "description": "The service is unavailable or busy. Retry after `Retry-After` seconds, with backoff.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Suggested retry delay in seconds."
              }
            }
          }
        },
        "parameters": [
          {
            "name": "year",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "maximum": 2100,
              "minimum": 1900,
              "description": "Year, 1900–2100",
              "title": "Year",
              "example": 2026
            },
            "description": "Year, 1900–2100",
            "example": 2026
          },
          {
            "name": "market",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 8,
              "description": "Exchange MIC or acronym",
              "title": "Market",
              "example": "XNYS"
            },
            "description": "Exchange MIC or acronym",
            "example": "XNYS"
          },
          {
            "name": "subdivision",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 64,
              "nullable": true,
              "title": "Subdivision",
              "description": "Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them)"
            },
            "description": "Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them)"
          },
          {
            "name": "categories",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 200,
              "nullable": true,
              "title": "Categories",
              "description": "Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`)."
            },
            "description": "Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`)."
          },
          {
            "name": "language",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 10,
              "nullable": true,
              "title": "Language",
              "description": "Language for `name`, e.g. `en_US`, `de`, `fr`. Default: English when available."
            },
            "description": "Language for `name`, e.g. `en_US`, `de`, `fr`. Default: English when available."
          },
          {
            "name": "observed",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Include days off moved by observance rules (e.g. a Sunday holiday observed on Monday)",
              "default": true,
              "title": "Observed"
            },
            "description": "Include days off moved by observance rules (e.g. a Sunday holiday observed on Monday)"
          }
        ]
      }
    },
    "/v1/business-days/add": {
      "get": {
        "tags": [
          "Business days"
        ],
        "summary": "Add or subtract business days",
        "description": "The business day `days` business days after `start` (before it when negative). `start`\nitself is never counted; `days=0` returns `start` when it is a business day, otherwise the\nnext one. Lists the holidays and closures passed over.",
        "operationId": "Add or subtract business days",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BusinessDaysAdded"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. Verify the RapidAPI subscription and generated request headers."
          },
          "413": {
            "description": "The request body exceeds the configured gateway or endpoint limit."
          },
          "422": {
            "description": "Invalid parameters: `invalid_request`, `unknown_country`, `unknown_market`, `unknown_subdivision`, `unknown_category`, `unsupported_language`, `date_out_of_range`, `range_too_large`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "The subscriber's rate limit or monthly request allowance was exceeded."
          },
          "502": {
            "description": "The origin service is temporarily unavailable."
          },
          "503": {
            "description": "The service is unavailable or busy. Retry after `Retry-After` seconds, with backoff.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Suggested retry delay in seconds."
              }
            }
          }
        },
        "parameters": [
          {
            "name": "days",
            "in": "query",
            "required": true,
            "schema": {
              "type": "integer",
              "maximum": 2500,
              "minimum": -2500,
              "description": "Business days to add; negative subtracts (±2500)",
              "title": "Days",
              "example": 10
            },
            "description": "Business days to add; negative subtracts (±2500)",
            "example": 3
          },
          {
            "name": "start",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true,
              "title": "Start",
              "description": "ISO date; default today (UTC)",
              "example": "2026-12-23"
            },
            "description": "ISO date; default today (UTC)",
            "example": "2026-12-23"
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 3,
              "nullable": true,
              "title": "Country",
              "description": "ISO 3166-1 alpha-2 or alpha-3 code, e.g. `US` or `DEU`. Give `country` or `market`."
            },
            "description": "ISO 3166-1 alpha-2 or alpha-3 code, e.g. `US` or `DEU`. Give `country` or `market`.",
            "example": "DE"
          },
          {
            "name": "market",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 8,
              "nullable": true,
              "title": "Market",
              "description": "Exchange MIC or acronym, e.g. `XNYS` or `NYSE`. Give `country` or `market`."
            },
            "description": "Exchange MIC or acronym, e.g. `XNYS` or `NYSE`. Give `country` or `market`."
          },
          {
            "name": "subdivision",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 64,
              "nullable": true,
              "title": "Subdivision",
              "description": "Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them)"
            },
            "description": "Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them)"
          },
          {
            "name": "categories",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 200,
              "nullable": true,
              "title": "Categories",
              "description": "Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`)."
            },
            "description": "Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`)."
          },
          {
            "name": "weekend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 64,
              "nullable": true,
              "title": "Weekend",
              "description": "Override the weekend: weekday names or abbreviations such as `sat,sun` or `fri,sat`, or `none`. Default: the calendar's own."
            },
            "description": "Override the weekend: weekday names or abbreviations such as `sat,sun` or `fri,sat`, or `none`. Default: the calendar's own."
          },
          {
            "name": "exclude",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 4026,
              "nullable": true,
              "title": "Exclude",
              "description": "Extra closed dates, comma-separated ISO dates (at most 366), e.g. company shutdown days"
            },
            "description": "Extra closed dates, comma-separated ISO dates (at most 366), e.g. company shutdown days"
          }
        ]
      }
    },
    "/v1/business-days/count": {
      "get": {
        "tags": [
          "Business days"
        ],
        "summary": "Count business days",
        "description": "Business days from `start` to `end`, both included (up to ten years), with the holidays and\nclosures that fell on working weekdays.",
        "operationId": "Count business days",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BusinessDaysCount"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. Verify the RapidAPI subscription and generated request headers."
          },
          "413": {
            "description": "The request body exceeds the configured gateway or endpoint limit."
          },
          "422": {
            "description": "Invalid parameters: `invalid_request`, `unknown_country`, `unknown_market`, `unknown_subdivision`, `unknown_category`, `unsupported_language`, `date_out_of_range`, `range_too_large`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "The subscriber's rate limit or monthly request allowance was exceeded."
          },
          "502": {
            "description": "The origin service is temporarily unavailable."
          },
          "503": {
            "description": "The service is unavailable or busy. Retry after `Retry-After` seconds, with backoff.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Suggested retry delay in seconds."
              }
            }
          }
        },
        "parameters": [
          {
            "name": "start",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "First day, included",
              "title": "Start",
              "example": "2026-12-01"
            },
            "description": "First day, included",
            "example": "2026-01-01"
          },
          {
            "name": "end",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "date",
              "description": "Last day, included",
              "title": "End",
              "example": "2026-12-31"
            },
            "description": "Last day, included",
            "example": "2026-12-31"
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 3,
              "nullable": true,
              "title": "Country",
              "description": "ISO 3166-1 alpha-2 or alpha-3 code, e.g. `US` or `DEU`. Give `country` or `market`."
            },
            "description": "ISO 3166-1 alpha-2 or alpha-3 code, e.g. `US` or `DEU`. Give `country` or `market`."
          },
          {
            "name": "market",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 8,
              "nullable": true,
              "title": "Market",
              "description": "Exchange MIC or acronym, e.g. `XNYS` or `NYSE`. Give `country` or `market`."
            },
            "description": "Exchange MIC or acronym, e.g. `XNYS` or `NYSE`. Give `country` or `market`.",
            "example": "XNYS"
          },
          {
            "name": "subdivision",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 64,
              "nullable": true,
              "title": "Subdivision",
              "description": "Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them)"
            },
            "description": "Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them)"
          },
          {
            "name": "categories",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 200,
              "nullable": true,
              "title": "Categories",
              "description": "Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`)."
            },
            "description": "Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`)."
          },
          {
            "name": "weekend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 64,
              "nullable": true,
              "title": "Weekend",
              "description": "Override the weekend: weekday names or abbreviations such as `sat,sun` or `fri,sat`, or `none`. Default: the calendar's own."
            },
            "description": "Override the weekend: weekday names or abbreviations such as `sat,sun` or `fri,sat`, or `none`. Default: the calendar's own."
          },
          {
            "name": "exclude",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 4026,
              "nullable": true,
              "title": "Exclude",
              "description": "Extra closed dates, comma-separated ISO dates (at most 366), e.g. company shutdown days"
            },
            "description": "Extra closed dates, comma-separated ISO dates (at most 366), e.g. company shutdown days"
          }
        ]
      }
    },
    "/v1/business-days/next": {
      "get": {
        "tags": [
          "Business days"
        ],
        "summary": "Find the next business day",
        "description": "The first business day after `date` (before it with `direction=previous`), listing every\nday passed over and why.",
        "operationId": "Find the next business day",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NextBusinessDay"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. Verify the RapidAPI subscription and generated request headers."
          },
          "413": {
            "description": "The request body exceeds the configured gateway or endpoint limit."
          },
          "422": {
            "description": "Invalid parameters: `invalid_request`, `unknown_country`, `unknown_market`, `unknown_subdivision`, `unknown_category`, `unsupported_language`, `date_out_of_range`, `range_too_large`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "The subscriber's rate limit or monthly request allowance was exceeded."
          },
          "502": {
            "description": "The origin service is temporarily unavailable."
          },
          "503": {
            "description": "The service is unavailable or busy. Retry after `Retry-After` seconds, with backoff.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Suggested retry delay in seconds."
              }
            }
          }
        },
        "parameters": [
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date",
              "nullable": true,
              "title": "Date",
              "description": "ISO date; default today (UTC)",
              "example": "2026-12-24"
            },
            "description": "ISO date; default today (UTC)",
            "example": "2026-12-25"
          },
          {
            "name": "direction",
            "in": "query",
            "required": false,
            "schema": {
              "enum": [
                "next",
                "previous"
              ],
              "type": "string",
              "description": "Search forwards or backwards",
              "default": "next",
              "title": "Direction"
            },
            "description": "Search forwards or backwards"
          },
          {
            "name": "include_date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean",
              "description": "Return `date` itself when it is a business day",
              "default": false,
              "title": "Include Date"
            },
            "description": "Return `date` itself when it is a business day"
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 3,
              "nullable": true,
              "title": "Country",
              "description": "ISO 3166-1 alpha-2 or alpha-3 code, e.g. `US` or `DEU`. Give `country` or `market`."
            },
            "description": "ISO 3166-1 alpha-2 or alpha-3 code, e.g. `US` or `DEU`. Give `country` or `market`.",
            "example": "US"
          },
          {
            "name": "market",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 8,
              "nullable": true,
              "title": "Market",
              "description": "Exchange MIC or acronym, e.g. `XNYS` or `NYSE`. Give `country` or `market`."
            },
            "description": "Exchange MIC or acronym, e.g. `XNYS` or `NYSE`. Give `country` or `market`."
          },
          {
            "name": "subdivision",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 64,
              "nullable": true,
              "title": "Subdivision",
              "description": "Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them)"
            },
            "description": "Subdivision code or name, e.g. `CA`, `BY` or `Bayern` (names as the calendar knows them)"
          },
          {
            "name": "categories",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 200,
              "nullable": true,
              "title": "Categories",
              "description": "Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`)."
            },
            "description": "Comma-separated holiday categories, e.g. `public,bank`. Default: the calendar's main category (usually `public`)."
          },
          {
            "name": "weekend",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 64,
              "nullable": true,
              "title": "Weekend",
              "description": "Override the weekend: weekday names or abbreviations such as `sat,sun` or `fri,sat`, or `none`. Default: the calendar's own."
            },
            "description": "Override the weekend: weekday names or abbreviations such as `sat,sun` or `fri,sat`, or `none`. Default: the calendar's own."
          },
          {
            "name": "exclude",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 4026,
              "nullable": true,
              "title": "Exclude",
              "description": "Extra closed dates, comma-separated ISO dates (at most 366), e.g. company shutdown days"
            },
            "description": "Extra closed dates, comma-separated ISO dates (at most 366), e.g. company shutdown days"
          }
        ]
      }
    },
    "/v1/countries": {
      "get": {
        "tags": [
          "Reference"
        ],
        "summary": "List countries",
        "description": "Every country and territory with a holiday calendar: codes, name, categories, languages,\nweekend, number of subdivisions and the years covered.",
        "operationId": "List countries",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalendarCatalog"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. Verify the RapidAPI subscription and generated request headers."
          },
          "413": {
            "description": "The request body exceeds the configured gateway or endpoint limit."
          },
          "429": {
            "description": "The subscriber's rate limit or monthly request allowance was exceeded."
          },
          "502": {
            "description": "The origin service is temporarily unavailable."
          },
          "503": {
            "description": "The service is unavailable or busy. Retry after `Retry-After` seconds, with backoff.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Suggested retry delay in seconds."
              }
            }
          }
        }
      }
    },
    "/v1/countries/{country}": {
      "get": {
        "tags": [
          "Reference"
        ],
        "summary": "Get country details",
        "description": "Categories, languages, weekend, covered years and every subdivision code with its names.",
        "operationId": "Get country details",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalendarDetail"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. Verify the RapidAPI subscription and generated request headers."
          },
          "413": {
            "description": "The request body exceeds the configured gateway or endpoint limit."
          },
          "422": {
            "description": "`unknown_country` or `unknown_market`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "The subscriber's rate limit or monthly request allowance was exceeded."
          },
          "502": {
            "description": "The origin service is temporarily unavailable."
          },
          "503": {
            "description": "The service is unavailable or busy. Retry after `Retry-After` seconds, with backoff.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Suggested retry delay in seconds."
              }
            }
          }
        },
        "parameters": [
          {
            "name": "country",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 3,
              "description": "ISO 3166-1 alpha-2 or alpha-3 code",
              "title": "Country",
              "example": "US"
            },
            "description": "ISO 3166-1 alpha-2 or alpha-3 code",
            "example": "US"
          }
        ]
      }
    },
    "/v1/markets": {
      "get": {
        "tags": [
          "Reference"
        ],
        "summary": "List exchanges",
        "description": "Every exchange with a market-holiday calendar, by MIC with its acronyms.",
        "operationId": "List exchanges",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalendarCatalog"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. Verify the RapidAPI subscription and generated request headers."
          },
          "413": {
            "description": "The request body exceeds the configured gateway or endpoint limit."
          },
          "429": {
            "description": "The subscriber's rate limit or monthly request allowance was exceeded."
          },
          "502": {
            "description": "The origin service is temporarily unavailable."
          },
          "503": {
            "description": "The service is unavailable or busy. Retry after `Retry-After` seconds, with backoff.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Suggested retry delay in seconds."
              }
            }
          }
        }
      }
    },
    "/v1/markets/{market}": {
      "get": {
        "tags": [
          "Reference"
        ],
        "summary": "Get exchange details",
        "description": "Categories (`public` closures, `half_day` early closes), weekend and covered years.",
        "operationId": "Get exchange details",
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CalendarDetail"
                }
              }
            }
          },
          "401": {
            "description": "Authentication failed. Verify the RapidAPI subscription and generated request headers."
          },
          "413": {
            "description": "The request body exceeds the configured gateway or endpoint limit."
          },
          "422": {
            "description": "`unknown_country` or `unknown_market`",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                }
              }
            }
          },
          "429": {
            "description": "The subscriber's rate limit or monthly request allowance was exceeded."
          },
          "502": {
            "description": "The origin service is temporarily unavailable."
          },
          "503": {
            "description": "The service is unavailable or busy. Retry after `Retry-After` seconds, with backoff.",
            "headers": {
              "Retry-After": {
                "schema": {
                  "type": "integer"
                },
                "description": "Suggested retry delay in seconds."
              }
            }
          }
        },
        "parameters": [
          {
            "name": "market",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 2,
              "maxLength": 8,
              "description": "Exchange MIC or acronym",
              "title": "Market",
              "example": "XNYS"
            },
            "description": "Exchange MIC or acronym",
            "example": "XNYS"
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "HolidayList": {
        "properties": {
          "country": {
            "type": "string",
            "nullable": true,
            "title": "Country",
            "description": "ISO 3166-1 alpha-2 code",
            "example": "DE"
          },
          "market": {
            "type": "string",
            "nullable": true,
            "title": "Market",
            "description": "ISO 10383 MIC",
            "example": null
          },
          "subdivision": {
            "type": "string",
            "nullable": true,
            "title": "Subdivision",
            "description": "Subdivision code, when one was asked for",
            "example": "BY"
          },
          "categories": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Categories",
            "example": [
              "public"
            ]
          },
          "language": {
            "type": "string",
            "nullable": true,
            "title": "Language",
            "description": "Language of `name`",
            "example": "en_US"
          },
          "calendar_version": {
            "type": "string",
            "title": "Calendar Version",
            "description": "Version of the holiday rules used",
            "example": "0.106"
          },
          "year": {
            "type": "integer",
            "title": "Year",
            "example": 2026
          },
          "count": {
            "type": "integer",
            "title": "Count",
            "example": 13
          },
          "holidays": {
            "items": {
              "$ref": "#/components/schemas/HolidayOut"
            },
            "type": "array",
            "title": "Holidays"
          }
        },
        "type": "object",
        "required": [
          "categories",
          "language",
          "calendar_version",
          "year",
          "count",
          "holidays"
        ],
        "title": "HolidayList"
      },
      "HolidayOut": {
        "properties": {
          "date": {
            "type": "string",
            "format": "date",
            "title": "Date",
            "example": "2026-12-25"
          },
          "weekday": {
            "type": "string",
            "title": "Weekday",
            "description": "English weekday name",
            "example": "friday"
          },
          "name": {
            "type": "string",
            "title": "Name",
            "description": "Name in the requested language (English by default when available)",
            "example": "Christmas Day"
          },
          "local_name": {
            "type": "string",
            "title": "Local Name",
            "description": "Name in the calendar's own language",
            "example": "Erster Weihnachtstag"
          },
          "categories": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Categories",
            "description": "Categories this holiday belongs to",
            "example": [
              "public"
            ]
          },
          "observed": {
            "type": "boolean",
            "title": "Observed",
            "description": "True when an observance rule moved the day off here (e.g. a Saturday holiday observed on Monday)",
            "example": false
          }
        },
        "type": "object",
        "required": [
          "date",
          "weekday",
          "name",
          "local_name",
          "categories",
          "observed"
        ],
        "title": "HolidayOut"
      },
      "ErrorResponse": {
        "type": "object",
        "required": [
          "detail"
        ],
        "properties": {
          "detail": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string",
                "description": "Stable machine-readable failure code"
              },
              "message": {
                "type": "string",
                "description": "Human-readable explanation"
              },
              "errors": {
                "type": "array",
                "description": "Per-field or per-line detail when there is more than one thing to fix",
                "items": {
                  "type": "object",
                  "properties": {
                    "loc": {
                      "type": "string",
                      "description": "Field path, e.g. `body.scale`"
                    },
                    "line": {
                      "type": "integer"
                    },
                    "column": {
                      "type": "integer"
                    },
                    "message": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    }
                  }
                }
              }
            },
            "additionalProperties": true
          }
        }
      },
      "DayCheck": {
        "properties": {
          "country": {
            "type": "string",
            "nullable": true,
            "title": "Country",
            "description": "ISO 3166-1 alpha-2 code",
            "example": "DE"
          },
          "market": {
            "type": "string",
            "nullable": true,
            "title": "Market",
            "description": "ISO 10383 MIC",
            "example": null
          },
          "subdivision": {
            "type": "string",
            "nullable": true,
            "title": "Subdivision",
            "description": "Subdivision code, when one was asked for",
            "example": "BY"
          },
          "categories": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Categories",
            "example": [
              "public"
            ]
          },
          "language": {
            "type": "string",
            "nullable": true,
            "title": "Language",
            "description": "Language of `name`",
            "example": "en_US"
          },
          "calendar_version": {
            "type": "string",
            "title": "Calendar Version",
            "description": "Version of the holiday rules used",
            "example": "0.106"
          },
          "date": {
            "type": "string",
            "format": "date",
            "title": "Date",
            "example": "2026-12-25"
          },
          "weekday": {
            "type": "string",
            "title": "Weekday",
            "example": "friday"
          },
          "is_holiday": {
            "type": "boolean",
            "title": "Is Holiday",
            "example": true
          },
          "is_weekend": {
            "type": "boolean",
            "title": "Is Weekend",
            "description": "Falls on a weekend day of this calendar",
            "example": false
          },
          "is_business_day": {
            "type": "boolean",
            "title": "Is Business Day",
            "example": false
          },
          "holidays": {
            "items": {
              "$ref": "#/components/schemas/HolidayOut"
            },
            "type": "array",
            "title": "Holidays"
          }
        },
        "type": "object",
        "required": [
          "categories",
          "language",
          "calendar_version",
          "date",
          "weekday",
          "is_holiday",
          "is_weekend",
          "is_business_day",
          "holidays"
        ],
        "title": "DayCheck"
      },
      "UpcomingList": {
        "properties": {
          "country": {
            "type": "string",
            "nullable": true,
            "title": "Country",
            "description": "ISO 3166-1 alpha-2 code",
            "example": "DE"
          },
          "market": {
            "type": "string",
            "nullable": true,
            "title": "Market",
            "description": "ISO 10383 MIC",
            "example": null
          },
          "subdivision": {
            "type": "string",
            "nullable": true,
            "title": "Subdivision",
            "description": "Subdivision code, when one was asked for",
            "example": "BY"
          },
          "categories": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Categories",
            "example": [
              "public"
            ]
          },
          "language": {
            "type": "string",
            "nullable": true,
            "title": "Language",
            "description": "Language of `name`",
            "example": "en_US"
          },
          "calendar_version": {
            "type": "string",
            "title": "Calendar Version",
            "description": "Version of the holiday rules used",
            "example": "0.106"
          },
          "after": {
            "type": "string",
            "format": "date",
            "title": "After",
            "description": "Holidays strictly after this date",
            "example": "2026-10-06"
          },
          "count": {
            "type": "integer",
            "title": "Count",
            "example": 3
          },
          "holidays": {
            "items": {
              "$ref": "#/components/schemas/HolidayOut"
            },
            "type": "array",
            "title": "Holidays"
          }
        },
        "type": "object",
        "required": [
          "categories",
          "language",
          "calendar_version",
          "after",
          "count",
          "holidays"
        ],
        "title": "UpcomingList"
      },
      "BusinessDaysAdded": {
        "properties": {
          "country": {
            "type": "string",
            "nullable": true,
            "title": "Country",
            "description": "ISO 3166-1 alpha-2 code",
            "example": "DE"
          },
          "market": {
            "type": "string",
            "nullable": true,
            "title": "Market",
            "description": "ISO 10383 MIC",
            "example": null
          },
          "subdivision": {
            "type": "string",
            "nullable": true,
            "title": "Subdivision",
            "description": "Subdivision code, when one was asked for",
            "example": "BY"
          },
          "categories": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Categories",
            "example": [
              "public"
            ]
          },
          "language": {
            "type": "string",
            "nullable": true,
            "title": "Language",
            "description": "Language of `name`",
            "example": "en_US"
          },
          "calendar_version": {
            "type": "string",
            "title": "Calendar Version",
            "description": "Version of the holiday rules used",
            "example": "0.106"
          },
          "start": {
            "type": "string",
            "format": "date",
            "title": "Start",
            "example": "2026-12-23"
          },
          "days": {
            "type": "integer",
            "title": "Days",
            "description": "Business days added (negative: subtracted)",
            "example": 3
          },
          "date": {
            "type": "string",
            "format": "date",
            "title": "Date",
            "description": "The resulting business day",
            "example": "2026-12-30"
          },
          "calendar_days": {
            "type": "integer",
            "title": "Calendar Days",
            "description": "Calendar days between `start` and `date`",
            "example": 7
          },
          "weekend": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Weekend",
            "description": "Weekend days used",
            "example": [
              "saturday",
              "sunday"
            ]
          },
          "skipped_holidays": {
            "items": {
              "$ref": "#/components/schemas/SkippedDay"
            },
            "type": "array",
            "title": "Skipped Holidays",
            "description": "Holidays and closures passed over (weekends are not listed)"
          }
        },
        "type": "object",
        "required": [
          "categories",
          "language",
          "calendar_version",
          "start",
          "days",
          "date",
          "calendar_days",
          "weekend",
          "skipped_holidays"
        ],
        "title": "BusinessDaysAdded"
      },
      "SkippedDay": {
        "properties": {
          "date": {
            "type": "string",
            "format": "date",
            "title": "Date",
            "example": "2026-12-25"
          },
          "reason": {
            "type": "string",
            "title": "Reason",
            "description": "`holiday`, `closure` or `weekend`",
            "example": "holiday"
          },
          "names": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Names",
            "example": [
              "Christmas Day"
            ]
          }
        },
        "type": "object",
        "required": [
          "date",
          "reason"
        ],
        "title": "SkippedDay"
      },
      "BusinessDaysCount": {
        "properties": {
          "country": {
            "type": "string",
            "nullable": true,
            "title": "Country",
            "description": "ISO 3166-1 alpha-2 code",
            "example": "DE"
          },
          "market": {
            "type": "string",
            "nullable": true,
            "title": "Market",
            "description": "ISO 10383 MIC",
            "example": null
          },
          "subdivision": {
            "type": "string",
            "nullable": true,
            "title": "Subdivision",
            "description": "Subdivision code, when one was asked for",
            "example": "BY"
          },
          "categories": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Categories",
            "example": [
              "public"
            ]
          },
          "language": {
            "type": "string",
            "nullable": true,
            "title": "Language",
            "description": "Language of `name`",
            "example": "en_US"
          },
          "calendar_version": {
            "type": "string",
            "title": "Calendar Version",
            "description": "Version of the holiday rules used",
            "example": "0.106"
          },
          "start": {
            "type": "string",
            "format": "date",
            "title": "Start",
            "example": "2026-12-01"
          },
          "end": {
            "type": "string",
            "format": "date",
            "title": "End",
            "example": "2026-12-31"
          },
          "business_days": {
            "type": "integer",
            "title": "Business Days",
            "example": 21
          },
          "calendar_days": {
            "type": "integer",
            "title": "Calendar Days",
            "description": "Days counted, both ends included",
            "example": 31
          },
          "weekend_days": {
            "type": "integer",
            "title": "Weekend Days",
            "example": 8
          },
          "weekend": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Weekend",
            "example": [
              "saturday",
              "sunday"
            ]
          },
          "holidays": {
            "items": {
              "$ref": "#/components/schemas/SkippedDay"
            },
            "type": "array",
            "title": "Holidays",
            "description": "Holidays and closures in the range that fell on working weekdays"
          }
        },
        "type": "object",
        "required": [
          "categories",
          "language",
          "calendar_version",
          "start",
          "end",
          "business_days",
          "calendar_days",
          "weekend_days",
          "weekend",
          "holidays"
        ],
        "title": "BusinessDaysCount"
      },
      "NextBusinessDay": {
        "properties": {
          "country": {
            "type": "string",
            "nullable": true,
            "title": "Country",
            "description": "ISO 3166-1 alpha-2 code",
            "example": "DE"
          },
          "market": {
            "type": "string",
            "nullable": true,
            "title": "Market",
            "description": "ISO 10383 MIC",
            "example": null
          },
          "subdivision": {
            "type": "string",
            "nullable": true,
            "title": "Subdivision",
            "description": "Subdivision code, when one was asked for",
            "example": "BY"
          },
          "categories": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Categories",
            "example": [
              "public"
            ]
          },
          "language": {
            "type": "string",
            "nullable": true,
            "title": "Language",
            "description": "Language of `name`",
            "example": "en_US"
          },
          "calendar_version": {
            "type": "string",
            "title": "Calendar Version",
            "description": "Version of the holiday rules used",
            "example": "0.106"
          },
          "date": {
            "type": "string",
            "format": "date",
            "title": "Date",
            "description": "Where the search started",
            "example": "2026-12-24"
          },
          "direction": {
            "type": "string",
            "title": "Direction",
            "example": "next"
          },
          "result": {
            "type": "string",
            "format": "date",
            "title": "Result",
            "example": "2026-12-28"
          },
          "skipped": {
            "items": {
              "$ref": "#/components/schemas/SkippedDay"
            },
            "type": "array",
            "title": "Skipped",
            "description": "Every non-business day passed over, weekends included"
          }
        },
        "type": "object",
        "required": [
          "categories",
          "language",
          "calendar_version",
          "date",
          "direction",
          "result",
          "skipped"
        ],
        "title": "NextBusinessDay"
      },
      "CalendarCatalog": {
        "properties": {
          "count": {
            "type": "integer",
            "title": "Count",
            "example": 250
          },
          "calendar_version": {
            "type": "string",
            "title": "Calendar Version",
            "example": "0.106"
          },
          "items": {
            "items": {
              "$ref": "#/components/schemas/CalendarInfo"
            },
            "type": "array",
            "title": "Items"
          }
        },
        "type": "object",
        "required": [
          "count",
          "calendar_version",
          "items"
        ],
        "title": "CalendarCatalog"
      },
      "CalendarInfo": {
        "properties": {
          "code": {
            "type": "string",
            "title": "Code",
            "example": "DE"
          },
          "aliases": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Aliases",
            "description": "Alpha-3 code, or the exchange's acronyms",
            "example": [
              "DEU"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "example": "Germany"
          },
          "kind": {
            "type": "string",
            "title": "Kind",
            "description": "`country` or `market`",
            "example": "country"
          },
          "categories": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Categories",
            "example": [
              "catholic",
              "public",
              "school"
            ]
          },
          "default_category": {
            "type": "string",
            "title": "Default Category",
            "example": "public"
          },
          "languages": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Languages",
            "example": [
              "de",
              "en_US",
              "th",
              "uk"
            ]
          },
          "default_language": {
            "type": "string",
            "nullable": true,
            "title": "Default Language",
            "example": "de"
          },
          "weekend": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Weekend",
            "example": [
              "saturday",
              "sunday"
            ]
          },
          "subdivision_count": {
            "type": "integer",
            "title": "Subdivision Count",
            "example": 17
          },
          "years": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Years",
            "description": "First and last year with rules",
            "example": [
              1990,
              2100
            ]
          }
        },
        "type": "object",
        "required": [
          "code",
          "aliases",
          "name",
          "kind",
          "categories",
          "default_category",
          "languages",
          "default_language",
          "weekend",
          "subdivision_count",
          "years"
        ],
        "title": "CalendarInfo"
      },
      "CalendarDetail": {
        "properties": {
          "code": {
            "type": "string",
            "title": "Code",
            "example": "DE"
          },
          "aliases": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Aliases",
            "description": "Alpha-3 code, or the exchange's acronyms",
            "example": [
              "DEU"
            ]
          },
          "name": {
            "type": "string",
            "title": "Name",
            "example": "Germany"
          },
          "kind": {
            "type": "string",
            "title": "Kind",
            "description": "`country` or `market`",
            "example": "country"
          },
          "categories": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Categories",
            "example": [
              "catholic",
              "public",
              "school"
            ]
          },
          "default_category": {
            "type": "string",
            "title": "Default Category",
            "example": "public"
          },
          "languages": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Languages",
            "example": [
              "de",
              "en_US",
              "th",
              "uk"
            ]
          },
          "default_language": {
            "type": "string",
            "nullable": true,
            "title": "Default Language",
            "example": "de"
          },
          "weekend": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Weekend",
            "example": [
              "saturday",
              "sunday"
            ]
          },
          "subdivision_count": {
            "type": "integer",
            "title": "Subdivision Count",
            "example": 17
          },
          "years": {
            "items": {
              "type": "integer"
            },
            "type": "array",
            "title": "Years",
            "description": "First and last year with rules",
            "example": [
              1990,
              2100
            ]
          },
          "subdivisions": {
            "items": {
              "$ref": "#/components/schemas/SubdivisionOut"
            },
            "type": "array",
            "title": "Subdivisions",
            "description": "Every subdivision code with its names"
          }
        },
        "type": "object",
        "required": [
          "code",
          "aliases",
          "name",
          "kind",
          "categories",
          "default_category",
          "languages",
          "default_language",
          "weekend",
          "subdivision_count",
          "years",
          "subdivisions"
        ],
        "title": "CalendarDetail"
      },
      "SubdivisionOut": {
        "properties": {
          "code": {
            "type": "string",
            "title": "Code",
            "example": "BY"
          },
          "names": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "title": "Names",
            "description": "Known names and aliases (any language)",
            "example": [
              "Bayern"
            ]
          }
        },
        "type": "object",
        "required": [
          "code",
          "names"
        ],
        "title": "SubdivisionOut"
      }
    }
  }
}
