{
  "openapi": "3.1.0",
  "info": {
    "title": "coach steve race index",
    "version": "1.1.0",
    "summary": "Running and triathlon races worldwide: dates, distances, climbing and cut-offs, checked against each race's official site.",
    "description": "Read only. Race data by coach steve (getcoachsteve.com/races), CC BY 4.0. Every answer carries the race's page on getcoachsteve.com.",
    "license": {
      "name": "CC BY 4.0",
      "url": "https://getcoachsteve.com/races/api#licence"
    }
  },
  "servers": [
    {
      "url": "https://getcoachsteve.com/api/races/v1"
    }
  ],
  "externalDocs": {
    "description": "How to use the race API, MCP and the full nightly download.",
    "url": "https://getcoachsteve.com/races/api"
  },
  "components": {
    "schemas": {
      "Error": {
        "type": "object",
        "required": [
          "error"
        ],
        "properties": {
          "error": {
            "type": "object",
            "required": [
              "code"
            ],
            "properties": {
              "code": {
                "type": "string",
                "description": "What went wrong: filter_required, invalid_filter, invalid_page, invalid_fields, invalid_id, invalid_year, invalid_since, invalid_cursor, since_required, not_found, unavailable."
              },
              "field": {
                "type": "string",
                "description": "The parameter at fault, when there is one."
              }
            }
          }
        }
      },
      "Location": {
        "type": "object",
        "properties": {
          "city": {
            "type": [
              "string",
              "null"
            ]
          },
          "region": {
            "type": [
              "string",
              "null"
            ]
          },
          "region_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "country_code": {
            "type": [
              "string",
              "null"
            ]
          },
          "lat": {
            "type": [
              "number",
              "null"
            ]
          },
          "lng": {
            "type": [
              "number",
              "null"
            ]
          },
          "timezone": {
            "type": [
              "string",
              "null"
            ]
          },
          "venue_name": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "Distance": {
        "type": "object",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "rv_…"
          },
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "race_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "distance_meters": {
            "type": [
              "integer",
              "null"
            ]
          },
          "distance_family": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "5k",
              "10k",
              "half",
              "marathon",
              "ultra",
              "other",
              null
            ]
          },
          "surface": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "road",
              "trail",
              "track",
              "mixed",
              null
            ]
          },
          "elevation_gain_m": {
            "type": [
              "integer",
              "null"
            ]
          },
          "elevation_loss_m": {
            "type": [
              "integer",
              "null"
            ]
          },
          "start_time_local": {
            "type": [
              "string",
              "null"
            ]
          },
          "cutoff_minutes": {
            "type": [
              "integer",
              "null"
            ]
          },
          "entry_kind": {
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "qualifying",
              "lottery",
              "open",
              null
            ]
          },
          "registration_status": {
            "type": "string",
            "enum": [
              "not_open",
              "open",
              "lottery_open",
              "closed",
              "sold_out",
              "waitlist",
              "unknown"
            ]
          },
          "registration_opens_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "registration_closes_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "price_min": {
            "type": [
              "number",
              "null"
            ]
          },
          "price_max": {
            "type": [
              "number",
              "null"
            ]
          },
          "currency": {
            "type": [
              "string",
              "null"
            ],
            "description": "ISO 4217."
          },
          "price_as_of": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "training": {
            "type": "object",
            "description": "Worked out from the facts above.",
            "properties": {
              "climb_m_per_km": {
                "type": [
                  "number",
                  "null"
                ]
              },
              "course": {
                "type": [
                  "string",
                  "null"
                ],
                "enum": [
                  "flat",
                  "rolling",
                  "hilly",
                  null
                ]
              },
              "cutoff_pace_s_per_km": {
                "type": [
                  "integer",
                  "null"
                ]
              }
            }
          }
        }
      },
      "Edition": {
        "type": "object",
        "required": [
          "id",
          "year",
          "status"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "re_…"
          },
          "year": {
            "type": "integer"
          },
          "start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "end_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "previous_start_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date",
            "description": "The day it had before it was rescheduled."
          },
          "date_status": {
            "type": "string",
            "enum": [
              "confirmed",
              "tentative"
            ]
          },
          "date_precision": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "provisional",
              "verified",
              "conflict",
              "cancelled",
              "postponed",
              "completed"
            ]
          },
          "status_reason": {
            "type": [
              "string",
              "null"
            ]
          },
          "timezone": {
            "type": [
              "string",
              "null"
            ]
          },
          "official_url": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "verified_at": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time",
            "description": "When the official site last confirmed it."
          },
          "stale": {
            "type": "boolean"
          },
          "weeks_to_race": {
            "type": [
              "integer",
              "null"
            ]
          },
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Distance"
            }
          }
        }
      },
      "Race": {
        "type": "object",
        "required": [
          "id",
          "slug",
          "url",
          "name"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "rs_…, never reused."
          },
          "slug": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "train_url": {
            "type": "string",
            "format": "uri"
          },
          "name": {
            "type": "string"
          },
          "native_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "discipline": {
            "type": "string",
            "enum": [
              "running",
              "triathlon",
              "duathlon",
              "aquathlon",
              "swimrun"
            ]
          },
          "status": {
            "type": "string"
          },
          "changed_at": {
            "type": "string",
            "format": "date-time"
          },
          "official_website": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "first_year": {
            "type": [
              "integer",
              "null"
            ]
          },
          "location": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Location"
              },
              {
                "type": "null"
              }
            ]
          },
          "next_edition": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Edition"
              },
              {
                "type": "null"
              }
            ]
          },
          "latest_completed": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Edition"
              },
              {
                "type": "null"
              }
            ]
          }
        }
      },
      "Attributed": {
        "type": "object",
        "required": [
          "attribution",
          "license"
        ],
        "properties": {
          "attribution": {
            "type": "string"
          },
          "license": {
            "type": "string",
            "format": "uri"
          }
        }
      },
      "SearchResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Attributed"
          },
          {
            "type": "object",
            "required": [
              "results",
              "more"
            ],
            "properties": {
              "results": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "series": {
                      "$ref": "#/components/schemas/Race"
                    },
                    "edition": {
                      "$ref": "#/components/schemas/Edition"
                    },
                    "distance_km": {
                      "type": "number",
                      "description": "From the point asked about, with lat and lng."
                    }
                  }
                }
              },
              "sort": {
                "type": "string",
                "enum": [
                  "relevance",
                  "date",
                  "date_desc",
                  "distance",
                  "flattest"
                ]
              },
              "limit": {
                "type": "integer"
              },
              "offset": {
                "type": "integer"
              },
              "more": {
                "type": "boolean"
              }
            }
          }
        ]
      },
      "RaceResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Attributed"
          },
          {
            "type": "object",
            "required": [
              "found"
            ],
            "properties": {
              "found": {
                "type": "boolean"
              },
              "redirect_to": {
                "type": [
                  "string",
                  "null"
                ],
                "description": "The slug to use from now on."
              },
              "series": {
                "$ref": "#/components/schemas/Race"
              },
              "edition": {
                "anyOf": [
                  {
                    "$ref": "#/components/schemas/Edition"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            }
          }
        ]
      },
      "CountsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Attributed"
          },
          {
            "type": "object",
            "required": [
              "total",
              "facets"
            ],
            "properties": {
              "total": {
                "type": "integer"
              },
              "facets": {
                "type": "object",
                "properties": {
                  "country": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "integer"
                    }
                  },
                  "month": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "integer"
                    }
                  },
                  "distance_family": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "integer"
                    }
                  },
                  "surface": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "integer"
                    }
                  },
                  "entry": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "integer"
                    }
                  }
                }
              }
            }
          }
        ]
      },
      "ChangesResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Attributed"
          },
          {
            "type": "object",
            "required": [
              "changes",
              "more"
            ],
            "properties": {
              "changes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "id",
                    "slug",
                    "changed_at",
                    "change"
                  ],
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "slug": {
                      "type": "string"
                    },
                    "url": {
                      "type": "string",
                      "format": "uri"
                    },
                    "changed_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "change": {
                      "type": "string",
                      "enum": [
                        "changed",
                        "merged",
                        "removed"
                      ]
                    },
                    "merged_into": {
                      "type": "string"
                    }
                  }
                }
              },
              "more": {
                "type": "boolean"
              },
              "next_cursor": {
                "type": [
                  "string",
                  "null"
                ]
              }
            }
          }
        ]
      }
    }
  },
  "paths": {
    "/search": {
      "get": {
        "operationId": "searchRaces",
        "summary": "Find races by name, place, distance, surface or date. At least one filter is required.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 120
            },
            "description": "Words of the race's name."
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z]{2}$"
            },
            "description": "ISO 3166-1 alpha-2 country code."
          },
          {
            "name": "region",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Region or state code."
          },
          {
            "name": "distance",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "5k",
                "10k",
                "half",
                "marathon",
                "ultra",
                "other"
              ]
            },
            "description": "Distance family."
          },
          {
            "name": "surface",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "road",
                "trail",
                "track",
                "mixed"
              ]
            },
            "description": "Surface."
          },
          {
            "name": "discipline",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "running",
                "triathlon",
                "duathlon",
                "aquathlon",
                "swimrun"
              ]
            },
            "description": "Discipline."
          },
          {
            "name": "entry",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "qualifying",
                "lottery",
                "open"
              ]
            },
            "description": "How runners get in."
          },
          {
            "name": "certified",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Only courses with a certification."
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Races ending on or after this day (default today)."
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Races starting on or before this day."
          },
          {
            "name": "lat",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            },
            "description": "Near this latitude (with lng)."
          },
          {
            "name": "lng",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            },
            "description": "Near this longitude (with lat)."
          },
          {
            "name": "radius_km",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 500,
              "default": 50
            },
            "description": "Radius around lat and lng."
          },
          {
            "name": "bbox",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^-?[0-9.]+,-?[0-9.]+,-?[0-9.]+,-?[0-9.]+$"
            },
            "description": "Inside a box: west,south,east,north in degrees."
          },
          {
            "name": "changed_since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Only races changed after this instant."
          },
          {
            "name": "sort",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "relevance",
                "date",
                "date_desc",
                "distance",
                "flattest"
              ]
            },
            "description": "Order: relevance (with a query), date (the default), date_desc, distance (needs lat and lng), flattest."
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Only these fields, comma-separated, such as series.name,edition.start_date. Each race's id and url are always given."
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "jsonld"
              ],
              "default": "json"
            },
            "description": "json, or jsonld for the races as a schema.org ItemList of SportsEvents (application/ld+json)."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 25,
              "default": 10
            },
            "description": "Races per page."
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "maximum": 200,
              "default": 0
            },
            "description": "Races to skip."
          }
        ],
        "responses": {
          "200": {
            "description": "The races, with `more` when another page follows; near a point each carries `distance_km`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchResponse"
                }
              }
            }
          },
          "400": {
            "description": "A missing or malformed filter.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The race index is not available.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/counts": {
      "get": {
        "operationId": "countRaces",
        "summary": "How many races a search matches, split by country, month, distance, surface and entry.",
        "parameters": [
          {
            "name": "query",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 120
            },
            "description": "Words of the race's name."
          },
          {
            "name": "country",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^[A-Za-z]{2}$"
            },
            "description": "ISO 3166-1 alpha-2 country code."
          },
          {
            "name": "region",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Region or state code."
          },
          {
            "name": "distance",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "5k",
                "10k",
                "half",
                "marathon",
                "ultra",
                "other"
              ]
            },
            "description": "Distance family."
          },
          {
            "name": "surface",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "road",
                "trail",
                "track",
                "mixed"
              ]
            },
            "description": "Surface."
          },
          {
            "name": "discipline",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "running",
                "triathlon",
                "duathlon",
                "aquathlon",
                "swimrun"
              ]
            },
            "description": "Discipline."
          },
          {
            "name": "entry",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "qualifying",
                "lottery",
                "open"
              ]
            },
            "description": "How runners get in."
          },
          {
            "name": "certified",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "description": "Only courses with a certification."
          },
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Races ending on or after this day (default today)."
          },
          {
            "name": "to",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "Races starting on or before this day."
          },
          {
            "name": "lat",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": -90,
              "maximum": 90
            },
            "description": "Near this latitude (with lng)."
          },
          {
            "name": "lng",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": -180,
              "maximum": 180
            },
            "description": "Near this longitude (with lat)."
          },
          {
            "name": "radius_km",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number",
              "minimum": 1,
              "maximum": 500,
              "default": 50
            },
            "description": "Radius around lat and lng."
          },
          {
            "name": "bbox",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "pattern": "^-?[0-9.]+,-?[0-9.]+,-?[0-9.]+,-?[0-9.]+$"
            },
            "description": "Inside a box: west,south,east,north in degrees."
          },
          {
            "name": "changed_since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Only races changed after this instant."
          }
        ],
        "responses": {
          "200": {
            "description": "`total` and `facets`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CountsResponse"
                }
              }
            }
          },
          "400": {
            "description": "A missing or malformed filter.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The race index is not available.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/changes": {
      "get": {
        "operationId": "raceChanges",
        "summary": "Races changed, merged or removed since an instant, oldest first, to keep a copy of the index in step.",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time"
            },
            "description": "Changes after this instant (or give a cursor)."
          },
          {
            "name": "cursor",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "maxLength": 80
            },
            "description": "The `next_cursor` of the page before."
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500,
              "default": 100
            },
            "description": "Changes per page."
          }
        ],
        "responses": {
          "200": {
            "description": "What changed, oldest first, with `more` and `next_cursor`.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChangesResponse"
                }
              }
            }
          },
          "400": {
            "description": "No instant or cursor, or a malformed one.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The race index is not available.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/download/{file}": {
      "get": {
        "operationId": "downloadRaces",
        "summary": "The whole index, rebuilt every night: JSON Lines (one race a line, as /races/{id} gives it), CSV (one row a distance) and a manifest with row counts and SHA-256 hashes.",
        "parameters": [
          {
            "name": "file",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "races.jsonl",
                "races.csv",
                "races.jsonld",
                "manifest.json"
              ]
            }
          }
        ],
        "responses": {
          "302": {
            "description": "A redirect to the file."
          },
          "404": {
            "description": "No such file.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The download is not available.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/races/{id}": {
      "get": {
        "operationId": "getRace",
        "summary": "One race by its id (rs_…), an edition id (re_…) or its slug, with its next edition.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "fields",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Only these fields, comma-separated."
          },
          {
            "name": "format",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "json",
                "jsonld"
              ],
              "default": "json"
            },
            "description": "json, or jsonld for the race as a schema.org SportsEvent (application/ld+json)."
          }
        ],
        "responses": {
          "200": {
            "description": "The race.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RaceResponse"
                }
              }
            }
          },
          "400": {
            "description": "A malformed id or field.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such race.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The race index is not available.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    },
    "/races/{id}/{year}": {
      "get": {
        "operationId": "getRaceEdition",
        "summary": "One race's edition of a year.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "year",
            "in": "path",
            "required": true,
            "schema": {
              "type": "integer",
              "minimum": 1890,
              "maximum": 2100
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The race and that year's edition.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RaceResponse"
                }
              }
            }
          },
          "400": {
            "description": "A malformed id or year.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "404": {
            "description": "No such race.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          },
          "503": {
            "description": "The race index is not available.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            }
          }
        }
      }
    }
  }
}